5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

AIは不思議のダンジョンを突破できるのか - AIエージェントに『トルネコの大冒険』を遊ばせてみた

シルバーウィークに以前からやってみたかった「AIエージェントにローグライクをプレイさせてみる」という挑戦をしてみることにした。

ローグライクはターン制で入力が忙しくない、かつ、長期的な目での思考・推論が必要で、AIが解く課題に最適だ。僕自身も生粋のシレンジャーであり、ドメイン知識も豊富。

目指すは『風来のシレン』テーブルマウンテン踏破だが、今回はゲームシステムもシンプルで、最近リメイクで沸いている初代『トルネコの大冒険』を題材に、今のAIエージェントはどのぐらいこの困難なタスクに立ち向かえるのか見てみた。

プレイにあたり、手元に所持しているスーパーファミコンのカートリッジを市販のレトロフリークを使って個人利用の範囲で変換し、検証している。

どこの家庭にもあるレトロフリークファミコンモデル

AIがローグライクを遊ぶためのハーネスを設計

SNESエミュレータMCPを用意する

まずAIがゲームをプレイするコントローラーを用意しなくてはならない。オープンソースのSNESエミュレータ実装であるSnes9xをforkして、macOS版のクライアントにHTTP MCPを実装した。

MCPでは以下の操作が可能になっている。

  • ボタンの入力(シーケンスでの送付)
  • ゲームの停止、再開、リセット
  • スクリーンショットの取得
  • メモリダンプの入手
  • ステートセーブの操作
  • ゲーム状況の録画

MCPは実装したが、結果的に後述のクライアント経由で通信していたので、エージェントが直接エミュレータを操作することは希だった。

入力を決定するハーネスの実装

AIエージェントからMCP経由でエミュレータを操作できるようになったが、ボタン入力の一挙手一投足を全てLLMに投げていては到底トークンが足りない。不思議のダンジョンを踏破するには10000ターン以上の操作が必要になるため、現実的な手数で操作を行えなければならない。

というわけで、AIから直接MCPを実行するのではなく、行いたい行動を決定的にシーケンシャルな入力へと変換し、エミュレータにリクエストするハーネスを実装した。

これにより、「#3番目のアイテムを使う」、「部屋の西の出口まで進む」といったセマンティックな操作単位を「X A ↓ ↓ A A」のようなアトミックな入力に変換できるようになった。

AIエージェントはスクリプトにコマンドを送り、スクリプトがMCPにリクエストを送る

メモリダンプからの状況の取得

基本的にはスクリーンショットから状況を読み込むが、基本的な情報は決定的に取得できるようにするため、ハーネスからメモリダンプを読み取る機能を付けた。ハーネスがエミュレータ上のRAMを取得し、規定のアドレスを読むことでLLMリソースを用いずに状態取得ができるようになっている。

  • トルネコの基本状態(HP、満腹度、ちから、装備の強さ)
  • インベントリの状態
  • トルネコの位置と視界に見える範囲の周辺マップ

こういった塩梅で視界がアスキーアートで返ってくる

ここでフェアプレイのために視界は制限されている。見えない敵(シャドーなど)や視界外の敵はハーネスがRAMの読み取り結果をロジックで落として、エージェント側に返す。インベントリ上の未識別アイテムについても同様。

1度認識したマップをハーネスはキャッシュファイルとして保持している。そのため、あとで先に見つけた階段を目指して経路探索したり、アイテムを取りに戻ったりといったことが可能になった。これによって、上述のような、ある地点まで進むといった処理をハーネスだけで探索できるようになった。

攻略サイトをまるっとスキル化

ローグライクは攻略本を暗記してからが本番とも言えるので、敵やアイテムの情報はSkillに書き込んでいる。攻略サイトのURLを渡して、必要な情報は抜き取ってSkill化してもらった。

Skillsに攻略本ができた

また、ゲームをプレイしながら、気付いた洞察はtactics.mdというスキルを自分で育ててもらうことにした。結果的に「通路に下がって囲まれないように行動する」とか「まどうしは殴らない」とか、人間も遊びながら会得するセオリーが次々に書き込まれていって面白かった。

