とつぜんですが、料理できるエンジニアってかっこよくないですか。
でもエンジニアって料理下手ですよね(偏見)。
これって、掛け算用の処理ユニットを持っているため掛け算は得意だけど、でも割り算は苦手なIC(本当にそんなものは無いとは思うが)と同じだと思いませんか?
何が言いたいかと言うと、エンジニアはコードを書くユニットや設計をするユニット、レビューをするユニットを持っていても、料理をするためのユニットを持っていないと考えられます。
なので汎用処理用のユニットで料理をする必要があります。反対に、料理が得意な人は料理をするためのユニットが脳の中にあるんですよね、たぶん。
じゃあこう考えるわけです。料理を、ある程度エンジニアが普段慣れている処理系に変換しといてあげれば、エンジニアは料理をそこそこの性能で実行できるのではないか、と。
つまりこれは、料理のレシピを厳格なプログラミング言語として定義すれば、みんな料理ができるようになるのでは?というネタ系プロジェクトです。
料理を表現するために必要なことを考えよう
定義
まず、料理とは何かを最初に決めておきましょう。ぼくの場合は以下のようになりました。
複数の食材に対して、「なんらかの調理」と「混ぜる・載せる。盛り付けるなど組み合わせる」を適用させて最終的に目標の料理をつくること
今回は、この情報を文字だけで表現できることを目標とします。
必要な要素
そして、今度は料理をする上で必要な情報を以下のように抜き出してみました。
また、名前が複数あるものは、今後一番右(料理・おかずなら料理)で呼び方を統一しようと思います。
要素 | 簡単な定義 |
---|---|
料理・おかず | 最終的に作りたいオブジェクト群 |
食材・調味料 | おかずを作るために必要なオブジェクト群 |
調理器具 | レシピの中で使用する道具群 |
汎用資源 | ガス、電気など調理器具が必要なエネルギー |
レシピ | おかずを作る一連の手順 |
これさえあれば、料理を表現できそうですね。
それでは、要素ごとにどんな情報を保持しているか、考えてみましょう。
料理
最終的に出来上がる料理ですね。
料理自体は何かに使用するものでは無く、むしろその料理に対して他の要素がぶら下がる形になるでしょう。言うなれば構造体やクラスの名前みたいなものです。
ココらへんで飽きてきた‥