開発支援・コーディング

CI/CDとは|段を速い順に並べ替えたら、落ちるまでの待ちが455.4秒から148.0秒になった

CI/CDの段はどう並べるのか並べ方で何が変わるのか並列にすれば解決するのか

落ちる変更が2割ある前提で計算しました。E2Eを先に置くと、落ちるまでの待ちは455.4秒です。

速い段から並べ替えると148.0秒になりました。同じ変更、同じ検査です。

この記事の要点

  • E2E先頭だと待ち455.4秒
  • 速い順なら148.0秒
  • 1件あたりは561.4秒と496.1秒
  • 並列は400.0秒で最短

段を速い順に並べ替えたら、落ちるまでの待ちが455.4秒から148.0秒になった

検査の中身は同じでも、並べる順番で待ちが変わります。落ちる変更ほど効きます。

CI/CDでは、いくつかの検査を順に走らせます。その順番で待ち時間が変わることを実際に計算しました。

段は4つです。書式検査10秒・単体テスト60秒・組み立て120秒・E2Eテスト400秒としました。

落ちる割合も段ごとに置きました。変更2万件のうち4247件(21.2%)がどこかで落ちます。

並べ方を4通り比べる

text
変更 20000件。段ごとに落ちる割合は 書式6%・単体10%・組み立て3%・E2E4%
どこかで落ちる変更は 4247件(21.2%)

並べ方                  1件あたりの時間  合計時間     落ちた変更の平均待ち
速い順に置く                          496.1秒    9922920秒                148.0秒
組み立てを先に置く                       512.4秒   10248330秒                224.6秒
E2Eを先に置く                        561.4秒   11228380秒                455.4秒
全部まとめて並列                        400.0秒    8000000秒                400.0秒

右端の列を見てください。E2Eを先に置くと、落ちる変更は455.4秒待たされます。

速い順に並べ替えると148.0秒です。3分の1以下になりました。

手前で落とすと後ろが走らない

書式検査は10秒で、6%の変更がここで落ちます。落ちた時点で、後ろの580秒は走りません

E2Eを先に置くと、書式の誤りでも400秒待ってから落ちます。直せば分かる誤りに、7分近くかけていることになります。

出典もこの向きを頻繁に反映するほど誤りは早く見つかり、原因を探すときに調べるコードの量も減ると述べています。早く知ることに価値があります。

手前で落とせば、後ろの段は走らない。

単位: 秒E2Eを先に置く455.4秒全部まとめて並列400秒組み立てを先に224.6秒速い順に置く148秒変更2万件での計算。落ちた4247件について、落ちると分かるまでの平均時間。
図1 ── 並べ方ごとの、落ちるまでの待ち
出典GitHub Docs「Continuous integration」2026-08-18 確認
Committing code more often detects errors sooner and reduces the amount of code a developer needs to debug when finding the source of an error.
原文GitHub Docs「Continuous integration」 この内容の有効期限2027-02-18

並列にすると待ちは最短になるが、計算資源は減らない

並列は待ちを縮めます。落ちる変更にも全段ぶんを走らせるので、使う量は増えます。

CI/CDの費用は、実行した時間の合計で決まります。並べ方はここにも効きます。

表の合計時間の列を見てください。速い順は9922920秒、E2E先頭は11228380秒です。

同じ検査をしているのに、13%の差が付いています。手前で落ちれば、後ろの段の時間を払わずに済むためです。

並列の見え方

全部まとめて並列にすると、1件あたりは400.0秒で最短になります。最も遅い段の時間だけで済むからです。

合計時間も8000000秒と、表の中で最小です。ただしこれは、待ち時間の合計です。

実際に使う計算資源は、4段ぶんが同時に走ります。書式の誤りでも、E2Eを400秒ぶん走らせます

組み合わせる

実務では両方を使います。速い段だけ先に順番で走らせ、通ったら残りを並列にする形です。

この計測でいえば、書式検査10秒を関門にします。6%はここで止まり、残り94%だけが重い段へ進みます。

