はじめに
前回の記事では、GitHub ActionsとAmazon Bedrockを組み合わせて、AWS SDKの仕様変更を自動検知し、「影響分析レポート」を作成するパイプラインについて解説しました。
![]()
今回はその後編として、生成されたレポートを基に、Geminiが修正計画を立案し、AIソフトウェアエンジニア「Devin」が実際にコードを修正してPull Requestを作成するまでの「自律修正フェーズ」について解説します。
なぜ「分析」と「修正」でAIを分けるのか?
前編のAmazon Bedrockに加え、今回はGeminiとDevinが登場します。「1つのAIですべてやればいいのでは?」と思われるかもしれませんが、各AIモデルの特性を最大限に活かす構成を採用することで、精度の高い自律修正を実現しました。
-
分析担当 (Bedrock)
- 膨大なChangelogと技術的差分から事実を正確に抽出し、システムへの影響(仕様変更)を定義します。
-
計画担当 (Gemini)
- 分析結果と既存のコードベースを読み解き、Devinに対して「どのファイルをどう修正すべきか」という具体的かつ論理的な指示書(Prompt)を作成します。
-
実行担当 (Devin)
- 指示書に従い、実際の環境でコードを書き、テストを実行し、エラーが出れば自己修正して完遂します。
自律修正パイプラインの詳細
ここからは、実際の処理フローをステップごとに見ていきましょう。
Step 1: Geminiによる「修正指示書」の策定
前編で出力された「影響分析レポート」は人間には読みやすいですが、AIエージェント(Devin)への入力としては、「具体的にどのファイルを触ればいいのか」という情報が不足している場合があります。
そこで、間にGeminiを挟み、レポートを「実行可能なタスクリスト」へ変換させます。Geminiには、あらかじめこのプロジェクトのアーキテクチャ(「APIラッパー」が低レイヤー、「データ処理」が集計レイヤーであること等)をコンテキストとして与えておきます。
-
指示書に含めるべき内容:
- 依存関係定義ファイルのバージョン更新指示
- 影響を受ける「APIラッパー層」の修正内容(引数変更や戻り値のパース処理など)
- それに伴う「データ処理層」の修正指示
Geminiは、SDKのバージョンアップに伴うメソッド名の変更や、引数の型変更などを正確に理解し、Devinのための「設計図」を出力します。
Step 2: Devinへのタスク投入と自律実行
Geminiが作成した「設計図」をDevinに渡します。ここから先は、人間は手を触れません。
Devinが自律的に動き出します。
Devinは以下のステップを自律的に実行します。
- 環境構築: リポジトリをクローンし、Dockerコンテナを立ち上げ、依存関係をインストールします。
- コード修正: Geminiの指示書に従い、対象のコードを修正します。
- PR作成: 全てのテストがパスしたら、修正内容をコミットし、GitHubにPull Requestを作成します。
実践:AWS SDKの仕様変更はどう修正されたか
実際に発生したAWS SDKの変更に対し、このパイプラインがどのように機能するかをご紹介します。
ケース:新しいリソース情報の追加
特定のAWSサービスで、APIのレスポンスに新しい重要な属性が追加されたケースです。
-
Bedrockの分析
- 「API
DescribeXxxのレスポンスにNewAttributeが追加された。これはユーザー設定として価値があるため取り込むべき」と判断。
- 「API
-
Geminiの指示
- 「『データ収集ロジック』で
NewAttributeを取得するように修正してください」とDevinへ指示。
- 「『データ収集ロジック』で
-
Devinの実装
- 指示通りにコードを修正。GitHubにPull Requestを作成。
まとめ
今回構築したパイプラインにより、AWS SDKの仕様変更検知から、影響分析、そしてコード修正のPull Request作成までを自動化することに成功しました。
特に重要だったのは、「AIにすべてを丸投げしない」という点です。
「分析」「計画」「実行」というプロセスを定義し、それぞれの得意分野を持ったAIを連携させることで、高度な自律性をシステムに持たせることができました。
- Bedrock: 正確な情報の抽出と価値判断
- Gemini: 文脈理解と実装計画の策定
- Devin: 実行力と自己解決能力
最後に
この記事が皆さんの開発プロセスを自動化・効率化する上での何かのヒントになれば幸いです。