はじめに
Amazon Q Developer in GitHubについて記事を書こうと思ったきっかけ
Amazon Q Developer in GitHubは、GitHubのIssuesを通じてAIがコード生成やリファクタリングを自動で行ってくれるサービスです。
社内業務を実施している際に、「Amazon Q Developer in GitHub」について先輩から教えていただき、とても便利なサービスだと感じたため記事のテーマに選定しました。
今回は実際にCloudFormationテンプレートの自動生成を試してみましたので、その手順と感想をまとめてみました。
Amazon Q Developer in GitHubとは?
Amazon Q Developer in GitHubは、内部的にはBedrock上のClaude 3.7 Sonnetを使用しており、Issue作成時に特定のラベルを付けることで、AIが自動的にコード生成やリファクタリングを行いプルリクエスト作成まで作業してくれます。
GitHubインターフェイス内で直接、機能開発、コードレビュー、Java コードの移行を行うことができます。
VSCode拡張機能との違い
まず、VSCode拡張機能版Amazon Q Developerとの違いを整理してみます。
| 項目 | GitHub版 | VSCode拡張機能版 |
|---|---|---|
| チーム共有 | ✅ GitHubリポジトリで自動共有 | ❌ 個人環境のみ |
| バージョン管理 | ✅ Gitネイティブ対応 | ❌ 別途Git操作が必要 |
| ブランチ管理 | ✅ 自動でブランチ作成・プルリク作成 | ❌ 手動でブランチ管理 |
| CI/CD連携 | ✅ GitHub Actionsと自動連携 | ❌ 別途設定が必要 |
| コードレビュー | ✅ プルリクベースのレビューフロー | ❌ レビュー機能なし |
| 成果物共有 | ✅ READMEやドキュメントも自動生成 | ❌ コードファイルのみ |
特に注目すべきは、開発プロセス全体がGitHubのワークフローに統合されている点です。これにより、AIが生成したコードも通常の開発フローと同じように管理できます。
実際にやってみた手順
1. Amazon Q Developer in GitHubのインストール
まず、以下の手順でAmazon Q DeveloperをGitHubにインストールします:
1.https://github.com/apps/amazon-q-developer にアクセス
2.「Configure」ボタンをクリック
3. インストール先のアカウントを選択
4. 「Only select repositories」を選択
5. 対象のリポジトリを指定
6. 「Install」をクリック
2. インストール確認
リポジトリの設定画面で以下を確認します:
- リポジトリページの「Settings」タブを開く
- 左メニューの「GitHub Apps」を選択
- 「Installed GitHub Apps」に「Amazon Q Developer」が表示されていることを確認
3. 仕様書の作成
Amazon Qに投げる仕様書を作成します。ここがポイントで、以下の点を意識する必要があります。
仕様書作成のコツ:
- 出力形式を明確に指定する
∟(例)yamlファイルを作成してください
∟(例)計4つファイルを作成してください - 仕様書は1000文字以内に収める(超過するとWARNINGが出る)
- なるべく具体的な仕様を記載する
∟(例)コストを最小限にしてください - 具体的な要件を構造化して記載する(JSONやマークダウン形式)
例文1:
# 概要
静的ウェブサイトホスティング用のS3バケットを作成するCloudFormationテンプレートを作成してください
# 要件
・静的ウェブサイトホスティングを有効にしてください
・インデックスページは「index.html」としてください
・エラーページは「error.html」としてください
・パブリックアクセスを許可してください
# 出力
・template.yamlとして出力してください
・デプロイ手順のREADMEも作成してください
例文2:
# 概要
EC2インスタンスの基本監視を行うCloudWatch設定のCloudFormationテンプレートを作成してください
# 監視対象
・CPU使用率が80%を超えた場合のアラーム
・メモリ使用率が90%を超えた場合のアラーム
・ディスク使用率が85%を超えた場合のアラーム
# 通知設定
・SNSトピックを作成してください
・メール通知を設定してください
# 出力
・CloudFormationのyamlファイルをmonitoring.yamlとして出力してください
・設定手順書も作成してください
4. GitHub Issuesに投稿
- リポジトリの「Issues」タブを開く
2. 「New issue」をクリック
3. 任意のタイトルを「Add a title」欄に入力する
4. 作成した仕様書を「Add a description」欄に入力する
5. ラベルで「Amazon Q development agent」を選択
6. 「Create」をクリック
7. 画面遷移したIssueの画面にて「 I'm working on generating code for this issue. I'll update this issue with a comment and open a pull request when I'm done.」といったログが出ていれば成功
5. 自動開発プロセスの開始
Issueを作成すると、Amazon Qが自動的に以下の処理を開始します:
- 新しいブランチを作成(
Q-DEV-issue-<issue番号>-<タイムスタンプ>形式) - 要件に基づいてファイルを生成
- プルリクエストを自動作成
待っていると以下のように「Progress Updates」が表示され、何を実施しているのかが可視化されます。
6. 結果の確認と自動リファクタリング
「Progress Updates」が完了すると以下のように「 I finished the proposed code changes, and the pull request is ready for review~」と表示され、プルリクエストが作成されます。
プルリクエストが作成されたら、以下を確認します。
1. ブランチが作成され、作成されたブランチからmainブランチへのプルリクエストになっていること
2. 「Files changed」タブで生成されたファイルを確認
7. 追加修正のリクエスト
プルリクエスト画面で追加の修正をリクエストできます。
1. 修正したい箇所をコード上で指定
2. 修正内容をコメントで記載し、「Start a review」をクリック
3. 画面上部の「Finish your review」を選択
4. 「Request changes」を選択し、「Submit review」をクリック
Amazon Qが再度修正を行い、更新されたコードをプッシュします。
5. 下記画像の通り、プルリクエストを更新した旨の記載を確認し、更新されたプルリクエストを確認する
実際に使ってみた感想
良かった点
1. 開発プロセス全体の自動化
単なるコード生成ではなく、ブランチ作成からプルリクエストの作成、CI/CD連携まで全てが自動化されている点
2. 高い生成品質
CloudFormationテンプレートだけでなく、適切なREADMEファイルも同時に生成され、実用的なレベルの品質であった点
3. チーム開発への親和性
GitHubネイティブなので、生成されたコードも通常のコードレビュープロセスに乗せることができる点
気になった点
1. 日本語対応
日本語だけでなく、別途英語での支持も試してみましたが、英語での指示の方が精度が高く感じました。
日本語でも動作しますが、より具体的な指示が必要だと感じました。
2. 複雑な要件への対応
単純なリソース作成は得意ですが、他にも様々試している中で複雑なアーキテクチャや特殊な要件になると
誤った情報や不要なファイル修正なども含まれてしまいました。
この場合は、特に人間の補完が必要になりそうです。
3. 学習コスト
仕様書の書き方は簡単だろうと思っていましたが、自分で思っていたよりも、出力して欲しい回答を出すことが容易ではありませんでした。
コツがあり、慣れるまで試行錯誤が必要でした。
まとめ
Amazon Q Developer in GitHubは、特に以下のような場面で威力を発揮しそうと感じました。
- プロトタイプ開発: 素早く動くものを作って検証したい場合
- 学習目的: ベストプラクティスに沿ったコードの参考例が欲しい場合
- チーム開発: AIが生成したコードもレビュープロセスに乗せたい場合
- ドキュメント生成: コードと合わせてREADMEも自動生成したい場合
また、VSCode拡張機能版と比較して、GitHubとの統合度の高さが最大の魅力だと感じました。AIが生成したコードであっても、人間が書いたコードと同じワークフローで管理でき、簡単に業務を実施しているチームメンバーとGitHubリポジトリでコード自動共有できるのは画期的だと思います。
ただし、まだまだ複雑な仕様に対するコード生成となると誤った情報も含まれていたため
完全に人間に代わるものではなく、AIとのペアプログラミングという位置づけで、要件定義や設計の部分は人間が行い、実装部分で「Amazon Q Developer in GitHub」を頼るというのが現実的だと感じました。
参考
- Amazon Q Developer in GitHub
- Anthropic’s Claude 3.7 Sonnet hybrid reasoning model is now available in Amazon Bedrock
- Amazon Q Developer in GitHub (プレビュー) がコード生成を加速























