仕事に効くコンピュータサイエンス
頑張りはスケールしない — 計算量読了目安 10分

計算量というレンズを手に入れる

本章の冒頭では、参加者が2倍になっただけで会議調整が急に重くなる場面を見ました。なぜそうなるのか、そしてどう手を打てるのか。ここまでの4つのページで、1つずつ道具を積み上げてきました。

あらためて振り返ると、私たちは「頑張りが足りないからだ」という説明に飛びつく代わりに、仕事の構造そのものを見る方法を1つずつ手に入れてきました。この方法は、会議調整に限らず、あなたが担当するどんな仕事にも当てはめられます。

このページでは、4つの道具をもう一度つなげて振り返り、明日からの仕事にどう持ち帰るかを、できるだけ具体的に考えていきます。

このページの問いは、本章で得たものを、明日からの仕事にどう持ち帰るかです。

この章で見てきたこと

まず、仕事の重さは「今どれだけ大変か」ではなく、「件数や関係者が増えたときにどう重くなるか」という増え方の型で見るべきだと確認しました。この増え方の型を表す考え方がO記法でした。名刺交換や会議調整という身近な例を通じて、「量」を見るのではなく「増え方」を見るという視点の切り替えを、最初のページで確認しました。

次に、増え方には代表的な型があることを見ました。件数と比例して増える線形、全員対全員の関わりで人数の2乗近くまで増える二次、選択肢の組み合わせで爆発的に増える指数的。少人数のうちは体感の差が小さくても、規模が育つにつれて、これらの差は決定的になっていきます。

日程調整、合意形成、相互レビューといった「全員対全員」型の仕事は二次に近づき、案件ごとの判断を組み合わせで検討する仕事は指数的に近づきやすいことも確認しました。自分の仕事がどの型に近いかを見分ける手がかりとして、「新しい対象が1つ増えたとき、既存の全員との関わりが増えるか」という問いが役に立ちます。

続いて、探す作業をあらかじめ整えておく前処理の価値を見ました。並び替えという1回の投資が、その後何度も繰り返される探す作業の増え方の型を変えます。ただし、整えた状態は維持し続けなければ崩れるという注意点もありました。

前処理に投資すべきかどうかは、整理にかかる一度きりの手間と、整理しない場合に繰り返し発生する探す手間の合計を比べて判断します。問い合わせ対応のFAQ整備や、顧客リストのソート、報告資料のフォーマット統一。どれも、繰り返しの回数が多いほど、前処理の価値が大きくなるという同じ構造を持っていました。

最後に、「速く動く」ことと「やり方を変える」ことの違いを見ました。速さの改善は増え方の型を変えず、規模の増加にいずれ追い越されます。仕組みそのものを変える対処だけが、桁違いの差を生みます。

書類の回覧を一括確認に変える、個別電話確認を共有ダッシュボードに変える。どちらも、急がせる対処ではなく、確認という作業の構造そのものを変える対処でした。規模がまだ小さいうちは、この違いが見えにくいという点も、あわせて確認しました。

4つの視点をつなげる

この4つは、バラバラの知識ではなく、1つの流れとしてつながっています。冒頭の会議調整の例に、この流れをもう一度当てはめてみましょう。まず、全員の予定を突き合わせる作業がどんな増え方をするかを見積もります。これは全員対全員の構造なので、二次に近いと分かります(O記法・型の見極め)。次に、あらかじめ各自の空き時間を共有カレンダーに登録しておく、という前処理を検討します。ここまでで、多くの手間は減らせます。それでも日程がなかなか合わないことが多いなら、代表者が候補日を決めて異論があれば申し出る方式に変える、という仕組みの変更まで踏み込みます。

  • まず増え方の型を見抜く(O記法)
  • 型のうちどれに当てはまるかを見極める(線形・二次・指数)
  • 型そのものを軽くする手を探す(前処理)
  • それでも重い作業には、やり方自体を変える(仕組みの変更)

新しい仕事や役割を任されたとき、この順番で考える癖をつけると、「今は平気」という油断や、「頑張れば何とかなる」という思い込みを避けやすくなります。

たとえば、新しいプロジェクトのリーダーを任されたとします。まず、確認や報告といった作業がどんな増え方の型をしているかを見積もります(O記法)。次に、それが線形なのか、二次や指数的に近いのかを判断します。二次や指数的に近いなら、あらかじめ整理しておける部分がないかを探します(前処理)。それでも重い部分が残るなら、確認の仕組みそのものを変える案を検討します(仕組みの変更)。この4段階を踏むだけで、行き当たりばったりに人を増やすより、ずっと見通しの立った進め方になります。

大事なのは、この4段階を1回きりで終わらせないことです。プロジェクトが進むにつれて関係者の数や案件数は変わっていきます。節目ごとにこの4段階を見直すことで、規模の変化に振り回されずに、落ち着いて対処できます。

なぜこの視点が仕事に効くのか

多くの職場で、規模が育つにつれて、ある日を境に急に立ち行かなくなる仕事があります。その原因の多くは、担当者本人の能力不足ではなく、その仕事そのものが二次や指数的な増え方をする構造を、もともと持っていたことにあります。