出典も目的をコードを反映したとき、その変更が誤りを持ち込んでいないことを確かめるため、継続的に組み立てと試験を行えるとしています。確かめる中身は変わりません。

出典GitHub Docs「Continuous integration」2026-08-18 確認
When you commit code to your repository, you can continuously build and test the code to make sure that the commit doesn't introduce errors.
原文GitHub Docs「Continuous integration」 この内容の有効期限2027-02-18

並べ替える前に、段ごとの数字を取る

並べる基準は2つの数字です。1件あたりの時間と、その段で落ちる割合を測っておきます。

CI/CDの段を並べ替えるには、段ごとの2つの数字が要ります。時間と、落ちる割合です。

取るべき数字

  1. 1件あたりの時間。その段だけの所要
  2. 落ちる割合。その段で止まった変更の割合
  3. 落ちる変更の割合。全体のうち、どこかで落ちる割合
  4. 直すまでの時間。落ちてから次を出すまで

1番目と2番目から並び順が決まります。短くて落ちやすい段を先に置きます。

この計測では書式検査が10秒で6%でした。単体テストは60秒で10%です。どちらもE2Eの400秒より手前に置く価値があります

並べ替えが効かない場合

落ちる変更が少なければ、並べ替えの効果も小さくなります。ほとんど通るなら、どの順でも全段を走ります

この計測では21.2%が落ちました。この割合が下がるほど、4つの並べ方の差は縮みます

落ちた原因を絞る

手前で落とすと、原因の絞り込みも楽になります。出典もテストが落ちたとき、あなたの変更のどれかが失敗の原因かもしれないと書いています。

段が細かいほど、落ちた段そのものが原因の手がかりになります。ユニットテストの記事では、層ごとに届く欠陥が違うことを測っています。

並べ替えの効き目は、落ちる変更の割合で決まる。

充足 2 / 4段ごとの所要時間を測っている10秒の段と400秒の段では、手前に置く価値がまったく違う段ごとに落ちた回数を数えている落ちない段を手前に置いても、待ちは縮まない重い段を手前に置いているE2Eを先頭にすると、落ちるまでの待ちが455.4秒になる並列にすれば費用も減ると考えている待ちは最短になるが、落ちる変更にも全段ぶんの資源を使う変更2万件・4段構成での計算にもとづく。落ちる変更は21.2%とした。
図2 ── 並べ替える前の点検項目
余談 この計測での注意

段ごとの時間と落ちる割合は置いた値です。実際の並び順は依存関係でも縛られ、組み立てをしないとテストが動かないこともあります。並列の合計時間も、待ち時間の合計として数えたもので、使った計算資源とは別です。ここで見せているのは、手前で落とせば後ろの段を払わずに済むという関係です。

出典GitHub Docs「Continuous integration」2026-08-18 確認
When a test fails, one of your changes may have caused the failure.
原文GitHub Docs「Continuous integration」 この内容の有効期限2027-02-18

よくある質問

CI/CDの段はどう並べますか
速くて落ちやすい段を先に置きます。この計測では落ちるまでの待ちが455.4秒から148.0秒になりました。
並列にすれば速いのでは
1件あたりは最短の400.0秒になります。ただし落ちる変更にも全段ぶんの計算資源を使います。
落ちる変更はどれくらいありますか
この計測では2万件のうち4247件、21.2%が どこかの段で落ちました。
どの段を先に置きますか
1件あたりが短く、落ちる割合が高い段です。この計測では書式検査が10秒で6%でした。

まとめ

  • 変更のたびに自動で確かめる
  • 速くて落ちやすい段を先に置く
  • 並列は速いが資源を使う
  • 見るのは落ちるまでの待ち

今日から始められること

  1. 段ごとの所要時間を測る
  2. 段ごとに落ちた回数を数える
  3. 速くて落ちやすい順に並べ替える
  4. 落ちるまでの待ちが縮んだか確かめる

実務で組んだCI/CDのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る