ワンオペ食堂と2人で運営する食堂の違い

ここでオヤジさん一人しかいない食堂と、先ほどの食堂との違いを、料理が運ばれるまでのプロセスで考えてみましょう。

どんな食堂でも、お客さんが入店して料理が提供されるまでの基本的なプロセスが「図表1」の流れになっているとします。

【図表1】注文の流れ/画像=『増補版 教養としてのプログラミング講座』
【図表1】注文の流れ/画像=『増補版 教養としてのプログラミング講座』

オヤジさんが一人しかいない食堂に、二人のお客さんが別々に来て、先に入店したお客さん1が注文に悩めば「図表2」のような流れになりがちです。

【図表2】食堂での接客の流れ/画像=『増補版 教養としてのプログラミング講座
【図表2】食堂での接客の流れ/画像=『増補版 教養としてのプログラミング講座

この場合、C「お客さんが食べたいものを考える」に、注文をとりに行ったオヤジさんが待たされることになったため、厨房に戻れず、以後の進行がストップ。後に入ったお客さん2の流れも滞ってしまっています。これは全ての過程を一人の人間でこなそうとするために起きること。

ではオヤジさんとオカミさんがいる食堂ならどうでしょう。

この場合、接客するのはオカミさんに限定しているので、同時に複数のお客さんをさばきやすくなるはず。

仮に「図表2」のように、お客さん1が長く考え込んでも、オカミさんの判断で、お客さん2の注文を先にオヤジさんに届けることができれば、その場で調理は始まりますから、少なくともお客さん2は早く料理にありつけることでしょう。

役割分担を「パイプライン」と呼ぶ

メニューを貼り出しておくことなどでA→B→Cのプロセスは短縮できるかもしれませんが、オヤジさんとお客さんとのやりとりに時間がかかれば、ロスが発生することは避けられません。

やむなく効率を追求すれば、選択の余地が無いくらいにメニューを限定するか、調理が簡単な、もしくは作りおきのものを提供することになるでしょうから、これではバラエティに富んだ、美味しい料理を提供することは自然と難しくなってしまいます。

接客係と調理係をきちんと分担することで、より調理に力を入れたメニューを提供する。これが食堂ではとても大事なのです。

プログラミング用語では、こうした役割分担を「パイプライン」と呼びます。

パイプラインは複雑な作業工程を細かな単純作業に分割し、効率的に作業を処理する方法として、プログラムの世界で頻繁に用いられている技術です。

そして屋台や食堂の発展形、たとえばフランチャイズ方式のレストランともなると、まさにこういったプログラミング技術のオンパレードになります。