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

探しに行かずに済んだ割合 — キャッシュヒット率で情報整理を測る

このページの問い

自分の情報整理のやり方が正しいのか、感覚だけではよく分かりません。改善できているかどうかを、数字で振り返る方法はあるのでしょうか。1〜3ページ目で見てきた考え方が、実際に効いているかどうかを確かめる物差しが、このページのテーマです。

手元で済んだか、探しに行ったか

キャッシュには、性能を測るための単純な指標があります。キャッシュヒット率です。必要なデータを探したとき、手元のキャッシュだけで見つかった割合を指します。逆に、手元になくて外側まで探しに行った割合を、キャッシュミス率と呼びます。

ヒット率が高いほど、そのキャッシュはうまく機能していると言えます。逆にヒット率が低いなら、キャッシュに置くものの選び方を見直す必要があります。目標にすべき水準は環境によって変わりますが、まずは自分の現在地を知ることが出発点です。

この指標が便利なのは、良し悪しを1つの数字に集約できる点です。「なんとなく整理できている気がする」という感覚は人によって基準がばらばらですが、ヒット率という数字にすれば、誰が見ても同じ基準で比較できます。改善の前と後を比べるときも、この数字の変化を見れば一目で分かります。

コンピュータの設計者は、キャッシュの容量や置き方を変えるたびに、このヒット率を計測して比較します。「なんとなく速くなった気がする」という感覚ではなく、変更前と変更後のヒット率を並べて、実際に改善したかどうかを判断するのです。感覚で語ると水掛け論になりやすい議論も、数字にすれば決着がつきます。

これは仕事の情報整理にも、そのまま応用できる発想です。新しい整理法を試したとき、それが本当に効果があったのかを確かめる方法として、変更前と変更後のヒット率を比べる、という手順が使えます。試してみて「良さそうな気がする」で終わらせず、数字で裏付けを取る習慣です。

探しに行くコストは「レイテンシ」

外側の層まで探しに行くと、時間がかかります。この、要求を出してから結果が返ってくるまでの遅れのことを、レイテンシと呼びます。

キャッシュミスが起きるたびに、大きなレイテンシが発生します。ヒット率をわずかに上げるだけで、平均して探すのにかかる時間は大きく短縮されます。これがキャッシュという仕組みの狙いです。

1回あたりの遅れは小さく見えても、1日に何十回も繰り返されると、積み重なった遅れは無視できない大きさになります。たとえば1回のミスで平均2分のレイテンシが発生するとして、1日に10回ミスが起きれば、それだけで20分が失われます。1か月にすれば数時間分に相当します。

この計算を実際にやってみると、「たった数分の探し物」という感覚が、積み重ねるとかなりの時間になることに気づかされます。1回ごとの遅れは小さいからこそ見過ごされがちですが、回数をかけ合わせて初めて実態が見えてきます。1回あたりの重さではなく、頻度をかけ合わせた総量で考える視点が、ここでは欠かせません。

さらに厄介なのは、レイテンシが単なる「待ち時間」では終わらない点です。前のページで見た記憶階層の話を思い出すと、探し物のあいだ、あなたはそれまで考えていた作業の内容を一時的に手放すことになります。探し物が終わって元の作業に戻るとき、どこまで考えていたかを思い出す時間が、レイテンシに上乗せされます。つまり実際のコストは、探している時間そのものよりも一回り大きくなりがちだということです。

仕事の言葉に翻訳すると

自分の情報整理を評価するとき、感覚ではなく「手元で済んだ割合」で測ってみると、改善点が見えてきます。

たとえば1日のうちに資料を探す場面が10回あったとして、そのうち何回が机の上や自分のフォルダだけで完結したか、数えてみます。この割合が、あなたの情報整理のヒット率です。仮に10回中3回しか手元で済まなかったとすると、残りの7回で外側まで探しに行くレイテンシを払っていることになります。

数え方に厳密さは必要ありません。1週間、探し物をするたびに正の字を書き足す程度の記録で十分です。大事なのは正確な数値そのものより、数えるという行為を通じて自分の癖に意識を向けることです

数える際は、「手元」の範囲をどこまでとするかも先に決めておくと、あとで数字がぶれません。たとえば自分のデスクトップとよく使うフォルダまでを「手元」とし、それ以外の共有サーバーやメールの検索は「外側」とする、といった具合です。範囲の線引きが曖昧なままだと、同じ行動でも数える人によってヒットかミスかの判定が変わってしまいます。線引きは厳密である必要はなく、自分の中で一貫していれば十分です。

具体例で見る

具体例1: よくある質問集の見直し 問い合わせ対応で、よくある質問集を見て即答できた割合を1週間記録してみます。ヒット率が低ければ、質問集に載っている項目が実際のニーズとずれている可能性があります。

記録の仕方も具体的にしておきます。質問を受けるたびに、質問集で即答できたら「○」、できずに調べ直したら「×」を1行のメモに残すだけです。1週間分を見返せば、ヒット率だけでなく「どんな種類の質問でミスが起きやすいか」という傾向まで見えてきます。

