『一軍は、コンロの脇に』へのレビュー
——家事のコンピュータサイエンス #2 第一稿について

第2回も編集部の依頼で読んだ。前回と同じく、シリーズを長く続ける先輩の立場から、歓迎と心配の両方で読んでいる。

まず良いところを三つ。第一に、「一軍・二軍・三軍」という置き方がキャッシュ階層に正確に対応している。コンロの脇/戸棚/パントリーを「近くて狭い・遠くて広い」で並べたのは、比喩が概念をねじ曲げずに運べている数少ない例だ。CSの比喩は速さと量がすぐ混ざるが、本作はその危うさを自覚していて、リード文で「今日は近さと速さに絞る、量は別」とあらかじめ宣言している。比喩の弱点を先回りで囲ったこの一文は、シリーズの財産になる。第二に、マキノの「六点」。前回のレビューで「数字の人と設定されているのに固有の数が出てこない」と注文したが、第2回は冒頭からポーチの中身を六点きっちり数え上げ、しかも季節で入れ替えるところまで具体で見せた。経過観察の最大の成果はここだ。第三に、締めの着地。「二十二年カートを積んでいる私が、自分の家の鍵は三回なくした」——プロが自分の家ではできない、という落差で閉じる。概念に勝たせず、しかも説教にしない。前回の「溜まるものは溜まる」と同じ重心の置き方で、これは型として定着している。

前回指摘の経過観察。固有の数(◎達成)と締めの重心(◎達成)は明確に良くなった。比喩が容量と注意の間でぶれる問題も、今回は「速さと量を分ける」と最初に宣言したことでほぼ解消している。一方、声の書き分け処方的語尾は前回の宿題が残った。とくに「マキノが現場の言葉で言い、シマダが概念語で言い直す」往復は、前回よりむしろ増えている。核心をマキノに言わせてシマダは解説しない、という前回の約束が、第2回では守られていない箇所が目立つ。次回への伏線も、前回お願いした「本文の中で次の概念を一度つかむ」が今回も入っていない。以下、第一稿の本文からそのまま引いて挙げる。

1. 「まさに○○です」——シマダの言い直しが、前回より増えている

「まさにLRUです。一番使っていないものが、手元から一段遠くへ下がる。」/「それが空間的局所性です。一緒に使うから、一緒に持つ。」/「使う前に運んでおく、まさにプリフェッチです。」

これが今回いちばん気になった点だ。マキノが現場の言葉で具体を出す→シマダが「まさに○○です」と概念名を貼って言い直す、という往復が、ほぼ全セクションで定型になっている。前回のレビューで「マキノの一言をシマダが概念語でかぶせると、マキノの値打ちが下がる」と書いたが、第2回はその型が増殖してしまった。とくに「まさに〜です」は、マキノの具体を概念の実例に格下げする語法で、これが続くとマキノは「シマダの概念を裏書きする証人」になる。設定では二人は対等な持ち寄りのはずだ。処方箋としては、シマダの受けを概念名の一語だけにとどめるか(「——LRUですね」で止める)、いっそ受けを削ってマキノの具体で段落を終わらせる。概念名は読者が自分で結びつけられる程度に効いている。

2. 消火器の例が、直前に立てた掛け算の枠組みを自分で壊している

「でも消火器だけは、ミスの値段が——間に合わなければ家が燃える——掛け算が壊れるくらい大きい。だから例外として手元に残る。安全にかかわるものは、頻度の計算の外にある、ということです。」

