GitHub Copilot CLIによるコードを書かないコーディング

GitHub Copilot、便利ですよね。私が加入しているサブスクで一番有意義かつ楽しく使えてるんじゃなかろうか… 次点がAmazon Prime

ということで、今回は現在Copilot Pro以上のプランに加入しているGitHubユーザが利用できる GitHub Copilot CLI(パブリックプレビュー版) を使って所謂バイブコーディングをしてみた話となります。

見せてもらおうかGitHub Copilot CLIの性能とやらを

自己紹介

と、本題の前にまずは自己紹介を。

現在はLaravelによるWebアプリケーション開発に携わっています。Y.Mと申します。
技術としては専らバックエンドを担当していますが、案件としては官公庁からソシャゲまで、我ながら幅広い業界の開発に関わってきたなぁと思います。

【社員インタビュー】フルスタックエンジニア:M.Yさん

GitHub Copilot CLIとは

2025年9月末にパブリックプレビュー版としてGitHub MCPサーバと共に公開されたコマンドラインにネイティブ対応したGitHub Copilotです。 尚、本記事作成時点では以下のバージョンおよびAIモデルが使われています。

  • バージョン : 0.0.384
  • AIモデル : claude-sonnet-4.5

できること

VSCodeの拡張機能として提供されるCopilotと異なりCLI上で動くので、CLIでコマンドを叩いてできることなら、(ほぼ)なんでもできます。

  • プロジェクト全体のフォルダ構造を見た上でのコードの操作
  • GitHubの高度な操作
    • 同時に公開されたGitHub MCPサーバにより可能になった機能
    • commit/pushといったGitコマンドどころかPull Requestの作成やissuesの管理、リポジトリのルール設定も可能

できないこと

フォアグラウンドで動作するブロッキングプロセスの管理

例えばWebサーバをフォアグラウンドで起動したり、 tail -f とか叩いたり

(本記事執筆時点での)Copilotが叩くコマンドは「完了」を期待しているのか、「フォアグラウンドで動作するブロッキングプロセス」を一定時間(?)で勝手に中断してしまいます。

デフォルトだとCopilotはこれを自覚していないのか、「サーバを起動したよ」「起動してねぇよ」「おかしいな、もう一度起動したよ」「してねぇよ」という不毛なやりとりが…

対話型に頼らないイベント駆動型の自動コーディング

また、あくまで対話型なので、ユーザの操作に起因する動作、例えば「issueを新しく起票したら」をトリガーとして「それをチェック、ブランチを切って対応、プルリク作成」といったことはできません。 一方でCLIに対して「新しくissue切ったから対応して」とお願いすることはできるので、常駐する仕組みになったらもう一歩先へ行けるかも。

cronを使ってプログラムモードで呼び出せば現状でも実現できるかと思いましたが、無理っぽい。

と思ってたら年明けにGitHub Copilot SDKなるものが発表されてました。これを使えばイベント駆動型の自動コーディングも可能になるかも?

実際に作ってみた

ということで本題、GitHub Copilot CLIに全力で頼り切ってサービスを開発してみましょう。

ルール

  • プログラムは一切書かず、全部Copilotにやってもらう
    • 環境周りも可能な限り任せる、人力でやるのはCloudflareの認証などCopilotから「◯◯してください」と依頼された場合のみ
  • APIキーなど漏れては困る認証情報等の設定だけは自分でやる
  • 画面イメージはdraw.ioで書いてCopilotに読み込ませる

こんなサービスを作ってみる

  • 閲覧者が任意の1行コメントを書き込める匿名のミニ掲示板
  • Gemini CLIを使って書き込み内容をチェック、変な書き込みはさせないようにする
    • 個人情報のやりとりや暴言、一般的に掲示板で禁止されている行為
    • ネットスラングなど見る人が見れば不快になりそうな場合は伏せ字にして、見るか否かは閲覧者に任せる
  • D1→KVにキャッシュを行い、D1へのReadクエリの発行回数を減らす
    • コメント書き込み時はD1に、参照時はKVから取得する

1. 設計書作成

  • DESIGN.md – 設計書
  • moderation-rules.md – モデレーションルール
  • main.drawio.svg – 画面設計

サンプルとして mainブランチはこの初期状態にしています。

2. Copilotにぶん投げる

> @DESIGN.md を元に掲示板システムを作ってください。

3. 動かしつつダメ出しして修正していく

やり取りの例

> 設定されている gemini-1.5-flash は既に廃止されています、現行の gemini-2.5-flash に変更してください。
> 画面デザインは @main.drawio.svg を参考に調整してください。

4. 完成!

※モデレーションに使用しているgemini-2.5-flashの廃止日である2026-06-17まで公開予定ですが、事前予告なくコメントの削除やサービスを終了させていただく場合があります。

動作確認

  • モデレーション動作確認(投稿禁止) 
  • モデレーション動作確認(ネットスラングは伏せ字)  

  

クリックすると展開

5. いや、やっぱりここは改良したいな?

GitHub上でissueを切って

> 新規issueを作りました。対応ブランチを作成して対応、プルリク作成まで進めてください。

