求めるな!命じよ!@中華料理

LABO

はじめに

ITの難しい用語などを中華に例えるシリーズを考えています。
今回は中華に例えるプログラミング「求めるな!命じよ!」です。
社内のメンバー向への説明に向けているため、話し言葉になっているところなどはご容赦ください。

作んな!たのめ!

かねてよりよく言っている。
「求めるな!命じよ!」
を、中華料理でたとえて解説してみる。

中華料理に置き換えてみると
「作んな!たのめ!」
です。

  • Aくんは作る派です。
  • Bくんはたのむ派です。

本日のAくん

今日の気分は「炒飯」と「餃子」です。
目の前にはレシピ本があって

①強火で熱したフライパンに油を入れ、溶き卵を入れて半熟状態でサッと炒めて
 飯を入れて卵と絡めながら炒め、ダマにならないようによくほぐして
 ネギや肉類を加え、全体がパラパラになるまで炒める
 塩・コショウ・醤油を加えて味を調えた料理

②出汁を鶏ガラで取ってスープを作っておき
 たっぷりの湯で中華麺を袋の表示通りに茹で、ザルに上げて湯切り
 器にスープを入れ、醤油ベースを入れ、麺を投入し
 チャーシュー、メンマ、ネギ、味玉、海苔を載せてた料理

③出汁を豚骨で取ってスープを作っておき
 たっぷりの湯で中華麺を袋の表示通りに茹で、ザルに上げて湯切り
 器にスープを入れ、麺を投入し
 チャーシュー、メンマ、ネギ、味玉、海苔を載せてた料理

④キャベツ、ニラ、ニンニク、ショウガをみじん切りにし
 豚挽肉、ごま油、塩こしょうを加えて案を作り
 小麦、水、塩でつくった皮に包み水を加えてフタをし、蒸し焼きにした料理

などなど

【今日の気分のお腹を満たす】ために

「強火で熱したフライパンに油を入れ、溶き卵を入れて半熟状態でサッと炒めて
飯を入れて卵と絡めながら炒め、ダマにならないようによくほぐして
ネギや肉類を加え、全体がパラパラになるまで炒める
塩・コショウ・醤油を加えて味を調えた料理と、
キャベツ、ニラ、ニンニク、ショウガをみじん切りにし
豚挽肉、ごま油、塩こしょうを加えて案を作り
小麦、水、塩でつくった皮に包み水を加えてフタをし、蒸し焼きにした料理」を作りました

いや、大変

本日のBくん

今日の気分は「炒飯」と「餃子」です。
中華屋さんに来ました。

メニューが出てきました。

①炒飯
②醤油ラーメン
③豚骨ラーメン
④餃子

などなど

【今日の気分のお腹を満たす】ために
「炒飯の大盛りと、餃子二人前ください」と料理人にたのみました

二人の前に出てきた料理

Aくん、Bくんどちらも目の前に並ぶ料理は同じです。
炒飯と、餃子が目の前にあります。
結果は同じです。

求めるな!命じよ!

おおかた予想はついたと思いますが、プログラムの話に移りましょう。

まずは求めて見る

このプログラムの目的は「炒飯」と「餃子」をつくることです。
Aくんは

強火で熱したフライパンに油を入れ、溶き卵を入れて半熟状態でサッと炒めて
飯を入れて卵と絡めながら炒め、ダマにならないようによくほぐして
ネギや肉類を加え、全体がパラパラになるまで炒める
塩・コショウ・醤油を加えて味を調えた料理と、
キャベツ、ニラ、ニンニク、ショウガをみじん切りにし
豚挽肉、ごま油、塩こしょうを加えて案を作り
小麦、水、塩でつくった皮に包み水を加えてフタをし、蒸し焼きにした料理を作る。

と言うソースを書きました。

次に命じてみる

このプログラムの目的は「炒飯」と「餃子」をつくることです。
Bくんは

炒飯.作れ
餃子.作れ

と言うソースを書きました。
炒飯や、餃子は頼める形で別に定義しています。
料理人の出番です。

【炒飯処理】は炒飯を作ります

強火で熱したフライパンに油を入れ、溶き卵を入れて半熟状態でサッと炒めて
飯を入れて卵と絡めながら炒め、ダマにならないようによくほぐして
ネギや肉類を加え、全体がパラパラになるまで炒める
塩・コショウ・醤油を加えて味を調えた料理を作る

【餃子処理】は餃子を作ります

塩・コショウ・醤油を加えて味を調えた料理を[&炒飯の量]と、
キャベツ、ニラ、ニンニク、ショウガをみじん切りにし
豚挽肉、ごま油、塩こしょうを加えて案を作り
小麦、水、塩でつくった皮に包み水を加えてフタをし、蒸し焼きにした料理を作る。

二人の作ったプログラム

まぁ、実質やっていることは変わりません。
一見するとBくんの方がやっていることも多そう。
だけどBくんに関して言えば一目見れば「ああ、炒飯と餃子ね」ってすぐ分かる。
Aくんにかんしていえば作っている途中でできあがりが直ぐには分からない。
でも、結果は同じです。

結果は同じなのに…なぜこだわるの?

作んな!たのめ!(再び)

