# GitHub Copilot CLI のベスト プラクティス

GitHub Copilot CLIを最大限に活用する方法について説明します。

## イントロダクション

GitHub Copilot CLI は、エージェント機能をコマンド ラインに直接提供する、ターミナルネイティブの AI コーディング アシスタントです。
Copilot CLI チャットボットのように動作し、質問に答えることができますが、その真の力は、コーディングパートナーとして自律的に作業する能力にあり、タスクを委任してその作業を監督することができます。

この記事では、さまざまな CLI コマンドを効果的に使用して CLI のファイルへのアクセスを管理する方法まで、 Copilot CLIを最大限に活用するためのヒントを提供します。 これらのヒントを出発点として考え、実際のワークフローに最適なものを試してみてください。

> \[!NOTE]
> GitHub Copilot CLI は絶えず進化しています。 `/help` コマンドを使用して、最新の情報を確認します。

## 1. 環境をカスタマイズする

### カスタム命令ファイルを使用する

Copilot CLI は、該当するユーザー レベル、リポジトリ、パス固有の命令を自動的に結合します。 プロジェクトの規約にはリポジトリ レベルの指示を使用し、複数のプロジェクトにまたがって適用する設定にはユーザー レベルの指示を使用します。

サポートされている場所の完全な一覧と、検出、ファイル参照、および複数の命令ファイルの相互作用に関する詳細については、 [カスタム指示の追加 GitHub Copilot CLI](/ja/copilot/how-tos/copilot-cli/customize-copilot/add-custom-instructions) を参照してください。

#### ベスト プラクティス

命令の競合を避ける。 たとえば、これは単純な `.github/copilot-instructions.md` ファイルです。

```markdown
## Build Commands
- `npm run build` - Build the project
- `npm run test` - Run all tests
- `npm run lint:fix` - Fix linting issues

## Code Style
- Use TypeScript strict mode
- Prefer functional components over class components
- Always add JSDoc comments for public APIs

## Workflow
- Run `npm run lint:fix && npm test` after making changes
- Commit messages follow conventional commits format
- Create feature branches from `main`
```

> \[!TIP]
> 命令を簡潔で実用的な状態に保ちます。 長い命令は有効性を希釈することができます。

詳しくは、「[GitHub Copilotの応答をカスタマイズする方法](/ja/copilot/concepts/prompting/response-customization?tool=webui)」をご覧ください。

### 許可されるツールを構成する

アクセス許可を求めずに実行できるツール Copilot 管理します。
Copilotがアクションのアクセス許可を要求する場合は、通常、この時間だけを許可するか、CLI セッションの残りの部分でツールを使用することを許可するかを選択できます。

以前に承認されたツールをリセットするには、次を使用します。

```copilot
/reset-allowed-tools
```

CLI フラグを使用して、許可されたツールを事前構成することもできます。

```bash
copilot --allow-tool='shell(git:*)' --deny-tool='shell(git push)'
```

**一般的なアクセス許可パターン:**

* `shell(git:*)` — すべての Git コマンドを許可する
* `shell(npm run:*)` — すべての npm スクリプトを許可する
* `shell(npm run test:*)` — npm テスト コマンドを許可する
* `write` — ファイルの書き込みを許可する

### お好みのモデルを選択する

`/model`を使用して、タスクの複雑さに基づいて使用可能なモデルから選択します。

| モデル                      | 最適な対象者                         | トレードオフ                                                                                          |
| ------------------------ | ------------------------------ | ----------------------------------------------------------------------------------------------- |
| **自動**                   | レート制限の削減と待機時間とエラーの削減           | 「[について Copilotauto model selection](/ja/copilot/concepts/models/auto-model-selection)」を参照してください |
| **Claude Opus 4.5** (既定) | 複雑なアーキテクチャ、難しいデバッグ、微妙なリファクタリング | 最も高い能力を備えていますが、コストがかかります                                                                        |
| **Claude Sonnet 4.5**    | 日常のコーディング、ほとんどの日常的なタスク         | 速く、費用効果が大きい、ほとんどの仕事をうまく扱う                                                                       |
| **GPT-5.2 Codex**        | コード生成、コード レビュー、簡単な実装           | 他のモデルによって生成されたコードのレビューに最適                                                                       |

