仕事に効くコンピュータサイエンス
よく使うものは手元に — キャッシュとメモリ階層読了目安 10分

また使うか、近くにあるか — 局所性という手がかり

このページの問い

問い合わせ対応をしていると、5分前に調べた回答をまた聞かれることがあります。一から検索し直すのは無駄です。何を手元に残しておけば、こうした無駄を減らせるのでしょうか。

「さっき調べたのに、また来た」

問い合わせ対応をしていると、同じ質問が短い間隔で繰り返し来ることがあります。5分前に調べた回答を、また一から検索し直すのは無駄です。

たとえば「送料の設定はどうなっていますか」という質問に答えたすぐあとに、別の担当者から「送料の件、資料ありますか」と聞かれる。同じ答えを、同じ手順で、もう一度探しに行くはめになります。

一度目の対応で「今後また聞かれそうだ」と気づいていれば、答えをその場でメモに残し、次に聞かれたときはメモを見せるだけで済んだはずです。しかし多くの人は、一度目の対応が終わった時点で頭を切り替えてしまい、その答えをどこにも残さないまま次の作業に移ってしまいます。

この「さっき使ったものは、また使う可能性が高い」という性質を、時間的局所性と呼びます。局所性とは、データの使われ方に偏りがある、という性質を指す言葉です。前ページで見たキャッシュは、この偏りを利用することで初めて役に立ちます。

もしデータの使われ方にまったく偏りがなく、どのデータも同じ確率でランダムに必要になるとしたら、キャッシュを用意しても意味がありません。何を手元に残しても、次に必要になる確率は変わらないからです。局所性という偏りがあるからこそ、手元に置く価値が生まれます。

実際の仕事のデータにも、この偏りは色濃く現れます。1週間の問い合わせ内容を数えてみると、上位数種類の質問だけで全体の大半を占めている、という職場は珍しくありません。残りの大多数の質問は、めったに聞かれない少数派です。この偏りの形こそが、局所性が効く土台になっています。

時間的局所性: 直近に使ったものは、また使う

コンピュータのキャッシュは、この時間的局所性を前提に設計されています。一度読み込んだデータをキャッシュに残しておけば、次に同じデータが必要になったとき、再び遠くまで取りに行かずに済みます。

仕事に置き換えると、直近に対応した案件の資料、直近に開いたメール、直近に検索したキーワードは、すぐにまた必要になる確率が高いということです。

だからこそ、多くのアプリケーションは「最近使ったファイル」を一覧表示する機能を持っています。あれは偶然の便利機能ではなく、時間的局所性という性質を突いた設計です。開いた順に並べる、というだけの単純な仕組みが、実際の探す手間を大きく減らしています。

同じ発想は紙の資料にも応用できます。直近に対応した案件のファイルだけを、机の上のいちばん手前に重ねておく。それだけで、繰り返し聞かれる質問への対応速度は目に見えて変わります。

ここで注意したいのは、「最近使ったもの」を残す期間の長さです。期間を長く取りすぎると、机の上には結局あらゆるものが積み上がり、1ページ目で見た「置きすぎ」の問題に逆戻りします。時間的局所性を活かすコツは、残す期間を短く区切り、期限が来たら機械的に一段外側へ動かすことです。目安として「今日と昨日使ったものだけ」のように、具体的な日数で線を引いておくと、判断に迷わずに済みます。

空間的局所性: 近くにあるものは、一緒に使う

もう一つの局所性があります。空間的局所性です。これは、あるデータを使うとき、その近くにあるデータも一緒に使われやすい、という性質です。

コンピュータは、あるデータをメモリから読み込むとき、そのデータだけでなく、周辺のデータもまとめて読み込みます。1件だけ取りに行くより、近くにあるものをまとめて取ってきたほうが、後で無駄足を踏まずに済むからです。

これは、遠くの倉庫まで台車で荷物を取りに行くときの動きに似ています。1個だけ持ち帰るために往復するのは非効率です。ついでに近くの棚にある関連部品もまとめて積んでおけば、次に必要になったときの往復を1回減らせます。倉庫までの距離が遠いほど、この「ついでに」の効果は大きくなります。

仕事の場面では、ある資料を取り出すとき、関連する資料も一緒に取り出しておく、という行動がこれにあたります。1件ずつ個別に探しに行くよりも、まとめて手元に持ってきたほうが効率的です。

たとえば見積書を1枚出すためだけに共有サーバーを開いたなら、そのついでに関連する契約書、過去のやり取り、担当者の連絡先も一緒に手元へコピーしておく。次にこの案件で何かを聞かれたとき、再びサーバーを開く回数を1回減らせます。

空間的局所性のポイントは、「今すぐ必要なもの」だけでなく「たぶん次に必要になるもの」まで一緒に取ってくる、という一歩先回りした動きにあります。1回の取得コストに少しだけ上乗せして、あとで発生するはずだった複数回の取得コストをまとめて減らす、という交換だと考えると理解しやすくなります。

仕事の言葉に翻訳すると

この2つの局所性を意識すると、情報整理の方針がはっきりします。直近に使ったものは、しばらく手放さない。ある資料に関連するものは、バラバラの場所に置かず、まとめて置く。この2点を意識するだけで、探す回数は目に見えて減ります。