この構造をあらかじめ見抜く視点を持っていれば、規模が小さいうちから「この仕事はいずれ重くなる」と予測し、先回りして手を打てます。逆に、線形の仕事であれば、慌てて仕組みを変える必要はないと判断できます。どちらの判断も、増え方の型を知っているからこそできることです。

「そうは言っても、実際に規模がどこまで育つかは、やってみないと分からないのでは」という反論もあるでしょう。もっともな指摘です。増え方の型を知ることは、未来を正確に予言する道具ではありません。しかし、規模が育ったときにどれだけ重くなるかを先に見積もっておけば、実際に重くなり始めたときにも慌てず落ち着いて対処できます。型を知らないまま規模だけが静かに育っていく状況こそが、最も避けたい事態です。

さらに、この視点は自分の仕事だけでなく、他人の仕事を見るときにも役立ちます。チームの誰かが特定の作業に追われているとき、「頑張りが足りない」と評価する前に、その作業がそもそも二次や指数的な構造を持っていないかを確認できます。構造の問題であれば、必要なのは激励ではなく、仕組みの見直しです。

たとえば、入社したばかりの新人が「確認作業に追われて他の仕事が進まない」と相談してきたとします。このとき、「もっと手際よくやりなさい」と伝えるだけでは、本人の負担は減りません。まずその確認作業がどんな増え方の型をしているかを一緒に確認し、二次や指数的な構造であれば、確認相手を絞る、代表者を立てるといった仕組みの見直しを検討します。評価の前に構造を見る、という順番を守るだけで、指導の質は驚くほど大きく変わります。

増え方を見る目は、どの章にも通じる

本章で得た「増え方の型を見抜く」という視点は、これ以降の章でも繰り返し登場します。6章のデータ構造は、増え方を軽くするための入れ物の選び方を扱います。7章のアルゴリズム設計は、増え方そのものを作り替える具体的な手法を扱います。どちらも、本章で確認した計算量というレンズを土台にしています。

さらに先の章、11章の分散システムで扱う「単一障害点」という考え方も、本章で見た「全員対全員」の構造と地続きの発想です。特定の1人に確認や判断が集中する仕組みは、その人が不在になった瞬間に、仕事全体が止まってしまいます。増え方の型を見る目は、規模の問題だけでなく、こうした仕事の脆さを見つける目にもつながっています。

本章の視点を過信しないために

最後に、本章の視点を使ううえで気をつけたい点を1つ挙げておきます。それは、「増え方の型さえ分かれば、あらゆる仕事が説明できる」と思い込まないことです。

現実の仕事には、増え方の型だけでは説明できない重さもあります。人間関係の機微や、経験の差、その日のコンディションといった要素は、O記法の外側にあります。本章の視点は、仕事の重さのすべてを説明する万能の理論ではなく、「構造的に重くなる部分」を見分けるための、道具の1つだと捉えておくのが安全です。

もう1つ、増え方の型を見積もることと、実際に手を打つことの間には距離があります。型が分かっても、代表者を立てる、仕組みを変えるといった対処には、関係者との調整や合意形成が必要です。本章はその「見積もり方」までを扱い、実際の調整の進め方そのものは扱っていません。型を見抜いた先に、人と人との調整が残るという点は、次章以降でも繰り返し出てきます。

それでも、増え方の型を見積もる力を持たないまま調整に臨むのと、持ったうえで臨むのとでは、話の持っていき方がまったく変わります。「このままでは二次の増え方をしてしまうので、代表者を立てませんか」と根拠とともに提案できることが、本章で得られる最初の実利です。なんとなく感じていた違和感を、相手に伝わる言葉に変えられることの価値は、決して小さくありません。

次章への橋

本章では、仕事の「増え方」に注目してきました。次の6章では視点を変え、仕事や情報を「どう積んでおくか」を扱います。

割り込みの多い仕事を扱うスタック、順番を守る仕事を扱うキュー、優先順位をつけて扱う優先度付きキュー、そして組織やフォルダの構造に潜む木構造。これらは、情報や仕事をどう並べておくかという、前ページで見た前処理の発想をさらに具体的な形にしたものです。

計算量というレンズで「増え方」を見る目を持ったところで、次はその仕事を実際にどう並べ、どう取り出すかという道具に進みます。

本章で確認したのは「増え方を見抜く」という診断の力でした。6章で扱うデータ構造は、診断の後に「どう入れ物を選ぶか」という処方の力にあたります。同じ「情報を整理する」という営みでも、増え方を見抜く視点と、入れ物を選ぶ視点は役割が異なります。両方を持って初めて、仕事の重さに実際に対処できるようになります。

持ち帰り

  • 増え方の型を見抜き、型に応じた手を打つという一連の流れを押さえる
  • 規模が小さいうちの油断と、頑張れば何とかなるという思い込みを避ける
  • 次章では、情報や仕事の並べ方(データ構造)という具体的な道具に進む

やってみる

今週扱った仕事のうち1つを選び、「増え方の型」「前処理の余地」「仕組みを変える余地」の3点で、具体的な手順を思い出しながら振り返ってみてください。