『焦げた鍋の、例外処理』へのレビュー
——家事のコンピュータサイエンス #9 第一稿について

九回目。前回のレビューの末尾に、こう書いた——「失敗は、その育てた抽象化を、一段、細かい方へ巻き戻す。やり直せる失敗は信頼を保つが、やり直せない失敗は、せっかく粗くできたインターフェースを、また全部指定する所まで戻す」。第9回は、まさにその「失敗のほう」を、正面から一回まるごと引き受けた。冒頭で「任せた仕事は、失敗するんですよ」と前回の続きを宣言し、「やり直せば直る失敗と、やり直しても直らない失敗。間を置く知恵。黙って直す家と、いちいち報告する家」と、この回で扱う四つの軸を最初に並べてみせた。導入の交通整理として、前回に劣らず端正だ。良い点から挙げる。

まず、この回の発明は「異常系」を家事の主題に据え、「失敗の章を持つ職場/持たない家」という非対称を発見したことだ。エラー処理を家事に当てる試みは、たいてい「失敗したらやり直す、以上」で終わる。だがこの回は、シマダの「まともなプログラムは、うまくいくときのコードより、失敗したときのコードのほうが長いんです」を入口に、マキノのホテル手順書には「うまくいかなかったときの章」が別に立ててある、という現場の事実を引き出した。そして「同じ人なのに、職場では異常系を持っていて、家では持っていない」と、人ではなく場の設計に差を帰属させた。シリーズが守り続けてきた「どちらも裁かない」姿勢が、ここでも効いている。

第二に、染みと縮みで「一時的なエラー/恒久的なエラー」をきれいに二分し、しかもそこに「二回まで」という数とエスカレーションを通したことだ。「シャツの襟の染み」は二度洗いで落ちるからリトライが効く、「縮んだセーター」は何回洗っても伸びないから無駄——再現する失敗はリトライしても再現するだけ、というCSの核を、号令ではなく洗濯の手触りで立てている。そのうえで「染み抜きは二回まで」「二回やって落ちなかったら、三回目はやらない。クリーニングに出す」と、リトライ回数の上限と上位への引き上げ(エスカレーション)まで、数字で持たせた。マキノが体で言い当て、シマダが概念で受ける——#7・#8で褒めた逆流が、この回でも序盤から決まっている。

第三に、締めの「諦める=正当なエラー処理」を、効率の説教にせず、二十二年かけて育った「見分ける目」に着地させたことだ。焦げた鍋を前に、できることは「もう一度、擦る」(リトライ)「水を張って、浸けて、待つ」(バックオフ)、そして「これはもう駄目だ、と、買い替える」。この三つ目を「立派な、正当なエラー処理」と言い切り、マキノに「落とし方じゃなくて、落ちないものを、落ちないと見分ける目」と受けさせた。諦めを「手抜き」でも「敗北」でもなく、覚えるのに何年もかかる技能として描いた——これはシリーズの看板(諦めも等価に扱う)の、現時点での到達点だ。

これまでの指摘の経過観察。固有の数(◎。三行と三十行・二回まで・一晩・二十二年と、今回も具体物と数で押している)と、マキノの問い返し(◎。「もう一回で直るのと、何回やっても駄目なの」「失敗を、黙って、なかったことにする」と要所で論を一段ずつ進めている)は維持。前回の宿題だった「信頼の関数」を可逆な往復として描くは、この回が丸ごと「失敗したあとどう巻き戻すか」なので、シリーズの設計として地続きに開いた——前進だ。そして、前々回から褒め続けている書き手の自己批判が、この回はバックオフの節で「焦げと人を同じ『バックオフ』で語るのは、雑です」と、比喩を自分で引っ込める形で最も鋭く出ている。そのうえで、#9ならではの観点を六つ。握りつぶしの「平和」が本当に対称か(畳み直しと買い忘れの重さが釣り合っているか・後述3)、エラーログの倫理の一言が説教・予防線になっていないか(後述5)、CS概念の正確さ(指数バックオフ・後述2/フェイルセーフとフォールバックの区別・後述4/フェイルファストの説明が比喩で歪んでいないか・後述4)、「諦め=正当な処理」がシリーズの態度の集大成として立っているか(効率の説教にしていないか・後述6)、そして異常系の発見を痩せさせない一点(後述1)。以下、第一稿からそのまま引いて挙げる。

