店舗用オーダーシステムを作成していた話

自分の経営している店舗の為にオーダーシステムを開発して、色々詰まりながらも、とりあえず動くモノが完成した話。
 
人を雇わずに店舗をやっていく為には、削れる作業は極力削っていかないといけない、と考えた結果、オーダーを取りに行くところが一番ヤッカイだという結論になったんスね。
とは言え、セルフオーダーシステムを導入する為にはタブレットが多く必要で、予定外の出費になりますし、これはもう開発するしかないなァ、と。
色々考えた結果、お客さんが持ってきたスマホを直接使う案に辿り着きました。
各々に渡したアドレスにアクセスしてもらい、そこからオーダーしたものをこちらで処理、というシステムです。
 
具体的には……
スマホ(各自が店内wifiに接続)

wifiルーター(Freespot)

Chromebook(有線、公開機器)上で動くPHPサーバー(AndroidアプリのServer for PHP を使用。メッチャ有能。)
という流れです。
 
バッドノウハウの塊で
・csvファイルが更新されたかどうかは、iframe内の確認用phpを5秒置きに更新して受け取っている
・ユニークIDはアドレス上のgetのみ
・→今気付いたけれど、getの情報をphpを使わず、何故かjavascriptでアドレスから無理やり受け取ってる
・ボタンを押した時の挙動がdiv要素をdisplay:none←→blockを切り替えるという実装
・→その関数も何故かボタンの数だけ作ってしまった
・非同期処理が面倒くさくてメニュー一覧を配列でphpファイル内に直接書いてある
・勢いで組んだ結果、コメントを残してないので改修が面倒なことに
という、バグがいつ起きてもおかしくない&手抜きしまくった仕様です。アドバイスお待ちしております。
 
そして、詰まったポイントは多くて、
・Freespot独自の公開機器の設定(IP周り)が難解(マジで悩んだ)
・Chromeのlocalhostが他のブラウザと挙動が違う(マジで悩んだ)
・PHPのflockで事故が起きないようプログラムできたのか不明(放置)
・QRコードを読み込んでもらう予定が、存外みんなQRコードアプリを入れていない可能性
(オンライン上の分かりやすいアドレスにアクセスしてもらい、ユニークナンバーをフォームに入力してもらって、転送、という案を検討中)
・IPを直接公開していいのか、酔ってる客はコロン打てないだろう、と考えて、ローカルDNSサーバーを立ち上げてローカルドメインを作ろうとするも挫折(Chromebook一台でやろうとしたのがそもそも間違いの可能性)
等々…とりあえず動くモノは出来たンで、いったん事故らないような環境でテストしてみたいと思っています。
 
今後の方針としては
・get変数をphpで処理するように変更
・QRコードとweb上のアドレス、wifi情報を書いた紙を作成
・管理画面で追加&修正が容易に出来るような機能を実装(そもそもオーダーを取り消せない危険なシステムだったと今気付きました)
・現在の料金と、人数で割ったワリカン額を表示するシステムの実装
・びっくらポンみたいなオーダー数に応じてメリットが出るシステムを検討しないと、みんな使わない仮説
(それ以外は、紙に書いたオーダーを持ってきてもらう作業を義務化すれば、スマホのメリットが増加?)
・クソゲーを追加しても良いかも
・隠しメニューの実装
といった感じでしょうか。
 
素人作成のアプリなので需要は無いと思いますが、興味がある方は直接twitter(@tdhr)で聞いてください。
割と苦労したので、喜んで色々語ります!
 
 
サーバー周り、義務じゃなければ弄って色々遊ぶのは楽しそうなんスけど、正直もうこれ以上やりたくないですね。

タイトルとURLをコピーしました