ソフトウェア
中級

ビルドキャッシュ(ビルドキャッシュ)

ビルドプロセスで生成された中間成果物(コンパイル済みオブジェクト、依存解決結果、テスト結果)を保存し、次回ビルド時に再利用する仕組み。CI/CD の高速化に不可欠。

0 回閲覧
0 いいね
2026/5/2 更新
関連タグ
CI/CD
ビルド
Turbo
Bazel
GitHub Actions

概要

ビルドキャッシュ(Build Cache)は、ビルドプロセスで生成された中間成果物(コンパイル済みオブジェクト、依存解決結果、テスト結果)を保存し、入力が変わらない限り次回ビルド時に再利用する仕組みを指す。Monorepo の規模拡大と CI/CD 実行頻度の増加により、2026 年現在の Web 開発では事実上必須の最適化手段となっている。

主要なビルドキャッシュ実装

ツール形態効果
Turborepo Remote CacheVercel ホスト or 自前ビルド時間 70〜95% 短縮(再ビルド時)
Nx CloudNx 専用分散ビルド + キャッシュ + テスト並列化
Bazel Remote ExecutionGoogle 由来 OSS巨大 monorepo(Google / Meta 規模)向け
GitHub Actions actions/cache@v4GitHub Actionsnode_modules / .cache を S3 互換ストレージに保存
Docker BuildKitDocker 公式レイヤ単位のキャッシュ。BuildKit cache mount で速度 5〜10 倍
Bun の install cacheBun 公式~/.bun/install/cache/ に並列展開、npm/pnpm より圧倒的に速い

主な特徴・仕組み

  • キャッシュキー: 入力(ソース / 依存 / 環境変数)のハッシュをキーとして成果物を保存
  • ローカル vs リモート: ローカルキャッシュは個人開発者用、リモートキャッシュは CI / 複数開発者で共有
  • 無効化: 入力ハッシュが変わると自動的に新しいキーで再ビルド・再保存
  • ヒット率: 健全な monorepo なら CI で 80% 以上、ローカル開発で 95% 以上が目安

自作 PC / 開発環境での活用

  • Turborepo の Local Cache: .turbo/ 配下に自動保存。ローカル開発で bun run build の 2 回目以降が一瞬
  • GitHub Actions のキャッシュ: actions/cache@v4 を使い、~/.bun/install/cache と node_modules をキー bun-${{ hashFiles('bun.lockb') }} で保存
  • Docker BuildKit cache mount: RUN --mount=type=cache,target=/root/.bun bun install でレイヤ間で共有
  • NVMe 高速 SSD: ローカルキャッシュ展開速度に直結。Samsung 990 Pro / WD SN850X 推奨

関連用語との違い

用語違い
依存キャッシュ(dependency cache)node_modules / Cargo registry 等のパッケージダウンロード結果のみ。ビルドキャッシュはコンパイル成果物まで含む
CDN キャッシュ配信時のキャッシュ。ビルドキャッシュは生成時のキャッシュ
Memoization関数単位の結果キャッシュ。ビルドキャッシュはタスク単位

よくある質問

Q1: Turborepo Remote Cache は無料で使える? A: Vercel ホストは月 2GB / 100 ユーザーまで無料。自前ホスト(GCS / S3 / Cloudflare R2)なら完全無償で運用可能。

Q2: GitHub Actions のキャッシュサイズ制限は? A: リポジトリあたり 10GB。超過すると古いものから自動削除される。

Q3: ビルドキャッシュが効かないケースは? A: タイムスタンプ依存の処理(環境変数 DATE / git rev-parse HEAD を埋め込むビルド)はキャッシュキーが毎回変わる。turbo.json の env / inputs でキャッシュ対象から除外を明示する。

まとめ

  • ビルドキャッシュは CI/CD の高速化に必須 の最適化手段
  • 2026 年は Turborepo / Nx / Bazel + リモートキャッシュ が Web 開発の主流
  • ヒット率の目安は CI で 80%、ローカルで 95% 以上
この記事について
カテゴリーソフトウェア
難易度中級
作成日2026/5/2