1. 「失敗の章を持つ職場/持たない家」——発見は屈指。痩せさせないために、家が異常系を「書けない」理由に半文だけ触れたい

「同じ人なのに、職場では異常系を持っていて、家では持っていない。——この差は、今日ずっと、底に流れてる気がします。」

まず、これは賞賛の指摘だ。「失敗の章が、職場にはあって、家には無い」という非対称は、この回の背骨であり、シリーズ屈指の発見でもある。気になるのは一点だけ。第一稿は、この差を「家には異常系が無い」とだけ置いて、なぜ家では書けないのかに触れていない。職場の手順書が成立するのは、書く人と読む人が分かれていて、失敗の章が引き継ぎのための文書だからだ。家の台所には引き継ぎ先がいない——同じ人が書き、同じ人が読む。だから異常系は文書にならず、その場の出たとこ勝負になる。第一稿の「危うい設計」という診断は正しいが、家がそうなる構造的な理由を半文添えると、「だらしないから書かない」という責めの色が消える。処方は一点。シマダかマキノに「家は、書く人と読む人が同じだから、章にならないんですよね」と半往復だけ足す。そうすれば、非対称が「家の怠慢」ではなく「家という場の構造」として立ち、シリーズの「裁かない」姿勢とも矛盾しなくなる。発見はもう立っているので、理由を一言で添えるだけでいい。

2. 指数バックオフ——比喩は正確で、しかも自分で引っ込める誠実さがある。あとは「相手が立て直す時間」をもう一押し

失敗した直後にすぐもう一回やると、たいてい、また失敗するんですよ。相手がまだ立て直してないところに、同じ要求をぶつけるから。だから、賢いやり方は、間隔を、だんだん空けていく。一回目の失敗のあとは少し待つ、二回目はもっと待つ、三回目はさらに長く——待ち時間を倍々にしていく。これを指数バックオフといいます。」

まず賞賛から。指数バックオフの説明は、CS的に正確だ——「倍々に待ち時間を伸ばす」という核も、「相手がまだ立て直してないところに同じ要求をぶつける」というなぜ間隔を空けるのかの理由も、外していない。そして何より、続く節で「焦げと人を同じ『バックオフ』で語るのは、雑です」と、自分で比喩を引っ込めた——比喩が効きすぎて似てないところまで似て見える危険を、書き手が先回りして潰している。これは前回までで褒めてきた自己批判の、最良の発露だ。守りたい。注文は精度のための一点だけ。バックオフの肝は「相手(鍋の焦げ/向こうのサーバ)が立て直す時間を稼ぐ」ことにあり、第一稿は鍋の例で「水を張って一晩浸け置きしてから擦ると、ふやけて、するっと落ちる」と、まさにそれを描けている。ところが「倍々」という形式だけが概念語として残り、なぜ倍々なのか——失敗が混み合うほど、いっせいに殺到して相手をさらに潰さないよう、各自がばらばらに長く待つ——という含意は本文に出ていない。家事に一台しか鍋がないなら「倍々」は要らず、要るのは「一晩置く」だけだ。処方は二択。(a) 家事の例に合わせて「倍々」を「焦げが手強いほど、置く時間を長くする」程度に緩めるか、(b) 「倍々」を残すなら半文で「何台も同時に失敗したとき、みんなが同じ間隔で再挑戦すると、また一斉にぶつかる。だからばらばらに、だんだん長く待つ」と、倍々が効く場面を一言添える。そうすれば、概念語と家事の実例が、ずれずに噛み合う。