ここは論理が逆を向いている。このセクションはそもそも「頻度×ミスの値段、この二つの掛け算で置き場が決まる」と枠組みを立て、すぐ後でマキノのペン(頻度は低いがミスの値段が高いので手元)でその枠組みが働くことを示した。消火器はペンとまったく同じ論理——頻度ほぼゼロ×ミスの値段が極大、だから手元——で、掛け算がきれいに効く好例だ。それを「掛け算が壊れる」「計算の外にある」「例外」と書くと、たった今組み立てた枠組みを自分で否定することになる。読者は「では掛け算は何のためだったのか」と取り残される。直す方向は二つ。(a) 素直に「消火器は掛け算が極端なだけで、例外ではなく最も純粋な例だ」と書く。これが枠組みと整合する。あるいは (b) 本当に枠組みの外に置きたいなら、頻度×値段では測れない別軸(命にかかわるものは期待値計算自体になじまない、等)だと明示し、ペンとは違う扱いだと線を引く。いまの稿は (a) と (b) の言葉が混在していて、せっかくの良い枠組みが濁った。個人的には (a) を推す——枠組みが消火器まで一気通貫で説明しきる方が、対談の見せ場になる。

3. フィル・カールトンの引用が、約束した「二つ」のうち一つしか払っていない

「計算機科学には難しい問題が二つしかない。キャッシュの無効化と、名前付けだ」。フィル・カールトンという人の言葉とされています。

引用そのものは正しいし、出典の扱い方(「とされています」と伝聞で逃げを打つ)も誠実だ。問題は、二つを挙げておいて本文は無効化の話しかしないこと。「名前付け」は引かれただけで、家事の側に一度も着地しない。読者は「二つ」と言われた手前、もう一方を待つ。これは前回の「タイトルが本文で回収されきると予定調和」と裏表の問題で、今回は逆に引用が本文で回収されきっていない。処方は二つ。(a) 引用を無効化だけに絞った形で短く言及する(「難しい問題の一つに、キャッシュの無効化がある」と、二つを数え上げない)。(b) 「名前付け」を家事に着地させて拾う——たとえばマキノが「ものに名前を付けて場所を決める」「『あれ』『それ』で家族と通じなくなる」のような具体を一言。(b) ができれば次回以降の伏線にもなるが、欲張ると尺が膨らむので、第2回は (a) で軽く済ませるのが安全だと思う。なお、この引用は俗に「実は三つ——あと off-by-one エラー」という落ちが付くことで有名な小ネタでもある。対談の口語なら、シマダがその落ちを軽く添えてマキノが流す、という処理もありうるが、これは趣味の範囲。

4. 「量の話を一度だけ」という断りが、三回出てくる

「ここで量の話が一度だけ出ます。」/「ここでまた量の話を一度だけ断りますが——」/「速さと量の、別々の話がここで一回ぶつかります。」

リード文で「速さと量は混ざりやすいので、出てきたらその都度はっきり分ける」と宣言したのは前述のとおり良い設計だ。ただ、その「分ける」断りが本文で三回繰り返されると、宣言が言い訳の口癖に見えてくる。とくに「一度だけ」と言いながら二度三度出るのは、文字どおりには矛盾だ。設計意図は支持するので、実装をこう変えたい——断りはLRUのセクションで一度だけ正式に置き、以降(プリフェッチの箱買い等)は「これも量の話だ」と毎回ことわらず、地の文で軽く触れて通り過ぎる。読者はもう速さと量の区別を一度教わっているので、二度目以降の前置きは要らない。息切れの主因はこの繰り返しの前置きにある。

5. LRUのセクションで、追い出しと「探す時間」が混線している

「全部ポーチに入れたら速いだろう、って新人は思うんですよ。でも全部入れると、探す時間で結局遅くなる。」/「全部一軍は、一軍なしと同じ。手元が混めば、手元である意味が消える。」

「全部一軍は、一軍なしと同じ」は標語として強く、残したい。ただ、その理由として挙げられている「探す時間で遅くなる」は、厳密にはLRU(追い出しの規則)の話ではなく、手元が大きくなると一件あたりの探索が遅くなるという別の効き目(キャッシュでいえば連想度や検索コストの話)だ。このセクションはLRU=「一番触っていないものを追い出す」を説明する場なので、ここに「探す時間」を理由として混ぜると、LRUの定義そのものがぼやける。二つは両立する別の理由なので、(a) このセクションはLRU(何を下げるか)に集中し、「全部一軍にできない理由=そもそも狭いから」で押し切る、(b)「探すと遅い」を言いたいなら、それはなぜキャッシュは小さくあるべきかとして一拍分けて置く。マキノの「六点だから、見ないで取れる」は (b) の最高の具体なので、捨てずに置き場だけ整えたい。

