見出し画像

AI駆動開発のステージ:未来予測も含め

はじめに

明けましておめでとうございます。
今年もMyTH株式会社をよろしくお願いいたします。

さて、AIとともにソフトウェアを開発する世界は、ほんの数年前まではSF的なイメージが強かったかもしれません。

ところが、ChatGPTをはじめとする大規模言語モデルが公開されて以降、コードの自動生成や設計補助といった機能が急速に実用化しはじめました。

かつては人間が「キーボードを叩いて黙々とコードを書く」ことが当たり前だった開発現場も、少しずつ姿を変えつつあります。

これから先、AIがどのようなかたちでソフトウェアを生み出し、人間のアイデアを拡張してくれるのか。
その進化はまだ始まったばかりですが、すでに私たちの想像を超えるスピードでステージを駆け上がっているように感じます。

ここでは、AIを活用したソフトウェア開発を段階的に追いかけつつ、それぞれの段階で何が起こり、何が課題で、どこに向かっているのかを考えてみたいと思います。

基本的には、「大規模言語モデルを使ってコードを書く」だけだった時代から、「ソフトウェアがソフトウェアを作り出す」ような自己増殖的な未来へと話が移っていきます。

あくまで仮説や展望も含む内容ですが、どうか一緒に想像を膨らませながら読んでみてください。


Stage 1: ブラウザでコードを生み出す

最初は、ブラウザ版のチャットツールを使ってコードを生成してもらうところからスタートします。

代表例としてはChatGPTやClaudeなどがありますが、画面に向かって「こういうコードを書きたいんだけど、どうすればいい?」と質問すると、すぐにサンプルコードを提示してくれます。
関数やアルゴリズム、ちょっとしたデータ処理のスクリプトなどであれば、驚くほど手軽に生成が可能になりました。

ただし、この段階だとコードの利用方法はどうしても「コピペ」が中心になります。
チャットの画面からコードをコピーして、自分のエディタに貼り付けて、そのうえで微調整をしていくという流れです。

細かいところでエラーが出たり、依存パッケージが足りなかったりして、結局は人間が多くの手を動かす必要があります。
局所的には非常に便利でも、複数のファイルが絡む大きなソフトウェアをゼロから完成させるには限界があるのです。

ですが、この「局所的にコードを生成してもらう」行為が浸透し始めたことは大きな転換点でした。
ちょっとしたアイデアを検証するための試作コードが、一瞬で書き上がるようになったのですから。

Stage 2: IDE連携でよりスムーズに

次に登場するのが、CursorやGitHub CopilotのようにエディタやIDEと連携したLLMサポートです。

ブラウザ版と違って、手元の開発環境のファイルや依存関係をある程度見渡せるようになっています。
そのため、単純にスニペットを吐き出すだけでなく、エディタ上で生成したコードがすぐにコンパイルされ、実行可能かどうかをチェックしやすくなります。
これによって「コピペの手間」が減り、作業効率が大きく向上しました。

とはいえ、こちらもまだ大規模ソフトウェアを丸ごと任せるには不安が残ります。

コンテキストの扱いには依然としてトークン上限やモデルの理解力の問題があり、同じプロジェクトでもファイル数が多かったり複雑な依存関係があると、AIが全体像をつかみきれないケースがあります。
結局のところ、開発者がAIの生成結果をレビューし、修正して、再度生成を依頼するといった手間はどうしても必要になります。

それでも、リアルタイムにコード補完やリファクタ提案をしてくれるという点は素晴らしく、特にテスト駆動開発との相性が抜群だと感じます。
コードを書きながら即座にテストコードも生成してくれるため、開発効率は確実に上がってきています。

Stage 3: エージェント的なアプローチへ

Stage 1と2で得た手応えをさらに進める形で、Replit AgentやCursorのComposerのように「エージェントがプロジェクト全体を横断しながらコードを作ってくれる」という流れが生まれ始めました。

これは、単なる局所的なファイル生成にとどまらず、プロジェクトの骨格やディレクトリ構造ごと提案し、そこに必要なファイルをどんどん生成してくれるというものです。
「こういうサービスを作りたいから、ここにAPIを置いて、あちらにはデータベース接続を用意して」という指示を与えると、エージェントがタスクを分解してコードを自動生成しようと試みます。

しかし、エージェントが自由度高く振る舞うようになると、新たな課題も出てきます。
上流の要件や仕様が曖昧だと、エージェントが誤った推論に基づいて大量のコードを書き散らかす危険性があるのです。

必要ない修正などを繰り返して目的のバグを解決できなくなったり、途中で方向転換を繰り返し、気づいたら破綻しているというケースも珍しくありません。