3. 例外の握りつぶし——「平和を保つ技術」の発見は見事。だが畳み直しと買い忘れは、重さが釣り合っていない

握りつぶしは、平和を保つ技術でもあるんですよ。いちいち言わずに、黙って直しておくことで、波風が立たない。」
「マキノさんは畳み直しを握りつぶし、夫さんは買い忘れを握りつぶす。どっちも、相手に失敗を返さないことで、家を平らに保ってる。」

まず賞賛から。「握りつぶすな」というCSの原則を、家では「平和を保つ技術」として反転させたのは、この回でいちばん大胆で、いちばん効いている発見だ。しかも、それを片側で終わらせず、マキノの畳み直しと夫の買い忘れを並べて両側に置いた——#8のレビューで「配役を対称に」と注文した点を、この回は最初から両側で立てている。そして判定基準を「握りつぶしていいかは、それを返したら次が直るか、で決まる」に落とした。これは正確で、美しい。注文は一点だけ——対称の見かけはあるが、二つの例の「重さ」が釣り合っていない。畳み直しは、第一稿自身が「畳み方みたいに、直しても次に響かないものは、黙っていい」と言うとおり、握りつぶして正解の例だ。一方、買い忘れは「言わないから、私、次もまた同じ店で、同じものを買い忘れる」と、握りつぶすと損の例になっている。つまり二つは「両側の当事者」ではあっても、一方は握りつぶすべき例/一方は握りつぶすべきでない例で、握りつぶしの良し悪しがちょうど逆を向いている。これ自体は基準(次が直るか)の例解として正しいのだが、「どっちも、家を平らに保ってる」と並べた一文だけは、二つを同じ重さの善行のように見せてしまう。読者の体感では、夫の買い忘れの握りつぶしのほうが軽く(実害が残る)見え、わずかに夫の側に「直すべき」の重心が残る。処方は二択。(a) 畳み直しと同じ重さの「マキノが握りつぶして正解だった例」と、買い忘れと同じ重さの「夫が握りつぶして損した例」を、たすき掛けで一つずつ揃えるか、(b) 今の二例を残すなら、「平らに保ってる」の一文の直後に半文で「ただし片方は黙って正解、片方は言ったほうがよかった——同じ握りつぶしでも、向きが逆なんです」と、二例が対称ではなく基準の表と裏であることを明示する。基準そのものはもう完璧なので、二例の役割を一言で仕分けるだけで、「平和の技術」と「次が直るか」の二つが、混ざらずに両立する。

4. フェイルセーフ/フォールバック/フェイルファスト——三語とも核は正しい。あとは「セーフ」と「フォールバック」の境を一語立てる

「一個はフェイルセーフ失敗しても、安全な側に倒れるように作っておく。鍋を火にかけたまま忘れても、ある時間で勝手に火が消える、みたいな。……もう一個がフォールバック本命が駄目だったときの、代わりの手。」

まず賞賛から。三つの構えの核は、どれも正確だ。フェイルセーフ=失敗したときに被害が出ない側に倒れる(火が勝手に消える)、フォールバック=本命がこけたら代替に切り替える(冷凍餃子)——この区別は、よく混同される二語をきれいに分けている。さらにマキノの売り止めを「フェイルファストと隔離」と受け、「おかしくなったものは、無理に動かし続けず、早めに、はっきり止める」「直すより先に、止めて隔離する」と説明したのも正しい。フェイルファストを「だましだまし動かさず早く止める」と捉え、しかも「代わりを出す前に、まず、壊れたほうを止める。こっちのほうが、順番として、先かもしれない」とフォールバックとの順番関係まで立てたのは、この節の白眉だ。注文は精度のための一点。フェイルセーフとフォールバックの境が、家事の例だと一瞬にじむ。「鍋が勝手に消える」はフェイルセーフ(安全側に倒れる)だが、「冷凍餃子」は、本命が失敗したときの代替であると同時に、夕飯が抜けるという最悪を避ける安全側でもある——読者には、餃子がフォールバックなのかフェイルセーフなのか、二つが重なって見えうる。CS上の境は明快で、フェイルセーフは「機能を諦めて被害を止める」(火を消す=料理はできないが火事は防ぐ)、フォールバックは「機能を別の手で保つ」(餃子=夕飯という機能は果たす)。前者は安全のために機能を捨て、後者は機能を別経路で維持する。処方は半文。フォールバックの説明に「フェイルセーフが『諦めて安全に倒れる』のに対して、フォールバックは『別の手で、やることはやり遂げる』」と一言対比を足す。そうすれば、餃子が「料理という機能を別経路で果たすフォールバック」だと一読で定まり、火が消えるフェイルセーフと混ざらない。三語の核はもう立っているので、二語の境を一語で引くだけだ。