みたいにCopilotに依頼するとそのまま対応してくれます。

推奨される設定

開発環境の設定ファイルを作成しておく

.github/copilot-instructions.md

プロジェクトのルールとでも言えばいいのでしょうか。このファイルに記述した内容は、特に何も指定しなくても標準でCopilotに読み込まれます。

例えばこれに以下のようなルールを定めておくと、何も言わなくても「コミットして」とお願いすればこのルールに従った形でコミットしてくれます。

### コミットメッセージ

**形式:**
```
[Copilot] <日本語の説明>
```

**例:**
```bash
git commit -m "[Copilot] Cloudflare Workers APIの実装を追加"
git commit -m "[Copilot] レスポンシブデザインのCSSを修正"
git commit -m "[Copilot] Cron設定のエラーを修正(SUN形式に変更)"
git commit -m "[Copilot] マルチアカウント対応のドキュメントを追加"
```

このファイルについての詳細はこちらで書かれているのが参考になるので是非どうぞ。

作成が面倒くさければ「日本語で返答して」「コミットメッセージにはAI生成である旨を追記して」など、あれこれやり取りしたあとに

> ここまでのやり取りから copilot-instructions.md を生成してください。

でもOK。

おまけ

作業中にCopilotがやらかしたこと

  • GeminiのAPIキーを含む設定ファイルのコミット
    • 即GitHubから警告メールが飛んでくる、何そのマッチポンプ
    • 「再発防止してください」と言ったら設定を切り離して.gitignoreに追加してくれた
  • 冒頭で触れたバックグラウンドで動作するプロセスの管理問題
    • Webサーバ起動を試みるも勝手に中断されてしまい、「起動しました」「してないよ」の無限ループに陥る
    • その旨を指摘するといきなり「ローカルでは動かないようなのでCloudflareにデプロイしました」

Copilot Proを契約しているアカウントとpushするアカウントを別にしたい

今回公開しているリポジトリは会社用のメールアドレスで作ったGithubアカウントですが、サブスクを契約しているのは個人アカウントです。 コピーするしかないのかなー、面倒くさいなー、と思いつつ試行錯誤していたところ、個人アカウントでCopilotを起動しつつプロファイルを切り替えて会社用Githubアカウントにpushすることができました。

以下、copilot-instructions.mdの設定から対象部分を抜粋したものです。

## GitHub 認証設定

**このリポジトリでは `.copilot-profile` に記載されているGitHubプロファイルを使用してください。**

### 設定手順

1. `.copilot-profile` ファイルからプロファイル名を読み取る
2. GitHub CLI認証: `gh auth switch -u $(cat .copilot-profile)`
3. Git設定(このリポジトリのみ):
   ```bash
   PROFILE=$(cat .copilot-profile)
   git config user.name "$PROFILE"
   git config user.email "$PROFILE@users.noreply.github.com"
   ```
4. リモートURL: HTTPS形式を使用

リクエスト消費量に注意

何度もやり取りするため、従来のChat等で呼び出すよりも多くのリクエストを消費しがちです。 この記事を検証しながら書いてたらその他私的に遊びすぎて上限達してたよ。

Premium Requestsを消費しないタイプのコード補完やChatは使用できるので、「Copilot CLIが使えないと詰む」みたいな運用をしない限りは従来のコード入力支援としては使えます。


総括と余談

今回の作業を通して感じた未来のエンジニアの仕事

「設計メインになっていく」

私の持論として「エンジニアとは人と機械の間に立つ通訳である」というものがあるのですが、ここについてはAIを利用したバイブコーディングが一般化したとしても変わらないと考えています。

つまり、これまで行っていた「顧客が実現したいことを理解し、仕様を決め、設計に落とし込む」という作業は、ずっと残り続けると思います。「できるエンジニア」としてコミュ力(顧客から要件を聞き出す能力)の重視される未来が来るのかなぁ…

Antigravityについて

ちなみに2025年11月18日、Copilot CLIと似たようなAIエージェント主導型の開発を行う環境としてGoogleが年末にAntigravityという統合開発環境をリリースしています。

あくまでCLI上で動作するGithub Copilot CLIと違い、こちらは「VSCodeの派生エディタ」でがっつりGUIベースで動作するのが特徴です。ちょっと触ってみた感じ、Copilot CLIと比べて以下のような特徴があるように思えました。

  • VSCodeの拡張機能であるGithub Copilotのように「チャット」欄で動作
  • 作業開始前に方針について「こういった方針で作業するが問題ないか?」と確認してくれる
  • 実際に内部でアプリを起動して結果を「 AI自身の目 で確認する」
    • Copilot CLIが出してくるのは「動くはずのもの」、Antigravityは「動くことを確認したもの」

ここまでくるとCopilot(副操縦士)とは異なり、AIが主体的に動作する「自動操縦」に近い印象を受けます。


株式会社エイプリルナイツは、ゲームが好きという共通の価値観をベースに、楽しく働きやすい企業を作っていこうとしています。
ゲームが好きなエンジニアはぜひ弊社にご注目ください!