自販機からお弁当が頼めるサービス「宅弁」の設計思想

こんにちは、ぐるなびで開発を担当している海系エンジニアのホーリーと申します。 休日は、イルカやクジラと泳ぐため世界中を旅しています。夏場は週末、島に行っていることが多いです。ここ最近では、毎年通っている御蔵島で、複数頭のイルカの赤ちゃんと泳いできて、いい歳したおっさんなのですが、癒されてます。

今回は、ぐるなびが新しく始めたお弁当注文サービス「宅弁」のシステムとその設計思想についてご紹介したいと思います。

突然ですが、ランチどうしてますか?

勤めている会社により事情はさまざま。社員食堂で済ませるか、外に食べに行くか、お弁当にするか……。

特にお弁当は自宅から持ってくる、コンビニや弁当屋に買いに行く、仕出し弁当などなどさまざまな選択肢があります。自分の周りでは、コンビニや弁当屋の割合が多いように思います。

でも忙しくて買いに行く時間がない日もありますよね。そんな時にお役立ちする新しいサービスを開始しました!

名づけて「宅弁」。

サントリーとぐるなびが手を組み誕生した、オフィスの自動販売機からお弁当を注文できるサービスです。

[余談] 20年オススメする銀座8丁目〜新橋エリアのランチ

 自分は外食派で、11:45にはオフィスを抜け出し、お店に並ばずサクッとランチを済ませています。ここで自分の縄張りの銀座8丁目から新橋にかかるエリアの個人的ベストの3店をシェアします!自分が新人だった20年前から営業しているお店です。 訪れた際は、ぜひ立ち寄ってみてくださいね。

オフィス内の自販機でお弁当が購入できる「宅弁」

すでにネットやスマホでピザやお弁当は購入できるものの、注文できる個数に条件があったり、配達料が高かったり、なかなかランチでは利用しづらいと感じています。

一方、「宅弁」は自販機にお金を入れて専用のお弁当購入ボタンを押すだけ。自販機がお弁当注文を取りまとめ、まとまった個数を店舗に発注。購入されたお弁当をまとめて自販機の設置先のオフィスに配達します。

宅弁システムイメージ

8時~10時の間、自販機のお弁当購入ボタンがアクティブになり購入受付状態になります。10時15分に購入データが自販機からサーバーに吸い上げられ集計が行われます。データは自販機に組み込まれている通信端末からモバイル回線を経由して渡しています。

10時30分に、集計データを元にぐるなびのシステムで注文書を作成し、10時45分までにお弁当販売店舗へ作成・配送依頼を送ります。 注文を受け取った店舗がお弁当を作り、11時45分までに自販機の設置先オフィスまで配達を行います。

購入・受け取りはすべてオフィス内で完結するため、もうエレベータを待ったり、雨の中、コンビニまで走っていく必要はありません!店舗の人も注文集計の手間が省けるため、購入する人も店舗の人もWIN-WINなわけです。

フェイルセーフな思想に基づいたシステム設計

システム的にはあまり複雑なことは行っていないシンプルなものです。とはいえ、このシステムでは、店舗に注文情報が届くまでの間のどこかでエラーになると大変な問題になります。

自販機でお弁当が購入できるタイミングはお弁当が配達される当日の朝になります。注文から配達されるまでの時間が短いため、何か問題が起こった場合、解決するために取れる時間がほぼありません。

当然ながら、何かしらエラーがあり、注文が店舗に届かないとお弁当は配達されません。 購入したはずのお弁当が届かなかったら困ります。人によっては激怒するでしょう。

そんなことにならないように、フェイルセーフの思想でシステムの設計が行われています。

フェイルセーフ(フェールセーフ、フェイルセイフ、英語: fail safe)とは、なんらかの装置・システムにおいて、誤操作・誤動作による障害が発生した場合、常に安全側に制御すること。またはそうなるような設計手法で信頼性設計のひとつ。これは装置やシステムが『必ず故障する』ということを前提にしたものである。

出典:フェイルセーフ - Wikipedia

今回のシステムでのフェイルセーフの実装の一例を挙げます。

パターン 前提とする障害 安全策
A 自販機から個数データが送られない 個数データがない場合は一定数のお弁当を配達する。停電の場合も同様に対応。
B 注文データの販売金額が正しくない 自販機の設定ミスによって起こる。注文システム側(図:宅弁システムイメージの③)の設定を正として注文を行い、アラートを上げる。
C 店舗への注文送信が完了しない 監視処理で一定時間(15分)で終了しないとアラートが上がる。人手で注文対応。

たとえばパターンA・自販機で購入された個数を正しく転送できないケースが起きたとします。

自動販売機から店舗まで注文が届くまで、さまざまな回線・機器を経由しているので、通信経路のどこかで何らかの問題があったら、店舗に注文できず配送も不可能になります。

そんなことがないように、万が一自販機から購入数が取得できなかったとしても一定数のお弁当を配達するようにシステムを実装しています。あわせてお弁当配達先へのフォローなども自動で行われるようになっています。

宅弁システム フェイルセーフイメージ

もしこのサービスでフェイルセーフを採用しなかった場合、障害時、なんらかの対応がされるまで時間のロスが大きくなっていたと思います。 障害検知をして、連絡を受けた担当者が都度対応をすることになりますので、細やかな対応は可能になりますが、どうしても時間がかかるでしょう。注文~配達まで、非常にタイトな時間で処理しなければいけないシステムなので、サービス運営をする上で致命的です。

そのため、挙げた例以外にも物理的に起こりうる問題などをピックアップして、何が起こっても対応できるように準備しています。

障害の発生をすべて防ごうとすると、時間も費用も掛かってしまいます。そのため、障害は起こるもの、と考え方を変えてみると対策が容易になることも多いです。

結果としてユーザーに提供すべき内容は、障害が発生しても変わらないので、フェイルセーフの思想でシステム設計をすると、サービスに関わる多くの人を幸せにできるのではと思います(当然フェイルセーフでは済ませられないケースもあります)。

この記事をお読みの方にも、突然のシステム障害等で、予定外の残業や休日出勤を強いられたりしている方がいるかもしれません。サービス・システム設計時にフェイルセーフという思想を盛り込めれば、予定外の仕事を減らせるかも。

お昼は「宅弁」で決まり!

外食派の自分も雨の日に注文してみました!「焼肉 宝山 2種味比べ牛たん弁当」です。

焼肉 宝山 2種味比べ牛たん弁当

やっぱり、わざわざ傘を持って歩かなくていいのが楽でしたね。飲食店の作るお弁当ということもあり、とっても美味しかったです!

もし皆さんのオフィスに「宅弁」の自販機が設置されたら、ぜひお弁当を購入してみてください!


お知らせ
ぐるなびでは一緒に働く仲間を募集しています。


ホーリー
1994年頃、初めてインターネットと出会い、今に至るまでネット系サービスの案件に携わっています。初めて使ったWEBブラウザはNetscape0.96。存在が希少になりつつある(?)WEB1.0未満エンジニア。