1. はじめに
AIによる開発支援が一般的になる中、複数のAIツールを体系的に開発プロセスへ組み込むことで、より大きな業務効率化が期待できます。
本記事では、社内ツール「Resource Visualizer」の機能追加を題材に、仕様策定を高性能な生成AI「Gemini」、実装を自律型AIソフトウェアエンジニア「Devin」と、役割を分担させた開発ワークフローを検証しました。その具体的なプロセスと、得られた効果や今後の課題について報告します。
この記事が、皆さんの現場でAIを組み合わせた開発プロセスを検討する上での一つの参考になれば幸いです。
2. 検証の背景と使用ツール
Resource Visualizerとは
今回、検証の対象としたのは、私たちが社内で利用している構成管理ツール「Resource Visualizer(以下、RV)」です。RVは、設定画面から登録されたプロジェクトごとにAWSアカウントやGoogle Cloudプロジェクトのリソース情報を取得し、データの抽出・加工を行った後、BacklogのWikiページに管理表を出力するツールです。
平日の深夜0時に定期実行され、現在では約1600プロジェクトのリソース情報を取得・更新しています。
便利なツールである一方、対応サービスを一つ追加する作業には下記のような一連の定型的な開発タスクが発生し、手間がかかるという課題がありました。
- 仕様の洗い出しとドキュメント作成
- AWS SDKを利用した情報取得処理の実装
- 取得データを整形する処理の実装
- 動作確認のためのテストリソース準備
今回はこの「RVへのAWSサービス新規追加」を題材に、AIによる開発自動化を試みます。
使用したAIツール
今回は、特性の異なる2つのAIを「適材適所」で使い分けました。
- 設計支援役:Gemini
高度な対話能力と推論能力を持ち、曖昧な要件から仕様を具体化する、いわゆる「壁打ち」に適しています。今回は、仕様の整理やドキュメント作成を支援してもらいました。 - 実装担当:Devin
自然言語の指示に基づき、リポジトリの分析、コーディング、プルリクエスト作成までを自律的に実行するAIソフトウェアエンジニアです。今回は、定義された仕様書を元にした実装作業を担当してもらいました。
3. 具体的な検証プロセス
それでは、AIとの協業プロセスを時系列に沿って具体的にご紹介します。今回は「Amazon Cognito ユーザープール」の情報をRVに追加する、というタスクに挑戦しました。
【Step 1:Geminiによる仕様策定支援】
まず、実装のインプットとなる「仕様書」を作成します。Devinのような自律型AIは、指示が具体的で明確であるほど性能を発揮するため、「何を」「どのように」実装してほしいかを詳細に定義した仕様書が不可欠です。
しかし、ゼロから出力項目を洗い出し、利用するAPIを調べ、データの加工方法を定義するのは手間のかかる作業です。そこで、この「漠然とした状態から仕様を収束させていく」作業をGeminiに手伝ってもらうことにしました。
進め方
Geminiとの対話を通じて、以下のような項目を詰めていきました。
- Cognitoユーザープールから取得すべき情報は何か
- その情報を取得するには、どのboto3(AWS SDK for Python)のAPIを呼ぶべきか
- APIのレスポンスから、どの値を利用するか
- 複数のAPIを組み合わせる場合、どのようにデータを加工・整形するか
- 仕様の検討と並行して、最終的な出力イメージを掴むためのサンプル表も作成
ポイント
Devinのような自律型AIに正確に実装してもらうには、人間が読む仕様書以上に、曖昧さを排除した詳細な指示が不可欠です。そのため、「どのAPIを使い、レスポンスのどの部分を、どのように加工するか」といったレベルまで仕様を具体化することを意識しました。この詳細な仕様書こそが、後工程のAIによる実装の品質を左右する最も重要なポイントとなります。
結果
人間が意思決定とレビューに集中できたことに加え、仕様変更を即座にサンプル表へ反映させることができたため、確認作業がスムーズに進みました。これにより、仕様策定全体の時間を短縮しつつ、Geminiの提案によって考慮漏れを防ぎ、より精度の高い仕様書を作成することができました。
【Step 2:Devinによる実装の自動化】
詳細な仕様書が完成したら、次にStep 1で作成したGitHub Issueを元に、Devinによる実装を行いました。
進め方
Devinに与えた最初のプロンプトはおおよそ以下のような内容です。
このリポジトリで、GitHub Issue #271 に記述された機能を実装してください。 既存のソースコードを分析し、規約やパターンに従ってください。 - 作業用に `devin/feature/MSPDEV-2673` という名前のブランチを作成してください。 - `src/processor/aws/cognito` ディレクトリを作成してください。 - Issueに記載された出力項目に基づき、必要なファイルを作成してください。 - 完了したらプルリクエストを作成してください。 Input folders: - src/processor/aws - src/lib/botoutil
この指示を渡すと、Devinはブランチの作成からコーディング、プルリクエストの作成までの一連の作業を自律的に進めてくれましたが、最初のプルリクエストを確認すると、元の仕様書に考慮漏れがあったり、出力される表の表現をもう少し分かりやすくしたいといった修正点が見つかりました。そこで、人間がレビューして見つけた修正点を対話形式でフィードバックし実装を修正してもらう、というやり取りを何度か繰り返して作業を完了させました。
ポイント
RVのサービス追加には共通の作業パターンが存在します。そこで、Devinには「Input folders配下の既存実装を参考にして、そのパターンを学習するように」と指示しました。一連のやり取りを終え作業が完了すると、Devinはそれまでのフィードバックを元に、この定型的な指示を「Knowledge」として保存することを提案してくれます。この提案を受け入れてKnowledgeを追加したことで、次回以降、同様のタスクを依頼する際に指示を簡略化でき、作業の再現性を高めることができました。
(参考:Knowledge Suggestions – Devin Docs)
4. AI活用の効果実績と見えてきた課題
得られた効果
- 工数の変化: サービス追加作業は大きく「仕様策定」と「実装」の2段階に分かれます。実装作業については、今回のようなシンプルなサービスの場合、これまで手作業で約4時間かかっていたものが、AIへの指示とレビューを含めて約1時間で完了し、大幅な時間短縮を実現できました。仕様策定の工数についても、Geminiに仕様書やサンプル表の作成といったドキュメント作業を任せられたことで、スムーズに作業を進めることができました。
- 作業内容の変化: 人間はコードを1行も書くことなく、AIへの的確な指示出しと、AIが作成した成果物のレビューという、より上流のタスクに集中することができました。
- 仕様の品質: Geminiとの対話を通じて仕様を検討する過程で、人間だけでは見落としていた可能性のある項目を仕様に盛り込むことができ、結果としてアウトプットの品質向上に繋がりました。
見えてきた課題
一方で、AIを活用する上での難しさも見えてきました。
- レビューの難易度: 自身で実装コードを書いていないため、サービスの細かい仕様やエッジケースの考慮が十分かを判断するのが難しいと感じました。これは他のメンバーが実装したコードをレビューする感覚に近いですが、「なぜこの実装にしたのか」という背景をAIに直接問うことが難しいため、より慎重な確認が求められます。
- テストの限界: 実装した機能のテスト用に、様々なパターンのCognitoリソースを作成するCloudFormationテンプレートの生成もAIに依頼しました。しかし、このタスクはDevin、Geminiの双方にとって困難だったようです。コードには現れない「この設定とあの設定は両立できない」といったAWS環境特有の複雑な制約をAIが完全に理解し、網羅的なテンプレートを生成することは、現状ではまだ難しい領域のようでした。
考察:AIの得意なこと、人間がやるべきこと
今回の検証から、AIはどんな課題も解決できる万能なツールというわけではないことが改めて分かりました。それぞれのツールの得意・不得意を理解し、人間が適切に作業を切り分ける「適材適所」の考え方が不可欠です。
- Gemini: ゼロから情報を整理し、体系化する「発散→収束」のプロセスが得意。
- Devin: 明確なゴールと手順に基づき、既存のルールに沿って黙々と作業する「実行」が得意。
特に今回のRVのように、処理がある程度パターン化されており、参考にできる既存実装が豊富にあるプロジェクトでは、この分担が非常にうまく機能しました。人間が担うべきは、AIに渡す「仕様の精度」を上げることと、AIの成果物を「レビュー」すること。この2点が、プロジェクトの成否を分ける重要なポイントと言えそうです。
5. まとめ
本記事では、社内ツールResource Visualizerの機能追加において、「Geminiによる仕様策定」と「Devinによる実装」というAIの協業プロセスを検証した結果を報告しました。
今回の検証では、RVが持つ「実装がシンプルで、サンプルとなる既存コードが多い」という特性が、AIの能力を最大限に引き出す上で有利に働いたことは間違いありません。しかし、この「仕様の精度を上げ、実装をAIに任せる」というアプローチは、他のプロジェクトにおいても応用できる可能性があります。
また、今回の検証では仕様策定をGeminiとの対話形式で行いましたが、このプロセス自体をさらに効率化するツールも登場しています。最近発表された「kiro」は、AIとの協業を前提とした「仕様書駆動開発」をコンセプトに掲げる新しいIDEです。
プロンプトから要件・設計・タスクを構造化した仕様書を生成し、それを元に開発を進めるというアプローチは、まさに私たちが今回実践したワークフローと重なります。今後は、このようなAIネイティブな開発環境を活用することで、仕様策定から実装までの連携がさらにシームレスになるのではないかと期待しています。
AIの出力品質は、人間が与えるインプット(指示や仕様)の質に大きく依存します。いかにAIに「良い仕事」をしてもらうか、というプロンプトエンジニアリングやディレクションのスキルは、今後のエンジニアにとって重要な要素の一つになるかもしれません。
AIツールは、開発における定型的な作業を効率化し、私たちエンジニアがより創造的で本質的な課題解決に時間を使うための強力なサポートとなり得ます。本記事の検証内容が、皆さんの現場でAI活用の可能性を探る上での一つの参考になれば幸いです。