Java開発でGeminiやGitHub Copilot、ChatGPTなどのAIを活用すると、テスト仕様書の作成やコード生成、テストケース洗い出しの時間を大きく短縮できます。しかし、AIに資料やソースコードを一度に渡して丸投げすると、存在しないメソッドやクラスを生成したり、設計書と異なる実装を提案したりすることがあります。この記事では、AIを開発補助として活用しながら、手戻りを減らして設計書・既存ソース・コーディング規約に沿った成果物を作るための具体的な進め方を解説します。
AIによるJava開発で手戻りが発生する主な原因
AIは大量の情報を処理できますが、入力された情報だけをもとに推測して回答します。そのため、プロジェクト固有のルールや既存実装を十分に理解していない状態では、もっともらしい誤ったコードを生成することがあります。
例えば、既存ソースに「UserService」というクラスしか存在しないにもかかわらず、AIが一般的な設計パターンから判断して「UserManager」や「UserRepository」という存在しないクラスを作成するケースがあります。
また、設計書の一部だけを渡した場合、入力されていない条件をAIが補完してしまい、実際の仕様とは異なるテストケースを作成することがあります。
AIに作業を依頼する順番を整理する
AIを使ったJava開発では、いきなりコードを書かせるのではなく、情報整理から始めることが重要です。
おすすめの流れは以下のようになります。
- 設計書や仕様書から目的・条件・制約を整理する
- 既存ソースコードの構造をAIに理解させる
- テスト観点や処理フローを作成する
- テスト仕様書を作成する
- Javaコードを実装する
- テストコードを作成する
- カバレッジ不足部分を分析して追加テストを作成する
重要なのは、AIに「全部作って」と依頼するのではなく、設計→確認→実装→テストという開発工程ごとに分けて依頼することです。
ソースコードや設計書は全文入力すべきか
既存ソースコードをAIに渡す場合、必ずしもプロジェクト全体を全文入力する必要はありません。むしろ不要な情報が多いと、AIが重要な部分を判断しにくくなる場合があります。
効果的なのは、対象機能に関係する情報を整理して渡す方法です。
| 入力する情報 | 目的 |
|---|---|
| 対象クラス | 実装内容を理解させる |
| 関連するDTOやEntity | データ構造を把握させる |
| インターフェース | 利用可能なメソッドを限定する |
| 設計書の条件 | 仕様違反を防ぐ |
| 既存テストコード | 書き方や規約を合わせる |
例えば「このクラスだけを対象にテストコードを作成してください。存在しないクラス・メソッド・定数は作成せず、提示したソース内に存在するものだけを利用してください」と明示すると、AIの推測による生成を抑えられます。
AIに存在しないコードを作らせないプロンプトの作り方
AIによるコード生成では、制約条件を最初に明確に伝えることが重要です。
以下のような指示を入れると、誤生成を減らせます。
「あなたはJava開発者です。以下に提示する設計書とソースコードだけを事実として扱ってください。不明なクラス名、メソッド名、変数名、定数名は推測で作成しないでください。不足情報がある場合は実装せず、確認事項として列挙してください。」
さらに「変更可能な範囲」「使用可能なライブラリ」「既存コードの書き方」を指定すると、プロジェクトへの適合度が高くなります。
AIでテスト仕様書を作成するときのポイント
テスト仕様書作成では、最初からテストコードを書かせるより、先にテスト観点を洗い出させる方が効果的です。
例えば、以下のような順番で依頼します。
- 対象メソッドの正常系・異常系・境界値を列挙する
- 入力値と期待結果を整理する
- 不足している観点がないかレビューする
- 承認後にJUnitなどのテストコードを作成する
カバレッジ100%を目指す場合も、単純に「100%になるコードを書いて」と依頼するのではなく、「分岐条件をすべて洗い出し、それぞれに対応するテストケースを作成してください」と依頼すると品質が上がります。
GitHub Copilot・Gemini・ChatGPTの使い分け
複数のAIツールを利用する場合、それぞれ得意分野を分けると効率的です。
| AI | 向いている用途 |
|---|---|
| GitHub Copilot | IDE内でのコード補完、修正、リファクタリング |
| ChatGPT | 設計レビュー、テスト観点整理、問題分析 |
| Gemini | 大量資料の整理や仕様確認 |
例えば、ChatGPTで設計やテスト方針を整理し、GitHub Copilotで実装を補助し、Geminiで大量のドキュメント確認を行うという役割分担ができます。
AIが作成した成果物を確認する方法
AI活用で最も重要なのは、生成物をそのまま採用しないことです。AIは高速な作業補助者であり、最終的な品質保証者ではありません。
確認時には以下の観点を見ると判断しやすくなります。
- 設計書の条件をすべて満たしているか
- 既存コードの命名規則に合っているか
- 存在しないクラスやメソッドを使用していないか
- 例外処理や境界値ケースが不足していないか
- テスト結果が期待値と一致しているか
プログラミング経験が少ない場合でも、AIに「このコードが設計書のどの条件を満たしているか説明してください」と質問することで、理解しながらレビューできます。
まとめ
Java開発でAIを活用して手戻りを減らすには、AIにすべてを任せるのではなく、情報整理と工程分割を行うことが重要です。
設計書・既存ソース・テスト規約を整理して渡し、まずテスト観点や設計内容を確認してからコード生成へ進むことで、存在しないコードの生成や仕様漏れを防ぎやすくなります。
AIは経験の少ない開発者でも強力な補助になりますが、正しい使い方は「自動開発ツール」ではなく「設計確認やレビューを支援する開発パートナー」として活用することです。


コメント