
GitHub Copilot for Xcode が Agent モードに対応したので試してみた
2025 年 5 月のアップデートでGitHub Copilot for Xcodeに「Agent モード」が追加された。JetBrains/Eclipse 版と同時にパブリックプレビューへ移行した機能で、AI が複数ファイルを編集し、ターミナル操作まで自動で実行する。
本稿では MCP サーバーを用意せず、Xcode 拡張単体でどこまで活用できるかを検証する。記載内容は 0.35.0 時点 の挙動に基づく。手軽に試したい方の参考になれば幸いだ。
Ask モードと Agent モードの違い
Ask モード と Agent モードの違いを簡単にまとめると以下の通り。
機能 | Ask モード | Agent モード |
---|---|---|
補完単位 | ファイル内の行・関数レベル、またはファイル単位 | プロジェクト全体 |
ワークフロー | 対話式でコードを生成し、任意の場所へ挿入 | 1. 要件を入力 2. AI が Plan → Edit を自動実行 |
Git 操作 | できない | シェルコマンド実行可(例: git checkout -b ) |
必要なもの | Copilot 拡張のみ | Copilot 拡張 0.35.0+ (MCP サーバーは 任意) |
MCP サーバーを起動すると GitHub API や外部ツール連携が可能になるが、ローカルで挙動を試すだけなら不要である。もし、GitHub Copilotと組み合わせ使うのであれば、GitHub MCP Server を使うのが良いだろう。
検証環境
- macOS 15.5(24F74)
- Xcode 16.4
- GitHub Copilot for Xcode 0.35.0 (執筆時点最新リリース)
- GitHub Copilot Pro
検証してみた
個人アプリにお知らせ画面を追加したいと考えた。今回は検証がてら、Agent モードを使ってお知らせ画面を追加してみよう。
1. GitHub Copilot for Xcode を 0.35.0 以上に更新する
インストール・更新方法は「GitHub Copilot for Xcode を導入する」を参照。ここでは割愛する。
2. Chat パネルで Agent モードに切り替えてプロンプトを送る
- Editor → GitHub Copilot → Open Chat の順に選択し、Chat パネルを開く
- 送信欄下部のモードトグルを Agent に切り替える
- 次の仕様書を貼り付けて送信し、実行する
### 概要
SwiftUI で画面「InformationScreen」を追加する。
### 要件
* `feature/add-information-screen` ブランチで作業する
* InformationScreen を追加する
* InformationViewModel を追加する
* 画面タイトルは “What's New” (ローカライズ対応)
* InformationScreen はリスト構造
* お知らせアイテムは InformationViewModel が管理
* Information にurl が入っていたら DisclosureIndicator を表示し、アイテムをタップしたらアプリ内ブラウザでページを表示したい
* 情報取得処理は別のタスクで実装するため、未実装のままで良い
* InformationViewModelのユニットテストを実装せよ。
* ユニットテストは iOS 17+、XCTest 使用しないで、Testingフレームワークを使用して実装せよ
### 受け入れ基準
* ビルド成功(iOS 16+)
この仕様書は意図した結果を得られるように何度か要件を追加したため、全く整理されていないが、検証で使ったものをそのまま掲載する。
3. AIの実行結果
Agent は以下を自動実行した。
git checkout -b feature/add-information-screen
InformationItem.swift
など 4 ファイルを生成- 単体テストを追加
下図は、作業ブランチを作成する処理の途中で git
コマンド実行可否を尋ねるダイアログが出るため「Continue」を選択する。
4. ビルド結果とエラーの手動修正
残念ながら、自動生成したコードはそのままビルドすることができなかった。以下のエラーの修正をおこなった。
エラー | 原因 | 対処 |
---|---|---|
Cannot find 'SFSafariViewController' in scope |
import SafariServices が抜けていた |
ファイル冒頭に追加 |
Call to main actor-isolated initializer in nonisolated context |
UI 操作を MainActor で行う必要 | @MainActor を ViewModel に付与 |
修正後はビルドが通り、お知らせ画面が動作した。
生成されたコードは骨組みとしては有用だが、細部調整は依然として開発者の役割となりそうだ。
5. Agent モードで利用可能なモデル
Web版のGitHub Copilotや Ask モードでは、高性能なモデルを選択できるが、Agent モードで選べるモデルは現状少ないようだ。モデル差の影響か、生成コードの品質は Ask モードよりばらつきが大きかった。GitHub Copilot for Xcode のアップデートでモデルの選択肢が増えることに期待したい。
Web版のGitHub Copilot
GitHub Copilot for Xcode のAsk モード
GitHub Copilot for Xcode のAgent モード
所感
- ブランチ作成から複数ファイル生成までは半自動で完了し、生産性は高い
- 公式ブログで紹介されていたように、修正→ビルド→テスト実行のフィードバックループを繰り返し、ビルドエラー修正まで自動で実行してくれることを期待していたが、私の環境ではうまく動かなかった
- プロンプト(仕様書)の抽象度が高いとAIは意図した挙動にならない。プロンプトはかなり詳細に、具体的に書くと良い
- 1回で全てを生成させると考えずに、「モデルの追加だけ」「画面の追加だけ」「テストの追加だけ」と、タスクを細かく小さく分割した方が良いだろう
- 個人的には、Agent モードは「気乗りしない作業」の初期実装に最適だと感じた。生成されたコードをベースに適切なものへ書き換えていく使い方が現実的だろう。SNS では「全自動でアプリやゲームを作れた!」という投稿も見かけるが、現状の GitHub Copilot for Xcode はそのレベルには達していない。この課題が MCP サーバーとの組み合わせで解決できるかは今後の検証次第だ
まとめ
GitHub Copilot for Xcode 0.35.0 で追加された Agent モードは、チャット補完から自律する作業者への移行の第一歩だろう。ブランチ操作・複数ファイル編集・簡易テスト追加まで自動化でき、機能の“たたき台”を作る用途には十分実用的である。一方でビルド・テストの完走やエラー解決はまだ人手が必要だ。
次の段階として、GitHub MCP Server やその他の MCP サーバーと組み合わせ、リポジトリ操作や外部 API 連携を含むフローで精度を検証したい。Agent モードの導入を検討する際は、まず「単一画面の追加」「モデルクラスの生成」程度の小さいタスクから試して、段階的に適用範囲を広げると良いだろう。