仕事に効くコンピュータサイエンス
積む・並ぶ・引く — データ構造読了目安 10分

来た順ではなく重さで並べる — 優先度付きキュー

締切が今日の依頼と、来月でよい依頼が、同じ受信箱に並んでいます。受け取った順に手を付けると、今日の締切に間に合わないかもしれません。来た順を無視して、重さで並べ替えるにはどうすればよいのでしょうか。

優先度付きキューの直感

前のページで見たキューは、来た順を守る構造でした。これに対して優先度付きキューは、来た順ではなく、あらかじめ決めた重要度の高いものから取り出す構造です。

分かりやすい例が病院の救急外来です。受付の順番ではなく、症状の緊急度によって呼ばれる順番が決まります。軽い擦り傷で先に来ていた人よりも、あとから運ばれてきた重症の人が先に処置を受けます。これは受付順を無視しているのではなく、「命に関わる度合い」という別の基準で並べ替えているのです。基準が事前に決まっているからこそ、この並べ替えは場当たり的なひいきではなく、誰もが納得できる仕組みとして機能しています。

コンピュータの中でも、優先度付きキューは同じ発想で使われます。たとえば印刷の依頼に「至急」の指定がついていれば、あとから出した至急の依頼が、先に出した通常の依頼より先に処理されます。並び方の基準を、到着時刻から重要度に切り替えているわけです。

普通のキューは「先頭に並んでいる1人」を見れば次に呼ぶ人が分かります。ところが優先度付きキューでは、新しい依頼が来るたびに、それが今たまっている依頼の中でどの位置に入るべきかを計算し直す必要があります。たまっている件数が多いほど、この並べ替えの手間は増えます。これは仕事の現場でも同じで、依頼が数件のうちは頭の中で優先順位をつけられても、十数件を超えたあたりから、頭の中だけでの並べ替えは正確さを失っていきます。件数が増えてきたら、紙やアプリに書き出して並べ替える段階に切り替えるべきだ、というサインです。

仕事の言葉に翻訳する

優先度付きキューを仕事に当てはめると、「締切」や「影響範囲」を基準にした並べ替えになります。ここで大事なのは、優先度は感覚ではなく、あらかじめ決めた基準で決まる、という点です。「なんとなく気になるから」「声をかけられたから」で順番を変えるのは優先度付きキューではなく、単なる場当たり的な割り込みです。

実務で使いやすい基準は、締切までの残り時間と、対応しなかった場合の影響の大きさの組み合わせです。締切が近く、かつ対応しないと影響が大きいものほど、優先度を高くします。逆に、締切がまだ先で、対応しなくても大きな影響がないものは、優先度を低くしたままキューの後方に置きます。

この基準を先に言葉にしておくと、「なぜあの依頼を後回しにしたのか」を、あとから本人にも周囲にも説明できます。基準がないまま優先順位をつけていると、説明を求められたときに「なんとなく」としか答えられず、納得を得にくくなります。

具体場面で見る

場面1: 複数の依頼が同時に来たとき

週の初めに、3件の依頼が立て続けに届いたとします。1件目は来週締切の資料作成、2件目は今日中に返信が必要な確認事項、3件目は影響範囲が大きい取引先からの至急の相談です。受け取った順に手を付けると、資料作成から始めてしまい、今日中の確認事項が後回しになりかねません。締切と影響範囲で並べ替えると、確認事項と取引先対応を先に済ませ、資料作成は締切までの残り日数を踏まえて計画的に進める、という判断ができます。ここで注意したいのは、資料作成を後回しにするのではなく、「いつまでに、どれだけの時間を割けば間に合うか」を先に見積もっておくことです。優先度が低いというのは「やらなくてよい」ではなく「今すぐでなくてよい」という意味であり、見積もりを怠ると、後回しにしたはずの仕事が結局は締切間際の割り込みになって返ってきます。

場面2: 割り込みの依頼を優先度で仕分ける

前のページでは、割り込みをスタックで扱う場面を見ました。すべての割り込みを無条件で最優先にすると、通常の仕事がまったく進まなくなります。割り込みが来たときも、それが本当に緊急度の高いものか、あとで対応しても差し支えないものかを見分け、優先度付きキューに一度乗せてから並び替える、という一手間を挟むと、割り込みに振り回される度合いが減ります。この一手間は数十秒あれば足ります。「今すぐ止めて対応すべきか、今のキューに並べてよいか」を、割り込みが来るたびに一呼吸おいて自問するだけで、反射的にすべてを最優先扱いしてしまう癖を防げます。

場面3: 放置される「重要だが急がない」仕事

優先度で並べ替える運用には、見落とされやすい副作用があります。締切がはっきりしない依頼、たとえば長期的な改善提案や、緊急ではないが重要な調整ごとは、優先度の計算上いつまでも低いままになりがちです。締切が明確な仕事に押し出され続け、気づけば何か月も手つかずのまま放置される、ということが起こります。2章で見たスケジューリングの考え方に近い発想ですが、優先度の低い仕事を定期的に見直すタイミングを別に設けないと、重要な仕事ほど後回しにされ続けるという逆転が起きてしまいます。

場面4: 依頼主ごとに基準がずれているとき

複数の部署や取引先から依頼が来る仕事では、依頼主ごとに「重要」の感覚が違います。ある部署にとっての最優先が、別の部署から見ればさほど急ぎではない、ということが普通に起こります。このずれを放置したまま、依頼主が主張する優先度をそのまま受け取ると、声の大きい依頼主の案件ばかりが先に進み、静かな依頼主の案件が後回しになり続けます。これを防ぐには、優先度を決める基準を依頼主ごとではなく、受け取る側が共通の物差しとして持っておく必要があります。締切までの残り時間と影響範囲という2つの軸は、部署や取引先が違っても共通に使える物差しの一例です。

基準を人と共有する

優先度付きキューが機能するかどうかは、基準そのものの精度よりも、その基準を周囲と共有できているかにかかっています。自分の頭の中だけで「これは重要、これは急がない」と判断していると、依頼した側には並べ替えの理由が見えず、「なぜ自分の依頼が後回しにされたのか」という不満につながります。

基準を共有する方法は難しいものである必要はありません。「締切が3日以内のものを先に対応する」「取引先からの依頼は社内の依頼より先に見る」といった、一言で説明できるルールを、あらかじめ関係者に伝えておくだけで十分です。ルールが共有されていれば、後回しにされた側も「なぜ後回しなのか」を自分で理解でき、説明を求められる場面そのものが減ります。

落とし穴・誤用

もっとも多い誤用は、優先度の基準を決めないまま「優先順位をつけている」つもりになることです。基準がないまま並べ替えると、結局は声の大きさや、依頼主の立場の強さで順番が決まってしまいます。これは優先度付きキューではなく、公平さも重要度への感度も失った、いちばん質の悪い並べ方です

もう1つの誤用は、すべての依頼を「最優先」にしてしまうことです。依頼する側が、通ってほしい一心ですべての依頼に「至急」「最優先」とラベルを付けると、受け取る側は優先度の情報を信用できなくなります。優先度のラベルが機能するのは、本当に高い優先度が少数にとどまっているときだけです。全員が最優先を名乗り始めた時点で、そのラベルは並べ替えの役に立たなくなります。これは優先度付きキューという構造の問題ではなく、ラベルを付ける側の運用の問題です。「至急」を使ってよいのは、実際に締切や影響が突出しているときだけ、というルールを依頼する側とあらかじめ合わせておくと、ラベルの信頼性を保てます。一度信頼を失ったラベルを立て直すには、しばらくの間「至急」を絞って使い続ける以外に近道はありません。

さらに、優先度の基準そのものを一度決めたら固定してしまう、という誤用もあります。状況は変わります。先週は重要でなかった案件が、取引先の事情で今週は最優先になることもあります。優先度は一度きりの計算ではなく、状況が変わるたびに見直す前提の、生きた基準として扱う必要があります。

最後に、優先度を細かく刻みすぎる誤用も見落とされがちです。5段階や10段階の細かいランク付けを導入すると、いかにも精緻に見えます。しかし段階が細かいほど、依頼が来るたびに「これはランク3か4か」と迷う時間が発生します。迷う時間そのものが、優先度を決める目的である「早く手を付ける仕事を決める」ことを妨げます。実務では「今日中」「今週中」「それ以外」程度の3段階でも、多くの場合は十分機能します。段階を増やすのは、実際に3段階で運用してみて、明らかに不足を感じてからでも遅くありません。シンプルな基準を先に試し、足りない部分だけをあとから足す、という順序の方が、最初から精緻な仕組みを組み立てるよりも、結局は長く使い続けられます。

優先度は「重要度」と「緊急度」を分けて考える

優先度を決めるとき、多くの人が「重要度」と「緊急度」を1つの軸として扱ってしまいます。しかしこの2つは別物です。緊急度は締切までの時間の近さ、重要度は対応しなかった場合の影響の大きさです

締切が近くても影響が小さい仕事、たとえば形式的な報告書の提出などは、緊急度は高くても重要度は低めです。反対に、締切がまだ先でも影響が非常に大きい仕事、たとえば大口取引先との契約条件の見直しなどは、緊急度は低くても重要度は高いといえます。この2つを分けて考えないと、「今すぐやらなくてよいが重要な仕事」がいつまでも手つかずのまま残り、締切が近づいてから慌てて着手する、という悪循環が生まれます。優先度付きキューを設計するときは、緊急度だけで並べるのではなく、重要度の高い仕事にも定期的に目を向ける時間を、別枠として確保しておく工夫が要ります。

持ち帰り

  • 優先度付きキューは、来た順ではなく締切や影響範囲などの基準で並べ替える並び方である
  • 基準を先に言葉にしておくと、後回しにした理由をあとから説明できる
  • 緊急度が低くても重要度が高い仕事は、見直す時間を別枠で確保しないと放置され続ける

やってみる

今抱えている依頼を3つ選び、「締切までの残り時間」と「対応しなかった場合の影響」の2軸で、どれを先にやるべきか順番をつけ直してみてください。順番をつけたら、なぜその順番にしたかを一言で誰かに説明できるかも確かめてみましょう。説明に詰まる順番があれば、それは基準ではなく感覚で並べていた可能性があります。