CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-06-03上級

Claude Code で .xcresult を解析し、iOS テスト失敗を最短で特定する実装メモ

Xcode 16 で xcresulttool のレガシー JSON が廃止され、.xcresult からテスト失敗を機械的に取り出す手順が変わりました。新しい test-results フォーマットを jq で整形し、Claude Code に渡して失敗原因と該当コードまで一気に絞り込む実装を、6アプリ並行運用の実体験とともにまとめます。

claude-code129ios14xcresultxcodebuildxctest2ci-cd8テスト自動化4swift2

プレミアム記事

iOS のテストが CI で落ちたとき、いちばん時間を溶かすのは「なぜ落ちたか」ではなく「どこを見れば落ちた理由が書いてあるか」を探す数分だと感じています。Xcode の GUI でテストナビゲータを開けば失敗箇所は分かりますが、CI のログには大量の行が流れ、手元には .xcresult というバンドルだけが残ります。このバンドルは中身が見えず、ダブルクリックで Xcode が開くのを待つしかありません。

私は壁紙系や癒し系の iOS / Android アプリを 2014 年から個人で開発していて、App Store と Google Play を合わせた累計ダウンロードは 5,000 万を超えました。2026 年 5 月からは 6 アプリを並行で StoreKit 2 へ移行しています。移行のたびに課金まわりのテストがまとめて落ち、.xcresult を一つずつ Xcode で開いて確認する作業に半日近く奪われたことがありました。この「失敗の中身を取り出す」工程こそ、Claude Code に任せて一気に短縮できる部分です。

ところが厄介なことに、Xcode 16 で xcresulttool のレガシー JSON 出力が非推奨になり、これまで多くの記事やスクリプトが前提にしていた xcresulttool get --format json がそのままでは使えなくなりました。ここでは新しい test-results 系のサブコマンドを起点に、失敗テストだけを抜き出して Claude Code に渡し、原因の仮説と修正候補までを返させる実装を組み立てていきます。

.xcresult の中に何が入っているのか

.xcresult は単なるログファイルではなく、テスト結果・コードカバレッジ・スクリーンショットなどの添付ファイル・ビルド診断をまとめた SQLite ベースのバンドルです。Finder では一つのファイルに見えますが、実体はディレクトリで、中を直接読むことは想定されていません。読み出しには xcrun xcresulttool を使うのが公式の方法です。

ここで最初の落とし穴があります。Xcode 15 までは次のコマンドでルートオブジェクトを取得し、そこから ID を辿ってテスト結果を掘っていく方式が一般的でした。

# Xcode 15 までの旧方式(Xcode 16 で非推奨の警告が出る)
xcrun xcresulttool get --path Result.xcresult --format json

このコマンドは Xcode 16 でも当面動きますが、--legacy を付けないと非推奨の警告が出るようになり、出力構造も将来的に保証されません。何より、このルート JSON は階層が深く、テスト一覧にたどり着くまでに actionsactionResulttestsRefid を取り出して再度 get を呼ぶ、という多段の参照が必要でした。スクリプトが壊れやすく、Claude Code に渡すにも前処理が重すぎます。

旧方式と新方式の違いを Before / After で見る

Xcode 16 では、テスト結果に特化した test-results サブコマンドが追加されました。これが今回の主役です。多段参照なしに、テストの集計と個別結果をフラットな JSON で直接取得できます。

# Before: ルートを取得して id を辿る(参照を2〜3回繰り返す)
ROOT=$(xcrun xcresulttool get --legacy --path Result.xcresult --format json)
TESTS_REF=$(echo "$ROOT" | jq -r '.actions._values[0].actionResult.testsRef.id._value')
xcrun xcresulttool get --legacy --path Result.xcresult --id "$TESTS_REF" --format json
# → さらにネストを辿らないと個別テストのアサーション文に届かない
# After: テスト結果を直接フラットに取得(Xcode 16+)
# サマリ(全体の合否・件数・実行時間)
xcrun xcresulttool get test-results summary --path Result.xcresult
# 個別テストの一覧(失敗メッセージ・ファイル行番号まで含む)
xcrun xcresulttool get test-results tests --path Result.xcresult

test-results tests の出力は、テストプラン → テストバンドル → テストスイート → 個別テストという木構造を持ち、各ノードに resultPassed / Failed など)が入っています。失敗したテストのノードには、アサーションの失敗メッセージとソースの参照(ファイルと行)が含まれます。旧方式で何度も get を呼んでいた部分が、実質 1 コマンドで済むようになったのが大きな違いです。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
Xcode 16 で挙動が変わった xcresulttool の新フォーマット(test-results summary/tests)を jq で失敗テストだけに絞り込み、Claude Code が読みやすい最小の JSON に整形する具体的なコマンドが手に入ります
失敗したテスト名・アサーション文・ファイル行番号を構造化して渡し、原因の仮説と該当コードの修正候補までを 1 つのスラッシュコマンドで返させる運用パターンを、そのまま流用できる形で提供します
CI で .xcresult だけが残る状況を前提に、Stop フックで自動トリアージを走らせ、フレークか実バグかを切り分けるまでの設計を、個人開発で 6 アプリを並行更新した実体験ベースで解説します
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Claude Code2026-04-08
Claude Code で iOS テスト基盤を組み直す — XCTest・Swift Testing・XCUITest の役割分担
Claude Code で iOS アプリのテスト基盤を一から組み立てた手順です。XCTest・Swift Testing・XCUITest の使い分け、Xcode Cloud での CI 自動化、カバレッジ 80% 台を維持するための判断基準をまとめました。
Claude Code2026-05-23
Claude Code で iOS 壁紙アプリ 4 タイトルの StoreKit 2 移行を並行で回した 5 月の実測ノート
壁紙アプリ 4 タイトルの StoreKit 2 移行と AdMob 周りの段階公開を Claude Code 経由でどう並行で回したか、Mac mini M5 1 台での 5 月の運用記録です。
Claude Code2026-04-01
Claude Code × App Store Connect API: iOS/Androidアプリ完全自動リリースパイプライン構築ガイド
App Store Connect APIとClaude Codeを連携させ、iOSアプリのリリース作業を完全自動化する方法を解説。リリースノートのAI自動生成からTestFlight配布、GitHub Actionsとの統合まで、実装コードを交えて体系的に紹介します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →