【ターボレポ】

Turborepo とは?

公開:
💡 「前にやったビルド、もう一回やる必要ある?」を徹底的に省くターボエンジン
📌 このページのポイント
Turborepo: キャッシュ + 並列実行 モノレポ web-app api-server shared-lib ui-components Turborepo 依存グラフ 解析 ハッシュ計算 キャッシュ比較 並列スケジュール キャッシュHIT 即座に復元 キャッシュHIT 即座に復元 キャッシュMISS 再ビルド実行 従来 10分 Turborepo 数秒 リモートキャッシュ: チーム全体でビルド結果を共有 → 誰も同じビルドを二度やらない
Turborepoのキャッシュと並列ビルドのイメージ
ひよこ ひよこ
Turborepoって何のためのツール?
ペンギン先生 ペンギン先生
モノレポ、つまり1つのリポジトリに複数のパッケージやアプリをまとめて管理する構成で、ビルドやテストを高速化するツールだよ。普通にやると全パッケージを毎回ビルドすることになるけど、Turborepoはキャッシュを使って賢くスキップしてくれるんだ
ひよこ ひよこ
キャッシュってどういう仕組み?
ペンギン先生 ペンギン先生
ソースコードハッシュ値を計算して、前回と同じ入力なら前回の出力をそのまま使うんだ。100個のパッケージのうち1個だけ変更したら、残り99個はキャッシュから一瞬で復元されるよ。10分かかってたビルドが数秒で終わることもあるんだ
ひよこ ひよこ
リモートキャッシュって何?
ペンギン先生 ペンギン先生
ビルド結果をクラウドに保存して、チーム全体で共有する機能だよ。Aさんがビルドした結果をBさんが再利用できるし、CIでも同じキャッシュが使える。チーム全体で見ると、同じビルドを誰も二度とやらなくて済むんだ
ひよこ ひよこ
Nxっていう似たようなツールもあるよね?違いは?
ペンギン先生 ペンギン先生
どちらもモノレポのビルド高速化ツールだけど、思想が違うんだ。Turborepoは既存のnpmスクリプトをそのまま高速化する「薄いレイヤー」で、導入が簡単。Nxはプロジェクト生成やプラグインなど機能が豊富な「統合プラットフォーム」だね
ひよこ ひよこ
どんなプロジェクトで使うと効果的なの?
ペンギン先生 ペンギン先生
フロントエンドアプリ、バックエンドAPI、共有ライブラリを1つのリポジトリで管理してるようなプロジェクトだね。パッケージが5個を超えてくるとビルド時間が問題になり始めるから、そのあたりがTurborepo導入のタイミングだよ
ひよこ ひよこ
Vercelが作ってるってことは、Next.js専用?
ペンギン先生 ペンギン先生
Next.jsとの相性は最高だけど、専用じゃないよ。ReactVueSvelteバックエンドNode.jsアプリ…JavaScriptエコシステムなら何でも使える。ただしRustやGoのような非JSプロジェクトには向いてない。そこはBazelの出番だね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Turborepo」って出てきたら「モノレポのビルドをキャッシュと並列化で爆速にするツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Turbo Repository」 = ターボ(高速)なリポジトリ管理
💬 Turbo(加速)とRepo(リポジトリ)を組み合わせた名前で、ビルドを加速させるという意味だよ。2021年にJared Palmerが開発して、その後Vercel社に買収されたんだ
← 用語集にもどる