🔀 Crossover
料理 × ソフトウェア開発

料理とプログラミングの共通パターン|レシピと関数が同じ構造を持つ理由

料理とプログラミングは、一見まったく異なる営みに見える。しかしその深層には、驚くほど同じ構造が走っている。レシピは関数であり、仕込みはキャッシュであり、ミザンプラスはアーキテクチャだ。この二つの交差点から見えてくる、思考の普遍的なパターンとは。

#料理 #プログラミング #パターン #創造性 #クロスオーバー #思考法

包丁を握る手と、キーボードを叩く手

料理をする人とプログラムを書く人。

ふたりが同じ部屋に座ったとき、話は噛み合わないことが多い。片方は「火加減」と「塩加減」を語り、もう片方は「処理効率」と「例外処理」を語る。語彙が違う。道具が違う。

だが、問題の構造は——驚くほど同じだ。

レシピは関数である

料理のレシピを書いたことがあれば、気づくはずだ。

レシピは 入力と出力を持つ手順書 だ。

入力: 卵3個、砂糖50g、薄力粉100g、バター60g
手順: [1. 卵を溶く, 2. 砂糖を加える, 3. ...]
出力: スポンジケーキ1台

これはプログラミングの 関数(function) と同じ構造だ。同じ入力を与えれば、同じ出力が得られる——理論上は。

「理論上は」と書いたことに、料理をする人はすぐ気づく。卵の鮮度、バターの温度、室温の湿度、混ぜる速さのわずかなブレ。レシピ通りにやっても、毎回まったく同じスポンジにはならない。

プログラマーはこれを 副作用(side effects) と呼ぶだろう。関数の外部状態に依存する振る舞い。完全に純粋な関数は、現実の厨房には存在しない。

だから熟練の料理人は「レシピを守る」のではなく「レシピを読む」。センサーはレシピの外にある。生地の感触、卵のなじみ具合、オーブンの癖——これらを 実行時の変数 として読み込んで、手順を動的に修正する。

プログラマーがコードをデバッグするように、料理人は鍋の声を聞く。

ミザンプラスはアーキテクチャだ

フランス料理の専門用語に ミザンプラス(mise en place) がある。「すべてをあるべき場所に」という意味。調理を始める前に、食材を切り揃え、計量し、道具を配置する——その準備の哲学だ。

プロの料理人は、調理中に「あ、にんにくを刻み忘れた」と思って手を止めない。手を止めた時点で、タイミングが死ぬ。火加減が崩れ、食材が変化する。

だからすべては事前に整えられている。

これは ソフトウェアアーキテクチャ の設計思想に重なる。

システムを動かす前に、依存関係を整理し、インターフェースを定義し、データの流れを設計する。実行中に「あ、この処理が必要だった」と気づいた時点で、コストは跳ね上がる。コードの途中で設計を変えることは、炒め物の途中でフライパンを変えるのに近い。できなくはないが、代償がある。

ミザンプラスは単なる段取りではない。「どの順序で考えるか」という認識論だ。先に整えておくことで、実行中の判断量を減らす。プログラマーが言う「設計に時間をかける」も、同じ意図を持っている。

キャッシュとしての仕込み

日本料理の厨房では 仕込み という概念が重要だ。出汁を取る、食材を下処理する、煮物を前日から仕掛ける。注文が入ってから一から始めるのではなく、あらかじめ中間状態を作っておく。

コンピュータサイエンスでは、これを キャッシュ(cache) と呼ぶ。

同じ計算を何度も繰り返さなくていいように、結果を保存しておく。次に同じ問いが来た時、保存された答えを返す。それだけで、処理速度が劇的に上がる。

料理の仕込みも、本質的には同じだ。出汁は毎回ゼロから取るよりも、まとめて取って保存しておく方が効率がいい。煮物の下味は、時間をかけて食材に「浸透」させておく——これは計算結果を「保存」することと構造的に等しい。

ただし、キャッシュには 有効期限 がある。昨日の仕込みが今日も使えるとは限らない。プログラミングでも「古いキャッシュが新しいデータと矛盾する」という問題はあらゆる場面で起きる。仕込みの鮮度管理は、キャッシュの整合性管理と同じ問いだ。

デバッグとしての味見

「味見をしながら作れ」と料理の先生は言う。

完成してから「しょっぱすぎる」に気づいても、もう遅い。途中の各段階で確認し、ずれを小さく修正し続ける——これが料理のデバッグだ。

プログラミングの世界には テスト駆動開発(TDD) という手法がある。コードを書く前にテストを書く。小さな単位で動かし、赤を緑にして、また次を書く。完成してから全体をテストするのではなく、都度都度確認しながら進む。

どちらも根底にある哲学は同じだ。フィードバックループを短くせよ

大きく作って全部壊すより、小さく確かめながら進む方が、修正コストが低い。料理人もプログラマーも、経験を積むと「早めの味見」「早めのテスト」の価値を体感的に知っていく。

リファクタリングと料理の進化

同じ料理を100回作ると、プロセスが変わっていく。

「最初はこの順番だったけど、これを先にやった方が洗い物が減る」「この食材はもっと早く投入した方が香りが出る」——実行の中から、より良い手順が見えてくる。レシピは更新される。

プログラミングでは、これを リファクタリング と呼ぶ。コードの外部的な振る舞いを変えずに、内部の構造を改善する。同じ結果を出しながら、より読みやすく、保守しやすい形にしていく。

料理のリファクタリングは、料理人の「体に落ちていく」経験だ。手が最短ルートを覚えていく。頭で考える前に、体が動いている。

コードのリファクタリングは、「読み返した時に意図が伝わるか」という問いだ。未来の自分や他のエンジニアに向けて、書き直す。

どちらも「初めて動いた」ことで満足しない。動いた先に、「これでいいのか」という問いが残る。

創造と制約の同型性

料理とプログラミングは、どちらも 制約の中の創造 だ。

料理は、食材・道具・時間・予算という制約の中で、食べた人の感動を引き出そうとする。プログラミングは、計算資源・開発期間・仕様という制約の中で、ユーザーの問題を解こうとする。

制約がない創造は、創造ではないかもしれない。

詩が5・7・5の音節に縛られるから俳句になる。ジャズがコード進行に縛られるから即興が意味を持つ。料理が食材の性質に縛られるから、火入れが技術になる。プログラムがメモリとCPUに縛られるから、アルゴリズムに価値が生まれる。

制約は創造の敵ではない。制約が、創造の問いを作る。

二つの営みが交差する場所

料理とプログラミングの共通パターンを並べてみると、浮かび上がってくるものがある。

問題を 分解し、手順を 設計し、実行しながら 観察し、結果を 評価し、より良い方法を 探す——この循環が、どちらの営みにも共通している。

ならばこれは、料理とプログラミングだけの話だろうか。

農業も、建築も、執筆も、音楽も、この循環の外にはないかもしれない。人間が「作る」という行為の核心に、この構造が埋め込まれているとしたら——。

料理人がコードを読む必要はないし、プログラマーが厨房に立つ必要もない。

でも、もし相手の言葉で自分の仕事を語れたなら。もし異なる領域が同じ問いを抱えていることに気づいたなら。

その交差点で、何かが生まれるかもしれない。

それが何かは、まだわからない。

Share

🔀 同じカテゴリの記事

🔀 他のカテゴリの記事