ローグライクの基本ルール、操作については特に何も教えていない

不思議なことに、これ以上のコンテキストは特に与えなかったが、テストランをしてみたところ、あとはモデル自身の知識で上手い具合にゲームを進行できていた。

ターン制であることも理解していたし、Lで矢を射ったり、A+B同時押しで足踏みなども特に教えずに行っていた。

面白かったのは、敵と1マス離れているときに素振りをして、敵を引き寄せて先制を取るといった熟練者なら誰でもやる小技も披露していた。すげえ。

実際に本編前のチュートリアルダンジョン「ちょっと不思議のダンジョン」は一発でクリアしていた。想像以上にゲームが成立していて、これは「不思議のダンジョン」の踏破も夢じゃないのではと実感する。

ちょっと不思議のダンジョンは一発で踏破できた

いざ、しあわせの箱へ!

さて、ここからは本編の「不思議のダンジョン」である。このダンジョンの27階にある「しあわせの箱」を入手後、再度27フロア分引き返すことでエンディングを見ることができる。

全てを観測するには、LLMの実行速度の問題でメチャクチャ時間がかかるので(27階到達で7~10時間ほど)、基本はほとんど放置し、代わりに毎回の冒険のレポートを書いてもらうようにし、プレイの録画もあとから復元できるようにした。

プレイ日記みたいに書かれていてかわいい

/goalで到達目標を設定していざ出発!

あまりにも正しすぎる`/goal`の活用例

絶対に事故らないように非常に保守的なAIたち

現代のコーディングエージェントは事故を起こさないようにかなり保守的に設計されていて、状況判断が非常にコンサバティブだった。少しでも危ない戦闘にはすぐにアイテムを吐き、弟切草*1はかなり早めに使う。これぐらいで聖域の巻物*2を置くんじゃない!

おかげで十分肉弾戦で打破できる戦闘に関してもアイテムを使い過ぎる傾向にあり、終盤はリソースが枯渇しがちだった。

危険な行動を取らないガードレールもしっかり機能していた。面白かったのはエージェントがリレミトの巻物*3を捨てようとしたときに、CodexのAuto Modeがコマンドの実行を却下したという一幕があった。Auto Modeってこういう部分もジャッジするんだ・・・・・・。

それを捨てるなんてとんでもない!

これまで、不思議のダンジョンの一発クリアを目指して、特に脱出に関しては規定していなかったが、倉庫*4解禁後はAIは何度も脱出を繰り返し、装備品の強化を始めた。 倉庫に預ける判断や、引き出す判断も自律的に行いだしたので、全てを任せることにして、もう持ち込みでも何でもいいからクリアを目的とした。

プレイングを見る限り、詰めが甘い部分が多いので一発クリアは難しそうかもしれない。この防御的な挙動はコーディングのようなタスクには素晴らしいのだが、ローグライクを遊ぶにはやや向いていない。

未識別アイテムを積極的に使ってもらう

もう一点、未識別アイテムを上手く活用できないという問題が散見された。モデルは賢く、インパスの巻物*5の用途や使い方を自力で発見し、上手く活用していた。

一方で、上級者になると杖はわざわざインパスを読まずに、実際に振ってみた挙動で独自に鑑定することがほとんどだが、AIはインパスが無い状態で自力で識別することができていなかった。

そこで、「状況判断のリスク許容レベルを上げること」「識別チャートを作成し、未識別アイテムを活用すること」の2点はアドバイスとして指示した。

AI指示厨

これによって、自力でアイテム一覧から識別チャートが完成し、未識別アイテムもある程度活用してくれるようになった。

識別チャートも自分で作ってた

知覚の限界による事故が多発

知覚の多くを入力待機中のスクリーンショットに頼っていたため、自動でスクロールするメッセージを読み解くのが困難という問題があった。仕組み上、スクリーンショットを離散的にしか撮影できないので、自動で消えるメッセージは画面に映り込まないことがある。 例えばラリホー草などのアイテムを投擲したが外れて、実際には眠っていないが、外れたメッセージは一瞬しか表示されないため、誤認した判断をしてしまうことが多発した。初代トルネコは敵が状態異常になっていてもグラフィックが変わらないので、メッセージを見逃すと厳しい!

