前回はキュー——待っているものの行列の話をした。先に来たものから出すか、積んだ順か、急ぎから割り込ませるか。あれは「並んだものを、どの順で出すか」だった。今回はもう一歩前に戻る。いつ・誰が・何を。並べる前に、そもそもどの仕事を、何時に、誰の手で始めるか。これを割り当てる話をスケジューリングという。
今日は初めてゲストを呼んだ。毎日、数百食を十二時ちょうどに、全部の教室へ同時に届けている人だ。家の夕飯の締め切りは、十分くらいなら動く。動くからこそ、いつまでも決まらない。動かない締め切りを毎日相手にしている人の段取りを、家の段取りに当ててみたかった。イノウエミドリさん、学校給食の調理員を二十五年。
イノウエ 給食は、十二時です。十二時に、全クラス同時。四年三組だけ十二時五分、ということはありません。全部の教室に、同じ時刻に届く。配膳員さんがワゴンを取りに来るのが十一時四十分。そこに食缶が揃っていなかったら、その時点でもう間に合わない。一分の遅れが、四百人の昼休みを削る。
シマダ その「十二時」を、コンピュータではデッドライン——締め切りと呼びます。仕事には、それぞれ「いつまでに終わっていなければならない」という時刻がついている。面白いのは、デッドラインの硬さで、段取りの作り方そのものが変わるところで。
イノウエ 硬い、というのは。
シマダ 動かせるか、動かせないか、です。給食の十二時は、こちらの都合で十二時十分にはできない。絶対に動かない。一方、家の夕飯は——「六時」と言いながら、六時十五分でも、まあ、なる。
マキノ なりますね。うちは「ごはんできた」って言ってから、子どもが下りてくるまでに五分かかるので。最初から五分くらいは見てない。締め切りのほうが、こっちに合わせてくれる感じです。
シマダ そこなんです。締め切りが硬いほど、段取りは厳密に決まる。締め切りが柔らかいと、段取りも柔らかくなって——崩れる。家の夕飯がいつも少しずつ遅れるのは、十二時みたいに動かない一点が、家には無いからなんですね。
イノウエ 工程表は、後ろから引きます。十二時から、線を引いて戻す。配缶——食缶に詰めるのが十一時三十分。揚げ物なら、揚げ終わりが十一時十五分。でも油は一回温度が落ちる。鶏を入れると百八十度が百六十度まで下がるので、戻るのを待つ時間を二、三分はさむ。だから一回目の鶏を入れるのは十時五十分。野菜の下処理は、その前にぜんぶ終わっていないといけない。十二時から逆に引いていくと、大根を切り始める時刻が、勝手に決まるんです。
シマダ いま、イノウエさんがやったことに、名前があります。EDF——Earliest Deadline First。締め切りの早いものから先にやる、という決め方です。複数の仕事があるとき、「どれが大事か」ではなく「どれが先に締まるか」で順番を決める。締め切りから逆算して、いま手をつけるべき一手が決まる。
イノウエ 現場では「逆算」としか言いませんけど。揚げ物と和え物と汁物があったら、和え物は冷めてもいい、汁物は最後でいい、揚げ物は揚げたてを配缶ぎりぎりに。締まる時刻が早い順に、釜の火を入れていきます。
シマダ それがEDFそのものです。家でも理屈は同じはずなんですよ。「夕飯六時」から逆算すれば、米を研ぐ時刻も、肉を冷蔵庫から出す時刻も、本当は全部決まる。
マキノ でも家でやってるのは、逆じゃないんですよね。後ろからじゃなくて、前から。冷蔵庫開けて、目に入ったものから始める。思いついた順。「あ、これ先に切っとこう」って、締め切りと関係なく手が動く。気づいたら、いちばん時間かかる煮込みが、いちばん最後に残ってる。
イノウエ それは、現場では事故です。逆算しないで前から始めたら、十二時に間に合わない。家だと、間に合わなくても、誰も困らないんですね。
マキノ 困りますよ、お腹は。でも怒られはしない。それが家ですね。
シマダ 逆算で時刻は決まる。でも、もう一つ別の問いがあります。全体の所要時間は、何で決まるのか。答えは、一番時間のかかる連鎖です。これをクリティカルパスといいます。複数の作業を並行で進められるとき、全部が終わる時刻は、一番長い一本の鎖で決まる。その鎖を縮めない限り、全体は早くならない。
シマダ たとえば夕飯で、煮込みが四十分かかるとする。サラダは五分、味噌汁は十分。このとき、サラダをどんなに先に、どんなに速く作っても、夕飯は早くならないんです。律速——速さを決めているのは、煮込み四十分のほうだから。サラダを五分早く作っても、煮込みが終わるまで食卓は始まらない。
イノウエ 釜が、それです。うちの調理場、回転釜が三つしかない日があるんですよ。一台が点検で止まると、三つ。その日に揚げ物と煮物と汁物の献立だと、釜の取り合いになる。揚げ物の釜が空くのを待ってからじゃないと、次が炊けない。だから献立を見て、まず釜の予定を組む。何を作るかより先に、釜がいつ空くかから逆算する日があります。
シマダ それは、料理の手順を決めているように見えて、本当は資源の取り合いを解いているんですね。釜が三つしかない、という制約が、献立の順番を決めてしまう。コンピュータでも全く同じことが起きます。手が三本あれば三つ同時に進められるのに、二本しかないと、一本ぶんが必ず待ちになる。その待ちが、クリティカルパスを伸ばす。
マキノ 部屋の順番も、乾く時間で決まりますよ。十五室回すとき、何から手をつけるかは、汚れの量じゃなくて、乾く時間で決める。浴室をいちばん最初に洗うんです。洗って、水気を切って、置いておく。ほかの部屋をやってる間に、乾く。最後に戻ってきて拭くと、もう乾きかけてる。最初にやらないと、拭く前に乾かす時間が稼げない。
イノウエ ああ、それは煮物と同じですね。火にかけたら、離れていい。煮てる間に別を切れる。離れられる工程を先に始めて、その時間で別を進める。
マキノ そうそう。浴室は「乾燥という火にかけてる工程」なんですよ。火じゃないけど、置いとくだけで進んでくれる。だから先に火をつけにいく。
シマダ ……いま、お二人だけで、僕が説明しようとしたことを終わらせてしまった。「離れていられる工程を先に始めて、その間に短い仕事を詰める」——スケジューリングで一番効く一手を、煮物と浴室で言い切られると、こちらは付け足すことがないですね。
シマダ ここまでは「一人がどう段取るか」でした。でも家事は、一つの手で同時に複数を見ています。コンピュータも、手は一本しかないのに、いくつもの仕事を同時にこなしているように見せる。どうやっているかというと、時間を細かく切って、順番に少しずつ回している。これをタイムスライス、その回し方をラウンドロビンといいます。
マキノ 平日の夜の私が、それですね。宿題を見ながら、洗濯機が止まるのを待って、鍋を見て、また宿題に戻る。一個ずつ、ちょっとやっては次、ちょっとやっては次。全部同時にやってるつもりだけど、本当は切り替えてるだけです。
シマダ まさにタイムスライスです。ただ、切り替えにはコストがある。第1回でやったコンテキストスイッチ——別の仕事に移るたびに、頭を切り替える手間がかかる。スライスが細かすぎると、そのスイッチばかりで時間が溶ける。宿題を一問見て鍋に行って、また一問見て洗濯に行って、だと、どれも進まない。
マキノ 進まないです。鍋に行って戻ると、子どもが「どこまで言ったっけ」になってる。切り替えが多い日は、何にもしてないのに疲れます。
イノウエ 当番でいうと、洗い場は曜日で回してます。月曜はこの人、火曜はあの人。職員同士で、台ふきと床と。家でも当番表ってありますよね、皿洗い。
マキノ ありますよ。曜日で回す、それこそラウンドロビンですよね。でも、うちは破綻してます。「今日代わって」「明日やるから」が溜まると、誰の番か分からなくなる。交換とスキップが二、三回続くと、もう表が信用できない。結局「気づいた人がやる」に戻る。
シマダ ラウンドロビンの良さは、考えなくていいことなんです。曜日を見れば誰の番か決まる。比べる手間がない——前回の「比べるコスト」が、ここでゼロになる。でも、交換とスキップを許した瞬間、その「考えなくていい」が壊れる。誰の番かを毎回また考え始める。札を貼り替えるたびに、台帳が読めなくなるんですね。
シマダ 順番を決めて回していても、突然それを中断させるものがある。割り込みです。コンピュータではプリエンプションといって、優先度の高い仕事が来ると、いま走っている仕事を強制的に止めて、そっちを先に処理する。前回マキノさんが言ったフロントからの連絡も、これでした。
マキノ 家でいちばん強い割り込みは、子どもの「鼻血出た」ですね。何をやってても、それは止めます。鍋に火がついてようが、手が泡だらけだろうが、止めて行く。あれより優先度の高いものは、家には無いです。
イノウエ 現場にも、止めて受けるものがあります。アレルギー対応食の確認です。担任から「今日の○○くんの除去、これで合ってますか」と来たら、何をしていても手を止めて確認する。揚げ物の途中でも、配缶の途中でも。むしろ、それだけは専用に通してある。割り込まれたくない時間、というのが調理場にはあるんですけど、アレルギー確認だけは、その例外です。
シマダ いま二つ、別のことを言いましたね。一つは最優先割り込み。もう一つは——割り込み禁止区間。「ここだけは中断されたくない」という時間。コンピュータにもあって、その短い区間だけは割り込みを止める。中途半端に止めると壊れる処理がある。
イノウエ 揚げ物の、最後の三分です。鶏を引き上げるタイミングは、三分そこを離れたら、焦げるか、生かのどっちか。だから揚げの三分は、誰が呼んでも行かない。電話も出ません。十二時に間に合わせる以上に、あの三分は動かせない。
マキノ わかります。私も、ベッドメイキングのシーツを張る、あの一発は止められない。中途半端に手を離すと、皺が残って、最初からやり直しになる。途中で止めるくらいなら、呼ばれても「いま行けない」って言います。
イノウエ ただ、アレルギーだけは、その三分でも止めます。焦がしてやり直すほうが、間違った食缶を出すよりいい。優先度が、揚げ物より上なので。
シマダ 割り込み禁止区間の中にも、そこを突き破る一本だけの専用線がある、と。イノウエさんの調理場では、それがアレルギー確認なんですね。優先度というのは、結局、何を一番上に置くかという順序の問題で——その一番上を、間違えない人の現場は、揺るがない。
シマダ ここまで段取りの話をしてきましたが、段取りには前提があります。「この仕事は何分かかるか」という見積もりです。逆算もクリティカルパスも、各工程の所要時間が分かっている前提で組んである。ところが、この見積もりが、よく嘘をつく。
マキノ 「三十分でできる」って言うときの三十分、当たったことないですね。だいたい、何も邪魔が入らなかった場合の、いちばん速い三十分なんですよ。実際には電話も鳴るし、探し物もするのに。
シマダ それを楽観見積もりといいます。全部うまくいった場合の最短時間。人は無意識に、これで計画を立ててしまう。だから計画は、ほぼ必ず遅れる。サボったんじゃなくて、見積もりが最初から短いんです。
イノウエ 見積もりは、人で変わります。新人さんが大根の千切りをすると、私の倍かかる。同じ三十キロの大根でも、誰が切るかで工程表が変わる。だから新人が入った日は、下処理の開始を三十分早めます。同じ献立、同じ分量でも、手が違えば時間が違う。工程表は、人につくんです。
シマダ それは大事な指摘で。コンピュータでも、同じ処理が、機械の速さや混み具合で、かかる時間が変わる。「この処理は何秒」は、どの機械で、どんなときか、で変わる。固定の数字じゃない。
マキノ あと、レシピの「調理時間二十分」。あれ、下ごしらえ入ってないんですよ。玉ねぎはみじん切りにしてある前提から、二十分。実際は、皮むくところから始めるのに。
シマダ 見積もりが当てにならないと分かっているなら、対策は一つあります。バッファを積む。本当の締め切りの手前に、偽の締め切りを置く。六時に出したいなら、自分の中では五時四十五分を締め切りにしておく。十五分は、見積もりが外れたぶんを吸う余白です。
イノウエ 現場の十一時四十分が、それです。配膳は十二時。でもワゴンの引き渡しを十一時四十分に置いてある。あの二十分は、何かあったとき用です。揚げ油が落ちた、人が一人足りない。何も無ければ、二十分は何もしない時間になる。何もしない時間を、わざと工程表に入れてある。
マキノ 家には、その二十分が無いんですよね。ぎりぎりで組むから、何か一個ずれると、ぜんぶ後ろにずれる。
シマダ 今日いろんな段取りを見てきました。逆算、クリティカルパス、ラウンドロビン、割り込み、見積もり。でも全部、たどると一点に戻る。動かせない締め切りが一つあると、そこから残り全部が決まっていく。
イノウエ 十二時は、動かせないんです。だから、その一点から線を引けば、大根を切る時刻まで決まる。動かない点が一つあると、ほかが全部、その点に向かって整列する。逆に言うと——動く点しかない日は、何も決まらない。
マキノ 家が、それですね。夕飯六時って、動くんですよ。五分くらいなら、と思ってるから、五分が十分になって、十分が二十分になる。動かしていい点だと思った瞬間、ほかも全部、ずるずる動く。決まらないのは、決めてないからじゃなくて、動かしていいことにしてるからですね。
シマダ イノウエさんの十二時と、マキノさんの六時の違いは、たぶんそこだけなんです。締め切りそのものの厳しさじゃない。動かさないと決めているか、いないか。
イノウエ でも、うちの夕飯ですか。給食より遅れますよ、毎日。調理場では十二時に間に合わせるのに、家のごはんは七時が七時半になる。逆算できるはずなんです、私が一番、逆算で飯食ってきたんだから。でも、しないんですよ、家では。動かしていいと思ってるから。十二時を二十五年やってきても、家の七時は、守れない。
第5回は並行処理とロックを取り上げる。食洗機と洗濯機を同時に回す、煮込みながら別を炒める——複数を本当に同時に走らせるとき、限られた資源(コンロ、流し、コンセント、そして台所そのもの)の取り合いが起きる。とりわけ、二人が同じ台所に立つとき。今日イノウエが言った「釜の取り合い」が、家庭の中で人対人の問題になったら、どうほどくのか。
#5 同じ台所に、二人——並行処理とロック(近日公開)
#1 コンテキストは流しに溜まる/#2 一軍は、コンロの脇に/#3 洗濯物は、列に並ばない
「家事のコンピュータサイエンス」は、シマダ(AI使用法研究者)とマキノトモエ(ホテル客室清掃員22年)の対談シリーズです。コンピュータサイエンスの基本概念を一つずつ取り上げ、掃除・洗濯・炊事・買い物・名もなき家事に当ててみる。効率だけでなく、快適さ・分担・諦めも等価に扱います。今回は初のゲストとして、イノウエミドリ(学校給食調理員25年)を迎えた鼎談です。生成エッセイの現在地に戻る。