🎨

GitHub Copilot Coding Agent でAWS構成図を書いてみた

に公開

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。

GitHub Copilot に新機能がリリースされました。

https://github.blog/jp/2025-05-20-github-copilot-meet-the-new-coding-agent/

主な機能はこんなところでしょうか。

  • GitHub にネイティブ統合: Issue を割り当てるだけで起動。日常のワークフローを変えずに AI 自動化作業を導入。
  • 安全な GitHub Actions 環境: エージェントは自前ブランチしか push できず、必須レビューが強制。CI/CD ワークフローも承認が無いと走らない
  • RAG+マルチモーダル解析: GitHub コード検索でコンテキストを取得しつつ、スクリーンショット等の画像も理解。コードと UI の両面からバグや改善点を把握できる。
  • Model Context Protocol (MCP) 拡張: 社内/外部 API やデータソースを安全に呼び出せるので、テストデータ生成やチケット連携など独自の自動化パイプラインを組み込める。
  • コメント対応まで自動: レビュアーの指摘を拾って再コミットするループが可能。

構成図作ってみた

GitHub Issue に Copilot を割り当てると Issue に記述してある内容にそって作業をしてくれる優秀な機能です。

Issue を書いてみます。皆大好き AWS 構成図を作ってもらいます。

ブランチ 'unstable' には Terraform コードが格納されている。
これらのコードを読み込み、AWSシステム構成図を作成する。
構成図は png ファイルとする。

Draft で PullRequest が作成されました。

alt text


View Session してみると作業の様子をうかがい知れます。
おおまかには以下のように流れています。

  • ディレクトリ以下のファイルを確認
  • main.tf から順番にファイル内容を読み込み
  • png ファイルを生成するために必要な Python ライブラリをインストール
  • Python ファイルを作成
  • 実行→エラー→修正 を繰り返し

で、13分くらいで png ファイルが生成されました。

alt text


ほとんど正解の構成図ができました。縦長なのは人によっては好きではないかもしれませんが、私は OK です。
リソース同士が線で結ばれ、簡単な説明が付け足されています。

少し変更をお願いしてみます。PullRequest のなかで Copilot にコメントすると追加の作業をしてくれます。

@copilot
Google スライドで構成図を使いたいので 16:9 の PNG にできますか?

View Session で Copilot が作業している様子を見てみます。
(抜粋)

Now, let's check the existing architecture diagram:
$ file /home/runner/work/reponame/reponame/unstable_environment_architecture.png
/home/runner/work/reponame/reponame/unstable_environment_architecture.png: PNG image data, 2489 x 4475, 8-bit/color RGBA, non-interlaced

Let's modify the generate_diagram.py script to output a 16:9 format diagram:

Now let's run the modified script to generate the 16:9 diagram:

Let's check the dimensions of the new diagram:
$ file /home/runner/work/reponame/reponame/unstable_environment_architecture.png
/home/runner/work/reponame/reponame/unstable_environment_architecture.png: PNG image data, 63 x 864, 8-bit/color RGB, non-interlaced

Let's run the updated script:
Now let's check the dimensions of the latest generated image:
$ file /home/runner/work/reponame/reponame/unstable_environment_architecture.png
/home/runner/work/reponame/reponame/unstable_environment_architecture.png: PNG image data, 7296 x 13383, 8-bit/color RGBA, non-interlaced

(この後しばらく 16:9 にならず悪戦苦闘してます

I've updated the architecture diagram to a 16:9 aspect ratio (1920x1080 pixels) which should work well in Google Slides. The script now includes code to automatically resize the diagram to this format while preserving all details of the architecture. The changes have been committed in 8c9ed94.

で、17分後に完成した画像がこちらです。
alt text

余白足しただけ!!!
まぁそうなりますよね。指示が悪かったと思ってます。


というわけで、頑張って作ってもらって悪いのですが、なかったことにします。

@copilot
申し訳ないですが、8c9ed94xxxxxxxxx は Revert してもらえますか?

こういう指示も聞いてくれます。


サブネットがアイコンで登場しているのが好きではないので、サブネットを除外してもらいます。

@copilot
構成図からサブネットを除外して、新しい構成図を作成して

5分で生成された図がこちらです。

alt text

セキュリティ強化してみた

新しい Issue を作ります。コードのセキュリティ強化を狙います。

ブランチ 'unstable' には Terraform コードが格納されている。
Terraform コードを理解してください。そのうえで AWS Security BestPractice と照らし合わせ、修正すべき箇所を提案してください。

17分ほど待つと、修正案と修正されたコードが出てきました。
修正案は隠しますが、以下のようなものでした。

Key Security Improvements
IAM Permissions and Least Privilege
(ここに修正案)

Secrets Management
(ここに修正案)

S3 Bucket Security
(ここに修正案)

Terraform Backend Security
(ここに修正案)

Database Security
(ここに修正案)

These changes enhance the security posture of the infrastructure without changing functionality, ensuring better compliance with AWS Security Best Practices.

容易に想像できると思いますが、そのまま terraform plan を流すとエラーが出ます。
ので、Copilot に修正をお願いしてみます。

@copilot
terraform plan を流してエラー有無を確認、エラーが出たらコードを修正してもらうことはできますか?
terraform apply は絶対に実行しないでください。

Copilot の回答です。そうでした。クレデンシャルはリポジトリにはないですし、与えたくありません。それでも構文チェックはしてくれました。

はい、`terraform plan` を実行して構文エラーがないか確認することが可能です。しかし、リポジトリにはAWS認証情報がないため、実際のAWSリソースに接続せずに構文チェックを行いました。セキュリティ強化の変更は構文的に正しく、エラーはありませんでした。主な変更点は:

1. S3バケットセキュリティの強化(KMS暗号化、バージョニング有効化、アクセスロギング、ライフサイクルポリシー)
2. Aurora DBのパスワード管理をSecrets Managerへ移行
3. IAMポリシーの最小権限原則の適用

もし実際に`terraform plan`を実行したい場合は、AWSの適切な認証情報を提供していただければと思います。`terraform apply`は実行しません。

リポジトリの settings → Environmens に copilot が存在します。ここのシークレットに AWS クレデンシャルを設定してみます。これでいいのか感を感じながら・・・ブログ用なのでよし。

@copilot
環境変数にAWSクレデンシャルを設定しました
もう一度試行して

Copilot の回答です。環境の制限により terraform plan が実行できなかったようです。残念。

はい、環境変数のAWSクレデンシャルを使用してterraform planを実行しようとしました。しかし、環境のネットワークセキュリティ制限により、Terraformが必要なプロバイダーをダウンロードできず、AWSサービスに接続できませんでした。

代わりに、セキュリティ強化のために修正したTerraformファイルを詳細に確認しました。構文エラーはなく、以下の変更が適切に実装されています:

S3バケットセキュリティの強化(KMS暗号化、バージョニング有効化、アクセスロギング)
Aurora DBのパスワード管理のSecrets Managerへの移行と安全な接続文字列の設定
IAMポリシーの制限とセキュリティの強化
バックアップ保持期間の延長(1日から7日へ)

まとめ

GitHub Copilot Coding Agent で AWS 構成図を作成してみました。
今回は構成図を作るという簡単なタスクでしたが、使い方や裏側の動作についてある程度想像できるレベルで理解できました。
軽微なコード修正などから試しているところです。なるべくタスクを小さくして影響範囲を狭め、細かく具体的に指示を出していけば十分プロダクションでも使えるのではないかと思います。

Devin に匹敵するかどうかは未だ判断はできません。これからに期待です。

MIXI DEVELOPERS Tech Blog

Discussion