レシピ表と時間管理

レシピ表で調理時間を計算する方法について検討してみます。

レシピ表の各作業について、行ごとに所要時間を記入すると、 表計算ソフトの機能で合計すれば、調理時間を簡単に計算できそうです。

ただ、次のレシピ表のように

f:id:u360:20180107112328p:plain
ヨーグルト風味のチキンのレシピ表(参考: Cooking For Engineerで思い出した:レシピのデータフロー化 - NextReality)

下味をつけている間に他の材料を切ったり、煮込んでいる間に薬味を切るといったような並行作業があると、 並行作業の短い時間の分は差し引いて計算する必要があります。

レシピ表とレシピ文

レシピ表からレシピ文を生成することについて考えてみます。

表計算ソフトの数式機能やマクロ機能を使ってレシピ文を自動生成することは、 パッと考えて簡単には実現できそうにありません。

AIをうまいこと使えばうまいことできそうな風潮ですが、AIについては詳しくないので、 とりあえず手作業でレシピ文を作ることを考えてみます。

まずは、レシピ表の各作業をいくつかの段落にまとめます。 作業している場所(容器)の切り替わりのタイミングや、加熱のような時間がかかる作業の終わりが目安になると思います。

次に、各段落について、各作業の言葉を上手くつなげて、文にしていきます。

  • 「まな板」や「ボウル」などはレシピ文では省略してよいでしょう。
  • 材料表で「合わせ調味料」のようにグループ化しているものがあれば、それを参照するようにします。
  • ひとつの段落がある程度まとまったら、番号をつけていきます。
  • 後半の段落で前半の段落を参照するときは、「(段落)2の野菜を加える」のように、段落番号と名前で参照するようにします。

これらの処理をプログラミングするのは難しそうに思います。

段落は多くなりますが、1作業を1段落にしてもよいような気がしてきました。

料理のシーケンス 改め レシピ表 1.3

レシピ表は、料理をしないプログラマが考えた、料理の手順を表現した表です。

名前を「料理のシーケンス」から「レシピ表」に変更しました。

f:id:u360:20171224140402p:plain
グレイビーソースハンバーグのレシピ表(参考: ハンバーグ~グレイビーソース添え~ | ヨーロッパ料理 | 料理レシピ集 | ユウキ食品(YOUKI))

書き方は次のとおりです。

  • 1列目には材料を記述します。
  • 2列目には分量を記述します。
  • 1行目には場所(容器)を記述します。
  • 2行目からは各作業を1行ずつ、作業する場所列のセルに記述します。
  • 最初に食材を扱うときは、材料列と場所列のセルに食材名を記述します。
  • 食材を移動するときは、移動先に食材名を記述します。
  • 移動元を空けるときは、移動元に○(白丸)を記述します。
  • 移動元に食材を残すときは、移動元に●(黒丸)を記述し、次の行に残した食材名を記述します。
  • 一番最後に「完成」と記述します。

レシピ表を使えば、レシピの手順の検討や材料漏れの確認がしやすいのではないでしょうか。 レシピ文や画像の自動生成ができるようになったら面白いかなと思います。

CRUD

CRUDは、Wikipediaによると

CRUD(クラッド)とは、ほとんど全てのコンピュータソフトウェアが持つ永続性の4つの基本機能のイニシャルを並べた用語。その4つとは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)である。

wikipedia:CRUD

とのこと。

「R」はRetrieveの略だと思っていたのですが、Readの略とするほうが一般的なようです。

ReadはWriteと対にして読み込み/書き込みとして使いたい用語なので、CRUDの「R」はRetrieveの方がよいかなと思いますが、 Retrieveという単語はあまり馴染みがないので、分かりにくいのかもしれません。

「D」についてはDestroyとする場合もあるようですが、Destroyという単語が恐ろしいのであまり使いたくありません。 プログラミング言語によっては、Deleteが予約語になっている場合もあるので、無理矢理Destroyを当てはめてみたという感じがします。

CRUDは、データベースへのアクセスの分析に使われることが多いようですが、SQLのINSERT,SELECT,UPDATE,DELETEと 微妙に合っていたりズレていたりするので、混乱しやすいように感じます。 データベースへのアクセス分析するときは、CRUDではなく、I(nsert),S(elect),U(pdate),D(elete)でよいように思います。

CRUDは「クラッド」と言いやすいので、使いたくはなりがちですが。

まあ、CRUD図とかCRUD分析とかはほとんどしたことがないのですが。

料理のシーケンスと材料表

料理のシーケンスでは、左側の材料列と分量列が材料表にあたります。

料理のシーケンスに手順を記述していくときに、それまで登場していない食材が現れたら、 材料列に食材名を記述するようにすると、材料の記述漏れなく料理のシーケンスを作成できます。

パスタを茹でるときの熱湯や揚げ物の油など分量外のものは、材料には書かずに、 作業の文中に記述するとよいでしょう。

分量列については、ひととおり手順と材料を書き終わったら、 最後にまとめて書いていくのが楽だと思います。

料理のシーケンスの材料列の順番は、手順上の登場順となります。 材料表を作成するときは、メインの食材が上位になるように材料表の順番を整理するとよいでしょう。

料理のシーケンスには、「だし」、「醤油」、「みりん」をグループ化して「A」とするような、 食材をグループ化して名前をつける方法は今のところありません。

材料表でグループ化した名前を使って、レシピ文を短くするような書き方は、 料理のシーケンスでは対応できていないので、食材ひとつひとつについて作業を記述する形になります。

グループ化できないことによって記述量は増えてしまいますが、材料漏れや手順の確認に役立つこともあるので、 当面はこれでよしとします。

料理のシーケンスと表計算ソフト

料理のシーケンスは、図ではなく表です。 ExcelやNumbersといった表計算ソフトで作成します。

u360.hatenablog.com

フローチャート、データフロー図、シーケンス図のような図を描くと、見て分かりやすいですが、 うまく描くにはそれなりのツールが必要で、作成するのに時間もかかります。

特に、あまり本質的とは言えない、図形の形や配置の調整に手間取られてしまいます。

料理のシーケンスでは、作成に手間をかけたくなかったので、 見映えは犠牲にして、編集しやすさを優先しました。

なので、セルの幅や高さや罫線は気にしなくてよいと思います。