GitHub Copilot のエージェント構成を整備した話

はじめに

このブログ、実は裏側でけっこうな仕組みが動いています。 今回はその仕組みを整備した話を書こうと思います。

ちょっとした技術的な話になりますが、なるべくわかりやすく書いていくので、ぜひ最後まで読んでみてください。


これまでどうやっていたか

正直に言うと、これまでは「GitHub Copilot に全部お願いする」という、ざっくりとしたやり方をしていました。

「この記事書いて」→ Copilot が書く → 自分でファイルに貼る → Git でプッシュ → デプロイ、みたいな流れです。

決して悪くはないのですが、毎回同じ手順を繰り返す部分が多く、「もうちょっとうまくできないかな」とずっと思っていました。


エージェントを役割ごとに分けることにした

そこで、各作業をエージェントとして定義して、それぞれに明確な役割を持たせることにしました。

設計したエージェントは以下の通りです。

| エージェント | 役割 | |---|---| | Writer | 記事の執筆・posts/ への保存 | | ImageGen | アイキャッチ画像の生成・public/images/ への保存 | | Git | ブランチ作成・コミット・プッシュ・PR作成 | | BlogOrchestrator | 投稿フロー全体の統括・各エージェントの呼び出し |

他にも機能開発向けのエージェント(Spec・Impl・Test・TechLead・Quality など)も整備しましたが、ブログ運営という観点では上の4つが主役です。


BlogOrchestrator がフローを統括する

ポイントは BlogOrchestrator の存在です。

「こんな記事を書いてほしい」とテーマを伝えると、BlogOrchestrator が以下の手順で各エージェントを順番に呼び出していきます。

ユーザー要望(テーマ・内容)
    ↓
[BlogOrchestrator]
    ↓
[Git] → main からブランチ作成
    ↓
[Writer] → 記事執筆・保存(posts/)
    ↓
[ImageGen] → アイキャッチ画像生成・保存(public/images/)
    ↓
[BlogOrchestrator] → 記事に画像を挿入
    ↓
[Git] → コミット → プッシュ → PR 作成
    ↓
完了

自分がやることは「テーマを伝えること」だけ。あとはエージェントたちが勝手に動いてくれます。


役割を分けることで何がよくなったか

単一エージェントで何でもやっていた頃と比べて、いくつか明確なメリットがあります。

1. 各エージェントの指示が明確になる 「記事を書いて、画像も作って、Git も操作して……」という複雑な指示を一度に出す必要がなくなります。Writer は執筆だけ、Git は Git 操作だけに集中できるので、エージェントへの指示がシンプルになります。

2. 再利用しやすい Git エージェントはブログ投稿フローだけでなく、機能開発フローでも使えます。共通の処理をエージェントとして定義しておけば、どのフローでも呼び出せます。

3. フローが可視化される 「このブログ記事の投稿には、これだけのステップが必要なんだ」ということが明文化されます。属人的な手順が減り、再現性が上がります。


で、この記事もそのフローで書かれています

タイトルを見ればわかるかもしれませんが…… そうです、この記事自体も、今整備したエージェントフローで書かれています

BlogOrchestrator にテーマを伝えたところ、Writer が記事を書き、ImageGen が画像を用意し、Git がブランチを作ってコミット・プッシュしてくれました。

「エージェント構成の話をエージェントに書かせる」というオチ、なかなか気に入っています。


おわりに

今回の整備でブログ運営がずいぶんラクになりました。テーマさえ決まれば、記事を出すまでの面倒な作業は全部エージェントが引き受けてくれます。

もっとブログを気軽に更新できるようになりそうなので、今後は記事の頻度も少し上げていけたらいいな、と思っています。

引き続きよろしくお願いします!