公式チュートリアル「GitHub Copilot CLI for Beginners」ハンズオンリポジトリを進めていきます!
このチュートリアルは (2026 年 3 月現在) 7 章までありますが、
今回は、第 2 章(コンテキストについて)をざっくり和訳しながら進めていこうと思います。
前回/前々回の記事
第 0 章 環境構築編
第 1 章 操作モードの説明
🗺️ ハンズオンの全体像
2026/03/18 現在、第 0 章から第 7 章まであります。
今回はこの第 2 章を進めていきましょう。
| 章 | タイトル | 学べる内容 |
|---|---|---|
| 0 | 🚀 クイックスタート | インストールと動作確認 |
| 1 | 👋 最初の一歩 | ライブデモ + 3 つの操作モード |
| 2 | [ 今ここ!→ ] 🔍 コンテキストと会話 | 複数ファイルのプロジェクト分析 |
| 3 | ⚡ 開発ワークフロー | コードレビュー、デバッグ、テスト生成 |
| 4 | 🤖 特化型 (Specialized) AI アシスタントの作成 | ワークフロー用のカスタム AI エージェント |
| 5 | 🛠️ 繰り返し作業の自動化 | 自動で読み込まれるスキルの作成 |
| 6 | 🔌 GitHub・データベース・API との接続 | MCP サーバとの連携 |
| 7 | 🎯 すべてを組み合わせる | すべてを組み合わせた実践的ワークフロー |
🎯 0. ゴール(Learning Objectives)
AI が、1ファイルずつではなく、あなたのコードベース全体を見渡せることを学びます。
-
@構文を使って、ファイル・ディレクトリ・画像を参照できる -
--resumeと--continueを使って、以前のセッションを再開できる - コンテキストウィンドウ の仕組みを理解できる
- 効果的なマルチターン会話を書ける
- 複数プロジェクトをまたぐワークフローのために、ディレクトリ権限を管理できる
1. 基本用語
1-1. @ 構文
@ 記号は、プロンプト内でファイルやディレクトリを参照するためのものです。
Copilot CLI に「このファイルを見て」と伝える方法です。
💡 Note
このコースのすべての例(サンプル)は、このリポジトリに含まれる samples/ フォルダを使用しています。
そのため、すべてのコマンドをそのままコピペで試すことができます。(カレントディレクトリが正しければ)
1-1-1. 今すぐ試してみる
手元の任意のファイルで試すことができます:
copilot
# 任意のファイルを指定
> @package.json が何をしているか説明してください
> @README.md を要約してください
> @.gitignore には何が書かれていて、なぜ必要ですか?
たとえば、このプロジェクト内の /package.json について説明してもらいましょう。
@package.json が何をしているか説明してください
出力例)
1-2. 基本的な @ 記述パターン
| パターン | 機能 | 使用例 |
|---|---|---|
@ファイル名.py |
単一ファイルを参照 |
@samples/book-app-project/books.py をレビューしてください |
@フォルダ名/ |
ディレクトリ内のすべてのファイルを参照 |
@samples/book-app-project/ をレビューしてください |
@ファイル名.py @ファイル名.py |
複数ファイルを同時に参照 |
@samples/book-app-project/book_app.py と @samples/book-app-project/books.py を比較してください |
1-2-1. 例) 単一ファイルを参照
copilot
> @samples/book-app-project/utils.py が何をしているか説明してください
出力例
1-2-2. 例) 複数ファイルを参照
copilot
@samples/book-app-project/book_app.py と @samples/book-app-project/books.py を比較し、一貫性があるか確認してください
出力例
1-2-3. 例) ディレクトリ全体を参照
copilot
@samples/book-app-project/ 内のすべてのファイルについて、エラーハンドリングの観点でレビューしてください
出力例
1-2-4. 例) ワイルドカードパターンや画像参照
Copilot CLI はワイルドカードパターンや画像参照にも対応しています:
| パターン | 内容 |
|---|---|
@folder/*.py |
フォルダ内のすべての .py ファイル |
@**/test_*.py |
再帰的ワイルドカード:どこにあってもすべてのテストファイルを検索 |
@image.png |
UIレビュー用の画像ファイル |
copilot
> @samples/book-app-project/**/*.py に含まれる TODO コメントをすべて見つけて
1-3. Cross-File Intelligence
複数のファイルをまたがる分析ができます。
(↑ オリジナル画像 (英語) は こちら)
1-3-1. 例) 複数ファイルにまたがるバグを見つける
copilot
> @samples/book-app-project/book_app.py @samples/book-app-project/books.py
>
> これらのファイルはどのように連携していますか?データの流れはどうなっていますか?
出力例
💡 発展編(セキュリティ分析)
セキュリティ観点でのクロスファイル分析を試したい場合は、以下のように実行できます:
@samples/buggy-code/python/user_service.py @samples/buggy-code/python/payment_processor.py
両方のファイルにまたがるセキュリティ脆弱性を見つけてください
1-3-2. クロスファイル分析の大切さ
なぜ重要か:
単一ファイルのレビューでは、全体像を見逃してしまいます。
複数ファイルをまたいだ分析によってのみ、以下が明らかになります:
- 統合すべき重複コード
- コンポーネント同士の関係が分かるデータフロー
- 保守性に影響するアーキテクチャ上の問題
2. 爆速コードリーディング
↓ 1時間かかるコードリーディングを、AI 分析の助けにより 10 秒で終わらせる、という図
2-1. この本アプリサンプルを読ませる
copilot
> @samples/book-app-project/
>
> このアプリは何をするものか、また最大の品質上の問題は何かを1段落で説明してください
出力例1(私の手元)
出力例2(チュートリアルに載っている例の和訳)
これは、JSONファイルに保存された本を追加・一覧表示・削除・検索できる
CLIの書籍コレクション管理アプリです。主な品質上の問題は以下の通りです:
- 表示ロジックの重複 - show_books() と print_books() が同じことをしている
- エラーハンドリングの不一致 - 例外を投げる場合と False を返す場合が混在している
- 入力バリデーションの欠如 - 年が0でも通る、タイトルや著者に空文字が許されている
- テスト不足 - find_book_by_title など重要な関数にテストがない
優先対応:重複した表示関数の統合と入力バリデーションの追加
2-2. コンテキスト付きコードレビュー
copilot
> @samples/book-app-project/books.py このファイルに潜在的なバグがないかレビューしてください
Copilot CLI はファイル全体を把握しているため、具体的な指摘ができます
例)
49行目:大文字小文字を区別する比較のため、本を見つけられない可能性があります...
29行目:JSONのデコードエラーは捕捉されているが、データ破損がログに記録されていません...
> @samples/book-app-project/book_app.py はどうですか?
books.py のコンテキスト (バグ探しの流れ) を維持したまま、book_app.py をレビューしてくれます
2-3. コードベースの理解
copilot
> @samples/book-app-project/books.py このモジュールは何をしていますか?
Copilot CLI は books.py を読み、BookCollection クラスを理解します
> @samples/book-app-project/ コード構造の概要を教えてください
Copilot CLI はディレクトリ全体をスキャンして要約してくれます
> このアプリはどのように本を保存・読み込みしていますか?
Copilot CLI は既に見たコードをもとに処理の流れを追跡できます。
↓ 最初(の英語の部分)で「俺はすでに全部のファイルを読み込んでるから即レスできます」って言ってる。(実際 即レスだった)
2-4. 複数ファイルにまたがるリファクタリング
copilot
> @samples/book-app-project/book_app.py @samples/book-app-project/utils.py
> show_books() と print_books() に重複した表示処理があるようです。
\ これらを統合する方法を提案してください
Copilot CLI は両方のファイルを把握し、重複コードの統合方法を提案してくれます
3. セッション管理
作業中のセッションは自動的に保存されます。
そのため、中断したところから後で再開することができます。
3-1. セッションは自動保存される
すべての会話は自動的に保存されます。
通常通り終了するだけでOKです:
copilot
> @samples/book-app-project/ すべてのモジュールのエラーハンドリングを改善していきましょう
[... 作業 ...]
> /exit
3-2. 直前のセッションを再開する
# 中断したところから続ける
copilot --continue
3-3. 特定のセッションを再開する
# セッション一覧から選択して再開
copilot --resume
# セッションIDを指定して再開
copilot --resume abc123
3-2-1. セッション ID
copilot --resume を ID なしで実行すると、過去のセッション一覧(名前・ID・最終利用日時)が表示されるので、そこから選択できます。
3-2-2. 複数ターミナルの場合のセッション ID は?
各ターミナルはそれぞれ独立したセッションになります。
例えば 3 つのターミナルで Copilot CLI を開いていれば、3 つのセッションが存在します。
--resume を使えば、どのターミナルからでもすべてのセッションを参照できます。
--continue は、どのターミナルであっても「最後に終了したセッション」を再開します。
3-2-3. 再起動せずにセッションを切り替えられる?
はい、可能です。
セッション中に /resume コマンドを使って切り替えられます:
> /resume
# 切り替え可能なセッション一覧が表示される
3-3. セッションを整理する
後から見つけやすいように、セッションには分かりやすい名前を付けましょう:
copilot
> /rename book-app-review
# セッション名が変更され、識別しやすくなる
3-4. コンテキストの確認と管理
ファイルや会話を追加していくと、Copilot CLI の
コンテキストウィンドウが徐々に埋まっていきます。
以下の 2 つのコマンドで管理できます:
copilot
> /context
コンテキスト使用量: 45,000 / 128,000 トークン(35%)
> /clear
# コンテキストをリセットして新しく開始。話題を切り替えるときに使用
3-4-1. コンテキストの /clear を使うタイミング
例えば books.py をレビューしていた状態から、 utils.py の話に切り替えたい場合は、
先に /clear を実行してください。
そうしないと、前のトピックの古いコンテキストが残り、
意図しない回答になる可能性があります。
4. 中断したところから再開する
セッションは終了時に自動保存されます。数日後でも、ファイル・課題・進捗すべてのコンテキストを保持したまま再開できます。
(↑ オリジナル画像 (英語) は こちら)
月曜日
# 月曜日: book app のレビュー開始
copilot
> /rename book-app-review
> @samples/book-app-project/books.py
> コード品質の問題をすべて洗い出し、番号を付けてください
検出された品質問題:
1. 表示処理の重複(book_app.py と utils.py)- MEDIUM
2. 空文字に対する入力検証がない - MEDIUM
3. 年が 0 や負の値になり得る - LOW
4. すべての関数に型ヒントがない - LOW
5. エラーログが不足している - LOW
> 問題 #1(重複関数)を修正して
# 修正作業を実施...
> /exit
水曜日
# 水曜日: 中断したところから再開
copilot --continue
> book app のレビューで未対応の問題は何が残っていますか?
book-app-review セッションの未対応問題:
2. 空文字に対する入力検証がない - MEDIUM
3. 年が 0 や負の値になり得る - LOW
4. すべての関数に型ヒントがない - LOW
5. エラーログが不足している - LOW
問題 #1(重複関数)は月曜日に修正済みです。
> 次は問題 #2 に取り組みましょう
これの何が強力か:
数日後でも、Copilot CLI は以下を覚えています:
- 作業していた正確なファイル
- 問題の番号付きリスト
- すでに対応済みの項目
- 会話の文脈全体
再説明は不要。ファイルの読み直しも不要。そのまま続きから作業できます。
5. 🎉 これで基本は習得です!
-
@構文 - セッション管理(
--continue/--resume//rename) - コンテキスト操作(
/context//clear)
を使えれば、十分に生産的に使いこなせます。
次は
次は第3章「開発ワークフロー」ですね!
書き上がり次第アップします
ーー追記ーーー
続きアップしました!
ぜひご覧ください

















