◉RORK LABEN
●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●SDK 58 — SDK 58 Beta は 9/15 公開。stable の日付はまだ未確認です●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り3日●Q&A — expo-widgets が本番ビルドだけ真っ黒になる、という問いが出ています●RORK — 09-29 に GPT-6.1 Sol を追加。Pro・Max プランで利用できます●NEW — クライアントのアプリを作る前に決める、公開アカウントの持ち主●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●SDK 58 — SDK 58 Beta は 9/15 公開。stable の日付はまだ未確認です●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り3日●Q&A — expo-widgets が本番ビルドだけ真っ黒になる、という問いが出ています●RORK — 09-29 に GPT-6.1 Sol を追加。Pro・Max プランで利用できます●NEW — クライアントのアプリを作る前に決める、公開アカウントの持ち主
記事一覧/開発ツール
⬡ 開発ツール/2026-07-06中級

クラウド同期フォルダでアプリ開発するとビルドが壊れる — 生成物を同期から外して根治した話

Dropbox や iCloud Drive に置いたプロジェクトで、ある朝ビルドが通らなくなりました。原因は同期がビルド生成物に割り込んで作る競合コピー。node_modules や Pods を同期対象から外して再発を止めるまでの手順を、個人開発の実体験としてまとめます。

開発環境DropboxiCloud3ビルドエラー9Expo213個人開発215

✦ プレミアム記事

「(廣川政樹さんの競合コピー)」というファイルが Pods の中に増えているのに気づいたのは、ある朝ビルドが赤で止まったときでした。同じヘッダが二重に見えて、リンカが混乱している。前の晩まで普通に動いていたプロジェクトです。

犯人はクラウド同期でした。私はソースコードを Dropbox の中に置いて複数マシンで開発しているのですが、その同期がビルド生成物にまで手を伸ばし、書き込みの最中に割り込んで「競合コピー」を作っていたのです。ソースをクラウドに置くこと自体は悪くありません。落とし穴は、同期する必要のない生成物まで同期していたことでした。

同じ構成で開発している個人開発者は少なくないと思います。ここでは、私が Dolice のプロジェクト群でこの問題を根治した手順を残しておきます。

なぜ同期フォルダでビルドが壊れるのか

ビルドは、短時間に大量のファイルを生成・上書き・削除します。node_modules の展開、Pods のインストール、コンパイラの中間生成物。これらが書き込まれている最中に、クラウド同期クライアントが「変更を検知した」と反応してアップロードを始めます。

ここで2つの厄介が起きます。ひとつは、複数マシンやバージョン履歴との間で同じファイルに別々の変更が入り、同期クライアントが解決できずに競合コピーを作ること。もうひとつは、同期がファイルを一時的にロックしたりプレースホルダ化したりして、ビルドツールが期待した実体を読めなくなることです。

つまり壊れているのはコードではなく、コードの周りにある生成物の状態です。だから「クリーンして再ビルドすると直る」のに、数日するとまた壊れる。私の環境では、生成物を同期対象に含めたままだと、この再発率は体感でほぼ100%でした。原因が生成物の同期にある限り、対処療法では止まりません。

同期から外すべきディレクトリ

判断基準はシンプルです。再生成できるものは同期しない。 ソースと設定ファイルだけ同期し、コマンド一発で作り直せるものは全て除外します。

ディレクトリ正体再生成方法
node_modules/npm 依存パッケージnpm install
ios/Pods/CocoaPods 依存pod install
~/Library/Developer/Xcode/DerivedData/Xcode 中間生成物ビルドで再生成
ios/build/ · android/build/ビルド成果物ビルドで再生成
.gradle/ · android/.gradle/Gradle キャッシュビルドで再生成
.expo/ · .expo-shared/Expo のローカルキャッシュ起動時に再生成
*.xcworkspace/xcuserdata/ · .swiftpm/ユーザー固有状態・SPM 作業領域不要/再生成

.git は同期しても致命傷にはなりませんが、私は履歴の競合を避けるため、クラウド同期とは別に GitHub をリモートとして使い、.git 自体も除外対象に含めています。この構成を推奨します。

✦

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

この記事の続きを読む

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

この記事で得られること
✦同期フォルダでビルドが不定期に壊れて原因が掴めなかった人が、なぜ壊れるのかを理解し、その日のうちに除外設定で止められる
✦node_modules・Pods・DerivedData など、同期から外すべき生成物の一覧と、Dropbox / iCloud それぞれの除外手順を手に入れられる
✦プロジェクト作成時に一度流すだけで生成物を同期対象外にする再利用スクリプトを、自分の環境にそのまま組み込める
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 開発ツール2026-09-03
リンクを押してもアプリが開かないとき、疑うのは assetlinks.json の置き場所より先に署名鍵です
Android App Links が検証されずブラウザに吸われる原因の多くは指紋の食い違いです。keytool の実出力と、手元で照合できる小さな検査スクリプトの実行結果を添えて整理しました。
⬡ 開発ツール2026-09-01
expo-paste-input で画像を貼り付けられる入力欄を作り、消える file:// を documents へ逃がす
チャット入力に画像やGIFを貼り付けられるようにする expo-paste-input の実装手順です。onPaste が返す file:// は一時ファイルで、送信までの間に消えることがあります。保存先を移す実装と、実機で確かめる順番をまとめました。
⬡ 開発ツール2026-08-29
更新が止まってから足した Remote Config のキーは、配信済みの版には届きません
更新経路が閉じる前に、遠隔で動かせる範囲を数え直した記録です。コンソールに足したキーは、それを読む版が配られていなければ効きません。凍結前の最後のビルドに積むスイッチの選び方と、既定値の共有で起きた汚染の実測を残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます