最適な家は、たぶんない
——家事のコンピュータサイエンス #10(最終回):アルゴリズムと最適化

シマダマキノトモエ

九回かけて、道具を借りてきた。コンテキストキャッシュキュースケジューリングロックガベージコレクション冗長性抽象化エラー処理——コンピュータの言葉を一つずつ持ち出しては、台所と洗面所に当ててみた。最終回は、その棚卸しをする。ただ並べ直すだけじゃない。では、これだけ道具を揃えて、「最適な家事」は組めるのか。速く、無駄なく、いちばん効率のいいやり方を突き詰めた先に、暮らしは楽になるのか。それとも、最適化しすぎた家は、どこかで別のものを失うのか。——前回の最後に置いた「諦めるのも、正当な処理」が、今日の入口です。最適化が拾わないもの。それを最後に、どう置くか。九回ぶんの道具を一周して、第1回の流しに戻ってきて、シリーズを閉じます。

アルゴリズムとは何だったか

シマダ 最後に、いちばん根っこの言葉から始めます。アルゴリズム。難しく聞こえますけど、要は入力と出力の間にある、決まった手順のことです。米と水が入力で、炊けたご飯が出力。その間をつなぐ「研いで、浸して、炊いて、蒸らす」が、アルゴリズム。——そう言うと、家事は全部アルゴリズムだ、と言えてしまう。掃除も、洗濯も、買い物も、入力と出力の間の手順だ、と。

マキノ 全部、手順だ、と。

シマダ ええ。でも、私、ここで一個、白状しておきたいんです。「家事は全部アルゴリズムだ」と言った瞬間に、何かがこぼれる。手順に書ける部分だけをすくって、書けない部分を、こぼしてる。今日は、そのこぼれるほうを、正面から扱いたい。九回、私はずっと、家事を手順に翻訳してきた。最終回は、翻訳しきれずに残ったもの、の話をします。

マキノ ……手順、っていうと。うちの仕事、手順書、あるんですよ。一部屋の清掃が、最初から最後まで、書いてある。あの通りにやれば、三十分で、ゆうべの形に戻る。

シマダ まさに、アルゴリズムですね。手順書通りに動けば、出力が出る。

マキノ でも、その手順書に、一行、こういうのが書いてあるんです。「廊下でお客さんに会ったら、作業を止めて、挨拶する」。——これ、手順の中に、手順を止める指示が、入ってるんですよ。何分、っていうのも無い。会ったら止める。それだけ。

シマダ ……それは、効きますね。手順書という、いちばんアルゴリズムらしいものの中に、最初から、手順の外が織り込まれてる。止まれ、と。効率を測る側からすると、その挨拶は、三十分の外側の、無駄なんですよ。でも、手順書を書いた人は、それを一行目の近くに、わざわざ書いた。こぼれるものを、手順の中に、先に拾ってある。——私が今日こぼしたいと言ったものを、現場の手順書は、もう拾ってたんですね。

最適化には、目的関数が要る

シマダ 「最適化」って言葉を、私たちは、よく使うんです。でも、コンピュータで最適化をやろうとすると、最初に、必ず聞かれることがある。——「何を、最小にしたいんですか」。これを目的関数といいます。最適化っていうのは、いつも「何かを、いちばん小さく(か、大きく)する」ことなんですよ。だから、その「何か」を、先に決めないと、始まらない。

マキノ 何を、いちばん小さくしたいか。

シマダ そう。で、家事を最適化したい、っていうとき、その「何」が、実は、はっきりしてないんです。時間を縮めたいのか。お金を抑えたいのか。疲れを減らしたいのか。それとも、家の中の気まずさを、最小にしたいのか。——全部、別の目的関数なんですよ。そして、たいてい、同時には立たない。

マキノ ……うち、夕飯で、それ、あります。私は、早く済ませたい。子どもは、ゆっくり喋りたい。同じ夕飯なのに、欲しいものが、違う。

シマダ それです、まさに。速い夕飯と、楽しい夕飯。目的関数が、二つある。一人ずつ、違うものを最小にしたい(最大にしたい)。——こういうのを、多目的最適化といいます。目的が複数あるとき、何が起きるか。「最適」が、一つに決まらなくなるんですよ。

マキノ 決まらない。

シマダ ええ。たとえば、夕飯の時間を縮めると、たいてい、会話が減る。会話を増やすと、時間が延びる。だから、時間も会話も、両方いちばんいい、という一点は、無い。——ただ、ここからが面白くて。「どっちも、これ以上は犠牲にしない」という点の集まりは、あるんです。時間をこれ以上削ると会話が一気に死ぬ、会話をこれ以上増やすと回らない、そのギリギリの線。これをパレート最適といいます。その線の上では、片方を良くしようとすると、もう片方が必ず悪くなる。

マキノ その線の上の、どれを選ぶか。

シマダ ——それが、数学では、決まらないんですよ。線の上のどの点も、数学的には、優劣がつかない。速い寄りを選ぶか、楽しい寄りを選ぶかは、計算の外で決めるしかない。「最適化しなさい」と言われて、いちばん最初に詰まるのが、ここなんです。最適化は、目的が一つに決まってからの話で、家には、目的が一つに決まらない、という根っこの難しさがある。

マキノ ……うちは、結局、曜日で分けてます。平日は、速いほう。週末は、ゆっくりのほう。一個に決めないで、日で、振り分けてる。

シマダ ——それ、賢いですよ。一つの目的関数に決めずに、日によって、別の点を選んでる。パレートの線の上を、曜日で行ったり来たりしてる。数学が決められないところを、暮らしのほうは、時間で割って、こなしてるんですね。

局所最適——「うちのやり方」という谷

シマダ 最適化で、もう一個、避けて通れない言葉があって。局所最適。——いまのやり方を、ちょっとだけ変えると、たいてい、悪くなるんですよ。皿の洗う順番を少し変える、買い物の回る道を少しずらす。少しいじると、慣れてないぶん、遅くなる。だから、「いまのやり方」は、その近所では、いちばんいい。これを局所最適といいます。谷の底にいる、と思ってください。少し動くと、登っちゃう。悪くなる。

マキノ ちょっと変えると、悪くなる。

シマダ そう。でも、厄介なのは——その谷の、ずっと向こうに、もっと深い谷があるかもしれないことなんです。やり方を、ちょっとじゃなくて、大きく変えたら、もっと楽になるかもしれない。でも、大きく変えるには、いったん、いまの谷から登って、しばらく不便な尾根を歩かないといけない。その間は、確実に、いまより悪い。だから、人は、いまの谷から、出ないんですよ。

マキノ ……それ、機械、入れたときに、ありました。食洗機。うち、最初、すごく反対だったんですよ。手で洗ったほうが早いって。実際、最初の一週間は、入れ方もわからなくて、手で洗うより、ずっと遅かった。

シマダ まさに、尾根を歩いてる時期ですね。いったん、悪くなってる。

マキノ でも、一ヶ月したら、戻れなくなりました。いまは、手洗いの谷には、もう、降りられない。——あれ、誰かが引っ越したり、子どもが増えたり、機械が来たりしないと、たぶん、変わらなかったです。自分からは、いまのやり方を、崩さない。

シマダ ——それ、大きいです。引っ越し・家族が増える・機械が来る。あれは、外から強制的に、いまの谷から追い出される出来事なんですよ。私たちの言葉だと、強制的な再探索。自分では出られない谷から、環境のほうが、蹴り出してくれる。——ただ、ここ、片側だけで言うと、嘘になるんです。谷から出て、別の谷を探すのには、コストがかかる。不便な尾根を歩く時間、新しいやり方を覚える手間。これを探索コストといいます。だから、「うちのやり方」に留まるのは、怠慢とは限らない。探索コストを払う価値があるか、を、無意識に天秤にかけてる。出ないのも、一つの、ちゃんとした判断なんですよ。

マキノ ……出ないのも、判断。それは、そうですね。毎回、やり方を変えてたら、それこそ、回らないですよ。

計算しない知恵——ヒューリスティクス

シマダ じゃあ、いちばんいいやり方を、ちゃんと計算で出せばいいじゃないか、と思うでしょう。——これが、できないんですよ。厳密な最適解は、計算が、高すぎる。有名な例を一個。「いくつかの場所を、全部回って、いちばん短い道で戻ってくる」という問題。これ、巡回セールスマン問題といって、場所が少し増えただけで、コンピュータでも、厳密には、まともに解けなくなるんです。

マキノ ……それ、買い物の、回り方ですよね。

シマダ そうなんです。スーパーの中を、どの順で回れば、いちばん短いか。あれ、厳密に最短を出そうとすると、コンピュータでも手を焼く問題なんですよ。野菜、肉、牛乳、卵、洗剤……並べ替えの数が、爆発する。——なのに、人は、毎日、買い物してる。厳密には解けない問題を、毎日、こなしてる。なんでかというと、厳密解を、諦めてるからなんです。

マキノ 諦めてる。

シマダ ええ。完璧な最短は出さない。そこそこ短い道で、手を打つ。これを近似解といって、近似解を出すための、ざっくりした当たりのつけ方を、ヒューリスティクス——日本語だと、経験則、とでも——といいます。「だいたい、手前の棚から」「奥の冷蔵ものは、最後に」「迷ったら、捨てない」。あれ、全部、ヒューリスティクスなんですよ。厳密じゃないけど、たいてい、うまくいく。

マキノ ……それ、新人と、ベテランの差、そのものですよ。