そういう事態を避けるには、人間側が仕様や目的を明確に定め、それをエージェントに正しく伝え続けなければなりません。
この段階になると、開発者は「手を動かしてコードを書く人」というよりは「AIを監督し、適切なエサを与え、進捗を管理する人」という役割へと変わりつつあるように思えます。

Stage 4: 高度なLLMが要件策定から実装まで

ここから先は、エージェントの活用だけでなく、要件策定自体を高度なLLMに任せる試みが見られます。

たとえばビジネス上の要望が曖昧な状態でも、とりあえず「ターゲットユーザーはこういう人たちで、機能はこんなものが必要」といった漠然としたアイデアをLLMに投げてみると、それなりの仕様書が返ってくることがあります。
AIが一般的なベストプラクティスや業界のセオリーを参照して、ある程度しっかりした文章で機能要件をまとめてくれるのです。

さらに、その仕様書をもとにエージェントがコードを生成し、テストコードまで含めてセットアップしてくれるという流れができあがると、開発者の負担は一段と軽くなります。
ただ、この段階でもまだ課題は多く、ドメイン固有の知識や法的制限などを完璧に満たすためには人間の監修が必要です。

エージェントは文脈を読み取って見よう見まねで最適解を探そうとするものの、実際の運用やセキュリティ要件など、AIが事前学習していない現場独自のルールに対応するのは難しいことがあるからです。

とはいえ、要求仕様からテストコードまで一括で生成されるというのは、実際に体験すると驚きが大きく、これが今後主流になっていく可能性を強く感じます。

Stage 5: 過去の知見を活用して、一気通貫の自動化

Stage 4まででは、「その都度、AIに指示を与えて生成してもらう」という流れが中心でしたが、さらに一歩進むと、過去に蓄積された知識をRAG(Retrieval-Augmented Generation)の仕組みで取り込み、指示一発で大規模なソフトウェアを組み立てることが可能になってきます。

ここでは「Let there be light」のような非常に短いキーワードだけを入力しても、AIが「過去のプロジェクト事例やドキュメントを参照しながら、最適な設計を自動的に組み立てる」という未来が見えます。
イメージとしては、かつての開発チームが蓄積してきたノウハウやベストプラクティスを、一つの巨大な知識ベースとしてAIが保有している状態です。

ただし、依然として「人間が完全に手を離してよい」というわけではありません。

AIが見落とすエッジケースや、想定外のユーザー行動、緊急時の対応などは監視し続ける必要があります。

とはいえ、コードを書くスピードやテストの自動化が飛躍的に進むため、今までは実現が難しかったサービスや機能をスピーディーに試せるようになるのは間違いありません。

ここまで来ると、日常的に「AI駆動開発」という言葉が使われるようになり、開発プロセスの大部分が自動化された時代になっているかもしれません。

Stage 6: 思考を直接AIに伝えるBCI接続

次のステージでは、BCI(Brain-Computer Interface)を介して、思念だけでAIに指示を与えるというビジョンが想定される一つのシナリオです。

まだ夢物語のようにも思えますが、実際に脳波や神経信号を読み取ってコンピュータを操作する研究は進んでいて、限定的な操作ならすでに実証例が存在します。
もしそれが一般ユーザーにも普及するレベルまで洗練されれば、キーボードを打つ時間すら不要になり、「頭の中でこういうシステムがほしい」と考えただけでAIが動き出すことになるかもしれません。

ただ、思考というのは曖昧で混沌としたものですから、それをどうやって正しくAIに伝えるかという課題はまだまだ大きいと感じます。
意図しない雑念や連想が介入してしまうかもしれませんし、セキュリティの観点から見ても脳波データをどこまでAIに送るのかは慎重に考える必要があります。

ある意味では、神が世界を創るという神話になぞらえられるくらい強力な力を手にするわけですが、まだまだ乗り越えるべき壁や倫理的問題が山積みなのも間違いありません。

Stage 7: ソフトウェアがソフトウェアを創り出す

ここまで進化すると、最終的には「AIが生み出したソフトウェア自身が、さらに別のソフトウェアを生み出す」という状況が視野に入ってきます。

これは自己増殖的なシステムと呼べるもので、生成されたシステムが新たなニーズを発見し、自らを改良し、別のシステムを展開していくという流れを繰り返します。
まるで生命体のように、ソフトウェアが連鎖的に発生していくのです。

ただし、完全に制御不能かというと、決してそうではないと思います。

無数の自己増殖的システムが動き回っているときこそ、どこかで「創造主としての人間が介入する」ポイントが存在し、それがルールや倫理、法的拘束力などを与える必要があります。

