はじめに:AI駆動開発に適した技術構成を現状と歴史から模索
2025年はGithubCopilot、Cline、Continue、DevinなどのAIアシスタント、AIエージェントが開発現場で多く採用される年になると言われています。確かに、実際にソフトウェア開発の現場での利用状況をみると、「AI駆動開発」が本格的に広まっていく感じがします。
私も2024年から、徐々にAI駆動開発を始めました。最初は、小さいツールを作ったりしていました。確かに、小さいものを作るのであれば問題なくできます。ただ、本格的に仕事で使うにあたっては以下のような悩みがあります。
AI駆動開発導入時の悩み
・既存の構造化したプログラムをどのようにAI駆動開発にのせていくのか?
・AI駆動開発で、新規に大規模化、構造化したシステムをつくるにはどうしたらいいのか?
・メンテナンスもしやすいAI駆動開発はどのようにするのか?
上記の応えになるような方法や技術もでてはいますが、結構、ふわっとした情報で実際やってみると、まだまだ人間の手間がかかるなあと感じます。ただ、それは今後改善していくのだと思います。
この改善のヒントを得るため、以下のような情報を整理してみました。この情報整理を通じて、AI駆動開発をする際の技術構成の参考にしようと考えています。
AI駆動開発に採用する技術構成のヒント
・2025年時点で多く採用されている技術
・2025年の技術に至った過程や目的
2024年までは、人間がコードや設定ファイルをつくっていました。2025年以降は、AIがこれらの作成をしてくれます。今後、どのような技術構成であれば、精度の高い成果物がでるのかが、Webアプリ開発の現場で模索されていくと思います。そのヒントになればと思います。
2000年頃:インターネットやWebアプリ開発が広まりだした
私は40代半ばになります。今から大体20年前ぐらい私は大学生でした。大学の時、Yahoo(1996年)、Google(1998年)が登場し、「これからはネットの時代なんだ」というのを感じたのを覚えています。
また、理系の友達から、「これからはJavaが流行るよ」と聞いて、Java(1996年:ver1.0)を触ったのを覚えています。
私は2000年頃、ソフトウェア業界に就職しました。それから2025年の現在までWebシステムの開発を行っています。その過程でみてきた技術変遷について、以下の記事に記載しました。
2024年~2025年:Webシステム開発の技術は固定化している(あくまでも現時点、今後は不明)
最近のWebシステムの開発技術は大体固定化しているように見えます。以前、2022年以降に流行る技術について予測を書いてみました。すべてがあたっているわけではないですが、ここで触れたもののいくつかがデファクトスタンダードになっているように思います。
たとえば、Webのフロントエンドの開発だと以下を採用するのが多いと思います。
・コンポーネントライブラリ:React
・フロントエンドフレームワーク:Next.js
・ビルドツール:WebPack、BUN、Vite:
・CSSライブラリ:Tailwind、Styled-Components
・プログラム言語:Typescript、Javascript
バックエンドも最近は、言語ごとにフレームワークが固定化していると思います。昔のように、フレームワークや言語が年によって変遷することは少なくなっていると思います。
言語別フレームワーク
・Python:Django、FastAPI
・Java:SpringBoot
・Ruby:Ruby On Rails
・PHP:Laravel
・Node.js:Express
・Go:Gin、Echo
・Rust:Actix、Rocket
インフラについては、以下のようなマネージドサービスやサーバレスを採用するところが増えていると思います。
インフラ
・マネージドサービス:AWS、Google Cloud、Azure、Oracle Cloud Infrastructure (OCI)
・サーバレス:Supabase、Firebase、MicroCMS、Vercel
他にもWebの技術の領域がありますが、それも10年前ほどは変遷もなく落ち着きをみせているように思います。エンジニアとしては、どの技術を使おうかという悩みは昔よりは減ってきていると感じます。
2000年から2020年頃まではWebシステムの技術は、言語やフレームワークが年ごとに流行りがあり、乱立していて本当に選定に苦労しました。今はそれがなくなったので、学習するにしろ、設計するにしろ、比較的楽になりました。
2000年~2025年までのWebシステム開発技術の流れを簡単に総括して、感想を書いてみます。
2024年までのWeb技術の変遷:人間が直接、コーディングや設定する際の負担を低減してきた
2024年までのWeb技術をみると、人間が作業をするうえでどうやって正確に、かつ、認知や作業の負担を減少させるかという視点で作られてきたと思います。
たとえば、以下のような変化についてそれは言えると思います。
プログラム言語の変遷
Webアプリ開発に限定したプログラム言語の変遷を以下の記事でまとめました。
上記から言語の変遷のみ抜粋しました。
プログラム言語の変遷
1.C言語
2.Java、VB
3.Perl、VBScript(ASP)
3.PHP、Ruby、Python
4.Node.js(JavaScript),TypeScript
5.Go、Rust、Elixir
これらの流れをみていると、人間が読み書きしやすくなるようにプログラム言語が採用されていったように思います。たとえば、C言語の採用が減っていったのはその象徴的な現象です。C言語は高速に動作するのだけど、人間が文字列操作やメモリ管理のコーディングするのが大変です。
ただ、大規模なシステムになると、処理速度や省メモリが必要になります。そこで、最近では、GoやRustが採用されているように思います。これらの言語は、人間の読み書きだけでなく、コンピューターの実行速度やメモリ消費などもあわせて効率化するように設計されています。
プログラミングパラダイムの変遷
プログラミングパラダイムとは、プログラミングする際の書き方や設計に関する統一した方針といえます。
Webアプリ開発においても、プログラミングパラダイムが時代ごとにありました。
このパラダイムについて、別記事で整理しました。
この記事からパラダイムの流れを抜粋します。
プログラミングパラダイムの変遷
1.構造化プログラミング
2.オブジェクト指向
3.関数型プログラミング
プログラミングパラダイムの変遷も、結局は、人間がわかりやすいプログラムの流れ、複数人で問題なくモジュールを製造すること、拡張性を高めることを模索した結果だと思います。
オブジェクト指向は、コーディングの工数を減らそうとして継承やポリモーフィズムなどを使いました。ただ、それが依存関係を高めたり、インターフェースの利用などで処理の流れがスパゲッティ化したり、コードの可読性を低下させました。また、テスト実施も難しいという批判もあります。
関数型言語は、純粋関数に象徴されるように、できるだけ小さい範囲で関心事をとどめ、関係性だけを扱うようにしています。人間は幅広い関心をカバーすることはできないので、関数型プログラミングの観点は同意できる部分があります。
Webフレームワークの変遷
Webシステム開発では、フレームワークを使うのが一般的です。2000年から2024年までにおいて、他のフレームワークに影響を与えた有名なものを上げてみます。
Struts(2001年)
まずは、2000年前半にJavaの現場で多く採用されたのが「Struts」です。
Strutsの特徴としてよく指摘されたのが、「MVC」によるモジュールの分割、カスタムタグでHTMLタグに近い形式で動的処理を記載できたことです。今のWebフレームワークの原型のようなものと言えるでしょう。
以下の 「Rubyist Magazine」 で指摘されているように、2000年前半は、Strutsがとても有名なWebフレームワークでした。
Rails が公開されたのは 2004 年である。2004 年の Web アプリケーション開発というのは、一言で言えば Struts の時代だった。 Struts によって、Web アプリケーションフレームワークの世界でも、「MVC」という言葉が広く使われるようになった。
2025年現在、稼働数はおそらくそこまで多くないと思いますが、Strutsで作られたシステムが稼働しているようです。
ただし、セキュリティホールなどが見つかり、近年、Javaで新しくシステムをつくるときは、SpringBootを使うことが多いと思います。
Ruby On Rails(2004年
続いては、「Ruby On Rails」(以下、Rails)です。これは今でも有名なフレームワークであり、PHPで有名なWebフレームワークの「Laravel」など他のWebフレームワークに多大なる影響を与えました。
Railsのメリットとなる特徴は以下だと思います。(MVCはRailsだけの特徴ではないので省略します)
・DRY(Don’t Repeat Yourself) を実現する機能:DRYとは「同じコード・同じ情報を何度も書かず、1カ所だけに記述する」ことです。たとえば、モデルクラスをコマンドで生成すると、それを元にDBテーブルを作成できます。1つの作業で、いろいろな生成物ができるので便利です。
・CoC(Convention over Configuration:設定よりも規約) :CoCは、あらかじめRails側でルールを決めており、それに従ってコーディングすればよいことを表します。たとえば、Railsでは、テーブル名は複数形になると決まっています。その他、メソッド名、クラス名などもある程度決めてくれているので、プログラマーが色々考えて設定(設計)することがありません。
・RESTful:REST(Representational State Transfer)は、システムの情報や状態遷移に関する設計原則ですが、Railsはそれに即したシステムを作ることができます。具体的には、HTTPメソッド、ルーティングが、DBなどのリソースの操作方法と対応しており、分かりやすい仕組みになります。
Railsは上記の特徴により、初学者も学びやすく、設計の悩みを減らし、製造やメンテナンスのし易いシステムが製造できます。このメリットがあったからこそ、他のフレームワークへ多大なる影響をあたえ、多くの企業がシステム開発に採用しています。2025年時点でも多くのシステムがRailsで稼働しています。
2023年:「ChatGPTショック」を経てAI駆動開発が始まりだした2025年
以上のように、技術変遷自体は落ち着いて来ました。次に現れたのが「生成AI」の波です。これからWebシステム開発をするうえで注目し、身につけるべきスキルは「生成AI」を利用した開発スキルだと思います。
2023年11月、OpenAIが発表したChatGPTによって生成AIの利活用が勢いを増してきました。
それまでにも機械学習、深層学習というキーワードでAIの話は聞こえてきていましたが、本格的に利活用が始まりだしたのは、ChatGPTの発表以降ではないかと思います。
そして、生成AIのインパクトは、ソフトウェア業界にも及び、2024年には「AI駆動開発」という言葉を目にすることも増えてきました。
AI駆動開発は、文字通り生成AIを使って要件定義、設計、製造、テスト、デプロイなどソフトウェア開発の作業を行うことを指します。
2025年2月現在の自分が観測した範囲のAI駆動開発の状況
私は大企業から中小までソフトウェア開発の支援を行っていたり、色々なイベントでエンジニアに会う機会があります。その際に、AI駆動開発の状況などを聞いたりします。
2025年2月時点までで、私が聞いたり見たりした感じだとAI駆動開発は以下のような状況だと思いました。これはあくまでも私個人の観測なので、社会一般のリサーチ結果ではありません。
・ChatGPT、Perplexity、Felo、Claude、Geminiなどの生成AIに検索を代行させたり、小さいモジュールをコーディングさせたりする。
・Cursor、VSCode+GithubCopilo/ClineなどのIDEを利用して、要件定義、設計、製造、テストなどにおいて部分的にAIをつかって作業を行っている。
・DevinなどのAIアシスタントを利用して、ソフトウェア開発作業の自動化を始めている。
以上が、個人的にいくつかの現場のエンジニアに聞いたりした状況です。すべての工程を生成AIにまかせているというのは少なく、ある限られた作業領域でAIを使っているというのが多かったように思います。
2025年はAIアシスタント、AIエージェントが普及すると言われていますが、AIアシスタントのDevinなどを採用する企業なども少しずつ増えているようです。
一方、ソフトウェア開発の業界に関する生成AIの導入のアンケート調査をみると、なんとなく個人的な観測と近いところも感じます。
ソフトウェア開発に関するAIツールについては、有名でよく使われるものもでてきたので、何から手を付けたらいいのかというのはあまり悩まなくなった気もします。
ただし、日々、新しいツールやサービスがでてきますので、技術動向に注目しておくのは必要だと思います。
開発系のツールについては、以下のawesomeリストが広範囲にまとめていて、ここから気になるものを生成AIで検索したり、調べると良い気がします。
2025年以降、生成AIはチャットツールやエディタのように使うのが当たり前に
これから先、生成AIをつかうのは当たり前になっていくと思います。すでに、利用することでかなり生産性があがっているのを実感します。
私は、20年間Webシステムを手動でドキュメント作成、コーディング、テスト実施などを行ってきました。最近は、GithubCopilotやClineなどをつかって、生成AIにコーディングさせるようにしています。
書き方も、いきなりプログラムを書くのではなく、仕様書をマークダウンで作成して、それを生成AIに読み込ませてコーディングさせるようにしています。
既存プロジェクトの改修などではまだ生成AIの導入は進められていませんが、データ解析用のSQL、小さいツールなどはほぼAIにコーディングさせています。
これからもっとソフトウェア開発工程に深く生成AIは導入されてくると思います。
2025年2月現在、生成AIの利用をするには金銭コストの高さが導入のネックになっているように見えます。
ただ、2025年1月の「DeepSeekショック」に象徴されるように、今後、モデルの改良によって低コスト化していく可能性はあると思います。
個人的に、大体どのモデルや生成AIを利用したサービスはどれも似たりよったりになりつつあり、最終的には低コスト化をして市場を独占しようという動きが広まる気もします。
2023年前後のWebシステム開発技術の比較
ここまで見てきたように、2023年の「ChatGPTショック」を境として、Webシステムの開発技術は大きな転換点を迎えているように思います。
2023年までは、いろいろなプログラム言語、フレームワークなどを追いかけて人間がそれを理解して、コーディングをしていました。
それが2023~2025年にかけて徐々に、生成AIに要件定義、設計、コーディング、テスト、デプロイなどをさせるようになりつつあります。
2025年現在、プログラム言語の仕組みは知っておくべきですが、コーディングについては必ずしも人間が手を下す必要がなくなってきています。
システムやアプリを設計するための技術知識や理解は必要です。ただ、コーディングや設定作業は生成AIにさせるというのが2025年以降の開発スタイルになっていきます。
プログラミングも、「プログラム言語」から「自然言語・話し言葉」を使ってするものになっていきます。むしろ、「設計考案」という考える行為が人間の中心的な作業になり、テキストを作成するのは生成AIが代行するようになります。
今まで、プログラム言語をコンパイルしてバイナリをつくっていたのと流れは変わらず、生成AIがコンパイラーのような働きをするようになります。
プログラム学習についても、生成AIにコーディングさせてそれを解説させるというやり方が一般化していくように思います。動画などでアプリ開発の流れをみて、それを生成AIにコーディングさせて、そのコードを解説させて、プログラムなどの技術を理解していく。
私のように生成AIがなかった時代にプログラムを覚えた世代と、生成AIがコーディングをするのが当たり前の世代では、学習方法もかわっていくと思います。
ただし、学習のプロセスは変わったとしても、製造に関する技術理解が必要であることは変わらないと思います。そうしないと、設計の時間もかかるし、問題が起きたときの対応に時間がかかるようになります。
ソフトウェア開発のエンジニアである以上は、技術理解は必須であり、これは今までと変わらないと思います。ただし、エンジニア以外の人が、アプリを生成AIでつくる場合は、その限りではないと思います。特に問題を起こさないのであれば、技術への理解など不要かもしれません。それは車を乗るときに、車の機構をしる必要がないのと同じだと思います。
AI駆動開発時代のエンジニアの役割
AIエージェントやアシスタントに開発作業を任せるようになると、人間のエンジニアは何をするのでしょうか?
これは時期にもよると思いますが、当面は、以下のような動きをするのではないでしょうか。
これまで通り、ソフトウェア開発の技術を把握しながら、それを元にユーザーからヒアリングしたり、設計作業を行う。そこで整理した情報を生成AIに入力して、設計書、コードをつくり、テストやデプロイをさせる。その過程で、人間の確認や調整が必要になります。
また、こうした開発工程にAIを導入したり、運用のメンテナンスをエンジニアが行うと思います。
ドキュメントやコードの作成の比率は下がりつつ、AIのマネージメントの時間が発生すると思います。勿論、この工程すら生成AIのサポートがあると思います。
そのうち、AIツールの開発者以外はソフトウェア開発に携わらなくなる状況も来るかもしれませんが、当面は上記のような状態になるのではないでしょうか。
なので、ソフトウェア開発エンジニアの人は、今までのソフトウェア開発の技術に加えて、AIマネージメントの技術を習得する必要があると思います。
AI駆動開発時代の技術知見はこれから磨かれる
これからのWebシステム開発はAI駆動開発になるのは間違いないと思います。ただ、この技術はまだ生まれたばかりなので、これから様々な知見が社会的に蓄積され、切磋琢磨されていくと思います。
それは、Webのシステム開発技術と同じような過程を経るのだと思います。Webシステム開発の技術も2000年から2023年までの間に紆余曲折がありました。そして、やっと最近では技術が安定してきているように思います。
生成AIはこのWebシステム開発の技術が辿ってきた道をこれから歩んでいくのだと思います。
私は、ソフトウェア開発者としての人生において何度か技術転換点を経験しました。おそらく、私が現役で最後の転換点がこのAI駆動開発の時代だと思います。
日々、新しい技術がありそれをキャッチアップするのが大変ですが、Webの技術をキャッチアップしてきたが、それとそんなに変わらないと思っています。
20年前、インターネットが流行りだしたとき、新しい世界をまえにワクワクしたのを覚えています。そのときと同じワクワク感を、20年後の今、生成AIに対して抱いています。
これからは、AI自体、そして、AI駆動開発について技術をウォッチしていくと思います。
おまけ:2/16(日):AIを利用したソフトウェア開発のワークショップ
知り合いのAI関連会社の会社の方がAIワークショップをされます。興味がある方は参加してみてください。懇親会がありますが、私も参加します。