コードと依存の取得を頻繁に行う開発者・CI 利用者・跨国チーム向けに、リモート Mac 上で Git shallow clone、npm キャッシュ、CI 環境再利用によりビルドを加速する実践手順をまとめます。比較表と実行コマンド付きで再現できます。
なぜリモート Mac でキャッシュ戦略がビルド速度に効くか
リモート Mac はネットワーク越しのため、フル clone や毎回の npm install は時間と帯域を消費します。キャッシュで clone 量削減・依存再利用・CI 共有が可能になり、ビルド時間を短縮できます。跨境環境で効果が大きいです。
Git shallow clone と partial clone の比較とパラメータ
CI では最新のコミットだけで十分なことが多いです。下表のとおり、shallow は手軽で、partial clone は必要な履歴だけ取得する場合に向いています。
| 方式 | 主なパラメータ・コマンド例 | 特徴 |
|---|---|---|
| shallow clone | --depth=1 または --depth=10 |
取得量が少なく高速。CI でよく使われます。 |
| partial clone | --filter=blob:none または --filter=tree:0 |
必要な blob を必要なときだけ取得。大規模リポジトリ向け。 |
| 単一ブランチ | --single-branch |
指定ブランチのみ。shallow と組み合わせるとさらに軽量です。 |
実行例:git clone --depth=1 --single-branch -b main https://github.com/org/repo.git
npm・Homebrew キャッシュ設定と CI 環境での再利用
npm は npm config set cache /path/to/cache でキャッシュを固定し、CI で永続ボリュームやキャッシュステップに保持します。Homebrew は HOMEBREW_CACHE で同一ランナー内再利用。Yarn/pnpm の store も同様に共有可能です。
設定例
- npm:
npm config set cache $CI_CACHE/npm - Homebrew:
export HOMEBREW_CACHE=$CI_CACHE/brew - CI ジョブで
$CI_CACHEをキャッシュキーに含めて保存・復元します。
3 ステップ加速チェックリストと実行可能コマンド
実行可能 3 ステップ
- 1. Git:
git clone --depth=1 --single-branch -b <branch> <url>で clone。必要なら--filter=blob:noneを追加。 - 2. npm:キャッシュディレクトリを設定し、
npm ciまたはnpm install --prefer-offline --no-auditでキャッシュを優先利用。 - 3. CI:ジョブ開始時にキャッシュを復元し、ジョブ終了時にキャッシュを保存。キーに
lockfileやnode-versionを含めると無効化を防げます。
よくある失敗とトラブルシュート
- shallow で履歴が必要:
git fetch --unshallowで履歴を後から取得できます。 - npm キャッシュ破損:
npm cache clean --forceのうえ、キャッシュキーを変えて再取得してください。 - CI でキャッシュが効かない:キャッシュパスとキーがジョブ間で一致しているか、権限とディスク容量を確認します。リモート Mac ノードを固定するとキャッシュのヒット率が上がります。