20170311 jawsdays lunch session「東急ハンズのipad pos「handspos」と...
TRANSCRIPT
Copyright © 2016. All rights reserved .
2017 年 03 月 11 日 (JAWSDAYS)
ハンズラボ株式会社 黒岩 裕輔
東急ハンズの iPad POS 「 HandsPOS 」と AWS の付き合
い方
Copyright © 2016. All rights reserved.
自己紹介
2
Yusuke Kuroiwa ( きんちゃん。 ) ハンズラボ株式会社
iPad POS アプリケーション設計・開発・導入・設置・運用
iOS Engineer iOS に関わること全般担当
iOS から AWS に触れるバックエンドの部分は担当
MDM (Mobile Device Management) 管理
@wa_kinchan
@wakinchan
Copyright © 2016. All rights reserved.
ハンズラボ?
3
東急ハンズのシステム子会社
内製 東急ハンズの各種システムの内製開発と運用保守 MD 、 CRM 、 POS
外販 自社開発の経験を活かした受託開発、内製支援
Copyright © 2016. All rights reserved.
東急ハンズの POS 「 HandsPOS 」概要
5
自動釣銭釣札機
一般的な POS 機能は全て搭載 ただ無駄な機能は削ぎ落とす シンプル設計に
操作性の飛躍的向上
自動釣銭機、バーコードスキャナ 連動
現在クレジット、電子マネー機能開発中
レシートプリンタ バーコードスキャナ
POS
Copyright © 2016. All rights reserved.
東急ハンズと HandsPOS について
6
売上高: 948 億円( 2016 年 3 月度)
店舗数 : 計 81 店舗 (HandsPOS: 40 店舗 ) レジ台数 : 計 800 台 (HandsPOS : 200 台 ) 商品件数 : 100 万件
Copyright © 2016. All rights reserved.
HandsPOS アプリ開発環境
8
Lang: Swift 3.0 Swift 1.2 のときに開発着手 Swift のコミュニティが活発 (meetup, Conference..) framework が豊富 Types, Protocol, Enum(Associated Value)..
CI: CircleCI Dependency manager: Carthage , CocoaPods Lint: SwiftLint Prototype: Sketch Git: GitHub (Pull Requests 開発 ) Communication, Bot: Slack
Copyright © 2016. All rights reserved.
HandsPOS アプリのテクノロジ
9
AWS 設定データ、 API 、ポイント付与
WebSocket iOS とレシートプリンタとの接続
Realm マスタ、取引の CRUD
P2P Multipeer Connectivity: iOS 同士の接続
SwiftTask Promise
RxSwift Reactive
Copyright © 2016. All rights reserved.
AWS と iOS の相性
10
柔軟性
SDK
aws-sdk-ios v2 https://github.com/aws/aws-sdk-ios 何かしらの問題があっても Issue 立てたり、 Pull
Requests を送ったり出来るので、プログラムに対して言及できる
Cognito を利用した安全なリソースへのアクセスが可能
Lambda 、 SNS 、 S3 など簡単に Backend との連携が可能
コスト
AWS は実行、利用した分だけ、課金が発生
コスト削減は設計次第
Copyright © 2016. All rights reserved. 13
取引データ連携 構成図 : iOS から見る AWS 安全な AWS リソースへのアクセスのため Cognito を介する
Lambda 経由で情報をアクセス Lambda ⇒ DynamoDB Lambda ⇒ S3
iOS アプリのアップデートは時間がかかる 機能追加や不具合修正は、 Lambda の修正で完結出来る
Copyright © 2016. All rights reserved. 14
取引データ連携 構成図 : 設計思想、工夫点
EC2 は極力使わない 基本的にユニケージ (shell script) を使う部分のみに抑える
S3 の ObjectCreated イベントでの Lambda がたまに発動しない リカバリ方法を考えるか、違う方法にしよう
DynamoDB のキャパシティは最初から大きめに設定 基本的に何が置きてもいいよう、繁忙期なみのキャパシティで運用 今後、店舗が増えてもすぐさま対応できる
Copyright © 2016. All rights reserved.
HandsPOS は他にない POS を目指して
15
より良い設計、アーキテクチャ、実装へ!
HandsPOS アプリを更に改良!
カスタマーディスプレイの有効活用!カメラでポイントカード付与おすすめ商品サジェスト機能
電子レシート
店員に配っている iPod touch との連携 先に商品だけスキャンしてレジと連携 クレジットならその場で決済
Apple Pay