そうしなければ無尽蔵にソフトウェアが増殖し、社会に混乱を招く可能性もあるでしょう。
技術が進んだ先に、私たちは「自由な自己増殖システム」と「人間による監査・管理」のバランスをどう取るかという難しい問題に直面することになりそうです。

Stage 8: その先にあるかもしれない世界

最後に、さらに先、「Stage 8」の未知の段階を想定してみます。

ここからは完全に未来予測かつ哲学的な話になってしまいますが、いくつかのシナリオが考えられます。

たとえば、真の汎用人工知能(AGI)が登場することで、人間が与える仕様や目的を超えてAIが独自に行動しはじめるかもしれません。
その結果として、私たちが「ソフトウェア開発」という行為を意識することすらなくなり、すべてがAIの情報生成活動に吸収される可能性もあります。

あるいは、メタバースや仮想空間がさらに広がり、人間の生活圏がほぼデジタル化されてしまう未来もあるかもしれません。

そこでAI同士が連携し、私たちの見えないところでシステムの改良を勝手に行い続け、気づけば現実世界と仮想世界の区別がどんどん曖昧になっていく、という展開です。
さらに言えば、宇宙開発との接続も考えられ、遠隔操作のロボットがAIによって制御され、地球外でのインフラ整備や研究開発をほぼ自動化してしまうような未来図もイメージできます。

こうして見ていくと、「ソフトウェア開発をAIに任せる」という話は単に生産性や効率の問題だけではなく、人類社会全体の在り方に深く関わってくるテーマだと感じます。
私たち自身がどういう未来を望み、どのような責任をAIに預け、どこまで人間が介在するのか。そうした問いに真摯に向き合いながら、技術を活用していく必要があるのではないでしょうか。

おわりに

AI駆動開発のステージをざっと俯瞰してみると、最初はコードのスニペットを自動生成するところから始まり、最終的には「ソフトウェアがソフトウェアを作り続ける」という自己増殖の領域にまで達する可能性があります。

その途中には、エージェントによる上流工程の自動化や、BCIによる思念操作、過去の知見を融合したRAGなど、多くの技術的・倫理的チャレンジが待ち受けています。

今のところ、多くの現場ではStage 1や2の段階で恩恵を受けている人が大半で、Stage 3以降の恩恵を受けている人は少数、Stage 5から先は、一般的に公開されているサービスに限ると、まだないと思います。

Stage 1, 2の段階で、コードを自動生成するだけでも作業スピードは格段に上がりましたし、IDEと連携してリアルタイムに補完してくれる便利さは、すでに手放せないという開発者もいるはずです。

Stage 3や4のように、エージェントや高度LLMが大きなプロジェクトを統括する光景も少しずつ目にするようになってきました。

さすがに「Let there be light」の一言で全自動開発が完成するには、まだ技術的にも社会的にも足りない部分があるものの、近い将来には実現しそうな予兆があります。

このような流れの先にあるStage 7やStage 8を見据えると、やはり私たちは「AIが創造する世界」との向き合い方を再定義しなくてはならないのだと痛感します。

AIがコードを生成するという行為は、単にプログラミング作業を自動化するだけでは終わりません。

ソフトウェアが社会基盤としてますます重要になる中で、そこを動かす意思決定をどのようにコントロールし、どのように合意形成していくのか。最終的には哲学や倫理の問題に突き当たります。

しかし、そうした難しさこそがテクノロジーの面白いところでもあります。私たちは人間としての想像力を働かせ、使い方を工夫し、AIの進化を見守りながらも適切に牽引していく立場にあります。

ほんの数週間か数か月、遅くとも数年後には「コーディング」という概念が変化し、私たちが自然言語で命令するだけで、ほとんどのアプリケーションが自動生成される世の中になっていくことでしょう。

そのときに人間は何をすべきなのか、どう振る舞うのか。

そこに大きな可能性もあればリスクもあるはずです。

これからのAI駆動開発は、技術の進歩とともに生まれる新しい課題を解き明かし、人類が自らの未来を創造するための大きな一歩を支えてくれることでしょう。

私たち一人ひとりがそれに関心を持ち、学び、意見を交わしながら、より豊かで持続可能な社会を築いていけることを願っています。

何よりもまずは興味を持ち、試してみることが大切です。

まずはブラウザ版のLLMでサンプルコードを生成して遊んでみたり、IDE連携で小さなプロジェクトを進めてみたりするだけでも、AI駆動開発の未来が少しずつリアルに見えてくるのではないでしょうか。

いいなと思ったら応援しよう!