検索・比較:越境 リモート Mac CI で Yarn Berry・PnP と
node_modules の採否。registry ミラーと並列インストールの決定表。対象は monorepo の FE/iOS 混在 CI 保守者。2026 は Node 22+・Apple Silicon で律速はRTT と同時接続寄り。ホーム・ブログ一覧・購入・ヘルプはログイン不要です。
越境遅延下における二モードの所要時間対比(PnP と classic node_modules)
RTT↑でHTTP 往復と429 再試行が支配的。.yarn/cache で Berry は tarball を圧縮しやすく、node-modules リンカーは互換◎・初回 I/O↑。
| 観点 | PnP | node_modules |
|---|---|---|
| 越境 cold | キャッシュ命中で tarball 本数↓ | 階層展開で初回時間・I/O↑ |
| ディスク | .yarn/cache 集約 | monorepo で容量↑ |
| ネイティブ/Xcode | extensions/unplug 要のことも | 既存ツール互換◎ |
| 鍵・判断 | yarn.lock+Berry+.yarnrc.yml/フロント・容量重視 | 方針明示/iOS 混在・素朴解決 |
npm ミラー最適化・registry ミラー。
registry と並列インストールの実行パラメータ(.yarnrc.yml・環境変数)
並列インストールは networkConcurrency×同一ホストのジョブ数。上げる前に NAT とレジストリのレート上限 を見ます。
実行パラメータ(出発点)
enableGlobalCache: true(許可時)networkConcurrency: 8〜24・429 なら半減httpTimeout: ≥60000・実験はYARN_NPM_REGISTRY_SERVER、本番は.yarnrc.yml
nodeLinker: pnp enableGlobalCache: true networkConcurrency: 12 httpTimeout: 90000 npmRegistryServer: "https://registry.npmjs.org/"
GitHub Packages と npm の二系統認証とトークンローテーション
スコープは npm.pkg.github.com、公開は registry.npmjs.org。.npmrc を Yarn が読む前提で、トークンローテーションは両行を同一マージで差し替え、パイプラインの古いシークレット参照を掃除します。
| レジストリ | 設定キー例 | CI での注意 |
|---|---|---|
| npmjs | //registry.npmjs.org/:_authToken | 読み取り限定トークン・IP 許可リスト |
| GitHub Packages | //npm.pkg.github.com/:_authToken | read:packages と org スコープの一致 |
| ローテーション | OIDC 発行 or 短命 PAT | 期限切れ前に両行を原子的に差し替え |
CI 並列度とディスク水位しきい値(Apple Silicon ランナー)
同時ジョブ × node_modules でディスクが先に枯れます。並列 pull とディスク FAQ の 80/85/90% を install 前後のゲートに。
| 指標 | 推奨アラート | アクション |
|---|---|---|
| ディスク使用率 | 80% 注意・85% 減速・90% 中止 | キャッシュ prune・ワークスペース分離・同時実行数を 1 段階下げる |
| 同一ホストの CI 並列 | 帯域とファイル記述子を見て 2〜4 から試行 | networkConcurrency と連動して調整 |
失敗リトライと yarn.lock 一貫性の検収
429/5xx は 4→12→30→90 秒 バックオフをパイプラインと併用。yarn install --immutable で lock ドリフトを弾き、dedupe 方針を文書化。
検収
- Node 22+ と
engines一致 yarn.lock差分なし(immutable 緑)・再試行後も checksum 安定
関連:Bundler 越境決定表。
FAQ
PnP なのにネイティブだけ落ちる
未宣言依存が典型。packageExtensions/unplug または該当 WS のみ node-modules リンカー。
networkConcurrency を上げたら 429 が増えた
相手上限が先。値を下げ、ミラー・キャッシュ鍵・同一ホストのパイプライン並列を減らす。
GitHub Packages だけ 401
スコープ・.npmrc ホスト行・SSO。ローテ直後は古い NPM_TOKEN 参照を grep。