連載:AIドリブン開発とは? 〜AIが変えるソフトウェア開発の未来〜
AIドリブン開発というのをご存知でしょうか?生成AIが大ブームを起こしていますが、ソフトウェア開発にもAIが活用されるようになってきています。
あたりまえですが、AI技術もまたソフトウェアとしてプログラムで開発されています。プログラムで開発されているのですがら、プログラムを生成するのもまた得意ということですね。
当社でも2023年ぐらいから、積極的にChatGPTを利用した開発の実践を行ってきましたが、最近ではVSCodeの拡張機能であるCursorや、GitHub Copilotなどのツールが登場して、AIがコードを生成したり、コードを修正したりすることがかなり容易にできるようになりました。
一方で、色々なツールが登場して、どれを使えばいいのかわからないという声も多く聞かれます。
そこで、AIドリブン開発とは何か、どのようなツールがあるのか、どのようなメリットがあるのか、どのようなデメリットがあるのか、また、どのような企業が実践しているのか、などをままとめつつ当社で使っているツールの実践例などを何回かの連載にわけてご紹介していきたいと思います。
(ちなみにこの記事の執筆もCursorで行っています。)
AIドリブン開発とは?
AIドリブン開発(AI-Driven Development)は、AI技術を活用してソフトウェア開発を効率化し、よりスピーディーかつ高品質な開発を実現するアプローチです。
この考え方自体は新しいものではなく、AI研究は1950年代から始まりましたが、長い「冬の時代」がありました。当時のAIは、限定的なタスクしかこなせず、ソフトウェア開発に直接応用できるレベルではありませんでした。
しかし、2012年に転機が訪れます。画像認識コンペティション(ILSVRC)で、AlexNetというディープラーニングモデルが、それまでの手法を大幅に上回る精度を達成し、AI研究にブレイクスルーをもたらしました。AlexNetは、畳み込みニューラルネットワーク(CNN)を深くすることで、高い特徴抽出能力を実現しました。簡単にいえば、大量の画像データをとにかくたくさん学習することで、自動で特徴を学び取り高精度な画像認識ができるようになったのです。
このAlexNetの学習には、大量の計算が必要でしたが、それを可能にしたのが時価総額世界1位にもなったNVIDIAのGPUです。GPUの並列計算能力が、ディープラーニングの計算を高速化し、その後のAIの発展を支えていくことになります。
そして、2017年、GoogleがTransformerという革新的なモデルを発表します。Transformerは、自然言語処理(NLP)の分野に革命を起こし、Attentionメカニズムによって文脈の理解を深め、より自然な文章生成を可能にしました。
Transformerを基盤とした大規模言語モデル(LLM)が登場し、OpenAIのGPTシリーズがその代表例です。ChatGPTは、質問応答、文章生成、翻訳など、多様なタスクをこなせるようになり、その応用範囲はソフトウェア開発にも広がりました。
これらの技術的進歩を受けて、このAIドリブン開発という考え方が本格的に広まり始めたのは2010年代後半から2020年代初頭で、特にAIの進化が目覚ましかったこの時期に、多くの企業や研究機関が開発支援AIの可能性を探り始めたといわれています。
特に、自然言語処理(NLP)と深層学習の発展が、AIによるコード生成やプログラム補完の技術を飛躍的に向上させ、AIドリブン開発を後押ししました。
先駆者としては、OpenAI や DeepMind などのAI研究機関が挙げられます。これらの組織は、AIによるコード生成やプログラム補完の技術を発表し、AIが開発現場で活躍できることを証明しました。
また、具体的な実践例としては、次のような企業がAIドリブン開発を導入し、業務に活かしています。
- GitHub(Microsoft) … AIコード補完ツール「GitHub Copilot」を提供(OpenAIとの提携)
- Google … AIモデル「PaLM 2 / Gemini」や、それ以前からAIを活用した開発支援ツールを提供
- Amazon … AWS開発向けAIアシスタント「CodeWhisperer」
- Meta … 大規模言語モデル「Llama」を活用したコード生成
- Cognition AI … AIソフトウェアエンジニア「Devin」を開発
- Vercel … フルスタック開発支援ツール「v0.dev」
- Cursor … VSCode拡張機能として、AIによる開発を総合支援
日本国内でも、多くのスタートアップやIT企業がAIを活用し、開発の効率化に成功しているといわれています。
AIドリブン開発の活用領域
AIドリブン開発とは、AIを活用してソフトウェア開発のさまざまなプロセスを最適化することです。要件定義から各種のテストまで、これまでエンジニアが手作業で行っていたコード記述、バグ修正、テスト、デプロイ、運用などをAIがサポートすることで、より素早く・正確に開発を進められるようになります。
主な活用領域:
- コード生成 … AIがプログラムの一部や関数を自動生成(例:GitHub Copilotが、コメントや関数名に基づいてコードを提案)
- バグ検出・修正 … AIがコードの不具合を自動解析(例:Snyk Codeが、コードの脆弱性やバグをリアルタイムで検出)
- テスト最適化 … AIがテストケースを作成し、カバレッジを向上(例:Diffblue Coverが、Javaコードのユニットテストを自動生成)
- DevOpsの自動化 … CI/CDパイプラインの最適化やインシデント対応(例:GitHub ActionsとGitHub Copilotを連携させ、CI/CDプロセスを自動化)
- 要件定義・設計サポート … 自然言語からシステム設計を自動生成(例:OpenAI GPTが、自然言語で記述された要件から、システムの仕様書や設計書を生成)
- ナレッジ補助 … 技術ドキュメントの検索・生成をAIがサポート(例:AIが、Stack Overflowなどの技術情報を検索し、開発者の質問に回答)
AIドリブン開発を支えるツール
カテゴリー分けして列挙してみましたがこんなにも多くツールがあります。現在はツールが乱立しておりどれが覇権を握るのかわからないですし、各種業務特化型のツールが多い印象ですが、今後はある程度、統合的に使えるツールが出てデファクトを取るのではないかと思います。
1. コード生成系
ツール名 | 特徴 |
---|---|
GitHub Copilot | AIがコード補完・関数提案(VSCode, Visual Studio, Neovim, JetBrains IDEsの拡張機能) |
Amazon CodeWhisperer | AWS向けに最適化されたAIコード補助(VSCode, IntelliJ IDEA, AWS Cloud9などのIDEに対応) |
v0.dev | フルスタック開発支援ツール、UI/UXデザインからコード生成まで対応 |
Cursor | VSCode拡張機能として、AIによる開発を総合支援 |
Devin | AIエンジニアとして仕様理解から実装まで対応 |
2. バグ検出・静的解析
ツール名 | 特徴 |
---|---|
DeepCode (Snyk Code) | AIによるリアルタイムのコード解析 |
CodeQL | GitHub提供のセキュリティ分析ツール |
SonarQube | 静的解析とコード品質向上に特化 |
Devin | コードのデバッグや最適化を自動実施 |
Cursor | Bug Finderによるバグの検出 |
3. 自動テスト生成
ツール名 | 特徴 |
---|---|
Diffblue Cover | Javaコードのユニットテストを自動生成 |
Ponicode | AIがテストケースを生成し、カバレッジを向上 |
MABL | AIドリブンの自動E2Eテスト |
Devin | テストスクリプトの生成・実行・最適化 |
4. DevOps・CI/CD
ツール名 | 特徴 |
---|---|
GitHub Actions + Copilot | AIを活用したCI/CD自動化 |
AWS DevOps Guru | 機械学習で異常検知し運用最適化 |
Datadog AI Ops | AIを活用した障害検知・トラブルシューティング |
Devin | CI/CDフローの設計・自動化をAIが支援 |
5. 要件定義・ドキュメント作成
ツール名 | 特徴 |
---|---|
OpenAI GPT (ChatGPT Enterprise) | 仕様書・設計書の作成支援 |
CodeT5 | AIを活用したドキュメント生成 |
ASK (AI Stack Overflow) | AIを活用した技術Q&A |
6. AI支援設計・モデリングツール
ツール名 | 特徴 |
---|---|
Eraser AI | 技術的な図やドキュメントを自動生成 |
Whimsical AI | フローチャート、マインドマップ、ワイヤーフレームなどをAIが生成 |
Galileo AI | 自然言語での指示からUIデザインを生成 |
Uizard | スクリーンショットやスケッチから編集可能なデザインを生成。 |
AIドリブン開発がもたらす未来
AIドリブン開発の進化によって、ソフトウェア開発はどのように変わるのでしょうか?これからの未来、次のような変化が予想されます。
1. エンジニアの役割が変わる
これまでエンジニアはコードを書くことが主な仕事でしたが、AIがコーディングを担うことで、より「設計・戦略・創造的な開発」に集中できるようになります。エンジニアは、コードの品質管理やビジネスロジックの構築といった、より高度な業務にシフトしていくでしょう。
AIが生成したコードのレビュー、アーキテクチャ設計、複雑な問題解決など、人間の判断が必要なタスクに注力できるようになります。
2. 開発スピードが劇的に向上
要件定義から実装、テスト、デプロイまでのサイクルが大幅に短縮されます。特に、MVP(Minimum Viable Product)開発のコストが低下し、スタートアップや個人開発者にとっても、より短期間でサービスを立ち上げられる時代が来るでしょう。
AIが、反復的な作業や定型的なコードの記述を自動化することで、開発期間を大幅に短縮できます。
3. 人材不足の解消
AIが開発をサポートすることで、プログラミング初心者でも高度なシステムを構築できるようになります。これにより、エンジニアの人材不足が緩和され、より多くの人が開発に参加できるようになるでしょう。
AIが、コーディングのハードルを下げることで、より多くの人々がソフトウェア開発に参画できるようになります。
4. AIエンジニアが現場をリード
「Devin」のようなAIエンジニアが、仕様理解からコード実装、テストまでを一貫して担当するようになり、人間のエンジニアは仕様を伝えAIに指示を出す側にシフトしていく可能性があります。
ただし、AIエンジニアが完全に人間のエンジニアに取って代わるわけではなく、協調して開発を進める形が一般的になると考えられます。特に現時点では、まだ生成するコードにハレーションが多いため、きちっとしたレビューとデバッグはエンジニアがやらなければいけないと考えています。
5. 新しいビジネスモデルが生まれる
AIによる自動化が進むことで、ソフトウェア開発のアウトソーシングの在り方が変わります。企業は少数のエンジニアでも大規模なシステムを開発・運用できるようになり、新たなサービスや事業の創出が促進されるでしょう。
AIを活用した新しい開発手法やツールが登場し、ソフトウェア開発のビジネスモデル自体が変化する可能性があります。
一方で、AIドリブン開発には以下のようなリスクや課題も存在します。
- AIによるコード生成の品質: AIが生成するコードの品質は、学習データやアルゴリズムに依存します。誤ったコードや脆弱性を含むコードが生成される可能性も考慮に入れる必要があります。
- セキュリティ: AIモデル自体が攻撃対象となる可能性や、AIが生成したコードにセキュリティ上の問題が含まれる可能性があります。
- 倫理的な問題: AIが生成したコードの著作権や、AIによる開発の責任の所在など、倫理的な問題も議論が必要です。
まとめ
AIドリブン開発は、単なる「AIを活用する」レベルではなく、ソフトウェア開発の根本的なスタイルを変えようとしています。特に、コード生成・バグ検出・テスト最適化・DevOpsの自動化の領域では、当社でもすでに大きな成果が出ています。
新しい言語や、フレームワークで開発するというとキャッチアップまでの時間が相当時間がかかっていましたが、個人的な感触ではそのような新しい技術を取り入れてる場合でもスムーズにAIと対話しながらコードが書けているように感じています。実体験的な話でいえば、10年ぐらい業務で使用している私が得意としている「Rails」で独力でコードを書くのと使い慣れてない「Next.js + Prisma」で書いた場合でもほぼ開発生産性に差は出ていないという印象でむしろNext.jsでAIと対話しながらコードを書いた方が早いと感じています。
特にCursorのようなツールはコードを生成してくれるので、コードを書くというよりは、要件を伝えてコードを生成してもらいそれを適用していくというイメージでコーディングができています。
現状はコードを手直してあげたり補完してあげたりすることが必要なのは間違いないですが、今後、「人がコードを書かない開発」 という新たなフェーズに突入する可能性があり、開発者の役割は 「AIを使いこなす」 ことへとシフトしていくことになるでしょう。AIが完全にコードを書くわけではなく、人間が最終的な判断を下す役割は残りますが、AIを効果的に活用するためのスキル(プロンプトエンジニアリング、AIモデルの選択、AIの出力の評価など)が重要になります。
これからの開発者は、コードをただ単に書けるというのではなく、 「AIと共に開発を進める力」 が求められる時代に突入しつつあります。
次回以降は、当社で実際に使っているツールの実践例などをご紹介していきたいと思います。
Discussion