2024年の振り返り——AIの指数関数的な発達とソフトウェア開発の未来


気が付けば、2024年も終わりを迎えようとしています。今年は自分にとって色々と学びの多い、変革を促すような年でしたが、それ以上にAIの指数関数的な発達が大きな変革を告げるような年でもありました。

自分が初めてAIの一種(機械学習)に触れたのは2020年、とあるスタートアップでAIを用いたプロジェクトで学習データ作成のためのツールに少し関わったのが初めてでした。そして、2022年にStable Diffusionが流行ったのをきっかけに生成AIに触れるようになり、2023年には自分の普段の仕事であるソフトウェア開発を支援するAIツール(GitHub Copilot)を使い始めました。正直去年の段階ですらAIの進展というのは凄まじいものがありましたが、今年は更にそれを超えるような進展が見られ、AIの指数関数的な発達と将来的な変革を予感させられました。

それに加えて、今年は自分も3年近く続いた仕事を変えたり、仕事を変えたことで色々と気付きを得ることができたり、数年ぶりに自分にとって新しいプログラミング言語を学んだり、そのおかげで将来のことを考えたりと色々なことがあった年だったので、振り返りでもしようかなと思います。

AI活用に関しての新たな知見

まず、自分の出来事ですが、大きな変化として職場を変えました。なぜ変えたかについては既に別の記事[1]で振り返っているので詳細は述べませんが、端的に言うなら仕事から得る「学び」が少なくなり継続することでの成長の限界を感じつつあったことが背景にありました。

現在は新しい職場で働き始め、既に6ヶ月が経過していますが、既に色々な挑戦に直面しています。このプロジェクトは0から1での開発、大規模なシステム移管、PM不在のプロジェクトなどの要素を持ち、既に様々な難しい局面を経験させてくれています。加えて、自分にとって初めて使うプログラミング言語(Go言語)だったことがAI活用に関する新しい気付きに影響しています。

ChatGPTなどに代表されるLLMと呼ばれるAI技術自体は2023年から触り始めており、既に小規模な事柄、例えば言語学習や記事の翻訳、長い文章の要約などで活用していました。ただ、2023年時点では、ハルシネーション(事実に基づかない情報を生成する現象)や実際の生成物からAIをメインの動力として使うにはやや物足りないという印象を感じていました。ただ、GPT-4やClaude 3.5 Sonnetのリリースあたりから中級者レベルの事柄に対して、より正確な回答を出してくれるようになったと感じるようになり、Claude 3.5 SonnetをきっかけにAnthropicへ毎月20ドル課金し有料プランを使うようになりました。

数年前の自分なら、今まで使ったことのないプログラミング言語を学ぶ際には本やネットの講座などを活用したと思います。ただ、Anthropicへ課金していたということもあり、今年の自分は今までと違ったアプローチを取りました。新しい事柄を学ぶ際に、今までのGoogle検索と併用してAIに質問するというのをやっていました。分からないことをすぐに聞けるメンターというのはいると便利ですが、実際にはそういうメンターの時間を確保するのが難しかったりします。しかし、AIであれば質問したいときにいつでも好きなだけ質問することができます。なので、AIをメンターとして活用していました。当初は、新しい事柄の学習に限定してAIメンターを活用していましたが、有用であると分かるにつれて、徐々に色々な分野で活用するようになりました。

このAIをメンターとして活用するということは、私の学習効率や生産性を高めてくれましたが、それ以上に私に現時点でのAI活用の可能性というのを考えさせるものになりました。ChatGPTなどに代表される現在のAI技術はただのチャットボットではなく、実戦投入することが可能なれっきとした技術なのです。未だにChatGPTをただのチャットボットだと考えている人もいますが、まともに活用したことがなければそう思うのも無理もないことだと思います。実際、去年までの自分もAIに対して物足りなさを感じていました。もちろん、現在のAIも完璧な存在ではなく、ハルシネーションなどの問題を抱えています。ただ、それは年々改善されています。

AI駆動開発

AIをメンターとして有意に活用できることに気付いた自分は更にAIを活用すべく、いわゆるAI駆動開発の研究と活用を始めました。これは今まで補助輪のように使っていたAIをメイン動力にすることを意味します。人間はデバッグや要件の整理・レビューなど補助的な役割を行い、開発のメインとなる実装や設計を全てAIに行ってもらいます。この取り組みはまだ実験的で、現在も知見を貯めている最中にはなります。

このAI駆動開発という実験は「特定の条件」はあるものの、予想を超えて上手く活用できています。例えば、参照先のリポジトリ[2]はGoogle Cloud Storageに多数の写真を一括でアップロードするためのスクリプトですが、私はコードを書くことなくAIに全て生成を行ってもらい、私は要件の整理とデバッグ作業のみで要件を満たすものを完成させられました。

ただ、「特定の条件」という部分がまだ難しく、AIに共有する必要のある文脈(コンテキスト)の量が増えるほど制御が難しくなるというのを感じています。具体的には、簡単な単一ファイルのスクリプトであれば簡単に内容を共有できますが、100ファイルを超えるようなファイル群を扱うのは少し難しいです。また、作業をいくつかのセッションに分割する際に、セッションごとの文脈を共有するというのも難しさを感じています。この文脈を共有するという問題を解決するために、多数のファイル群の内容1つのJSON/YAMLファイルに要約するという手法があるのですが、自分も現在は実験中といったところです。

ただ、当初はAIの生成したコードをコピー&ペーストする必要があったところ、最近ではAnthropicがリリースしたModel Context Protocolを活用することで、直接ローカルファイルを更新できるようになるなど現在進行形で発展中の分野ではあるので、来年には更に活用できるようになっているでしょう。

ソフトウェア開発の未来

既に述べたように、近年のChatGPTのようなLLMと呼ばれるAI技術の指数関数的な発達は、私たちの学習方法や働き方を既に変え始めています。それは、良いことであると同時に悪いこと、将来の予想を難しくするものでもあります。既にアメリカではAIにより職を奪われたというニュース[3]が流れていますが、これは決して対岸の火事ではないと感じています。

AIという技術がソフトウェアであり、デジタル化という需要がある以上は、ソフトウェアエンジニアは今後しばらくは必要とされるでしょう。ただ、AIが指数関数的に発達を続け、AIが自分自身を学習させ活用できるようになった場合は、どんなにスキルが高いソフトウェアエンジニアでも不要とされる日が来ても不思議ではないと思っています。

つまり、もはやソフトウェアエンジニアという職業は将来に楽観視できる時代は終わったと思っています。また、これはソフトウェアエンジニアだけでなく、多くの職業に当てはまることかもしれません。私たちは今後の世界でどのように生きていくのか再帰的に考える必要があると思います。

最も、未来ほど予想が難しいものもありませんから、私も何が起こるのか分かっているわけではありません。ただ、私個人としては今年で得た知見を来年以降の生き方に反映させる必要があると思った次第です。

締め

今年の振り返りをしようと思ったら、なぜかAIのことを長々と書いていましたが、いずれにせよ今年はAIとの関わり方を始めとして変化の多い年でした。来年はより変化に適応する、今後の生き方をより変えていくようなことができればと思います。


参照

  1. https://qlawmarq.net/ja/blog/japanese-engineer-experience-australian-company
  2. https://github.com/qlawmarq/gcs-photo-uploader
  3. https://www.reddit.com/r/ChatGPT/comments/1guhsm4/well_this_is_it_boys_i_was_just_informed_from_my/?rdt=63337
background imagebackground image