6. クライマックスが二つあって、後半が息切れする

「ここからが、今日の本題かもしれません。」(セクション6・無効化)
「最後に、玄関の鍵の話をさせてください。」(セクション7・鍵)

無効化のセクションは「今日の本題かもしれません」と自ら山場を宣言し、フィル・カールトン引用・stale・前回の話への接続・「配置は勝手に変えない」と、密度が高い。ところがその直後にもう一つ、鍵のセクションがあって、こちらが実際の締め(マキノの「三回なくした」)になっている。山が二つ続くと、無効化で一度上がった読者の気持ちが、鍵で仕切り直しになる。前回のレビューで「締めの重心」を褒めたが、今回はその締めの手前に重い山がもう一つあるせいで、せっかくの鍵の落ちが弱まる。処方は、(a) 無効化のセクションから「今日の本題かもしれません」という山場宣言を外し、無効化を「難所の紹介」程度のトーンに落として、山は鍵の一つに絞る。(b) もしくは無効化を締めにして鍵を前に出す。(a) を推す——マキノの「三回なくした」で閉じる現状の順序は正しいので、手前の山を低くするだけでよい。

7. 次回(キュー)への伏線が、本文の中に一つもない

「第3回はキューを取り上げる。洗濯物、シンクの食器、片づかないタスク——どれも『待っているものの行列』だ。」

予告は具体的で良い。ただ前回のレビューで「本文のどこかで次回の概念を一度つかんでおくと、読者が続けて読む動機になる」と注文したのが、今回も予告ブロックだけで本文に伏線がない。第2回は伏線を仕込む素材がそろっている——プリフェッチの「次の部屋の分を先に積む」、無効化の「待っている古い控え」、あるいはマキノのカートに積まれて順番待ちしている補充品。どれもキュー(行列・順番)と地続きだ。本文のどこかでマキノに「カートの上は、やる順に積んである」のような一言をこぼさせておけば、第3回がその回収になる。シリーズの背骨を一回ごとに継いでいく仕掛けは、前回の宿題のまま残っている。

総括——次回への提案

第2回は、前回の宿題のうち固有の数締めの重心をはっきり回収した。比喩が容量と注意でぶれる問題も「速さと量を分ける」宣言で抑えた。テーマ(キャッシュ)と素材(ポーチの六点、コンロの脇、鍵のフック)の噛み合わせは、シリーズ中でも良い回だ。

残った宿題は二つ、いずれも前回と同じ根っこから来ている。一つは二人の分業。「まさに○○です」とシマダがマキノを言い直す往復が前回より増え、マキノが概念の証人に格下げされる瞬間が多い。受けは概念名一語に絞るか、削ってマキノの具体で段落を閉じる。もう一つは概念の取り回しの正確さ。消火器は枠組みの例外ではなく最も純粋な例だし(2)、引用は二つ約束して一つしか払っていないし(3)、LRUの説明に探索コストが混ざっている(5)。比喩がうまいぶん、概念の論理が一箇所ずれると目立つ回でもある。

それと、息切れの整理を一つ。「量の話を一度だけ」の前置きは一回に、クライマックスは鍵の一つに。盛り上げを節約すると、いちばん効かせたい「三回なくした」がもっと効く。
意味は具体物が運ぶ、概念語が運ぶのではない——前回の原則は、第2回でも有効だ。マキノの六点とコンロの脇の四本が、すでにそれを証明している。第3回のキューを楽しみにしている。

レビュー: ソノダマリ(マンションポエム調査員)

第一稿
第二稿
目次

このページの記事はAI(ChatGPT)を用いて作成・編集されています。