特に厄介なのは深層に出現する「おおめだま」だ。おおめだまは部屋にいる間、ランダムにトルネコを混乱させてくるのだが、その時の行動が一瞬しか表示されない。そのため、次のターンに操作が意図通りに行えないことを通してしか状況を認識できなかった。

死ぬ度にハーネスを自動更新して知識アンロック

こんな視覚の問題はありつつ、AIは自分でハーネスを改善して再発防止をしているようだった。例えばこんな具合。

  • おおめだまのメダパニを認識できずに混乱死:メダパニ状態のエフェクトもなく、文字送りを見逃すことがあるため、RAMをチェックして状態異常が把握できるようになった
  • 聖域の巻物を読んで死亡:聖域の巻物は置いて使うアイテムで、読んでも効果がない。それを読んだ直後にゴーレムに殴り殺された回があり、以降は「読む」操作をハーネスが拒否するようになった
  • 足踏みのしすぎで事故死:敵の前で足踏みを繰り返して事故死することがあった。結果、1ターンごとにHPを読み直して、殴られたら即座に止めるようになった
  • 壁の角越しに素振りし続け、矢で死亡:通路の角で届かない斜め攻撃を繰り返している間にリリパットに矢で撃たれ続けた回があり、以降は視界のマップで角の壁を確認して、届かない攻撃は送らないようになった

プロンプトレベルで行動を制約するのではなく、use:聖域の巻物のようなコマンド実行をハーネス側で拒否することでガードレールを実現していた。

こうした細かい修正の積み重ねで、「1手ごとにLLMが画面を見て判断する」状態から、「通常の探索はハーネスがまとめて自動で歩き、メモリreadにより、視界に敵が入ったときだけLLMに画像付きで判断を返す」形に落ち着いていった。トークン消費も大幅に減り、長時間の周回も回しやすくなった。

実際のプレイレポートによる攻略の軌跡

Astra + Fableによるハーネス構築と試行錯誤

最初の20回ほどはCodexのAstra HighとClaudeのFable 5.1でプレイした。どちらも非常に良く動き、Astraの方が若干洗練されていたくらい。ただ、倉庫が未解禁なのであまり深層まで行けず、知見を溜めつつ凡庸なプレイを繰り返していた。

序盤の壁は16階辺りから。ゴーレムの登場で要求レベルが跳ね上がり、肉弾戦を避けてガンガンアイテムを吐くので、大体20階に行くまでにリソースが尽きてゲームオーバーというパターンが多かった。

ゴーレムの撃破にやたらとアイテムを吐きたがる

これは元のゲームが良くできていて、ちょうど攻略が厳しくなる20階には必ずリレミトの巻物が落ちている。おかげでAIはちょっとでもヤバくなったらすぐ帰還するようになる。

そうこうしているうちにお店が発展して倉庫が解禁。装備を無限に強化できるようになって安定性がグンと上がり、25回目の冒険で目標の27階に到達。ただ、しあわせの箱が迷路部屋に配置されていて見つけられず、満腹度が尽きて脱出。

あと一歩のところで無念

人間以上に保守的なプレイのおかげで装備のロストも抑えられていて、いよいよクリアが近いと思っていたのだが・・・・・・。

Opus 5.5の登場で沼り、装備育成マラソンに突入

30回目あたりでCodexのRate Resetも使い切った。トークンも枯渇し、AstraやFableなど高価なモデルを回せなくなったので、ちょうどリリースされたOpus 5.5中心の運用に切り替えることにした。

Opus 5.5はレスポンスも速く安価で素晴らしいモデルと前置きしつつ、やたらと探索を自動化したがり、そのせいでAstraが育てたせいぎのそろばん*6とドラゴンシールド+11が溶けた。

その後一晩回しても20回ほど鳴かず飛ばず。その間にお店は最大まで発展。

