◉CLAUDE LABEN
●2.1.302 — fork サブエージェントが claude -p・Agent SDK・デスクトップで既定オンになりました。無効化は CLAUDE_CODE_FORK_SUBAGENT=0(10/16)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り43日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.302 — fork サブエージェントが claude -p・Agent SDK・デスクトップで既定オンになりました。無効化は CLAUDE_CODE_FORK_SUBAGENT=0(10/16)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り43日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-09-04上級

Claude Code に project.pbxproj だけは直接触らせていません

Xcode のプロジェクトファイルは、開けなくなる壊れ方より開けてしまう壊れ方のほうが高くつきました。直接編集をやめてスクリプト経由に寄せるまでに測ったことと、いま引いている線を書き残します。

Claude Code267Xcode4iOS26個人開発130権限設計6

✦ プレミアム記事

新しい iPhone の画面サイズに合わせて、手元の 4 本のアプリの定数ヘッダを一斉に触っていた週のことです。同じ時期に Firebase を CocoaPods から Swift Package Manager へ移す作業も重なっていて、project.pbxproj の差分が毎日のように数百行ずつ動いておりました。

作業そのものは進んでいました。ビルドは通り、シミュレータでも問題は出ません。異変に気づいたのは、壁紙アプリの Release ビルドを実機に載せて最終確認をしていたときでした——低い密度のバケット向けに置いた画像が、一枚も出てこないのです。

Xcode は普通に開きます。警告も出ません。原因は、リソースのファイル参照がターゲットのビルドフェーズから外れていたことでした。数百行の差分のどこかで、参照の一行が別のグループへ移り、Copy Bundle Resources から静かに抜けていたのです。

その日から私は、プロジェクトファイルの編集だけを Claude Code の手の外に置いています。理由は「エージェントが信用できないから」ではありません。私自身が手で編集しても同じ事故を起こすからです。 問題は編集する主体ではなく、この形式のファイルが「壊れたことを教えてくれない」点にありました。

開けなくなる壊れ方と、開けてしまう壊れ方

project.pbxproj の失敗には、性質のまったく違う二種類があります。

一つ目は、構造が壊れて Xcode が開けなくなる形です。UUID の対応が崩れる、クォートが閉じない、セクションの終端が消える——このどれかが起きると、プロジェクトを開いた瞬間にエラーが出ます。損害は「作業が止まる時間」だけで、git checkout すれば元に戻ります。

二つ目は、構造としては正しいまま、意味だけがずれる形です。ファイル参照は生きていて、Xcode も開き、ビルドも通ります。ただ、そのファイルがどのターゲットのどのフェーズに属しているかが変わっている——実機でしか症状が出ないのは、この形です。

観点開けなくなる壊れ方開けてしまう壊れ方
気づく場所Xcode を開いた瞬間実機確認・審査・ユーザーからの報告
気づくまでの時間数十秒数日
CI での検出ビルドが落ちるので検出できますビルドは緑のまま通ります
復旧コスト直前のコミットへ戻すだけどの差分が原因かの特定から始まります
再発のしやすさ低い(すぐ学習します)高い(学習の機会が来ません)

一つ目ばかりを警戒していたのが、私の誤りでした。構文チェックを足しても、二つ目はまったく減りません。

開けなくなる変更より、開けてしまう変更を先に疑います。

この一行に辿り着いてから、対策の置き場所が変わりました。守るべきはファイルの構文ではなく、ターゲットとファイルの対応表だったのです。

直接編集とスクリプト経由の、実際の違い

選択肢は二つあります。Claude Code に project.pbxproj をテキストとして編集させるか、xcodeproj gem を使うスクリプトを書かせて、そのスクリプトを実行させるか。

前者は速いのです。差分も一目で読めます。私も最初の一週間はこちらで進めていて、実際にほとんどの変更は成功していました。

問題は失敗の残り方です。テキスト編集では、変更が「意図した意味」になったかを検証する手段が差分の目視しかありません。数百行の差分の中で、意味のある変更は 4 行ということが普通に起こります。残りは UUID の並び替えと空白の揺れで、目視の精度はそこで落ちます。

観点テキストとして直接編集xcodeproj スクリプト経由
変更の単位行オブジェクト(ターゲット・フェーズ・参照)
失敗の現れ方構文崩れか、意味のずれスクリプトが例外で止まります
再実行差分が二重に当たる恐れがあります冪等に書けば何度でも通せます
レビューの対象数百行の差分数十行のスクリプト
他の 3 本への横展開手で繰り返します同じスクリプトを引数違いで回します
着手までの手間ゼロgem の導入とスクリプト作成

4 本のアプリに同じ変更を入れる場面では、後者の優位がはっきり出ました。一本目でスクリプトを書き切ってしまえば、残りの 3 本は引数を変えて回すだけになります——一方で、アプリが 1 本しかないなら、この手間は割に合わないかもしれません。

✦

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

この記事の続きを読む

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

この記事で得られること
✦project.pbxproj を直接編集させるか xcodeproj スクリプト経由にするかを、自分のリポジトリの構成から判断できるようになります
✦ビルドは通るのに実機で欠ける「開けてしまう壊れ方」を配信前の棚卸しで捕まえられるようになり、リリース直前に数時間を溶かす事態を避けられます
✦settings.json の deny と冪等な Ruby スクリプトを組み合わせて、プロジェクトファイルの編集の入口を 1 本に絞る形へ移せるようになります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⟐ Claude Code2026-10-12
SPM に移したら、起動した瞬間にアプリが落ちるようになりました — dyld の一行を Claude Code と読み解いた記録
CocoaPods から Swift Package Manager へ移した直後、ビルドは通るのに起動した瞬間に落ちました。dyld の一行から原因を切り分け、直し方と確認コマンドまでをまとめます。
⟐ Claude Code2026-08-10
同じ rm -rf が、10箇所では戻せて5箇所では戻せませんでした — auto モード既定化の前に可逆性を測る
8月14日に auto モードが Pro / Max / Team の既定になりました。止まる境界は「取り消せない・破壊的・環境の外」ですが、可逆性は操作の名前ではなく実行時点の状態で決まりました。復旧不能バイトを数えるプローブと、15対象の実測をまとめます。
⟐ Claude Code2026-09-20
Pro を払っているのに Console に請求が立っていたとき、私が最初に見た一行
サブスクリプションと API の従量は別会計で、Claude Code はそのどちらでも動きます。どちらが選ばれているかを決めるのは優先順位で、ログインはその最下段です。status の読み方と、無人実行だけが別の答えを返す理由を書き残します。