はじめに

前回の記事では、GitHub ActionsとAmazon Bedrockを組み合わせて、AWS SDKの仕様変更を自動検知し、「影響分析レポート」を作成するパイプラインについて解説しました。

今回はその後編として、生成されたレポートを基に、Geminiが修正計画を立案し、AIソフトウェアエンジニア「Devin」が実際にコードを修正してPull Requestを作成するまでの「自律修正フェーズ」について解説します。

なぜ「分析」と「修正」でAIを分けるのか?

前編のAmazon Bedrockに加え、今回はGeminiとDevinが登場します。「1つのAIですべてやればいいのでは?」と思われるかもしれませんが、各AIモデルの特性を最大限に活かす構成を採用することで、精度の高い自律修正を実現しました。

  1. 分析担当 (Bedrock)
    • 膨大なChangelogと技術的差分から事実を正確に抽出し、システムへの影響(仕様変更)を定義します。
  2. 計画担当 (Gemini)
    • 分析結果と既存のコードベースを読み解き、Devinに対して「どのファイルをどう修正すべきか」という具体的かつ論理的な指示書(Prompt)を作成します。
  3. 実行担当 (Devin)
    • 指示書に従い、実際の環境でコードを書き、テストを実行し、エラーが出れば自己修正して完遂します。

自律修正パイプラインの詳細

ここからは、実際の処理フローをステップごとに見ていきましょう。

Step 1: Geminiによる「修正指示書」の策定

前編で出力された「影響分析レポート」は人間には読みやすいですが、AIエージェント(Devin)への入力としては、「具体的にどのファイルを触ればいいのか」という情報が不足している場合があります。

そこで、間にGeminiを挟み、レポートを「実行可能なタスクリスト」へ変換させます。Geminiには、あらかじめこのプロジェクトのアーキテクチャ(「APIラッパー」が低レイヤー、「データ処理」が集計レイヤーであること等)をコンテキストとして与えておきます。

    指示書に含めるべき内容:
  • 依存関係定義ファイルのバージョン更新指示
  • 影響を受ける「APIラッパー層」の修正内容(引数変更や戻り値のパース処理など)
  • それに伴う「データ処理層」の修正指示

Geminiは、SDKのバージョンアップに伴うメソッド名の変更や、引数の型変更などを正確に理解し、Devinのための「設計図」を出力します。

Step 2: Devinへのタスク投入と自律実行

Geminiが作成した「設計図」をDevinに渡します。ここから先は、人間は手を触れません。
Devinが自律的に動き出します。

Devinは以下のステップを自律的に実行します。

  1. 環境構築: リポジトリをクローンし、Dockerコンテナを立ち上げ、依存関係をインストールします。
  2. コード修正: Geminiの指示書に従い、対象のコードを修正します。
  3. PR作成: 全てのテストがパスしたら、修正内容をコミットし、GitHubにPull Requestを作成します。

実践:AWS SDKの仕様変更はどう修正されたか

実際に発生したAWS SDKの変更に対し、このパイプラインがどのように機能するかをご紹介します。

ケース:新しいリソース情報の追加

特定のAWSサービスで、APIのレスポンスに新しい重要な属性が追加されたケースです。

  1. Bedrockの分析
    • 「API DescribeXxx のレスポンスに NewAttribute が追加された。これはユーザー設定として価値があるため取り込むべき」と判断。
  2. Geminiの指示
    • 「『データ収集ロジック』で NewAttribute を取得するように修正してください」とDevinへ指示。
  3. Devinの実装
    • 指示通りにコードを修正。GitHubにPull Requestを作成。

まとめ

今回構築したパイプラインにより、AWS SDKの仕様変更検知から、影響分析、そしてコード修正のPull Request作成までを自動化することに成功しました。

特に重要だったのは、「AIにすべてを丸投げしない」という点です。
「分析」「計画」「実行」というプロセスを定義し、それぞれの得意分野を持ったAIを連携させることで、高度な自律性をシステムに持たせることができました。

  • Bedrock: 正確な情報の抽出と価値判断
  • Gemini: 文脈理解と実装計画の策定
  • Devin: 実行力と自己解決能力

最後に

この記事が皆さんの開発プロセスを自動化・効率化する上での何かのヒントになれば幸いです。