Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
急速に利用拡大を続ける飲食店向けサービスで 店内端末同士のローカル通信を追加設定なしで実...
Search
whatasoda
October 08, 2024
Programming
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
急速に利用拡大を続ける飲食店向けサービスで 店内端末同士のローカル通信を追加設定なしで実現した話
https://asoview.connpass.com/event/331535/
whatasoda
October 08, 2024
More Decks by whatasoda
See All by whatasoda
バランスを見極めよう!実装の意味を明示するための型定義 TSKaigi 2025 Day2 (5/24)
whatasoda
3
1.2k
NestJS で 重たい処理と軽い処理が 干渉しないようにデプロイするには
whatasoda
2
1k
ReactNative アプリ同士の通信のために型情報をサクッと共有した話 #TSKaigi サブイベント
whatasoda
1
1.2k
GraphQL でネストしたクエリを書いたら Apollo Client が無限に計算し続けるようになった話
whatasoda
0
720
Other Decks in Programming
See All in Programming
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
430
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.5k
Lessons from Spec-Driven Development
simas
PRO
0
220
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
0
120
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
300
Agentic UI
manfredsteyer
PRO
0
200
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
230
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
170
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.8k
Webフレームワークの ベンチマークについて
yusukebe
0
180
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
960
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
240
Typedesign – Prime Four
hannesfritz
42
3.1k
Chasing Engaging Ingredients in Design
codingconduct
0
230
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
640
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
We Have a Design System, Now What?
morganepeng
55
8.2k
Color Theory Basics | Prateek | Gurzu
gurzu
0
370
Transcript
© 2024 Dinii Inc. Shota Hatada 2024/10/08 急速に利用拡大を続ける飲食店向けサービスで 店内端末同士のローカル通信を追加設定なしで実現した話 「現場」を支えるシステム開発の難所と実践
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 自己紹介 2020 -
2022 SWE (Frontend) at mercari 2022 - SWE (Platform Team) at Dinii Inc. Shota Hatada (@whatasoda) やっていること • Google Cloud を使ったインフラ整備 • NestJS / React Native アプリの基盤実装 • サービス安定性・拡張性向上に向けた活動 すきなもの/こと • TypeScript • スパラクーア • アニメ・ゲーム
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ダイニーについて(1/2)
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ダイニーについて(2/2)
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ダイニーPOS について
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ダイニーPOS はオンラインPOS(1/3) すべての端末がインターネットを通じてサーバーと通信し、連携している。
ダイニーPOS はオンラインPOS
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ダイニーPOS はオンラインPOS(2/3) サーバー・ネットワーク機器に問題が発生したときにはオフライン環境で機器同士が通信・連携する。
オンラインリソースへの依存が強い
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ダイニーPOS はオンラインPOS(3/3) •
互いを検出できたとしても識別ができない • 設置済みの機器に追加設定を行うのはコスト が高すぎる • 新規セットアップ時のコストは上げたくない • これらのコストはビジネスのスピードに 影響を与える可能性がある オフラインでの接続をする前提で 機器をセットアップしていない
追加設定無しでオフライン連携する
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 通信内容・方法について • レジは単体で注文管理と会計処理が可能
• レジはキッチンプリンターに直接印刷する • ハンディからレジに直接注文情報を送信する • 通信はすべて TCP 通信 → IPアドレスが必要 (図の簡略化のためルーターとの通信は省略) レジを中心に通信網を構築 キッチンプリンター ハンディ レジ ルーター
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 解決にむけたアプローチ プリンター →
ゴリ押し総当たり作戦 ハンディ→ mDNS でスマート解決
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 プリンターを追加設定無しで識別する(1/2) • 焼鳥の伝票は焼き場に、
ビールの伝票はドリ場に印刷する必要がある • SDK で IP アドレスと MAC アドレスは手に 入るが、プリンターの場所はわからない • オンラインのときはサーバーがそれぞれの プリンターを識別できるように設定している 狙ったプリンターに印刷する 焼き場 ドリ場 焼鳥 ビール
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 プリンターを追加設定無しで識別する(2/2) • 設定を取得するための情報はオンライン時に
集めておく • 同ネットワークにあるプリンターに総当りで 設定取得を試みる • MAC アドレスをキーとして設定情報を キャッシュしておく(IP アドレスは変わるが MAC アドレスは変わらない!) 総当りで内部の設定を取得する
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ハンディを追加設定無しで識別する(1/2) • ホスト名に対して
IP アドレスを解決し、追加で付与されたペイロードも取得できる • AirPlay などでデバイスを認識するために用いられている技術 • ローカルネットワーク内で自身が提供できるサービスを宣言することができる mDNS(マルチキャストDNS) 出典: フリー百科事典『ウィキペディア(Wikipedia)』
株式会社 ダイニー © 2024 Dinii Inc. • レジは店舗IDを含むレコードを mDNS で
登録しつつ TCP サーバーを立ち上げる • ハンディは mDNS レコードをクエリして レジの IP を特定 • ハンディがレジにコネクションを貼る 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 ハンディを追加設定無しで識別する(2/2) mDNS で TCP サーバーへの経路を スマートに提示
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 未解決の課題 • 機器設置における要件が増えてしまった
• トラブル発生時に Wi-Fi を切り替えたままにしてしまい疎通できなくなることも… • テザリングなどでインターネットに繋がっていればなんとかなるようにしたい • もし達成できたらモバイルオーダーもオフライン対応できるかも? ローカルネットワークを越えた連携ができない • そもそも複数台レジ運用は非推奨だが要望としては存在している • どちらかをメインに据えないと注文情報が分散してしまい正確な請求が困難になる • 現状はどちらに注文が入っているか不透明なため適切なサポートが出来ない可能性も 複数台レジでの課題
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 まとめ • 最初からオフライン接続を想定した仕込みを
するのが難しい場合もある • ビジネスの減速を防ぐためにも追加設定なし を目指したい • 解決方法はいろいろある。 まずは試してみることが大事 オンライン前提のサービスに 後付けでオフライン機能を 追加設定なしで実現できた キッチンプリンター ハンディ レジ ルーター
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 お知らせ https://dinii.connpass.com/event/332124/
株式会社 ダイニー © 2024 Dinii Inc. 急速に利用拡大を続ける飲食店向けサービスで店内端末同士のローカル通信を追加設定なしで実現した話 お知らせ https://dinii.connpass.com/event/332130/