**Recommendations:**

* **自動** では、リアルタイムのシステム正常性とモデルのパフォーマンス (レート制限を減らし、待機時間とエラーを減らす) と、 Copilotしたタスクの複雑さに基づいてモデルをインテリジェントに選択します。
* **Opus 4.5** は、深い推論、複雑なシステム設計、微妙なバグ調査、または広範なコンテキスト理解を必要とするタスクに最適です。
* **Sonnet 4.5 に切り替えて** 、速度とコスト効率が重要な日常的なタスクを行い、日常的なコーディングの大部分を効果的に処理します。
* 大量のコード生成に **Codex を使用**し、他のモデルによって生成されたコードをレビューするための 2 番目の意見として使用します。

タスクの複雑さの変化に応じて、モデルを `/model` セッション中に切り替えることができます。

組織または企業が独自の LLM プロバイダー API キーを使用してカスタム モデルを構成している場合、それらのモデルも一覧の下部 `/model` に表示されます。

### 独自のモデル プロバイダーを使用する

Copilot CLIホスト型モデルではなく、独自のモデル プロバイダーを使用するようにGitHubを構成できます。
`copilot help providers`を実行して、完全なセットアップ手順を実行します。

**重要な考慮事項:**

* モデルでは、 **ツール呼び出し (関数呼び出し** ) と **ストリーミングをサポートする**必要があります。
  Copilot CLI は、いずれかの機能が見つからない場合にエラーを返します。
* 最良の結果を得るには、少なくとも 128,000 個のトークンのコンテキスト ウィンドウを持つモデルを使用します。
* 組み込みのサブエージェント (`/review`、 `/task`、探索、 `/fleet`) は、プロバイダー構成を自動的に継承します。
* コスト見積もりは、独自のプロバイダーを使用する場合は非表示になります。 トークンの使用状況 (入力、出力、キャッシュ数) は引き続き表示されます。
* `/delegate` は、 GitHubにサインインしている場合にのみ機能します。 セッションは、プロバイダーではなく、 GitHubのサーバー側の Copilotに転送されます。

