はじめまして! アスクルのちくわです。
記事をご覧いただきありがとうございます!
私は2024年12月に入社し、主に既存アプリケーションの運用や機能改善に携わってきました。
この度、新規で機能構築を行う機会があり、どうせなら生成AIを徹底活用したいと思い、GitHub Copilot Agentを使用したAI駆動開発に挑戦しました!
今回の開発を通じてさまざまな知見が得られましたのでここに共有させていただきたいと思います。
すでにGitHub Copilotを含め生成AIを活用されている方々の参考になれば幸いです!
生成AIとアスクル
突然ですが、あなたは普段の開発の中でどれだけ生成AIを活用していますでしょうか?
私は今回の開発に携わるまで、
- ChatGPTなどのAIにテキストで質問する
- GitHub Copilotのコード自動提案を採用する
という使い方がほとんどでした。
しかし、今年(2025年)に入ってからAIエージェントの進化は著しく、AI駆動開発を進めている事例もかなり多くなってきています。
そしてアスクルにおいても、この波に乗り遅れまいと社内でAI推進が加速しています!
アスクル社内におけるAI利活用の取り組みに関して、すでにいくつか記事がございますので、是非ご覧ください。
https://tech.askul.co.jp/archive/category/AI
AI駆動開発のポイント
今回AI駆動開発に取り組む中で、次のポイントにおいていくつか知見が得られましたので、順に説明していきたいと思います。
- 適切なモデル/IDEの使用
- AIエージェントに適したプロンプトの作成
- GitHub Copilotへのカスタム指示
1.適切なモデル/IDEの使用
はじめに触れたとおり、今回はGitHub Copilot Agentを使用していますが、使用するモデル、およびどのIDEで使用するかについてちょっとした学びがありました。
使用モデルは、個人的にClaude Sonnet 4がベスト
モデルは複数選択できますが、今回メインで使用したのは「Claude Sonnet 4」となります。
開発当初はChatGPTやGeminiのモデルもいくつか試したのですが、やはりプロンプトの意図読み取りの正確さ、コーディングの精度においてはClaude Sonnet 4がずば抜けていると感じました!
ただ、Claude Sonnet 4は Premium リクエスト に該当し、1プロンプトにつき1Premiumリクエストを消費するため、際限なく使用できるわけではないので注意が必要です。
IDEは、VS Codeで使用するのが安定
GitHub CopilotをIDEの拡張機能として使用するにあたり、Visual Studio Code (VS Code) とIntelliJ IDEA (IntelliJ) の両方で試用してみましたが、結論としてはVS Codeが安定して使用できそうに感じました。
VS Codeは早くからAgent Modeに対応しており、使用していてエラーが少なく動作も軽量です。
一方で、IntelliJではAgent Mode使用時にエラーで返ってくる頻度が高かったり、出力結果が文字化けするなどの事象も発生しており、ちょっと不安定な印象があります。
JVM系言語での開発にはIntelliJが最適だと思っているので、今後のアップデートに期待したいと思います!
2.AIエージェントに適したプロンプトの作成
私はこれまでプロンプトをただの文章にしていることが多かったのですが、AIエージェントにとって理解しやすいプロンプトの形式は何かを色々と調べてみました。
最終的に「AIエージェントの出力精度が上がったな」と感じられた形式があったので、次に例を示します。
# 対象エンドポイント /v1/hoge # 修正内容 - 下記のレスポンス例のように、hogeを追加する - hugaは下記の条件でtrue or falseを返却する - ユーザーテーブルにhogeが登録されていればtrue、未登録はfalse # レスポンス例 \```json { "status": "Success", "code": "xxx", "data": { "hoge": "yyy", "huga": true } } \``` # 注意点 - 既存のxxxを遵守する - yyyは修正しないようにする
Markdownを使用し、見出しを設定
ただの文章ではなく、Markdownを使用して見出しを設定したり、リストで情報を記載するようにしました。
テキストを整理して構造化することで、AIが正確に解釈してくれるようになり、出力精度が向上します。
Markdownはドキュメントとしても非常に活用しやすいため、AIのプロンプトとして使用する以外でも、情報整理に役立ちそうですね。
依頼内容の意図を明確にする
これは出力精度を上げる上でかなり重要な要素になります。
上記の例を見ていただけるとわかりますが、プロンプトにおいては、
- 修正内容をなるべく具体化し、レスポンス形式なども極力含めるようにする
- コーディングでの注意点を記載する
を意識することで、自分の意図に沿った出力結果へ近づけることができます。
AIエージェントはプロンプトで指示していないことを補完して作業するため、出力結果にブレが出やすいです。
そのため、何をするべきか・何をしてはいけないかを明確にするのが大切なのだと学びました(人間への指示と一緒ですね)。
3.GitHub Copilotへのカスタム指示
上記2.の延長線上の話題でもあるのですが、GitHub Copilotではプロジェクトに関する前提知識をカスタム指示として読み込めます。
方法としては次のとおりです。
- リポジトリ内に、
.github/copilot-instructions.mdというパスでファイルを作成 - Markdown形式で指示を記載する
このファイルを配置しておくことで、AIエージェントに指示をする度にこちらのファイルを参照し、プロジェクトの前提に沿って出力されます。
カスタム指示ファイルは次のような形式で作成しました。
## プロジェクト概要 ... ## アーキテクチャ原則 ### クリーンアーキテクチャ準拠 - **ドメイン層**: ビジネスルールとドメイン知識をカプセル化(他のレイヤーに依存しない) - **アプリケーション層**: ユースケースの実行とドメイン層の調整 - **インフラストラクチャ層**: 外部システムとの連携(データベース、外部API等) - **プレゼンテーション層**: HTTPリクエスト/レスポンス処理 ### 依存関係の方向 \``` Controller → UseCase → DomainService → DomainModel ↓ ↓ Infrastructure ← DomainRepository (Interface) ↓ Repository \``` ## 技術スタック - xxx ### 主要フレームワーク・ライブラリ - xxx ### 認証・セキュリティ - xxx ## ディレクトリ構造とコーディング規約 ### パッケージ構成 \``` src/main/askul/ ├── application/ # アプリケーション層 │ ├── ... │ └── ... ├── domain/ # ドメイン層(ビジネスロジックの中核) │ ├── ... │ └── ... ├── infrastructure/ # インフラストラクチャ層 │ ├── ... │ ├── ... ├── controller/ # プレゼンテーション層 │ ├── ... │ └── ... └── common/ # 共通設定・ユーティリティ └── ... \```
意識した点は2.と同様ですが、カスタム指示ということもあり次のような情報も追加で記載しています。
- 技術スタック
- アーキテクチャ構成
- パッケージ構成
- 禁止事項・推奨しないパターン
AI駆動開発を進める中で問題だったことの1つに、AIエージェントに指示してファイルを新規作成してもらう際、想定していないディレクトリに追加してしまうということがありました。
上記のカスタム指示を見ていただければ分かるとおり、今回はクリーンアーキテクチャ準拠のアプリケーション構成にしたかったので、違うディレクトリに配置されてしまうのはなかなかストレスでした...
カスタム指示を導入後は、クリーンアーキテクチャに準拠した形でコーディングが実施され精度が上がった(ファイルもある程度想定していたところに配置してくれる)ので、ストレスフリーになりました!
とはいえ、ディレクトリ構成が複雑になりアプリケーション規模が大きくなると精度は下がってくるので、この辺りはまだまだプロンプトの改良ができそうなところではありますね。
まとめ
今回GitHub Copilot Agentを使用してみて、正直コーディング作業がここまで自動化できるとは想定しておらず衝撃を受けました…!
今回は機能構築を行う際のコーディング中心にお話しさせていただきましたが、不具合調査などもスピーディーに解決できるようになっており、相当な開発時間の短縮に繋がっています。
今後生成AIがどのような進化を遂げるかは予想もつきませんが、少なくともエンジニアの皆様にとって、AI駆動開発が大きな恩恵をもたらすのは確実だと思います。
今回ご説明した内容も、まだまだAIエージェントでできることの一部に過ぎないとは思いますが、ぜひ参考になれば幸いです。
そして私も引き続き、AIツールの動向をウォッチし積極的に活用していきたいと思っています!
現状はあまり触れていないんですが、
- GitHub Copilot coding agent(GitHub上でIssueを作成すると、Copilotが自動で実装してプルリクエストまで作ってくれる)
- Model Context Protocol(MCP)(ConfluenceやGitHubの情報を連携することで、AIの提案精度を向上)
辺りを使っていきたいなと思っているところです!
それでは、ここまでご覧いただきありがとうございました!
AIエージェントを使って楽しく開発していきましょう!