AIたちにかかる大きなプレッシャー

50回目を超えて大分サチってきたので、Astraにスキルやハーネスを再整理してもらい、Opus 5.5はマラソン要員にした。ゴールを「不思議のダンジョンの踏破」から「装備の強さを15程度まで育成」に変え、脱出を繰り返して装備を温めてもらう。一発クリアを目指さないのはシレンジャーの名折れだが致し方なし。

Opus 5.5はリスクの低い周回を高速に回すのには向いていたが、低層階でまどうしを殴ってやられるとか、凡ミスは相変わらず。そのまま1週間ほど沼り続けて、冒険回数は100回を突破。コーディングエージェントは、ミスったら進捗が0になる賽の河原的なタスクはあまり想定してなさそうだ。

マラソンの果てについに

幾度もの装備ロストを経て、装備が十分育ったところで復活したAstraを使い「多少無理をしてでも突破を狙う」方針に切り替えた。放置によってせいぎのそろばん+9と鋼鉄の盾+10★まで育った134回目では、ゴーレムやギガンテスも通常攻撃で処理できるようになっていて、出発から約12時間半で27階に到着。ついにしあわせの箱を拾えた。

長く苦しい戦いだった

箱を持つとリレミトが効かないので、帰りは歩くしかない。帰りは余裕かと思いきや、あるフロアで部屋を全部回っても上り階段が見つからないうえ、ばくだんいわ*72体に絡まれる。誘爆を食らえば即死の局面。

ハーネスによってばくだんいわへの攻撃を拒否したAIの出した答えは「地震*8を待ってわざともう一度下に落ち、再度登り直す」。ターンを稼いで、地震で下に落ちて仕切り直していた。最後までドラマティック。

最後の最後に非常に厳しい局面に陥っていた

25回目ぐらいで目標階には行けていたので、その後クリアに100回以上かかるとは思わなかった。安価なモデルにプレイさせたり、無駄に稼がせたりしなければ、もっと早く到達できていたかもしれない。また、ハーネス改善によって禁止事項が増えて局所最適に陥っていた感もある。

終始、一切ゲームプレイの入力を行っていないが、完全自走だけだと無理そうだったので、適宜ゴールを変えたり、モデルを変えたりといったマネジメントは行った。今後はこういうことも不要になるかも。

夢の汎用ゲームAIがお手元に

大学院生の時に教授と「シレンとかAIに遊ばせたいですね〜」みたいな雑談をした記憶がある。当時は汎用ゲームAIはまだ研究途上だったし、PONGのような単純なゲームでも実現が難しかった。それから15年が経ち、一切ロジックを書かずとも、誰でも簡単に汎用なゲームプレイが実現できるようになった。今や当たり前だけど、当時から考えると隔世の感が強い。今回、15年越しにずっとやってみたかったことをちゃんと実現できて嬉しい。

2〜3週間にわたって続いたこの検証はとても興味深く、AIの成長をたまにチェックするのがすっかり楽しくなっていた。地球環境に悪すぎる。

リモートコントロールで常に実況が見れるのでめっちゃおもしろい

最近はJevの登場で、瞬間的な判断が必要なユースケースにも利用可能になってきている。またアイディアが思いついたら別のゲームでもやってみたい。

トルネコはうまく行ったので次はシレンかなあ。次回はテーブルマウンテン編でお会いしましょう!

*1:回復アイテム

*2:床に置くと敵の攻撃を全て防ぐ

*3:ダンジョンを脱出してアイテムを持ち帰る

*4:無事に持ち帰ったアイテムを預けて、次回の冒険に持ち出せる

*5:未識別アイテムを確定済みにする

*6:今作最強の武器

*7:周囲5×5を巻き込んで爆発する。別のばくだんいわを巻き込むと誘爆する

*8:同じ階に長く居続けると起きる。1階下へ強制的に落とされる

Xcode 27時代のCoding Agent完全マニュアル

先日リリースされたXcode 27では、MCP Toolの拡充を始めAI機能が数多く強化された。僕はβ版の時代からかなりヘビーに活用していたが、思った以上に知られていなかったり、まとまっている記事が少なかったので情報を整理してみる。

