本記事はあくまで『料理の四面体』を呼んだ読書感想文的なポエムです。
料理や技術に関する内容について、誤りが含まれる可能性があります。あらかじめご留意ください。
もう1月以上前となる2024年末、
Xで↓のようなポストがバズっていました。
>私、突然理解したんだけど、茹でるとか蒸すとか揚げるとか炒めるとかオーブンで焼くとかの諸々の調理方法、熱伝導の媒体を何にするかという違いなのか!
水とか油とか空気とか。
確かになぁと思うところもあり、一応料理が趣味の私は反応も見てみることに…
> 「料理の四面体に独力でたどり着いた人だ」
> 「玉村豊男『料理の四面体』がまさに、(中略)料理の分類/体系化し直そうと試みた本でした。(後略)」
語調は柔らかいものの、そこにあったのはX特有の知識のマウンティング。
料理の四面体 玉村豊男
Amazonで498円
Amazon.com
2024年は料理モチベーションが低下していたこともあり、
一度インプットでもして料理熱を再燃させるかと、即日Kindleで購入しました。
『料理の四面体』では "料理のレパートリーの増やし方" について、気持ちよく言語化されています。
私は割と同じようなカテゴリの料理を作ってしまうタイプなので、私の料理への取組み方をより広げてくれるように感じました。
本書では、調理方法を"火・水・油・空気"の観点から分類し、料理を "調理の組み合わせ" のように扱います。
本文はエッセイ風で、この理論もざっくりした経験則でまったく堅苦しさはないのですが、概念自体はかなり理系的です。
「あらゆる調理方法を4つの変数で表現し、調理方法を繰り返し適用する… 」
プログラマー的には、この考え方は "関数合成" に見えます。
そう考えると、"料理の四面体"はすとんと私の中に落ちてきました。
本書で主張されていることをプログラマー的に翻訳すると、
1. 既存のレシピを合成された関数だと捉えると、その引数を変えるだけで様々な料理が生まれる。
2. レシピ中の関数をそれぞれ別の関数で置き換えていけば、様々な料理が生まれる。
というような内容になります。
本記事では、
『料理の四面体』自体についての説明と、
レシピが関数合成とは一体何を言っているのか
について少しだけ嚙み砕いて説明します。
本書では、「料理のレパートリーを増やすためにレシピをそのまま暗記するだけでは、料理本を何冊買っても足りることはないだろう」という問題をきっかけに、あらゆる料理の一般的原理を得ることが目的とされています。
その見つけ方として、世界中の料理を食べ歩き、その作り方から各地の料理の共通性を見出していく方法がとられている、旅行記とレシピが混ざったエッセイ風味の本です。
最終的に、紹介した多様な料理の共通性をまとめた "料理の四面体" が提唱されます。
玉村氏の文体のおもしろさと、料理方法をとらえる視点の面白さから飽きずに読むことが出来ました。
さて、『料理の四面体』本文では 大量の例示→モデリング という構成となっていますが、
ここではいきなり結論である"料理の四面体"モデルを説明します。
とは言ったものの、内容はまさに冒頭のまえがきで引用した内容そのものです。
> 私、突然理解したんだけど、茹でるとか蒸すとか揚げるとか炒めるとかオーブンで焼くとかの諸々の調理方法、熱伝導の媒体を何にするかという違いなのか!
水とか油とか空気とか。
-- https://x.com/M_Banba_/status/1873694459319537881
一言でいえば、「あらゆる調理方法は、空気(火との近さ)・水分の量・油分の量をどの程度にして、どれだけ加熱するかによって表現できる」のようなことです。
玉村氏は以下のように説明しています。
> われわれは、料理の一般原理に介入してくる基本要素が、次の四つのものであることをたしかめた。
> (1) 火
> (2) 空気
> (3) 水
> (4) 油
> 料理というプロセスは、これら四つの要素がたがいに複雑に絡みあって演じるドラマであるといえる。
玉村氏の定義によれば、火と空気・水・油を結ぶ線は、火と媒介の介在度合いを表します。
わかりやすく、
火と空気を結ぶ辺:焼きものライン
火と水を結ぶ辺 :煮ものライン
火と油を結ぶ辺 :揚げもの(炒めもの)ライン
とも呼ばれています。
そして、火と向かい合う面が、火を通さない「ナマものの世界」です。
> 空気のラインで火の頂点にもっとも近いところは炎が肉を直接なめるような直火焼きであり、
> 水のラインで火の頂点にもっとも近いところはほとんど水蒸気のないような蒸し焼きであり、
> 油のラインのそれはハケでさっと鍋に油を引いたか引かないかといった煎りものである。
> (中略)
> そこからさらに火に近づけると焦げはじめ、結局は炎に包まれて同じものになってしまう。
書籍内で言及されている例としては豆腐があります。
一般的な豆腐料理が、四面体上のどこの点か考えると、下のようになります。
・水を切って出しただけの冷ややっこ:
B 空気
・醤油を垂らして味付けした冷ややっこ:
水-空気(A-B)上を水側に移動させた点 A'
・醤油とラー油で味付けした冷ややっこ:
A' から更に油方向へ寄せた、"ナマものの世界"面上の点
・湯豆腐:
煮ものライン上で3,4割火に近づけた点
・とうふの味噌汁:
煮ものライン上で3,4割火に近づけた点
・油揚げ:
揚げものライン上で1,2割火に近づけた点
・厚揚げ:
揚げものライン上で1,2割火に近づけた点
・焼き豆腐:
焼きものライン上で7,8割火に近づけた点
・田楽:
焼きものライン上で7,8割火に近づけた点
・豆腐のくんせい:
焼きものライン上で1,2割火に近づけた点
豆腐を水を切って出した冷ややっこは空気(B)、そこに醤油を垂らすと水-空気(A-B)上を水(A)側に移動することを意味します。
さらにラー油を振りかければナマものの世界の中ほどに進むでしょう。
水に入れたまま火にかければ水-火(A-火)上で火に近づけたものとなり、これは湯豆腐などにあたります。
同様に、油-火(C-火)上で火に近づければ油揚げです。
そして、ある材料の料理についての四面体を考え、空いている適当な点を考えると、新たな料理を生み出すことができるとしています。
たとえば、空気-火(B-火)上で火に近づけた点を考えれば、それはたっぷりの空気と煙を使って少し加熱した"豆腐のくんせい"を表現できるだろう…といった具合です。
玉村氏は、料理を材料として更に料理することにも触れています。
いったん四面体上で料理したものを、底面の "ナマものの世界" に持ってくれば、さらに様々な料理を表現できるということです。
例えば、揚げだし豆腐は、一旦揚げた豆腐をナマもの世界の点に置き換え、さらに煮ものラインで火に近づけたものとなります。
また、そもそも豆腐は大豆を色々加工したものです。
・揚げだし豆腐:
厚揚げ(揚げ物ライン上の点) を底面に移動し、煮ものラインで火に近づける(だしをかける)
・豆腐:
大豆に何度も料理の四面体を適用したもの
> 「このように、ひとつの材料は、さまざまに四面体の旅を重ね、他の材料と出会いや別れのドラマを演じながら、いろいろな地点で"料理"を作り出す。
本文内では"料理の四面体"の提唱に至るまで様々な料理に触れられましたが、それは"ある料理の工程を他の材料で置き換えるとどうなるか?"という軸に沿って登場しました。
たとえば、刺身は生魚に醤油を合えたものであり、ソースを変えればそれはカルパッチョに、魚のソース合えであるカルパッチョの材料を野菜にすればそれはサラダになること。
あるいは、牛肉のワイン煮込みは「肉を酒で煮込むこと」であり、それは日本でいう"すっぽん煮(日本酒で煮込んだ料理)"であることなどです。
材料と料理の四面体の組み合わせを用いれば、無数に広がる料理のレパートリーから美味を見つけ出せるという内容で本書は結ばれます。
-- 刺身もカルパッチョもサラダ
刺身 : 生魚 +醤油 +わさび +すだち
カルパッチョ: 生魚 +塩 +胡椒 +オリーブオイル +レモン汁
サラダ : 野菜 +塩 +胡椒 +オリーブオイル +ビネガー
-> サラダ:メイン食材 + 塩 + 香辛料 + (酢油)
-- つけものは時間をおいたサラダ
浅漬け: 野菜 + 塩 + とうがらし + 時間
マリネ: 魚 + 塩 + 胡椒 + 時間
-> つけもの:サラダ + 時間
-- 酒煮込みの流用
牛肉のワイン煮込み: 牛肉 + ワイン + 月桂樹 + ...
-> 牛肉 + 酒 + 香辛料
牛肉のすっぽん煮: 牛肉 + 日本酒 + 生姜 + ...
前節で料理の四面体について説明しましたが、本書では料理の四面体モデルだけでなく、世界の料理や調理法について様々な知識が述べられています。
せっかくなので面白かったもののメモを残しておきます。
中国の炒め方の種類:
調理方法というのは、基本的に文化圏に依っている。その国の文化で、ある調理方法がどれだけ使われていたかによって、どんどん細分化していく。英語では日本語の焼くがroastやgrillに分かれたり、英語のboilを日本では茹でるや煮るに分ける。
中国に目を向けると、鍋を使った料理に関する語彙がかなり細分化されている。
炸:たっぷりの油で揚げる
炒:炒める
爆:アツい油で手早く炒める
煎:少しの油で煎り焼く
貼:材料の片面を鍋に貼り付けて焦げ目が付けるほどパリッと焼く
烙:ほぼ油なしで炒る
料理を指す言葉
TBD (後で追記するかも)
ようやくポエム部分です。
『料理の四面体』について、以下のように説明しました。
・あらゆる調理方法は、空気・水分・油分の量と、どれだけ加熱するかによって表現できる
・いったん四面体上で料理したものを、底面の"ナマものの世界"に持ってくれば、さらに様々な料理を表現できる
私は頭が固いので、日本語で説明されてもちょっとわかりません。
プログラムくらいの抽象度が理解しやすいです。
先ほどの説明をITエンジニア的に翻訳すると、以下のようになるでしょう
1. あらゆる調理方法は空気・水・油・火の4変数によって変わる関数(調理関数)。料理は調理関数の引数として材料を与えた返り値。
2. 調理関数を適用した結果について、さらに調理関数を適用できる。
→ 料理は「初期の材料と調理関数の複数適用」によって表され、材料と調理関数の組み合わせによって無数の料理が出来る。
さて、深入りはせず、超簡単にコードで書いておきましょう。
今回はおなじみのPythonを使います。
まず、完成品にも材料にもなる料理クラス `Dish`を用意しましょう。
python
class Dish:
"""
料理クラス。
"""
def __init__(self, name: str):
self.name = name
料理の四面体はどう表現するのが良さそうでしょうか?
まず、調理について考えてみましょう。これは、料理を受け取って料理を返す関数であるのが良さそうです。
ただし、本当はこの定義で良さそうですが、料理の四面体のどの点でも調理があることを考えると少し大変です。
無限の調理関数を用意することになるためです。
ここでは、パラメータも一緒に与えることで適切な調理をしてくれることにしましょう。
「空気・水・油・火のパラメータと料理」を受けとって料理を返す関数`cooking_function`とします。
とはいっても、調理方法ごとに個別の実装は必ず入るでしょう。揚げ物と干物は調理場所も違います。
まぁ今は無視しましょう。
また、調味料と一緒に炒めるといった場合を考え、料理は複数取れるようにしましょう。
本当は「どれが調味料か?」なども判断することを考えると大変そうですが、今は無視です。
python
def cooking_function(dishes: list[Dish],
air: float,
water: float,
oil: float,
heat: float) -> list[Dish]:
"""
調理関数、料理とパラメータを受け取ることで、調理した料理を返す。
"""
# TODO: dishを適切に調理
combined_name = ", ".join(dish.name for dish in dishes)
return [Dish(f"Cooked {combined_name}")]
ようやく料理の四面体です。
料理の四面体にパラメータを与えると、調理方法が定まることを考えると、パラメータを与えると調理関数を返すと良さそうです。
空気・水・油・火を決めると、適切な調理方法を返してくれる関数`culinary_tetrahedron`としましょう。
python
def culinary_tetrahedron(air: float = 0.0,
water: float = 0.0,
oil: float = 0.0,
heat: float = 0.0):
"""
料理の四面体関数。パラメータを元に、適切な調理関数を返す。
- air: 空気の量
- water: 水の量
- oil: 油の量
- heat: 加熱の強さ
料理の四面体上での値を入れる。
戻り値: 材料を取る調理関数
"""
return lambda dishes: cooking_function(dishes, air, water, oil, heat)
忘れていましたが、一般の調理 "揚げ物" や "煮物" はどのように表現されるのでしょうか?
今回は、調理が無限にあることにしているので、ある調理方法は "調理関数の特定のパラメータの場合" が良いでしょう。
ただし、材料は取る必要があるので、これは調理関数のカリー化になります(実際には四面体の段階で行っていますが…)。
python
# 揚げ物関数
frying = culinary_tetrahedron(oil=0.5, heat=0.5)
# 煮物関数
simmering = culinary_tetrahedron(water=0.5, heat=0.5)
# 炒め物関数
stir_frying = culinary_tetrahedron(oil=0.3, heat=0.7)
# 煎り物関数
pan_roasting = culinary_tetrahedron(oil=0.1, heat=0.9)
# グリル
grilling = culinary_tetrahedron(air=0.2, heat=0.8)
# ロースト
roasting = culinary_tetrahedron(air=0.5, heat=0.5)
# 干物
sun_drying = culinary_tetrahedron(air=0.9, heat=0.1)
ようやく準備が出来ました。
いったん、揚げ出し豆腐を作りましょう。
python
# 材料・豆腐と出汁
tofu = [Dish("Tofu")]
dashi = [Dish("Dashi")]
# 揚げて出汁と一緒に煮る
fried_tofu = frying(tofu)
agedashi_tofu = simmering(fried_tofu + dashi)
揚げだし豆腐は美味しいです。
ではなく、我々がやりたいのは『料理の四面体』の理解でした。
1. あらゆる調理方法は空気・水・油・火の4変数によって変わる関数(調理関数)。料理は調理関数の引数として材料を与えた返り値。
2. 調理関数を適用した結果について、さらに調理関数を適用できる。
1.は調理関数で定義しました。
2.をもう少し掘り下げましょう。
今、手続き的に書いていますが、2に合わせましょう。
ついでに、そもそも図にある煮物や燻製は調味料やチップが必要なので、材料を足すのも調理としておきます。
※調理関数の定義時にしれっと書いてはいます
python
agedashi_tofu = simmering(frying(tofu) + dashi)
出汁を混ぜるのが気になるなら、関数化しておけば良いでしょう。
python
simmering_with_dashi = lambda dishes: simmering(dishes + ["Dashi"])
agedashi_tofu = simmering_with_dashi(frying(tofu))
よいですね。
まぁ、pythonでは関数合成ではなく逐次実行になっていますが、些細なことです。
ちなみに、関数型言語であるHaskellなどではもっと気持ちよく書けます。
引数はカッコで囲まなくてよく、.で関数合成ができ、式中の関数適用の優先度を$で変えられます。
以下はイメージコードです(色々足りない)。
haskell
agedashiTofu = simmering . (dashi ++) . frying $ tofu
-- $は優先度が低い関数適用演算子 ないと先にfrying tofuされそうになり、構文エラー
agedashiTofu = (simmering . (dashi ++) . frying) tofu
-- .は関数合成
agedashiTofu = simmering (dashi ++ frying tofu)
長い道のりでした。しかしながら、四面体の理解を経て、我々が本当にしたいのは一度の料理ではなく、無限の料理のレパートリーを作ることです。
> 材料と料理の四面体の組み合わせを用いれば、無数に広がる料理のレパートリーから美味を見つけ出せるという内容で本書は結ばれます。
もう少し具体例を見てみます。試しに、カルパッチョを作ってみましょう。
調理関数を追加します。魚を切ったり、調味料を追加したりです。
※魚を切る関数にギョッとする気持ちは抑えてください。魚を空気に触れされたり、細切れの魚を材料を使うことにしたり、気合で色々な表現が出来るはずです。
※ところで、調味料の追加はソースなどの場合、厳密に考えると水分の追加や油分の追加に相当しそうです。
一旦パッションで乗り越えましょう。材料が水・油・空気に入るかどうかは、熱量次第でも変わりそうです。
python
# 切り身にする関数
cutting = culinary_tetrahedron(air=0.1)
# 調味関数 (一旦材料の性質は無視)
seasoning = lambda dishes, salts: culinary_tetrahedron()(dishes + salts)
# 酢油などをふりかける系関数 (一旦材料の性質は無視)
dressing = lambda dishes, sauces: culinary_tetrahedron()(dishes + sauces)
# サーモンのカルパッチョ
salmon = [Dish("salmon")]
carpaccio_spices = [Dish("salt"), Dish("pepper")]
carpaccio_sauces = [Dish("olive oil"), Dish("lemon juice")]
salmon_carpaccio = dressing(seasoning(cutting(salmon), carpaccio_spices), carpaccio_sauces)
カルパッチョが出来ました。カルパッチョの枠組みは、刺身やサラダと同じです。
python
# カルパッチョ関数
def carpaccio_func(dishes: list[Dish], spices: list[Dish], sauces: list[Dish]) -> list[Dish]:
sliced = cutting(dishes)
seasoned = seasoning(sliced, spices)
dressed = dressing(seasoned, sauces)
return dressed
sashimi_spices = [Dish("wasabi")]
sashimi_sauces = [Dish("soy sauce")]
sashimi = carpaccio_func(salmon, sashimi_spices, sashimi_sauces)
salad_ingredients = [Dish("tomato"), Dish("green leaf")]
salad_spices = [Dish("salt"), Dish("pepper")]
salad_sauces = [Dish("olive oil"), Dish("wine vinegar")]
salad = carpaccio_func(salad_ingredients, salad_spices, salad_sauces)
無事、カルパッチョと同じ手順で刺身とサラダを作ることが出来ました。
刺身に最初から醤油とワサビがかかっているのは些末なことです。
食事を楽しむ気持ちが、最高の調味料です。
調理関数を変えれば違うモノになることは言うまでもありません。
試しに、先ほどの酢油をかける関数`dressing`を、ドレッシングをかけてから少し時間をおく関数にします。
ところでこれは、dressing関数と時間経過させる関数を合成して適用させても良さそうです。
食材放置関数と名付けましょう。
カルパッチョを放置します。
※「食材放置関数は四面体のどこに当たるねん」といった指摘ももっともですが、苦情は全て生ものの世界がやさしく包んでくれることにします。今、生ものの世界は全ての調理の出発点であり、生ものから生ものの移動も調理です。
python
# 食材を放置する関数。時間は一旦考えない
time_passes = culinary_tetrahedron()
marinated_salmon = time_passes(salmon_carpaccio)
なんと、浸透圧によりサーモンから水分が出ると同時に、酢で締まり、マリネが出来上がりました。
ちなみに、マリネの語源は海水漬けです。
食材放置関数は食中毒のリスクを持ちますが、上手くやれば漬物なども作れるでしょう。
こうして、色々な関数を組み合わせることで、色々な料理が作り出せることが分かりました。
単純に色々な工程を組み合わせるといっても良いのですが、料理は一連の工程 (決まりきったレシピ) だけで成り立っているのではなく、「工程の重ね合わせ、組み換え」を自由に行っていくものです。
その点、「材料/料理を別の料理に写していく関数適用」というイメージは、私の認識にとても合ったものであり、『料理の四面体』の偉大さに感銘を受けるばかりです。
ここまで読んでいただき、ありがとうございました。
料理の楽しさが伝われば書いた甲斐があったかなと思います。
私は保存食を作るのが好きで、毎週漬物を大量に作って毎日のつまみにしているのですが、季節ごとに変わる野菜を漬けることで、まさに漬物関数の引数を変えて色々な料理をしています。
たまに、干物関数を適用してから漬物関数に通すことで、大根のはりはり漬け や きゅうりのキューちゃん を作ったりしています。
刺身なども切る前に締めることで大きく変わりますし、料理は色々な手間を追加するのが醍醐味かと思います。
もちろん、既存のレシピの構造から別の料理に辿りつくのも良いことです。
本当は
1. レシピのエラーハンドリング(レシピは成功しか書かれていないので)はどう表せる?
2. 今回材料の追加も調理としているが、最初から材料全体を引数にすべきか?
3. どの状態が料理の完成品?完成の捉え方とは?
などなど、色々なことを考えたりしていたのですが、己の力不足でなかなか深めることが出来ず、文章化は出来ませんでした。
そもそも、今回書いたpythonのコードがかなり適当なのも残念です (そもそも料理の四面体の段階で色んな変数を無視しているのもありますが)。
内容はかなり簡単になってしまった気がしますが、とりあえず公開できただけ良しとしたいです。
> 料理の仕方を学ぶ最も効果的な方法は、レシピのステップごとにその背後にある理由を考えて、さまざまな違った答えを探求することだ。
Cooking for Geeks (Jeff Potter 著, 水原 文 訳)
ぜひ、みなさんも調理関数をたくさん適用してみてください。
料理の四面体のおすすめのパラメータを見つけたりしたら、教えていただければ幸いです。