ANTIGRAVITY LABEN
記事一覧/アプリ開発
アプリ開発/2026-06-20上級

並列で走らせたエージェントの依存インストールが lockfile を壊すとき、インストールだけを直列化する

Antigravity の並列エージェントが同じ pnpm store と lockfile を同時に書き換えて壊す失敗を、コード生成は並列のまま、インストールだけをファイルロックで直列化して防いだ実践メモです。

Antigravity249pnpm2parallel-agentslockfilenode_modules

プレミアム記事

ある朝、夜のうちに4本のエージェントへ振っておいたタスクのうち、2本が「依存が見つからない」というエラーで途中停止していました。個人開発で複数のアプリと Dolice Labs のブログ群を並行して回している都合上、私はオフピークの時間帯にエージェントをまとめて走らせています。その晩は React の画面実装、API ルートの追加、Lint 修正、テスト追補を別々のエージェントに同時に任せていました。

朝に残っていたのは壊れた pnpm-lock.yaml と、半分だけ展開された node_modules でした。コードの差分そのものは悪くありません。問題は、4本のエージェントがほぼ同じ瞬間に pnpm install を叩き、同じ store と同じ lockfile を奪い合ったことでした。

この記事は、その後しばらく安定して回せている対処をまとめたものです。要点は単純で、コード生成は並列のままにして、依存インストールという一点だけを直列化します。

何が壊れていたのか — 二つの共有資源

並列エージェントの衝突というと、同じソースファイルを二人が書き換える話を思い浮かべます。けれど今回の故障はそこではありませんでした。壊れていたのは、エージェントから見えにくい二つの共有資源です。

一つ目は pnpm の content-addressable store(既定では ~/.local/share/pnpm/store、または ~/.pnpm-store)です。pnpm はパッケージの実体を一箇所の store に置き、各プロジェクトの node_modules からハードリンクを張ります。store への書き込みが複数プロセスで重なると、展開途中のパッケージに別プロセスがリンクを張りにいき、中身が欠けたディレクトリが残ります。

二つ目は pnpm-lock.yaml です。インストール中に解決結果が変わると pnpm は lockfile を書き戻します。二本のインストールが同時に書き戻すと、片方の途中状態が混ざった YAML が残り、次回以降の解決が壊れます。

私の環境では、ワークツリーは git worktree で分けていたのに store と lockfile が共有のままでした。つまり「ソースは隔離したが、依存解決は隔離していなかった」状態です。並列の単位を一段見誤っていたわけです。

ログでどう見分けるか

同じ「インストール失敗」でも、ネットワーク起因や単純なバージョン不整合とは現れ方が違います。並列の競合に固有のサインは、次のようなものでした。

観察されたサイン意味
`ENOENT` が store 配下のパスで出る別プロセスが展開途中の実体にリンクを張った
`Cannot read properties of undefined (reading 'integrity')`lockfile の途中書き戻しで整合性ハッシュが欠落
`pnpm-lock.yaml` の `git diff` が巨大かつ無秩序二本の解決結果が交互に混ざった
再実行(単独)だと毎回成功するコード自体は正しく、競合が原因という強い証拠
`node_modules/.pnpm` に空ディレクトリが残る展開が中断された痕跡

最後の行が判定の決め手でした。単独で再実行すると必ず通るなら、それは内容のバグではなく、タイミングの問題です。私はこの観察を最初の切り分けに据えています。

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

この記事の続きを読む

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

この記事で得られること
並列エージェントが pnpm store と lockfile を奪い合う具体的な失敗パターンと、ログからの見分け方
コード生成は並列のまま、依存インストールだけをファイルロックで直列化する動く実装
ワークツリーごとに node_modules を分け共有 store は壊さない構成と、導入前後の失敗率(12回中3回→0回)
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-06-20
複数環境でエージェント設定が静かにずれていく — 設定ドリフトの検知と是正
2台のMacと自動運用環境でエージェントの設定が少しずつ食い違い、片方だけ失敗する——その「設定ドリフト」を、ハッシュ照合と是正手順で見える化する設計を、個人開発の現場からまとめます。
アプリ開発2026-06-01
targetSdk 36 で edge-to-edge が必須になった壁紙アプリを Antigravity で移行した運用メモ
targetSdk を 36(Android 16)に上げた途端、壁紙アプリのプレビュー画面のツールバーがステータスバーに食い込みました。opt-out が効かなくなった edge-to-edge 強制対応を、Antigravity のエージェントで複数アプリ横断に進めた数週間の運用メモです。
アプリ開発2026-05-26
アプリ内レビュー要求の出し分け条件を Antigravity Editor で 5 アプリ統一した数日の記録
個人開発で運用してきた iOS 壁紙アプリ 5 本の SKStoreReviewController 呼び出し条件を、Antigravity Editor のマルチファイル編集機能でひとつの基準にまとめ直したときの数日間の所感を、コード例とあわせて静かに記録しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →