仕事に効くコンピュータサイエンス
どれからやるか — スケジューリング読了目安 10分

締切に割り込ませる — ラウンドロビンとプリエンプション

一つの案件に集中して取り組んでいる間に、他の仕事がすべて止まってしまう。反対に、緊急の依頼が来ても今の作業を止められない。

このページの問いは、この二つの困りごとに、それぞれどう対処するか、というものです。鍵になるのが「ラウンドロビン」と「プリエンプション」です。

ラウンドロビンとは何か

ここまで見てきた先着順、優先度、SJFは、いずれも一つの仕事を最後まで終わらせてから次に移る、という前提を置いていました。しかし、複数の案件を同時に抱えている場合、一つを最後まで終わらせるまで他に一切手をつけない、というやり方が最善とは限りません。

ラウンドロビンは、それぞれの仕事に一定の時間だけ割り当て、その時間が来たら次の仕事に移り、また順番が回ってきたら続きに戻る、という方式です。この一定時間の単位のことを、タイムスライスと呼びます。一つの仕事を独占させず、複数の仕事を少しずつ均等に進めていくのが特徴です。

仕組みをもう少し丁寧に追ってみましょう。案件A、B、Cの3件を抱えているとします。まずAに10分取り組み、10分経ったら手を止めてBに切り替えます。Bにも10分取り組んだら、今度はCに切り替えます。Cが終わったら、また列の先頭に戻ってAの続きに取りかかります。この繰り返しによって、どの案件も一定間隔で必ず手がつけられる状態が保たれます。

ここで、先着順との違いに注目してください。先着順では、Aの案件が終わるまでBとCにはまったく手がつきません。ラウンドロビンでは、Aがまだ終わっていなくても、一定時間が経てば強制的にBへ切り替わります。「終わらせてから次へ」ではなく「区切ってから次へ」という発想の転換が、ラウンドロビンの核心です。

仕事の言葉に翻訳すると、「25分だけAの案件に取り組み、次の25分はBの案件に切り替える」という時間の区切り方に対応します。複数のプロジェクトを掛け持ちしているとき、一つのプロジェクトに何時間もつきっきりになるのではなく、区切った時間ごとに担当を回していくやり方です。窓口対応でも、一人の担当者が一件に長時間張り付くのではなく、一定時間で担当を交代する運用は、ラウンドロビンの考え方に近いものです。

具体的な場面を考えてみましょう。3つのクライアント案件を同時に抱えているとします。月曜の午前中をA社、午後をB社、火曜の午前中をC社、というように時間を区切って割り当てれば、どの案件も1週間のうちに必ず複数回手がつけられます。一つの案件に没頭して他の2件を1週間放置する、という事態を避けられます。

もう一つ、複数の部下を指導する立場を考えてみましょう。一人の部下の相談に長時間つきっきりになっていると、他の部下は声をかけるタイミングを失い、質問を溜め込んだまま仕事を進められなくなります。1人あたり15分と決めて順番に机を回る、という運用にすれば、全員が一定間隔で相談の機会を得られます。ラウンドロビンは、システムの中だけでなく、こうした対人の場面にもそのまま応用できる考え方です。

さらに、複数の商談を並行して抱える営業の場面でも似た運用が見られます。有望な1社との商談に何週間もかかりきりになると、他の見込み客への連絡が滞り、機会そのものを逃しかねません。案件ごとに「週1回は必ず連絡する」という最低限の頻度を決めておくことは、ラウンドロビンのタイムスライスを商談の世界に置き換えたものだと言えます。

ラウンドロビンの利点は、公平さです。どの仕事も、一定時間ごとには必ず手がつけられるため、一つの案件だけが放置され続けることがありません。複数の依頼者を同時に相手にする場面では、「誰も無視されていない」という安心感につながります。

一方で、ラウンドロビンには見落とせない代償があります。仕事を切り替えるたびに、それまでの作業の文脈を思い出し直す必要が生じるからです。この切り替えのコストは、以前の章で見た「コンテキストスイッチ」と同じ性質のものです。タイムスライスを短く区切りすぎると、切り替えの回数が増え、コストばかりがかさみます。逆に長くしすぎると、他の案件が放置され、公平さが失われます。適切な時間幅の設計そのものが、運用の難しさです。

タイムスライスの長さをどう決めるかについて、もう一つ考え方を示しておきます。作業の切り替えに要する時間がおよそ5分だとすれば、タイムスライスを10分に設定すると、作業時間の半分が切り替えコストに消えてしまいます。逆にタイムスライスを2時間に設定すれば、切り替えコストの割合は小さくなりますが、他の案件を待たせる時間は長くなります。切り替えのコストと、待たせる時間の長さを天秤にかけて決める必要があります。

仕事の種類によって、適切なタイムスライスの長さは変わります。細かい確認作業が中心の仕事なら、短い時間単位で切り替えても文脈を思い出す負担は小さくて済みます。逆に、複雑な設計や文章の構成を考えるような仕事は、いったん集中を切らすと立て直しに時間がかかるため、長めのタイムスライスが向いています。一律の時間幅を機械的に当てはめるのではなく、仕事の性質に合わせて調整する視点が欠かせません

プリエンプション(締切割り込み)とは何か

ラウンドロビンが「あらかじめ決めた時間で規則正しく切り替える」方式だったのに対し、プリエンプションは「実行中の仕事を、必要に応じて強制的に中断させる」仕組みです。優先度の高い仕事が新たに発生したとき、今実行している仕事を止めてでも、その仕事を先に処理させます。

仕事の言葉に翻訳すると、これは「緊急対応が発生したら、今の作業を中断して差し込む」という判断に対応します。クレーム対応や、締切当日に飛び込んでくる差し込み依頼は、まさにプリエンプションが必要になる場面です。今やっている作業をいったん止めて、優先度の高い案件を先に処理し、その後で元の作業に戻ります。

もう少し具体的な場面を見てみましょう。資料作成に集中していたところに、取引先から「先方のシステムに障害が発生した」という連絡が入ったとします。この場合、多くの人は資料作成の手を止め、障害対応に切り替えます。これはラウンドロビンのように時間で区切った切り替えではなく、緊急性という基準による強制的な割り込みです。

プリエンプションが機能するために欠かせないのが、「中断した仕事に、後で正しく戻れる」という仕組みです。どこまで進んでいたか、次に何をする予定だったかを記録しておかなければ、中断した仕事を再開するたびに、最初からやり直すような手間がかかります。これは、コンピュータが処理を中断する際に、その時点の状態を保存しておく仕組みと同じ発想です。仕事の場でも、作業メモや進捗の記録を残しておくことが、割り込みへの備えになります。

再開の手順を、もう少し具体的に考えてみましょう。資料作成を中断する前に、「どの章まで書いたか」「次に何を調べる予定だったか」を一行だけメモに残しておきます。障害対応が終わって資料作成に戻ったとき、このメモを見れば、記憶を頼りに一から思い出す必要がなくなります。中断の直前にかける10秒のメモが、再開にかかる10分を節約することもあります。

会議の場でも、同じ発想が役立ちます。ある議題を話している途中で、別の緊急議題が持ち込まれたとします。中断された議題について、「どこまで合意できたか」「誰が次に何をするか」を一言で確認してから切り替えれば、後で議題に戻ったときにゼロから議論をやり直す必要がなくなります。この一言の確認が、会議全体の時間を大きく節約します。

プリエンプションの落とし穴

プリエンプションには明確な落とし穴があります。割り込みを何でも許可してしまうと、一つの仕事が最後まで終わらなくなるという問題です。緊急の依頼が次々に割り込んでくると、そのたびに元の作業が中断され、再開のたびに文脈を思い出す手間が発生します。結果として、どの仕事も中断と再開を繰り返すばかりで、実質的な進捗がほとんど生まれません。

これを防ぐには、「何を割り込ませてよいか」の基準を決めておくことが必要です。すべての依頼を緊急扱いにすると、割り込みという仕組みそのものが機能不全に陥ります。本当に中断してでも対応すべき基準を決め、それ以外は次の順番まで待たせる線引きが欠かせません。

ここで、よくある反論に触れておきます。「緊急かどうかは、その場になってみないと判断できない」という声です。たしかに、あらゆる緊急事態を事前にリスト化することはできません。ただし、「顧客の契約解除に直結するか」「安全や法令に関わるか」といった、判断のための問いをいくつか用意しておくことはできます。個別の事例をすべて列挙できなくても、判断のための問いを共有しておくだけで、線引きのばらつきは減らせます

もう一つの反論も考えられます。「割り込みを制限すると、本当に緊急な案件への対応が遅れるのではないか」という心配です。しかし、割り込みの基準を明確にすることは、緊急対応を遅らせることではありません。むしろ、基準が曖昧なままだと、誰もが「これは緊急かもしれない」と過剰に反応し、本当に緊急な案件が他の見せかけの緊急案件に埋もれてしまいます。基準を絞ることは、本当に重要な割り込みを、確実に通すための工夫でもあります

具体的な場面で確認しておきましょう。ある職場で「至急」という言葉がついたメールが1日に何十通も届くようになったとします。本当に至急の案件も、単に早く返事がほしいだけの案件も、同じ「至急」というラベルで届くため、受け取る側はどれを優先すべきか判断できなくなります。ラベルを乱発すると、そのラベル自体が意味を失うのは、優先度の議論で見た飢餓の問題と同じ構造です。プリエンプションの基準も、優先度の基準と同じように、絞り込んで運用する必要があります。

この職場では、あるとき「至急」の代わりに、「本日中」「今すぐ電話がほしい」という2段階のラベルに整理し直したとします。段階を絞ったことで、受け取る側は一目で対応の緊急度を判断できるようになりました。ラベルの数を増やすことではなく、絞り込むことが、割り込みの仕組みを機能させる鍵になります。

持ち帰り

  • ラウンドロビンは一定時間ごとに仕事を切り替え、公平さを保つ仕組み
  • タイムスライスが短すぎても長すぎても、切り替えコストや不公平が生じる
  • プリエンプションは実行中の仕事に割り込ませる仕組みで、再開の備えと割り込み基準の両方が必要

やってみる

複数の案件を抱えているなら、明日一日だけ、時間を区切って案件を順番に回してみてください。区切る時間の長さをどう決めたかも、切り替える際に何をメモに残したかも、あわせて記録しておき、翌日の再開のしやすさを比べてみましょう。