待ち行列理論とは何か?リーン・ソフトウェア開発でも用いられる思考ツールを解説

2020年11月30日

待ち行列理論の概要

待ち行列理論とは、共有資源を活用する際に発生する待ち時間の平均値(平均待ち時間)を、数学を用いて示したものです。共有資源に挙げられるものにはサーバーや製造に用いる機械、オペレーターなど、さまざまな種類があります。

平均待ち時間は、以下の式で求められます。

  • 平均待ち時間 =平均利用率/(1平均利用率)×平均処理時間
           =(平均処理時間/平均到着間隔)/〔1-(平均処理時間/平均到着間隔)〕 ×平均処理時間

平均待ち時間は、平均利用率が1に近づくと急激に上昇する傾向があります。
例えば平均利用率が0.5(=50%)の場合は、平均待ち時間は平均処理時間と同じだけの待ち時間になります。
一方で平均利用率が0.8(=80%)になると平均待ち時間は平均処理時間の4倍、さらに平均利用率が0.9(=90%)になると平均待ち時間は9倍に跳ね上がります。

この待ち行列理論はITシステムのパフォーマンスを調べるだけでなく、組織の課題を見つける際にも用いられます。
そのため、プロジェクト・マネジメントを適切に行うためにも、待ち行列理論は知っておきたい知識の1つに挙げられます。

待ち行列理論はどのように使われるか

ここからは待ち行列理論がどのように使われるか、例を挙げて解説していきましょう。

「待ち行列理論の概要」で解説した通り、平均待ち時間は2つの情報があれば算出できます。

  • リクエストの平均到着間隔
  • 平均処理時間

ここでは一例として、平均処理時間が0.8秒、リクエストの平均到着間隔が1.0秒のWebシステムを考えましょう。
平均待ち時間を算出する式に代入すると、以下のようになります。

  • 平均待ち時間(秒)=(0.8秒/1.0秒)/〔1-(0.8秒/1.0秒)〕× 0.8秒=3.2秒

3.2秒という数値は、Webシステムの平均待ち時間としてはかなり遅いとみなされます。
そのため、システムを増強し平均処理時間を0.5秒に短縮できると、以下の通り劇的な向上が期待できます。

  • 平均待ち時間(秒)=(0.5秒/1.0秒)/〔1-(0.5秒/1.0秒)〕×0.5秒=0.5秒

平均処理時間が0.8秒から0.5秒に短縮されたことで、平均待ち時間は2.7秒も短くなりました。
これは平均利用率が1に近づく、すなわち平均到着間隔が平均処理時間に近づく状況では、処理能力の改善を行うことで待ち時間を大きく改善できることを示しています。

待ち行列理論の活用により、待ち時間解消の解決策として処理時間の改善が有効ということを事前に示せます。このことは、無駄なく効果的な対策を取ることにつながります。

待ち行列理論が求められる理由

待ち行列理論が求められる理由は、2つあります。
1つ目の理由として、システムのボトルネックを調べ、解決することが挙げられます。
代表的なものに、Webサーバーのレスポンスが挙げられます。

サーバーの処理能力が原因でボトルネックが発生し、処理スピードの大幅な低下につながるケースは少なくありません。待ち行列理論の活用で原因を知る手がかりが得られるとともに、解決に向けて適切な対策を打つことが可能となります。加えて目標値を適切に設定することで、費用対効果にも配慮した対策を策定できる点もメリットとして見逃せません。

もう1つの理由には、業務プロセスの課題を発見できることが挙げられます。
わかりやすい例として、ひっきりなしに電話がかかっており、「つながりにくい」という苦情がよく入るコールセンターを挙げてみましょう。
もしITエンジニアならば、業務改善の手法としてサーバーやシステムの強化をしたくなるかもしれませんが、それは適切ではない場合があります。オペレーターの処理能力以上に問い合わせが来るようならば、いくらITを強化しても解決につながりません。この場合はオペレーターを増員する、他の拠点に問い合わせ先を分散するなどの提案が必要です。

2つの理由に共通するポイントは、業務が滞る真の原因を見つけ出すことです。この原因を見つけ適切な対策を取る上で、待ち行列理論は重要な役割を果たします。

リーン・ソフトウェア開発の思考ツールとしての待ち行列理論

待ち行列理論リーン・ソフトウェア開発の22の思考ツールの1つに数えられています。
その理由は、先ほど「待ち行列理論が求められる理由」でも紹介したように、業務プロセスの課題を発見できるからです。
待ち行列理論はリーン・ソフトウェア開発の7つの原則の1つである、「できるだけ早く提供する」という原則を実現するために使用されます。
ソフトウェアをできるだけ早く提供するには、ただ単純にプログラマーがコーディングを急ぐだけではいけません。コーディングの前工程、後工程のことも考えなければ、開発からリリースまでの時間を短縮することはできません。
そのため待ち行列理論を用いて、ボトルネックが何かを把握し、その改善策を考えていく必要があります。