たとえば1週間の記録を集計してみたら、○が18回、×が12回で、ヒット率は60%だったとします。さらに×の内訳を見てみると、そのうち8回が「先月変更されたばかりの新しい料金プランについての質問」に集中していたとします。この場合、質問集そのものの作りが悪いのではなく、更新が追いついていない特定の項目だけが原因だと分かります。ヒット率という1つの数字の裏側にある内訳まで見ることで、直すべき場所がはっきりします。

全体を60%から70%に上げようとして質問集全体を作り直すのと、原因が集中している1項目だけを更新するのとでは、かける手間がまったく違います。数字を分解して見ることは、改善にかける労力を無駄にしないためにも欠かせない一手間です。全体の数字だけを見て満足せず、内訳まで一歩踏み込む習慣が、遠回りを防ぎます。

具体例2: 個人のショートカット集 よく使うツールやフォルダへのショートカットを整理しているなら、実際にそのショートカットから開いた回数と、結局別の場所を探しに行った回数を比べてみます。

具体例3: チームの共有テンプレート チームで共有しているテンプレート集が、実際にどれだけ使われているかを見れば、ヒット率が測れます。ほとんど使われていないテンプレートは、置き場所か中身を見直す対象です。

チームで測る場合は、個人の測定よりも一段丁寧な運用が必要です。誰か1人が使わなかったというだけで「ヒット率が低い」と判断せず、複数人の利用状況を集めてから判断すると、個人差による誤判定を避けられます。

具体例4: 共有マニュアルへのアクセス状況 社内マニュアルをオンラインで公開しているなら、閲覧ログを見るだけでもヒット率に近い情報が得られます。特定のページばかりアクセスされ、残りのページがまったく開かれていないなら、後者は内容を見直すか、思い切って削除する対象になります。使われていない情報を放置することも、のちの章で扱う「デッドコード」と同じ問題だと考えられます。

落とし穴: ヒット率を上げようとして手元を増やしすぎる

ヒット率を上げたいからといって、手元に置くものを無限に増やすと、1ページ目で見たとおり、今度は手元自体が探しにくくなります。手元に置く量が増えるほど、その中から目的のものを見つけるための時間も増えていくからです。

実際にあった失敗を挙げると、ある担当者は「もう二度と探し物で困りたくない」と考え、関係しそうな資料を片っ端からデスクトップにコピーし続けました。半年後、デスクトップのアイコンは200件を超え、目的のファイルを見つけるのに以前より時間がかかるようになっていました。ヒット率を追い求めた結果、皮肉にも手元での検索そのものが遅くなってしまった例です。

ヒット率は、手元の量を増やすことではなく、手元に置くものの選び方の質を上げることで改善するべき指標です。何を残し何を外すかの精度を上げることが、ヒット率向上の本筋です。局所性とLRUという、これまでのページで見た2つの考え方は、まさにこの精度を上げるための道具でした。

ここでよくある反論に触れておきます。「ヒット率を100%にすればいいのでは」という発想です。理屈のうえでは、あらゆる情報を手元に置けばヒット率は100%に近づきます。しかし、それは1ページ目で見た「速い場所は狭い」というトレードオフを無視した考え方です。手元の容量を無限に広げた瞬間、その場所はもう「速い場所」ではなくなります。

つまり目指すべきは100%のヒット率ではなく、手元の量を適正に保ったまま、できるだけ高いヒット率を実現することです。この2つは同時に追いかけるべき目標であり、片方だけを追うと、もう片方が犠牲になります。

もう一つ、測ること自体への反論も想定しておきます。「探し物のたびにメモを取るなんて、それこそ余計な手間ではないか」という声です。たしかに毎日ずっと記録し続ける必要はありません。1週間だけ試しに記録してみて、自分の傾向をつかんだら記録はやめてよいのです。ヒット率を測る目的は、記録を習慣化することではなく、現状を把握して改善の当たりをつけることにあります。当たりがついたら、次はLRUや局所性といった道具を使って手を打つ段階に移ります。

数字にしてみて初めて、自分の情報整理の癖に気づくこともあります。感覚では「ちゃんと整理できている」と思っていても、実際に数えてみるとヒット率が低い、ということは珍しくありません。まず現状を数えることが、改善の出発点になります。

ここまで4ページにわたって見てきた記憶階層・局所性・LRU・ヒット率は、実はひとつながりの手順として使うことができます。まず記憶階層で置き場所の層を用意し、局所性を手がかりに何を手元に置くかを決め、LRUで古くなったものを追い出し、最後にヒット率でその結果を測る。次のページでは、この一連の流れに最後まで付きまとう、もう一つの厄介な問題を扱います。

持ち帰り

  • キャッシュヒット率とは、手元だけで用が足りた割合のことである
  • 探しに行くたびに発生する遅れをレイテンシと呼び、ヒット率が高いほど平均の遅れは小さくなる
  • ヒット率は手元の量を増やすのではなく、置くものの選び方の質で改善する

やってみる

今日、資料や情報を探した場面を振り返り、手元だけで済んだ回数と、外まで探しに行った回数を数えてみましょう。