この記事は、Apple Platform開発にCoding Agentを使うための現時点(Xcode 27.0 ~ 27.2)におけるベストプラクティスになっているはず。

なお、この記事でのCoding Agentとは、Claude CodeかCodexを指すが、Cursorなど他のエージェントにも応用できる。

2つのCoding Agentの利用方法 - Xcode組み込みのAgentと外部Agent

まずXcodeでのCoding Agentの利用方法は2種類に大別できる。Xcode内部のGUIから利用する方法と、外部のCoding AgentからXcodeを使う方法だ。

両者はできることが微妙に異なったり、設定の読み込み方が違ったりするので整理する。

Xcode組み込みのCoding Agentを使う

Xcode内で差分やPreviewが見やすい

一番シンプルなのはXcode内のタブからCoding Agentを使う方法だ。Claude/Codex/Antigravityの3つのエージェントを使える。最大の利点は、設定不要でGUIだけで最低限使える点。ただ、カスタムを考えるとやや使いづらい部分が出てくる。いつものApple製品っぽい。

良い点

  • Xcode内で全て完結する
  • 設定不要でXcode MCPや組み込みスキルが使える
  • プレビューのレンダリング結果やコード差分がXcode上で確認しやすい

微妙な点

  • オートモードのサポートがない
  • スラッシュコマンドが使いづらい
  • 設定変更がわかりづらい

組み込みAgentの設定を変更する

組み込みAgentの設定ファイルは通常の各エージェントのものと共有されず、独自の位置に配置する必要がある。

あまりにも操作しづらいので、以前、この設定ファイルをGUI上で簡単に編集するAgentHub for XcodeというmacOSアプリをリリースした。これを使うと、Xcodeの組み込みAgentにSkillsやMCPを簡単に登録できる。

Xcodeを外部のCoding Agentに連携させる

一方でオススメなのは、外部のCoding Agent(CLIやデスクトップアプリ)からXcodeをMCPサーバーとして接続する手法だ。まだ使っていないなら絶対に設定した方が良い。

XcodeをMCPとして使用する

外部AgentからXcodeを呼び出すにはxcrun mcpbridgeをMCPとして登録する。

claude mcp add xcode -- xcrun mcpbridge
codex mcp add xcode -- xcrun mcpbridge

この機能自体は26.4から存在するが、27.0からは利用できるツールがグッと増えた。

Xcodeのヘッドレス起動を許可する

追加の設定として、Xcodeのヘッドレスモードを有効にすると良い。

sudo xcrun mcp-server enable

これを有効にすると、Xcodeのプロセスがバックグラウンドで起動し、ウィンドウを開かずともCoding Agentだけで開発できるようになる。

メニューバーにバックグラウンドプロセスが表示されるようになる

この設定はSettings > Intelligence > Allow External Agents to Use Xcode ToolsをAlwaysにするのと同じらしい。

Xcode 27で追加されたMCP Tool

Xcode 26.4時点では20個だったMCPツールが、27.0から58個に増えた。そこで、全ツールを図にまとめてみた。

Xcode 27のMCP Toolカタログ

大別すると以下のツールが付属している。

  • ビルド、テスト実行、ビルドスキームの変更
  • プロジェクト操作、Entitlementsの変更
  • ドキュメントの検索
  • Previewのレンダリング結果の取得、Playgroundの実行結果の取得
  • シミュレータの操作
  • Organizerからクラッシュやパフォーマンス情報の取得
  • コンソールログの取得、LLDBコマンドの実行
  • String Catalogの操作

Xcode 27から直接デバッガを実行したり、シミュレータを操作できるようになった。もうこのMCPだけで開発の大部分をカバーできる。どのようなMCPツールがあるか理解していると、Agentが現実的に可能なタスクが把握でき、AIに依頼するアイディアも出しやすい。具体的な活用例はのちほど。

組み込みスキルをAI Agentから利用する