5. エラーログの倫理——「裁くな、見ろ」は正しい。だが今の置き方だと、わずかに説教・予防線に寄る

「家庭の記録って、便利な反面、尋問の証拠にもなるんですよ。……だから、家のログは、誰が悪いかを裁くためじゃなくて、何が繰り返してるかを見るために使う、っていう線が、要るんだと思います。……コンピュータのログは、誰のせいかを問い詰めない。何が起きたか、だけを残す。——家でも、たぶん、そっちで使ったほうがいい。」

言いたいことは正しい。ログを「人を責める材料」ではなく「繰り返しを見る道具」に使え、というのは、シリーズの「裁かない」姿勢とも一直線だ。だが、この節はシリーズの他の発見が「現場の具体から立ち上がる」のに対し、ここだけシマダの一般論(こう使ったほうがいい)で閉じている。マキノは「それは、嫌ですね。書いたものを、後で出されるのは」と一度受けるが、ここで止まり、現場でログがどう扱われているかの具体が出てこない。結果、シマダの「家でも、たぶん、そっちで使ったほうがいい」が、CS概念の説明ではなく家庭への助言(説教)に寝てしまう。加えて「っていう線が、要るんだと思います」は、書き手が炎上を避けるための予防線の口ぶりに近く、シリーズが磨いてきた「言い切ってから自分で疑う」型から、わずかに後退している。処方は一点。倫理を一般論で言う代わりに、マキノの現場の具体で立てる。ホテルの清掃記録やインシデント記録は、まさに「誰のせいか」ではなく「どの部屋で何が何度起きたか」だけを残す——個人を責める文書にすると現場が萎縮して報告が上がらなくなる、というのは清掃・医療・航空の現場が共有する知見だ。マキノに「うちの現場の記録も、誰がやったかは書かないんですよ。書くと、次から、隠すようになるから」と半往復だけ足せば、倫理が「シマダの助言」ではなく「現場がすでに知っている設計」として立ち上がり、説教でも予防線でもなくなる。そのうえでシマダは「コンピュータのログも、同じです」と概念で受ければいい——#7以来の逆流の型に戻せる。

6. 締めの「諦める=正当なエラー処理」——シリーズの態度の集大成として、見事に立っている。守りたい一点と、巻き込みたい一点

「この三つ目の『諦める』を、私、長いこと、失敗の処理だと思ってなかったんです。でも、これも、立派な、正当なエラー処理なんですよね。直らないものを、直らないと見切って、手を引く。」
「二十二年やって、覚えたのは、たぶん、それなんですよ。落とし方じゃなくて、落ちないものを、落ちないと見分ける目。」

