
9/19に開催されたバータイムでは、コーディングエージェントを実際の開発で使っている発表者から、具体的な活用事例や現場でのノウハウが共有されました。
今回のブログでは、バータイム中に紹介されたノウハウをまとめてご紹介いたします。
※あくまで、バータイムでの発表者の事例・ノウハウであり、来栖川電算を代表したものではございません。
1. AIの使い分けとタスクの分担
AIによるコード生成は、初期の「自動コード書き」の段階から、「設計やテストの提案」を経て、現在は自律的に開発タスクを自動化する「コーディングエージェント」へと進化しています。
発表者の働き方では、タスクの性質に応じて複数のAIツールを使い分けています。
以下に例を示します。
| タスク | 主な利用ツールと利用方法 |
|---|---|
| 全般調査/資料作成 | ChatGPT、Markdown Copilot( 来栖川電算作成のVSCode拡張機能 )など |
| コードリーディング/PRレビュー | GitHub Copilot、PR-Agent |
| コードの整合性確認 | VSCodeのCopilot「Askモード」など |
| 実際のコーディング | GitHub Copilot Agent、Codex |
AI周りで、特にエディタに関連したUIは2週間程度でどんどん変わる印象があるため、常に最新情報を追う必要があるとの所感もありました。
2. 生成物の精度を高めるノウハウ:AIの「出力」を制御する
AIの出力で狙った結果を得るために、渡す情報や指示を工夫し、ブレを抑えるように絞り込む工夫をしていました。
2.1 ルールファイル(コンテキスト)の活用
コーディングエージェントに対し、プロジェクトの文脈を理解させるための「ルールファイル」の整備が重要と捉え、以下のような工夫をしていました。
- ルールファイルの設置: GitHub Copilotの場合、
.github/copilot/instructionsの下に記述されたMarkdownファイルは、プロンプトの前に付加され、コーディングエージェントが自動的に参照するルールとしています。 - 構造化の徹底: ルールファイルを構造化し、複数のファイルに分けることで、参照時に情報が凝縮され、人間にとっても読みやすくなります。例えば、プロジェクト指針やアーキテクチャ概要(バックエンドがGoで書かれているなど)を記述すれば、個別の指示で言語指定を省略できます。
- 関連ファイルの連携: モノレポ構造などにおいて、データベースの定義(DDL)など、関連性の高いファイルを同じリポジトリに含めておくことで、コーディングエージェントが参照しやすくなります。
2.2 コード構造とセッション管理の工夫
- コード構造の最適化: コードを適切に分割し、適切な命名を行い、機能の直交性がある状態に構造化しておくことが、良好な出力を得るために望ましいと考えています。
- テストコードの提供: テストコードは「振る舞いの情報」を提供するドキュメントの一種であり、コードから拾えない情報を示せるため、コーディングエージェントが良い結果を生成しやすくなります。テストコードの生成自体はAIに任せることが多いです。
- 言語の相性: 型付き言語はAIとの相性が良いと感じています。発表者が使った中では、Go言語との相性が良いという経験則があります。
- セッション管理(迷子の防止): やり取りの往復が長くなるとコーディングエージェントが迷い始めるため、大きな機能を作成したらセッションを終え、次のステップは新しいセッションで進めています。複雑な場合は、途中で状況を要約させ、それを次のセッションに引き継ぐ方法が有効です。
3. チーム開発と運用:人間が集中すべき領域
コーディングエージェントを導入することで、開発における人間の役割が変わると考えています。
3.1 人間の脳は「設計」に集中する
コーディングエージェントがコード記述をスキップしてくれるため、人間は設計に集中し、その後、実装が設計と合致しているかのレビューに労力を割けるようになりました。
- 疲労の軽減: 実装の段階で集中力を要するコード記述がなくなることで、設計やレビューといった抽象度の高い思考を維持でき、脳の切り替えが少なくなり、疲労が少ないというメリットを感じています。
- 並列作業: コーディングエージェントが裏でコードを生成している間に、人間は次の設計やテストケースの洗い出しといった一歩先の準備作業を進めることができるようになりました。
3.2 AIに合わせた運用とルールの統一
- ルールファイルの管理: ルールファイルはGit管理下に置き、更新時にはブランチを切ってプルリクエストを出すなど、AIに合わせた運用を行ったほうがよいです。
- ルールファイルの「育成」: 成功した修正や指示を抽象化し、ルールファイルに追加することで、ルールファイル自体を継続的に育てていくことが可能です。
- 指示の統一: チーム開発において、特定の個人に最適化されたルール(例:「Aさん向けのルール」)は避け、指示のフォーマットやコードの出力を統一するために、同じルールを全員が運用する方が望ましいと考えています。
4. 環境選択と効率化のためのUIの工夫
4.1 CLIとエディタ統合の使い分け
コードを書くことに関しては、ファイルをコンテキストに簡単に追加できるなど、ファイル群との密な連携が取りやすいエディタ統合(VSCodeなど)が効率的です。
4.2 UIと並列作業の最適化
- 過度な並列作業の弊害: 複数のコーディングエージェントや作業を並列(2系列以上)でやらせると、人間側がコンテキストを追いきれなくなり、作業が混乱する原因となることが実感されています。
- チャットパネルの分離: VSCode上のCopilotチャットパネルは、エディタを圧迫する可能性があるため、新しいウィンドウにフロートさせたり、分離させたりすることで、作業領域を広く確保しやすくなります。
総括
今回の「今週のバータイム」で共有された知見は、コーディングエージェントを単なる「コード生成ツール」としてではなく、「開発プロセスを統合的にサポートするツール」として捉え、人間がより高度な設計業務に集中できる環境を整えることが、生産性向上の鍵となることを示しました。
今後、さらに色々な開発の現場でAIの利用が進んでいったとき、知見がどう増えるか・どう変わっていくかが楽しみです。
今後も、来栖川電算では、このような知見を社内で共有し、「AIと共働する開発環境」のベストプラクティスを追求していきます。