開発でAIを活用する前に知っておきたいこと
開発で AI の恩恵を最大化するために何をしたらよいかを考察する
想定読者
開発で AI の活用を検討中、もしくは導入間もない個人/組織
AI によるコーディング支援の前提知識
はじめにどのようなコーディング支援ができるのか理解するために、現状を俯瞰する。
※ 情報は 2025/04 時点のものです
手段の種類
AI を活用したコーディング支援の方法を以下4つに分類した。
- 生成AIの単体利用
- コード補完 / 提案
- AIエージェントとの並走開発
- AIエージェントの自律開発
手段ごとの詳細
手段 | できること | サービス・機能の例 |
---|---|---|
生成AIの単体利用 | チャットによる対話でのコード生成や問題解決 | ・Chat GPT ・Claude ・Gemini ・Copilot (質問) |
コード補完 / 提案 | 単体ファイルの実装支援 | ・Cursor Tab ・Copilot Chat (編集) |
AIエージェントとの並走開発 | 複数ファイルを対象とした半自動開発 | ・Cline ・Roo Code ・Cursor Composer ・Copilot Agent |
AIエージェントの自律開発 | 広範な開発タスクの自律実装 | ・Devin ・Google Jules |
※ サービスはあくまで例であり、網羅は目的としていない
使い分けの基準
手段ごとに使い分けの例を示す。
あくまで単純に利用した場合の例であり、コンテキストの充実度合いでできることは広がる。
生成AI単体
成果物がコードでないタスクに向いている。
具体的な例:
- 技術調査や課題の明確化
- ピンポイントな問題解決(エラーの原因特定など)
コード補完 / 提案
高コンテキストな開発のように、開発者が強くコントロールする必要がある開発に向いている。
具体的な例:
- パフォーマンスやセキュリティに関わる重要なコード
- 既存コードの微調整や小さな改善
AIエージェントの半自動開発
AIを細かくハンドリングしつつ、手動での開発も織り交ぜるような開発に向いている。
具体的な例:
- 新規機能の設計と実装 (複数ファイルにまたがるもの)
- リファクタリング支援 (重複コード共通化、変数名一括変更など)
AIエージェントの自律開発
AIの細かいハンドリングが必要ないタスクが特に向いている。
育て方次第ではより高度なタスクも実行できるようになる(はず)。
具体的な例:
- 標準的な設計パターンに基づくコンポーネント実装
- ライブラリのアップデート
本題: AI導入とあわせて取り組みたいこと
AIはツールではなく 開発プロセスを変革するインフラ だと捉えられる。
なのでまずは AI が開発で日常的に利用されている状態 を目指したい。
その実現に必要なのは実践とインフラ整備で、具体的には以下の2つ
- 活用の実践とユースケースの蓄積
- 必要なコンテキストの把握と充足
1. 実践を通じたユースケースの発見と共有
まずはとにかく使う。
先ほど挙げた手段と使い分けを参考に、まず AI でできないかを考える。
はじめは AI を使わないほうが早いと感じるが、投資と考え無理にでも使って感覚を掴んでいく。
(言わずもがな採否はタスクの緊急度を加味して判断する)
加えて、できるだけ少ない指示量で高い品質の成果物を目指したい。
そのためにも、採用する AI の活用手段はできるだけ自走力の高いものから検討する。
効果的な活用シーンは蓄積し、組織であれば共有できるとなお良い。
2. コンテキスト意識と充足
AIが生成する成果物の質は、与えられるコンテキストの量と質に依存する。
成果物の質を挙げるためにも、まずはAIに与えるコンテキストを意識することが重要。
不足しやすいコンテキストの例:
- 採用技術(フレームワーク、ライブラリ、言語)
- 設計思想(アーキテクチャ、デザインパターン)
- ドメイン知識(業務知識、ビジネスロジック)
- チーム内の実装プラクティス(コーディング規約、テスト方針)
コンテキストの感覚は、リミットテストを兼ねながら AI を活用することで掴んでいく。
具体的には最低限と考えるコンテキストのタスクを与えて、AI がどこまでできるかを試す。
失敗したら徐々に足していく。
その結果から AI ができること・できないことを把握し、できないことを補うためのコンテキストを整備する。
コンテキストを補う具体的な手段:
- Custom Instructions の利用
- 例: Cursor Project Rules, Devin Knowledge
- ドキュメントの整備
- プロンプトや Custom Instructions で参照させる
- プロンプトでのコンテキスト充足
ケース・バイ・ケースだが、基本的にプロンプトは資産性が低いため、できるだけそれ以外で補うことを目指したい。
また、現状の AI は有効に活用できるコンテキスト量に制限がある。
例えば 大きすぎるコードベースや Custom Instructions は一部無視されることがある。
そのような場合には、タスクの粒度を細かくして要求コンテキストを減らすことで調整する。
タスク粒度とコンテキスト量は「ジュニアエンジニアこなせるか」を目安に考えると良い [1]
取り組むべきアクションのまとめ
- AI導入とあわせてやりたいこと2つ
-
- 積極活用とユースケース蓄積
-
- コンテキスト意識との充足
-
- コンテキスト充足の手段3つ
-
- Custom Instructions
-
- ドキュメント整備
-
- プロンプト活用
-
-
Devin のガイドラインには「ジュニアエンジニアとして扱い、詳細な指示を与えること」とある。主観ながら現状の開発支援 AI は Devin 以外も能力限度は同様に感じる。それらを踏まえるとこのあたりが目安になると考える。 ↩︎
Discussion