逆に言えば、使うたびに毎回違う場所にしまい、関連資料もあちこちに散らばっている状態は、局所性をまったく活かせていない整理の仕方だということになります。

具体的な運用として、案件ごとに1つのフォルダを作り、見積書も契約書もやり取りの記録もそこにまとめて入れておく、という基本ルールを徹底するだけでも効果があります。ファイルの種類ごとにフォルダを分ける整理法は一見きれいに見えますが、1つの案件に対応するたびに複数のフォルダを行き来する必要があり、空間的局所性の恩恵を得にくくなります。

書類の種類でフォルダを分ける整理法自体が悪いわけではありません。問題は、案件という「一緒に使われる単位」よりも、書類の種類という「見た目のきれいさの単位」を優先してしまう点にあります。整理のための整理になっていないかを、ときどき見直す価値があります。

具体例で見る

具体例1: 問い合わせ対応のテンプレート集 よくある質問への回答は、直近に使ったものから順に上に表示されるようにしておきます。時間的局所性を利用した整理です。

具体例2: 案件フォルダの中身をまとめて開く ある案件の見積書を開くとき、関連する契約書や過去のやり取りも同じフォルダから一緒に開いておきます。あとで個別に探しに行く手間を減らせます。空間的局所性の応用です。

具体例3: 会議の準備をまとめて行う 来週の会議で使う資料をひとつずつその都度探すのではなく、関連する資料をまとめて一度に集めておきます。同じ場所や同じ時間帯に必要になるものをまとめておく発想です。

会議の準備を例に、もう少し手順を具体化してみます。会議の議題が決まった時点で、議題に関連する資料を洗い出し、1つの一時フォルダにコピーしておきます。会議の直前になって「あの数字の資料はどこだったか」と慌てて探す場面は、この一手間でほぼなくなります。

具体例4: 引き継ぎ資料のまとめ方 引き継ぎでは、直近に更新した手順書だけでなく、それを使う頻度が高い周辺の連絡先やテンプレートも一式まとめて渡すと、後任者が個別に探し直す手間を減らせます。引き継ぎの質は、渡す情報の量ではなく、局所性を踏まえたまとめ方で大きく変わります。

落とし穴: 局所性が効かない場面もある

局所性は便利な経験則ですが、常に成り立つわけではありません。まったく新しい案件や、一度きりの特殊な問い合わせには、直近の履歴も周辺の資料も参考になりません。

局所性に頼りすぎると、過去のパターンに引きずられて、新しい状況を見落とすことがあります。局所性はあくまで「多くの場合に効率が良い」経験則であり、例外を切り捨てる根拠にはならない点に注意してください。

ここでよくある反論に触れておきます。「毎回パターンが違う仕事をしているのに、局所性なんて役に立つのか」という声です。たしかにパターン化できない仕事は存在します。ただし、そうした仕事の中にも、繰り返し参照する共通の前提知識や、頻繁にやり取りする相手先の情報など、局所性が効く部分は部分的に残っていることがほとんどです。

局所性が効く部分と効かない部分を切り分けて考えることが、この経験則を正しく使うコツです。すべてを一括りにして「うちの仕事には向かない」と判断してしまうと、活かせるはずの部分まで捨ててしまいます。

局所性が裏目に出る具体的な場面も見ておきます。担当者が異動し、前任者がよく参照していた資料を新しい担当者もそのまま踏襲してしまい、実際にはすでに使われなくなった古いやり方を続けてしまう、というケースです。これは「直近によく参照されていたから正しい」という時間的局所性の前提が、担当替えという状況の変化によって崩れた例です。

こうした失敗を防ぐには、資料を引き継ぐ際に「なぜこれをよく使っていたか」という理由もあわせて伝えることが効きます。使用頻度という結果だけを引き継ぐと、状況が変わったときにその資料を疑う手がかりが残りません。理由まで伝えておけば、状況が変わった時点で「もうこの理由は当てはまらない」と気づきやすくなります。

新しい種類の依頼だと感じたときは、いったん過去の履歴から離れて、ゼロから考え直す判断も必要です。局所性という物差しを使いこなすには、いつそれを使い、いつ手放すかを見極める感覚も同時に必要になります。

この感覚は、最初から完璧に身につくものではありません。何度か判断を誤りながら、「この種の依頼は過去の流用が効く」「この種の依頼は毎回ゼロから考えたほうがよい」という自分なりの線引きが、経験とともに少しずつはっきりしていきます。

この見極めの目安として、「過去の資料をそのまま流用して答えられそうか」を最初に自問する習慣が役立ちます。少しでも違和感があれば、それは局所性が効かない領域に踏み込んだ合図です。違和感を無視して過去の資料を押し通すと、次のページで扱うLRUのような追い出しのルールを整えても、そもそも間違った土台の上に積み上げることになってしまいます。

持ち帰り

  • 時間的局所性とは、直近に使ったものはまた使われやすいという性質である
  • 空間的局所性とは、近くにあるものは一緒に使われやすいという性質である
  • 局所性は経験則であり、新しい状況にはそのまま当てはまらないことがある

やってみる

今日開いたファイルやメールを1つ選び、それに関連する資料をあらかじめ同じ場所にまとめておいてください。次に必要になったとき、探す時間がどれだけ減るか確認してみましょう。