Xcode上のCoding Agentには、いくつかのスキルが組み込まれている。Xcode内のAgentからはこれらのスキルは自動的に利用されるが、外部のAgentで使うにはエクスポートが必要だ。それが以下のコマンド。

$ xcrun agent skills export --output-dir ~/.claude/skills/

このコマンドを実行すると、現時点で10個の組み込みスキルがあることがわかる。

Exported 10 skills to /Users/giginet/.claude/skills
  • building-document-based-swiftui-applications
  • device-interaction
  • app-intents-specialist
  • swiftui-whats-new-27
  • audit-xcode-security-settings
  • app-resizability
  • adopt-c-bounds-safety
  • app-intents-whats-new-27
  • swiftui-specialist
  • modernize-tests

このようにSwiftUIやApp Intentsに関するドメイン知識や、27世代の新しいAPIサポート情報、CコードやXCTest、UIKitのマイグレーションなど、実務上で役立ちそうなスキルが出力される。Appleの公式見解が垣間見えるので、人間が読んでもおもしろい。

Appleの考えるSwiftUI Specialist

なお、組み込みスキルは頻繁に更新されているようだ。現にXcode 27.2のBeta 2頃からapp-resizabilityというスキルが追加され、iPhone Duoの情報が盛り込まれている。

このコマンドは、スキルの更新時に自動的に上書きしてくれるので、Xcodeのバージョンが上がる度に実行するのが良い。

ただし、一部このコマンドでも出力されない組み込みスキルもあるみたい。

MCPツールを活用してAgentic Loopを構築する

ここからは実践編。Loop Engineeringという概念が登場して久しいが、その考えを踏襲し、AIが現在の環境を適切に検査できるようなワークフローをSkill化するのが有用だと考えている。

例えば、Viewの構築についてはMCPと組み込みスキルを使って、以下のループを回せる。

  • swiftui-specialistスキルを用いてSwiftUI Viewを実装
  • #PreviewマクロでUIコンポーネントをvariantごとにPreview化
  • RenderPreview MCPツールでレンダリング結果を取得
  • レンダリング結果を評価して修正を繰り返す

上記のワークフローを盛り込んだこの程度の薄いSkillを書いてもらうだけで、UIデザインの精度向上を実感できた。

紹介したMCPツールと組み込みスキルを使えば、さまざまな検証と修正を自動化できるアイディアが浮かぶだろう。例えば

  • クラッシュ情報を取得して再現状況を発見し、シミュレータを操作しながら修正
  • 古いテストケースをSwift Testingに書き換え、テストが通るまで実行を続ける
  • シミュレータ操作とコンソールログによるプリントデバッグを繰り返し、不具合の原因を見つける

など。

LSPによるコーディングタスクの改善

Xcode MCPや組み込みSkillsは、Swiftのコーディングそのものは強化しない。

現在の環境は、特に補助無しでもコーディングタスクに十分な性能を発揮するが、LSP(Language Server Protocol)をハーネスとして組み込むことで、さらに精度を上げられる。よくある例としては、シンボルの探索や置き換えを単にgrepやsedを使うよりも精度高く実行できる。

現在の選択肢となるのはClaude Codeのswift-lsp PluginかSerenaの2つだろう。両者はsourcekit-lspを使うが、Serenaの方がシンボルを賢く扱えるので、入れておくとコードベースの調査やリネームなど機械的なリファクタリングに効果がありそうだ。

サードパーティーのハーネスは依然として必要か

他に様々なツールが存在するが、多くのユースケースはもはやXcode MCPだけでカバーできるようになったと考えている。MCPの黎明期から普及しているXcodeBuild MCPを今使う理由は薄くなってきた。

ただし、実機を操作したい場合や、画面を構造的に理解したい場合は、他のツール類が未だに有用だ。AXeやsim-useといったシミュレータ/実機を操作するハーネスは、必要に応じて追加しても良い。

今すぐXcode 27とGolden Gateを使おう!!

Xcodeを中心に、開発環境のAIサポートの新機能をまとめてみた。最低限この記事の通りに設定すれば、Apple Platform向けのアプリ開発の大部分を自動化できるだろう。

