部品60個のうち1つを変えたとき、作り直しが要るのは中央値で2個でした。全部作る必要はありません。
ただし最も広い変更は35個を巻き込みます。どの部品を変えるかで、桁が変わります。
作り直す範囲は変更ごとに大きく違います。平均で決めると、両側を外します。
モノレポでは、部品を変えるたびにどこまで作り直すかが問題になります。実際に計算しました。
部品を60個作り、互いに依存させました。1つあたりの組み立ては25秒で、全部作ると1500秒です。
1つの部品を変えたとき、それに間接的にでも依存しているものは作り直しになります。60通りすべてを数えました。
部品 60個。1つあたりの組み立ては 25秒。全部作ると 1500秒 見方 作り直す部品 かかる時間 全部作る場合との比 最も狭い変更 1個 25秒 1.7% 中央値 2個 50秒 3.3% 平均 5個 125秒 8.3% 90%点 17個 425秒 28.3% 最も広い変更 35個 875秒 58.3%
中央値は2個です。半分以上の変更は、2個作り直せば済みます。
ところが最も広い変更は35個で、全部作る場合の58.3%にあたります。
平均は5個ですが、中央値は2個です。少数の重い変更が平均を引き上げています。
90%点は17個です。10回に1回は、17個以上を作り直すことになります。
出典もこの問題を作業場が大きくなるにつれ、すべての企画を再試験し、再構築し、再検査するのは遅くなりすぎるとしています。
半分の変更は2個で済む。ただし裾は35個まで伸びる。
As your workspace grows, re-testing, re-building, and re-linting all projects becomes too slow.原文Nx Docs「Run Only Tasks Affected by a PR」 この内容の有効期限2027-02-18
変更した部品から、それに依存しているものをたどります。一覧がなければ計算できません。
モノレポで作り直す範囲を絞るには、部品どうしの依存が分かっている必要があります。
出典も手順の1つを変更した企画に依存している企画がどれかを判定すると説明しています。
3番目が要点です。間接的な依存も巻き込みます。この計測でも、35個まで広がる変更がありました。
1番目が実態と違っていると、本当は影響するのに作り直さないことが起きます。宣言していない依存が危険です。
3番目も決めておきます。前回うまくいった時点からの差分にしないと、範囲が広がったり狭まったりします。
Determine which projects depend on the projects you modified.原文Nx Docs「Run Only Tasks Affected by a PR」 この内容の有効期限2027-02-18
絞り込みは依存が薄いほど効きます。1部品あたりの依存を増やすと、範囲が広がります。
モノレポの絞り込みは、依存の薄さに支えられています。依存を増やしたときの変化を測りました。
同じ60個の部品で、1部品あたりの依存の上限だけを変えます。1個までから8個まで振りました。
1部品の依存の上限 影響範囲の平均 中央値 99%点 全部作る場合との比 1個まで 1.7個 1個 12個 2.9% 2個まで 3.2個 1個 23個 5.4% 3個まで 4.7個 2個 35個 7.8% 5個まで 10.5個 4個 48個 17.5% 8個まで 13.9個 8個 47個 23.1%
依存を1個までに抑えると、平均は1.7個です。全部作る場合の2.9%で済みます。
5個まで許すと平均10.5個、99%点は48個です。60個中48個なので、ほぼ全部作り直しています。
依存が濃くなるほど、絞り込んでも全部作るのと変わらなくなります。仕組みを入れても速くなりません。
出典は絞り込みの効果をこれは自動実行の速さを大きく改善し、必要な計算量を減らすとしています。改善の幅は、依存の薄さで決まります。
つまり手を打つ順番は、依存を減らすほうが先です。仕組みを入れるのはそのあとです。自動実行そのものの並べ方はCI/CDの記事で測っています。
依存が濃いと、絞り込んでも全部作るのと変わらない。
依存関係は式で作った有向グラフです。自分より前の部品にだけ依存する形にしてあり、循環はありません。実際のモノレポでは共通の土台に多くがぶら下がるので、影響範囲はもっと偏ります。1部品25秒という時間も置いた値です。ここで見せているのは、絞り込みの効き目が依存の濃さで決まるという関係です。
This drastically improves the speed of your CI and reduces the amount of compute needed.原文Nx Docs「Run Only Tasks Affected by a PR」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る