[独自のモデル プロバイダーの使用を](/ja/copilot/concepts/agents/copilot-cli/about-copilot-cli#using-your-own-model-provider)参照してください。

### セッション制限 AI credit 設定する

実行時間の長いタスクや複雑なタスクが予想よりも多くのリソースを消費しないように、AI creditsが 1 つのセッションに費やすことができるCopilotの量を上限にすることができます。 「[で AI credit セッション制限を設定する GitHub Copilot CLI](/ja/copilot/how-tos/copilot-cli/use-copilot-cli/set-session-limit)」を参照してください。

AI creditsの使用を一般的に最適化する方法の詳細については、「[AI の使用を最適化して効率を最大化し、コストを削減する](/ja/copilot/tutorials/optimize-ai-usage)」を参照してください。

## 2. コーディングする前に計画する

### プラン モード

**モデルは、従う具体的な計画が与えられると、より高い成功率を達成します。** プラン モードでは、 Copilot は、コードを記述する前に構造化された実装計画を作成します。

<kbd>Shift</kbd>+<kbd>Tab</kbd> キーを押して、標準モードとプラン モードを切り替えます。 プラン モードでは、入力したすべてのプロンプトによってプラン ワークフローがトリガーされます。

または、通常モードで `/plan` コマンドを使用して、同じ効果を得ることもできます。

**プロンプトの例 (通常モード):**

```copilot
/plan Add OAuth2 authentication with Google and GitHub providers
```

**何が起こるか:**

* Copilot は、要求とコードベースを分析します。
* 要件とアプローチに合わせて**質問を明確**にします。
* チェック ボックスを使用して構造化実装計画を作成します。
* プランを`plan.md`にセッションフォルダー内で保存します。
* 実装する前に **、承認を待ちます**。

<kbd>
</kbd>
+ キーを押すと、Markdown ファイルの既定のエディターでプランを表示および編集できます。

**プランの出力例:**

```markdown
# Implementation Plan: OAuth2 Authentication

## Overview
Add social authentication using OAuth2 with Google and GitHub providers.

## Tasks
- [ ] Install dependencies (passport, passport-google-oauth20, passport-github2)
- [ ] Create authentication routes in `/api/auth`
- [ ] Implement passport strategies for each provider
- [ ] Add session management middleware
- [ ] Create login/logout UI components
- [ ] Add environment variables for OAuth credentials
- [ ] Write integration tests

## Detailed Steps
1. **Dependencies**: Add to package.json...
2. **Routes**: Create `/api/auth/google` and `/api/auth/github`...
```

### プラン モードを使用する場合

| Scenario                 | プラン モードを使用しますか?                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 複雑な複数ファイルの変更             | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Yes" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                       |
| 多くのタッチ ポイントを使用したリファクタリング | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Yes" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                       |
| 新機能の実装                   | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Yes" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                       |
| バグのクイック修正                | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="No" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |
| 一つのファイルの変更               | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="No" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |

### 探査→計画→コード→コミット ワークフロー

複雑なタスクに最適な結果を得るには:

* **以下を参照**してください。

  `Read the authentication files but don't write code yet`

* **プラン**:

  `/plan Implement password reset flow`

* **レビュー**:

  プランを確認し、変更を提案する

* **実装**:

  `Proceed with the plan`

* **検証**:

  `Run the tests and fix any failures`

* **コミット**:

  `Commit these changes with a descriptive message`

## 3. 無限セッションを活用する

### コンテキスト ウィンドウの自動管理

Copilot CLI
**は無限セッション**を備えています。 コンテキストが不足することを心配する必要はありません。 システムは、重要な情報を保持しながら会話履歴を要約するインテリジェントな圧縮によってコンテキストを自動的に管理します。

**セッションストレージの場所:**

```text
~/.copilot/session-state/{session-id}/
├── events.jsonl      # Full session history
├── workspace.yaml    # Metadata
├── plan.md           # Implementation plan (if created)
├── checkpoints/      # Compaction history
└── files/            # Persistent artifacts
```

> \[!NOTE]
> 圧縮を手動でトリガーする必要がある場合は、 `/compact`を使用します。 これは、システムが自動的に処理するため、ほとんど必要ありません。

### セッション管理コマンド

現在の CLI セッションに関する情報を表示するには、次のように入力します。

```copilot
/session
```

セッション チェックポイントの一覧を表示するには、次のように入力します。

```copilot
/session checkpoints
```

> \[!NOTE]
> セッション コンテキストが圧縮されるときにチェックポイントが作成され、Copilotによって作成された概要コンテキストを表示できます。

特定のチェックポイントの詳細を表示するには、次のように入力します。

```copilot
/session checkpoints NUMBER
```

ここで NUMBER は、表示するチェックポイントを指定します。

現在のセッション中に作成された一時ファイル (リポジトリに保存すべきではない Copilot によって作成された成果物など) を表示するには、次のように入力します。

```copilot
/session files
```

Copilot がプランを生成している場合、現在のプランを表示するには、次のように入力します。

```copilot
/session plan
```

### ベスト プラクティス: セッションに集中する

無限セッションでは実行時間の長い作業が可能ですが、集中したセッションではより良い結果が得られます。

* 関連のないタスク間で `/clear` または `/new` を使用します。
* これにより、コンテキストがリセットされ、応答の品質が向上します。
* 同僚との新しい会話を始めるのと同じように考えてください。

### `/context` コマンド

`/context`を使用して現在のコンテキストの使用状況を視覚化します。 次の内訳が表示されます。

* システム/ツール トークン
* メッセージ履歴トークン
* 空き領域
* バッファーの割り当て

## 4. 作業を効果的に委任する

### `/delegate` コマンド

\*\*
Copilot cloud agentを使用してクラウドで実行する作業をオフロードします。\*\* これは、次の場合に特に強力です。

* 非同期的に実行できるタスク。
* 他のリポジトリへの変更。
* 待ちたくない、実行時間の長い操作。

**サンプル プロンプト:**

```copilot
/delegate Add dark mode support to the settings page
```

**何が起こるか:**

* 要求が Copilot cloud agentに送信されます。
* エージェントは、変更を含むプル要求を作成します。
* クラウド エージェントが動作している間は、ローカルで作業を続けることができます。

### どのようなときに `/delegate` を使用するか

| `/delegate` を使用する | ローカルで作業する |
| ----------------- | --------- |
| 付随的なタスク           | コア機能の動作   |
| ドキュメントの更新         | デバッグ      |
| 個別のモジュールのリファクタリング | 対話型の探索    |

## 5. 一般的なワークフロー

### コードベースの導入

新しいプロジェクトに参加するときは、 Copilot CLI をペア プログラミング パートナーとして使用します。 たとえば、次の Copilotを要求できます。

* `How is logging configured in this project?`
* `What's the pattern for adding a new API endpoint?`
* `Explain the authentication flow`
* `Where are the database migrations?`

### テスト駆動開発

Copilot CLIと組み合わせてテストを開発します。

* `Write failing tests for the user registration flow`
* *テストを確認して承認します。*
* `Now implement code to make all tests pass`
* *実装を確認します。*
* `Commit with message "feat: add user registration"`

### コード レビューの支援

* `/security-review Review my current local changes for security issues. Prioritize high-severity findings and suggest remediations I can apply before opening a pull request.`
* ``/review Use Opus 4.5 and Codex 5.2 to review the changes in my current branch against `main`. Focus on potential bugs and security issues.``
* 重大度の高い結果を最初にトリアージし、修正を検証してから、通常の pull request レビュー ワークフローを続行します。

### Git 操作

Copilot は Git ワークフローに秀でています。

* ``What changes went into version `2.3.0`?``
* `Create a PR for this branch with a detailed description`
* ``Rebase this branch against `main` ``
* ``Resolve the merge conflicts in `package.json` ``

### バグ調査

* ``The `/api/users` endpoint returns 500 errors intermittently. Search the codebase and logs to identify the root cause.``

### リファクタリング

* `/plan Migrate all class components to functional components with hooks`

  次に、Copilot が尋ねる質問に答える。 作成したプランを確認し、必要に応じて Copilot に変更を加えるように依頼します。 プランに問題が無い場合は、`Implement this plan` のプロンプトを実行できます。

## 6. 高度なパターン

### 複数のリポジトリ間で作業する

\*\*
Copilot CLI は、柔軟なマルチリポジトリ ワークフローを提供\*\*します。これは、マイクロサービス、モノレポ、または関連プロジェクトに取り組むチームにとって重要な差別化要因です。

**オプション 1: 親ディレクトリから実行する**

```bash
# Navigate to a parent directory containing multiple repos
cd ~/projects
copilot
```

Copilot は、すべての子リポジトリに同時にアクセスして動作できるようになりました。 これは次の場合に最適です。

* マイクロサービス アーキテクチャ
* 関連するリポジトリ間で調整された変更を行う
* プロジェクト間で共有パターンをリファクタリングする

**オプション 2: `/add-dir` を使用してアクセスを拡張する**

```bash
# Start in one repo, then add others (requires full paths)
copilot
/add-dir /Users/me/projects/backend-service
/add-dir /Users/me/projects/shared-libs
/add-dir /Users/me/projects/documentation
```

**許可されたディレクトリの表示と管理:**

```copilot
/list-dirs
```

**ワークフローの例: 調整された API の変更**

```copilot
I need to update the user authentication API. The changes span:

- @/Users/me/projects/api-gateway (routing changes)
- @/Users/me/projects/auth-service (core logic)
- @/Users/me/projects/frontend (client updates)

Start by showing me the current auth flow across all three repos.
```

このマルチリポジトリ機能を使用すると、次のことが可能になります。

* 横断的リファクタリング (共通パターンを全体的に更新する)
* クライアントの更新による API コントラクトの変更
* 複数のコードベースを参照するドキュメント
* モノレポ全体における依存関係のアップグレード

### UI 作業に画像を使用する

Copilot は、ビジュアル参照を操作できます。 CLI 入力に画像を直接**ドラッグ アンド ドロップするか**、Ctrl<kbd></kbd>+<kbd>キー</kbd>を使用してクリップボードから画像を貼り付けるか、プロンプトでイメージ ファイルを参照するだけです。

```copilot
Implement this design: @mockup.png
Match the layout and spacing exactly
```

### 複雑な移行のチェックリスト

大規模な変更の場合:

```copilot
Run the linter and write all errors to `migration-checklist.md` as a checklist.
Then fix each issue one by one, checking them off as you go.
```

### 自律タスクの完了

オートパイロット モードに切り替えて、 Copilot が完了するまでタスクで自律的に動作できるようにします。 これは、一定の監督を必要としない実行時間の長いタスクに最適です。 詳しくは、「[GitHub Copilot CLI が自律的に動作できるようにする](/ja/copilot/concepts/agents/copilot-cli/autopilot)」をご覧ください。

必要に応じて、通常、プロンプトの開始時に `/fleet` スラッシュ コマンドを使用して大規模なタスクを高速化し、 Copilot がサブエージェントによって実行される並列サブタスクにタスクを分割できるようにします。 詳しくは、「[\`/fleet\` コマンドを使用したタスクの並列実行](/ja/copilot/concepts/agents/copilot-cli/fleet)」をご覧ください。

## 7. チームのガイドライン

### 推奨されるリポジトリのセットアップ

* 次を使用して<c1><c0 />を作成します。
  * コマンドのビルドとテスト
  * コード スタイルのガイドライン
  * コミット前に必要なチェック
  * アーキテクチャの決定

* **次の規則を確立します** 。
  * `/plan`を使用する場合 (複雑な特徴、リファクタリング)
  * `/delegate` を使用する場面 (補助作業)
  * AI 支援を使用したコード レビュー プロセス

### セキュリティに関する考慮事項

* Copilot CLI には、破壊的な操作の可能性がある明示的な承認が必要です。
* 受け入れる前に、提案されたすべての変更を確認します。
* 権限許可リストを慎重に使用します。
* シークレットをコミットしないでください。
  Copilot は、これを回避するように設計されていますが、常に確認してください。

### 生産性の測定

次のようなメトリックを追跡します。

* 発行から pull\_request までの時間
* マージ前の反復回数
* コード レビューのフィードバック サイクル
* テスト カバレッジの向上

## ヘルプを受ける

コマンド ラインから、次のコマンドを使用してヘルプを表示できます: `copilot -h`。

さまざまなトピックのヘルプについては、次のように入力します。

```bash
copilot help TOPIC
```

`TOPIC`には、`config`、`commands`、`environment`、`logging`、または`permissions`のいずれかを指定できます。

### CLI 内

CLI 内のヘルプについては、次のように入力します。

```copilot
/help
```

使用状況の統計情報を表示するには、次のように入力します。

```copilot
/usage
```

GitHubに関するCopilot CLIにプライベート フィードバックを送信したり、バグ レポートを作成したり、機能要求を送信したりするには、次のように入力します。

```copilot
/feedback
```

## ハンズオン プラクティス

アプリケーションの構築に関する実践的な経験を得るには、Copilot CLI を使用した[](https://github.com/skills/create-applications-with-the-copilot-cli)を試してください。

学習内容を次に示します。

* Copilot CLI のインストール
* 問題テンプレートを使用して問題を作成する
* Node.js CLI 電卓アプリを生成する
* 電卓機能の拡張
* 電卓関数の単体テストを記述する
* プルリクエストを作成し、確認してマージする

## 詳細については、次を参照してください。

* [GITHUB COPILOT CLI について](/ja/copilot/concepts/agents/copilot-cli/about-copilot-cli)
* [GitHub Copilot CLI の使用](/ja/copilot/how-tos/copilot-cli/use-copilot-cli/overview)
* [GITHUB COPILOT CLI コマンド リファレンス](/ja/copilot/reference/copilot-cli-reference/cli-command-reference)
* [
  Copilot プランと価格](https://github.com/features/copilot/plans)