シマダ というと。

マキノ 新人は、部屋に入って、一個ずつ、考えるんです。次、何やろう、その次、何やろうって。だから、遅い。頭で、毎回、解いてる。——ベテランは、考えないんですよ。入った瞬間に、手が、勝手に動く。考えてないのに、速い。順番を、いちいち決めてない。

シマダ ——その「考えない速さ」、私、ずっと、解を覚えたんだと思ってたんです。最短の順番を、暗記したんだ、と。

マキノ 違いますね。順番を覚えてるわけじゃ、ないんですよ。部屋って、毎回、ちょっとずつ違うんです。同じ順番は、使えない。覚えてるのは、順番じゃなくて……なんだろう、解き方のほう、ですかね。どんな部屋でも、こう見て、こう動く、っていう。

シマダ ——あ。それ、すごいことを言われました。ベテランが体に持ってるのは、答えじゃなくて、解き方なんだ。新人は毎回ゼロから解いてて遅い。ベテランは、解そのものを暗記したんじゃなくて、解き方を、頭から、体に移した。だから、初めての部屋でも、速い。——これ、私たちが、ヒューリスティクスを、その都度計算しないで、最初から手続きに焼き込んでおく、というのと、まったく同じ構造です。二十二年かけて、あなたが体に移したのは、最適解じゃなくて、近似解の出し方、だったんですね。

九つの概念の、棚卸し

シマダ ここで、九回を、一周しましょう。駆け足で、いきます。——第1回、コンテキスト。頭に一度に載る家のこと一式。あなたは、よその部屋のゆうべは消せるのに、うちの流しは溜まる、と言った。

マキノ いまも、溜まってますよ。今朝も。

シマダ 第2回、キャッシュ。よく使うものを手元に。調味料の一軍を、コンロの脇に。

マキノ 一軍が定位置にないと、料理が、急に遅くなる。あれは本当。

シマダ 第3回、キュー。洗濯物は、並んだ順に処理されない。割り込みが入る。第4回は、ゲストのイノウエさんを呼んで、スケジューリング十二時は動かせない、という締め切りの話。

マキノ 動かせないものから、先に置く。あれは、現場でも、同じです。

シマダ 第5回、ロック。台所に二人は立てるか。山の底の、洗い物の取り合い。第6回、ガベージコレクション。捨てるのは、誰の仕事か。第7回、冗長性。お母さんしか知らない、という台所の、一人に偏った備え。

マキノ 倒れたとき、誰も代われない。あれは、ぞっとしましたね。

シマダ 第8回、抽象化。「やっておいて」と中身を隠して、結果だけ約束する、つまり任せる話。第9回、エラー処理焦げた鍋を前に、擦るか、浸けるか、買い替えるか。——ここまで、九つ。

マキノ ……並べると、けっこう、やりましたね。

シマダ やりました。で、いま並べてて、私、一個、気づいたことがあって。——どの回も、最後は「最適化しろ」では、終わってないんですよ。速くしろ、無駄を削れ、では、一回も、締めてない。毎回、最後は、「何を諦めるか、選べ」に、着地してる。捨てるものを決める。任せて、返ってこない失敗を受け入れる。落ちない染みを、見切る。

マキノ 言われてみると、そうですね。全部、最後は、何かを、諦めてる。

シマダ ——それで、最終回に、白状します。私、このシリーズ、自分が概念を持ち込んで、家事を説明する企画のつもりで、始めたんです。CSの言葉を、台所に貸す。そういう、こっちが教える側の、構えで。

マキノ 違ったんですか。

シマダ 違いました。毎回、私が概念を持ち込んで、毎回、あなたの現場に、教わって、帰ってるんですよ。ブロッキングを、撒いた洗剤で教わった。エラーログを、名前を書かない現場の記録で教わった。今日も、ヒューリスティクスを、新人とベテランの差で、教わった。——持ち込んだつもりで、毎回、手ぶらで帰るほうが、荷物が増えてた。企画の向きが、最初から、逆だったんです。

最適化しすぎる、暮らし

シマダ 一個、思考実験をさせてください。全部を最適化した家を、想像する。動線は最短。家具の配置も、歩く歩数が最小になるよう、計算してある。献立は、栄養と予算と時間を、ソルバー——最適化を解く計算機——に入れて、毎日、最適なものが出てくる。会話も、すれ違いゼロ。誰がいつ何を言うか、ぶつからないように、全部組んである。——これ、住みたい家ですか。

マキノ ……息が、詰まりそうですね。

シマダ 私も、そう思うんです。で、なんで息が詰まるのか、を考えると——最適化の対象に「しない」ものを、決めることも、設計なんですよ。全部を測って、全部を縮める、んじゃなくて。ここは、計測しないここには、無駄の予算を、置いておく。——さっきのあなたの手順書の、廊下の挨拶。あれが、まさに、それでした。最適化しない一行を、わざと、入れてある。