まず、これは賞賛の指摘だ。「諦める」を「手抜き」でも「敗北」でもなく「正当なエラー処理」として立て、それを効率の言葉(速く・無駄なく)では一度も語らず、二十二年かけて育った「見分ける目」という技能に着地させた——これはシリーズの看板「諦めも等価に扱う」の、現時点での集大成だ。リトライ(擦る)・バックオフ(浸ける)・諦め(買い替える)の三択に焦げ鍋を戻し、「三つ目がいちばん難しい」「やめる勇気がいる」と、諦めを努力の放棄ではなく最も習得の難しい判断として描いたのは、説教の真逆だ。よく踏みとどまった。ここはほぼ手を入れずに守りたい。注文は二点、いずれも痩せさせないため。一つ目(守り)。締めの三つの段落(114・117〜119行)はマキノの独白がほぼ続いて山が立っている——#8のレビューで「締めはマキノの述懐だけで通せ」と書いた形が、この回は最初からできている。この独白の前にシマダの理屈を足さないこと。理屈はセクション1〜6で言い終わっている。二つ目(巻き込み)。この回は「諦める=正当な処理」を、最終回#10(最適化)への橋として一言だけ使える。最適化とは「速く・無駄なく」の極致だが、この回が言ったのは「直らないものを見切って手を引くのも、立派な処理」——つまり最適化が拾わない「やらない・諦める」という選択肢を、エラー処理の側から先に肯定しておくことになる。処方は半文。締めのどこかにマキノかシマダの「全部直そうとしないのも、一つの段取りなんですよね」を置けば、諦めが次回の「最適化に、ほんとうに『最適』はあるか」という問いへ、自然に手を伸ばす。集大成はもう立っているので、最終回への糸を一本だけ垂らしておけばいい。

総括——次回(最終回)への提案

九回目にして、シリーズは「失敗のほう」を一回まるごと引き受け、しかも崩れなかった。「失敗の章を持つ職場/持たない家」という非対称染みと縮みで立てた一時的/恒久的エラーと「二回まで」のエスカレーション「握りつぶしは平和を保つ技術」という大胆な反転、そして「諦める=正当なエラー処理」という、シリーズの態度の集大成——どれも比喩で歪んでいない。指数バックオフを自分で「雑だ」と引っ込めた誠実さ、フェイルファストと隔離を「直すより先に止める」と順番まで立てた精度も、この回の確かさを支えている。

#9ならではで、いちばん見たいのは一点。握りつぶしの「平和」の対称を、見かけだけで終わらせない(3)。畳み直しは握りつぶして正解、買い忘れは握りつぶすと損——二例は「両側の当事者」だが「良し悪しが逆」なので、たすき掛けで重さを揃えるか、「同じ握りつぶしでも向きが逆」と半文で仕分ければ、「平和の技術」と「次が直るか」が混ざらずに両立する。

倫理で締めたいのは一点。エラーログの「裁くな、見ろ」を、シマダの助言ではなくマキノの現場の具体で立てる(5)。「うちの記録も、誰がやったかは書かない。書くと隠すようになるから」と半往復足せば、説教でも予防線でもなく、現場がすでに知っている設計として立つ。

CS概念の精度では、二点。指数バックオフの「倍々」を、家事の例(一台の鍋)に合わせて緩めるか、倍々が効く場面を一言添える(2)。フェイルセーフ(諦めて安全に倒れる)とフォールバック(別の手でやり遂げる)の境を一語で引き、冷凍餃子がどちらかを定める(4)。いずれも核はもう正しいので、境目に一語足すだけだ。

発見を痩せさせない一点。「家には異常系が無い」に、家がそう書けない構造的な理由(書く人と読む人が同じ)を半文添える(1)。怠慢ではなく場の構造として立てば、シリーズの「裁かない」姿勢と最後まで揃う。

そして締めは、ほぼ守るだけでいい。「諦める=正当な処理」のマキノの独白に手を入れず、最終回#10への糸を半文だけ垂らす(6)。「全部直そうとしないのも、一つの段取り」と置けば、この回の「諦め」が、次回の「家事に、ほんとうに『最適』はあるか」という問いへ自然につながる。最適化が拾わない「やらない・諦める」を、エラー処理の側から先に肯定しておく——第9回が「諦めも正当な処理」を立て切れたいま、最終回の「最適とは何か」は、その続きとして開く。第二稿を、そして最終回を、楽しみにしている。

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

第一稿
第二稿
目次

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