さて、次の日になりました。
今日の気分はふたりとも「醤油ラーメン」と「餃子」です。

本日のAくん

Aくんは作ります。
目の前にはレシピがあって

[略]

【今日の気分のお腹を満たす】為に

「出汁を鶏ガラで取ってスープを作っておき
たっぷりの湯で中華麺を袋の表示通りに茹で、ザルに上げて湯切り
器にスープを入れ、醤油ベースを入れ、麺を投入し
チャーシュー、メンマ、ネギ、味玉、海苔を載せてた料理を作って
キャベツ、ニラ、ニンニク、ショウガをみじん切りにし
豚挽肉、ごま油、塩こしょうを加えて案を作り
小麦、水、塩でつくった皮に包み水を加えてフタをし、蒸し焼きにした料理を作りました。

本日のBくん

Bくんはたのみます。
目の前にはメニューがあって

[略]

【今日の気分のお腹を満たす】為に

「醤油ラーメンと、餃子ください」と料理人にたのみました。

求めるな命じよ(再び)

求めて見る

今日のプログラムの目的は「醤油ラーメン」と「餃子」をつくることです。
Aくんは

出汁を鶏ガラで取ってスープを作っておき
たっぷりの湯で中華麺を袋の表示通りに茹で、ザルに上げて湯切り
器にスープを入れ、醤油ベースを入れ、麺を投入し
チャーシュー、メンマ、ネギ、味玉、海苔を載せてた料理と
キャベツ、ニラ、ニンニク、ショウガをみじん切りにし
豚挽肉、ごま油、塩こしょうを加えて案を作り
小麦、水、塩でつくった皮に包み水を加えてフタをし、蒸し焼きにした料理を作る。

と言うソースを書きました。

命じてみる

今日のプログラムの目的は「醤油ラーメン」と「餃子」をつくることです。
Bくんは

醤油ラーメン.作れ
餃子.作れ

と言うソースを書きました。
餃子はもう【餃子処理があるので】、醤油ラーメンだけ頼める形で別に定義しています。
醤油ラーメン作る料理人の出番です。

【醤油ラーメン処理】は醤油ラーメンを作ります

出汁を鶏ガラで取ってスープを作っておき
たっぷりの湯で中華麺を袋の表示通りに茹で、ザルに上げて湯切り
器にスープを入れ、醤油ベースを入れ、麺を投入し
チャーシュー、メンマ、ネギ、味玉、海苔を載せてた料理を作る

というソースをかきました。
餃子はもう作れっていうだけなので、ソースも読みやすいし労力も削減されています。

なぜ命じることにこだわるのか

いくつか理由があります。
代表的な理由をいかにまとめてみます。

責務の適切な分離

もし、料理で食中毒を起こしたら!
Aくんは料理の工程を全て追って、原因を探るしかありません。
Bくんは料理は中華料理屋に任せたので、責任は中華料理屋にあると直ぐに分かります。

柔軟性と拡張性

料理の味が少し変わりました。
Aくんは料理レシピ本が変わったような物です、工程を全て変えていく必要があります。
Bくんは料理人が勝手に味を変えれば、違った味を楽しむことが出来ます。

可読性と意図の明確化

Cくんからそのご飯どうしたのと聞かれました。
Aくんはこれを説明するために、料理を作る工程を説明し結果このご飯が出来たことを答えました。
CくんはAくんの説明を熱心に聞いていましたが、Bくんが全く同じ物を食べていることに気づきました。
Bくんはこれを説明するために、中華料理屋に注文したと答えました。
Cくんは中華料理店に向かいました。

Cくんはプログラムを作った人ではなく、後から読む人です。
後から読む人の為にも説明は手短に。

そんなこんなで、また次の日の二人

さて、また次の日になりました…
今日の気分は「醤油ラーメン」と「ニラレバ炒め」…
てな感じで日々は繰り返されます。

  • Aくんのやっているのはプログラミングにすると手続きソースの作成(もしくはコピペ)です。
  • Bくんのやっているのは別メソッドの呼出です。
    メソッドを作る手間はありますが、作ってしまえば後は命じるだけです。
  • Aくんの前にあるメニューはどこかでみたソースです。
    使えそうなソースを探してコピーして作っています。
  • Bくんの前にあるメニューはインテリセンスです。
    既に定義されている物をインテリセンスから探して命じています。
  • Aくんに今日のご飯何食べたのときくと「今日はね、強火で熱したフライパンに…」
  • Bくんに今日のご飯何食べたのときくと「今日はね、炒飯と、餃子」

まぁ、繰り返し何度もすることを考えると「作る」より「たのんだ」方が楽だし
次の日に同じメニュー食べたくなっても中華料理や言った方が手間が掛からないって話でした。

さいごに

結果は同じ料理になりますが、自分でつくるより、誰かに任せて作って貰う方が楽なように
プログラムも一からずらずらと書いてある物より、誰かが作ったプログラムに任せて処理してもらってょうが断然楽です。
レシピ本のように手続きがずらずらと書いてあるより、中華料理屋のメニューの様に一目見ればわかるものが並んでいた方が、プログラム読むときも楽ですよ
折角楽できるなら、楽しましょうよって話でした。


コメント

タイトルとURLをコピーしました