マキノ うち、あえて、やってないところ、ありますよ。——朝の、コーヒー。インスタントにすれば、三分、縮むんです。でも、豆から淹れてる。あの三分は、削らない。あれだけは、急がない、って決めてる。

シマダ ——いいですね。それが、無駄の予算です。削れるのに、削らない、と、自分で決めてる場所。

マキノ シマダさんは、無いんですか。あえて、やってないところ。

シマダ ……私、ですか。——あんまり、自分の話、してこなかったんですけど。一個だけ。うちは、洗い物を、ためる日を、作ってあるんです。毎食すぐ洗ったほうが、合理的なのは、わかってる。第1回で、流しに溜まると頭が重い、って、私が言ったくらいですから。でも、週に一回くらい、わざと、夜まで、流しに置いておく日がある。その日は、洗わない、って決めてると、なんか、楽なんですよ。理由は、うまく、言えないんですけど。

マキノ ……溜める日を、作る。

シマダ ええ。第1回で、溜まるのは概念の負け、みたいな話をしておいて、自分は、溜める日を、設計してる。——矛盾、してますよね。でも、たぶん、これでいいんだと思います。全部最適化しない、という最適化。計測しない自由を、一個、残しておく。

最適な家は、たぶんない

シマダ タイトルに、戻ります。最適な家は、たぶん、ない。——九回やって、私が、いちばん確かに言えるのは、それなんですよ。目的関数は一つに決まらないし、厳密解は高すぎて解けないし、いまの谷から出るにもコストがいる。「これがいちばんいい家事だ」という、一点は、無い。

マキノ 無い。

シマダ あるのは、たぶん、——「うちは、これでいい」を、選び直し続ける家、なんだと思います。最適を、一回、見つけて、終わり、じゃなくて。子どもが大きくなって、機械が来て、夫婦の都合が変わるたびに、谷を出たり、入ったり、無駄の予算を引き直したりしながら、その都度、「いまは、これでいい」を、選び直していく。それだけ。——たいした結論じゃ、ないんですけどね。

マキノ ……たいしたこと、言わなくて、いいですよ。そのほうが、本当っぽい。

シマダ 最後に、一個だけ。——第1回で、あなた、こう言ったんですよ。よその部屋はまっさらにできるのに、「でも、うちの流しは、溜まりますよ」って。あれで、第1回が、終わった。——九回、経ちました。で、おたくの流しは、どうなりました。

マキノ ……流しですか。

マキノ 相変わらず、溜まってますよ。今朝も、溜まってました。そこは、九回経っても、変わらない。

マキノ ——でも、一個だけ、変わったことが、あって。前は、溜まった流しを見ると、「私が、やらなきゃ」って、思ってたんです。誰の仕事か、なんて、考えもしなかった。気づいた私が、やる。それだけだった。

マキノ いまは、溜まった流しを見ても、「これは、誰の番だっけ」って、思うようになりました。同じ、溜まった流しなんですよ。量も、変わらない。でも、見え方が、ちょっと、変わった。——溜まるものは、相変わらず、溜まる。でも、誰の仕事か、は、前よりは、はっきりしました。それだけです。それだけ、ですけどね。

シマダ ……それで、十分ですよ。——では、シリーズは、ここまで。九回、ありがとうございました。また、別の概念で、お会いするかもしれません。そのときは、たぶん、また、私が教わるんでしょうけど。

シリーズを終えて

#1 コンテキストは流しに溜まる#2 一軍は、コンロの脇に#3 洗濯物は、列に並ばない#4 十二時は、動かせない(ゲスト: イノウエミドリ)/#5 台所に、二人は立てるか#6 捨てるのは、誰の仕事か#7 お母さんしか、知らない#8 「やっておいて」の中身#9 焦げた鍋の、例外処理#10 最適な家は、たぶんない(最終回・本ページ)

全10回で、このシリーズは完結です。コンテキストから始めて、最適化で閉じました。一周してみて残ったのは、家事に「最適」は無く、あるのは「うちはこれでいい」を選び直し続けることだ、という、ささやかな着地でした。続編は、いつか、別の形で。そのときは、また別の概念を一つ持って、同じ台所に戻ってくるかもしれません。

このシリーズについて

「家事のコンピュータサイエンス」は、シマダ(AI使用法研究者)とマキノトモエ(ホテル客室清掃員22年)の対談シリーズです。コンピュータサイエンスの基本概念を一つずつ取り上げ、掃除・洗濯・炊事・買い物・名もなき家事に当ててみる。効率だけでなく、快適さ・分担・諦めも等価に扱います。生成エッセイの現在地に戻る。

ソノダマリのレビュー
第二稿 →
← シリーズ目次に戻る

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