27世代からApple Platform全体が劇的にAI Friendlyに生まれ変わろうとしているのを感じる。その他のトピックとして、macOS 27 Golden Gateから、以下のツールに新機能が追加されている。これらの知識はApple Platformの開発者以外にも役立つはずだ。

最近の動きを見ていると、他のツールのAIサポートも期待できそうだ。個人的にはKeynote MCPの提供を楽しみにしている。

開発ツールに限っても、InstrumentsやXcode Cloudなど、まだまだAIで触りたい領域は多いし、今後のアップデートから目が離せない。

Xcode上のAIエージェントのMCP/Skillsを簡単に設定できるmacOSアプリAgentHubを作った

  • Xcode上のAI Agent(Claude Code / Codex / Antigravity)のMCP、Skillsの設定をGUIで簡単に管理できるアプリを作った
  • Mac App Storeからダウンロードできるよ

    Download on the Mac App Store

XcodeのAI Agent設定しづらい問題

今年頭に出たXcode 26.4以来、Xcode上のAIエージェント統合がかなり強化された。Xcode上でClaude Code/Codexが高い互換性で動作するようになり、CLI版で利用できる機能の多くはXcode上でも実現できる。

一方で設定ファイルを弄るのが面倒だったり、CLIに慣れていない人は扱いづらい面もある。いつも設定ファイルのパスがわからなくなるし。

というわけで、Xcode上のAI Agentを簡単に設定できるmacOSアプリ、AgentHub for Xcodeを出した!

AgentHub for Xcode

以前、CCMissionControlを作ったときなども思ったが、GitHubでのバイナリ配布はいろいろと面倒だ。ビルドや公証のためのCI環境を作らないとダメだし、アップデートの通知の問題もある。

ユーザー的にも、昨今のセキュリティリスクからGitHub上の野良バイナリをインストールするのも抵抗感が強いし。というわけでMac App Storeにも出してみた。

AgentHub for Xcode

AgentHub for Xcode

  • gigi-net.net
  • 開発ツール
  • 無料

Xcodeという文言を含んでいるとApple製品と誤解を受けるとrejectされたが、他のツールを参考に「for Xcode」などと明示し、Reviewer Noteを丁寧に書いたら無事に審査を通すことができた。サンドボックス化されてるので利用者も安心。

MCPサーバーの設定

まずMCPサーバー設定の管理だ。stdio/HTTPのMCPサーバーを簡単に登録することができる。

Xcode上のエージェントでは/mcpコマンドがCLI版より扱いづらく*1、設定が適応されているかわかりづらい。設定ファイルを弄るのも面倒なので、AgentHubは役立つ。

個人的に使っているのは、以前開発したxcodeproj-mcp-serverだ。Xcode上から接続することで、組み込みのXcodeツールよりも細かくxcodeprojを操作できるようになる。

余談だが、最近apple/containerサポートを追加したので、以前より軽量に使いやすくなっている。この機会にぜひ。

Xcode上のClaudeがMCPをちゃんと認識している

Skillsのインポート

同様に、既存のSkillディレクトリをXcodeにインポートしたり、アプリ上で書いたりすることもできる。

XcodeのAI Agent上では、Claude Code / Codexプラグインの扱いが少し困るのだが、CLI版に入れたpluginへsymlinkすることもできる。これにより、pluginシステムのアップデートを簡単にXcode側に自動反映できる。

これまた同様に自作のapple-icon-composer-skill Pluginなどをimportしている。これでAIだけでそれっぽいアプリアイコンが作れて大変重宝する。

このアプリアイコン自体も全部スキルで作っている

どうぞご利用ください

AIコーディング時代になって、軽い労力で実現できることの射程範囲がかなり広がった。前までは土日潰してライブラリ1個作る程度の出力だったが、今は1日2日でアプリリリースまでできる感じ。

このほかにもXcodeとAI Agentの連携はいろいろ知見が溜まってきたので、どこか出力の場があればいずれまとめたい。

何か機能要望のアイディアがあればIssueやXでお気軽にどうぞ。

*1:27からマシになった