飲食店向けオーダーシステムを作った話

要件

飲食店向けレジジステム

いくつかの特殊な要件を含む飲食店向けのオーダーシステムの新規開発。
細かいものもいくつかありますが、大きなカスタマイズ要件としては

・1回目のチャージと2回目以降のチャージで料金が違う
・独自のポイント体系。
・チャージごとにドリンクの注文が必要
・お会計時に会計情報を別システムへFTP + CSV連携(かつAPIでも情報を取りたい)
・特定の注文が入った場合にアクションを起こしたい。

またレジは自動釣銭機に対応していなければなりません。

選定

まず最初に思い描いた図はこうです。


※青が開発範囲

オーダーはクラウドPOSで完結し、お会計が終わったら自分たちで開発したサーバーを経由して外部システムへお会計情報を流すようなイメージです。

まずは上記条件を元に製品のカスタマイズ可能なこと。APIを提供していてカスタマイズ可能なPOSレジを提供しているサービスの選定から行いました。
残念だったのはPOS業界どこの会社も問い合わせに対するレスポンスが非常に悪かったです。

POS CUBE・・・レスポンスなしのため除外
okage ・・・一番正解に近かったが、見送り
まかせてタッチ・・・自動釣銭金未対応のため除外
Uレジ・・・api未対応のため除外
スマレジ ・・・apiも自動釣銭機もあるが、カスタマイズ不可。
Airレジ・・・api未対応のため除外

結果スマレジを採用しました。

レスポンスが悪いという話がありましたがスマレジサポートはしっかりしていて問い合わせにかなり正確な答えをレスポンス良く返してくれたので非常にありがたかったです(だいたい1営業日以内にレスポンスしてくれます)

カスタマイズできない部分はオーダーシステムを自作してapi経由でデータを連携することにしました。

実装

技術

Ruby 2.6.1
Ruby on Rails: 5.2.2
Vue.js: 2.6.6

環境

Google Cloud Platform
- Google Computer Engine
- Cloud SQL
- Cloud Storage
- Cloud Load Balancing
- Firebase

プロジェクトチーム

ディレクター 2名(稼働はほぼ1名)
サーバーサイド 1名(私)
アプリ/フロントエンド 1名
デザイナー 1名

オーダーシステム自作の気になる点としてはレシートプリンタの知識がなかったため、プリンタをどうするかという問題がありました。
スマレジwaiterを使えば、waiterのサーバーサイド印刷の機能でプリンタへ直接サーバーからレシートを印刷できるのでプリンタの制御もスマレジ側の仕組みに乗っかれることになります。


※青が開発範囲

が、自作オーダーシステム管理画面からwaiterへのメニューのapiに金額がなく、メニューの同期項目が名称と出力プリンターの設定だけで、
waiterを使いたいのであれば、自作オーダーシステムの管理画面とwaiterの管理画面両方からメニューを入れる必要がでてきました。
プリンタの制御だけでwaiterを使うのは2重管理になる上に、スマレジPOSだけでなくスマレジ waiter側のシステムの制約も意識しなければならなくなる。
といったことが考えられ、デメリットの方が無視できなかったのでレシートプリンターも自前で制御することにしました。

自作に踏み切るためにエプソンの方にお話を伺うことができてかなり役立つ知識を得られたのがでかかったです。
ちなみにレシートプリンタはTM-m30が、キッチンとかハードに使う場面ではTM-T90KPがスタンダードみたいです。
テストは無償レンタルでTM-m30を利用し、本番環境ではTM-T90KPを利用しました。


※青が開発範囲

またレシート印刷ができるようになったことで、システムで発行した一意な数値をバーコードでお客様伝票に印刷することができるようになりました。
これによりお客様がお客様伝票をレジにもってきたら、そのバーコードを読み取ることでお会計ができるようになります。

また、お会計へのレシートにはapiにあるreceiptMemoという項目を使ってオーダーシステムの獲得と累計会員ポイント数を表示するようにしています。

振り返り

当初の予定ではオーダーシステムもPOSも全て外部サービスを利用して、必要なデータをapiから取得するという構成を想定していたため最終的には全然違う形になりました。

カスタマイズ可能なクラウドPOSを提供している会社を見つけ、
発注したものの全然動いてくれないという状態に直面し、
いつできるのかわからない、こちら側が頑張ってもどうにもならないという状況になり、
プロジェクトが完全にアンコントロールな状態であったため、
プロジェクト運営が困難になることは予想されましたが、プロジェクトの健全度合いが著しく悪い状態であったためお断りをしてもらいました。
自分たちでプロジェクトをハンドリングできるようになって、いろいろと大変なこともありましたが終わってみるとやはり英断だったのかなと思います。

最近は外部の状況に振り回されることがあまりなかったのでやりたきことはそれほど難易度が高くないにも関わらず久しぶりに少し大変な案件でした。
一時期は迷走しすぎて自動釣銭機も自分たちで制御しようかとしたことさえありました。

が、最終的にはスマレジを利用することでかなりいい感じに仕上がったのではないかと思います。

またカスタムオーダーシステムにしたことでお客様の要望をかなり柔軟に取り入れることができ、クラウドPOSを使った場合にくらべるとかなり満足度が高いものになったのではないかと思います。

最後に

オーダーシステム開発のご要望がある方お待ちしております。

Comments