Copyright © 2016. All rights reserved.
2017年03月11日 (JAWSDAYS)
ハンズラボ株式会社 黒岩 裕輔
東急ハンズのiPad POS「HandsPOS」
と AWSの付き合い方
Copyright © 2016. All rights reserved.
自己紹介
1
 Yusuke Kuroiwa (きんちゃん。)
 ハンズラボ株式会社
 iPad POSアプリケーション設計・開発・導入・設置・運用
 iOS Engineer
 iOSに関わること全般担当
 iOSからAWSに触れるバックエンドの部分は担当
 MDM (Mobile Device Management)管理
@wa_kinchan
@wakinchan
Copyright © 2016. All rights reserved.
ハンズラボ?
2
 東急ハンズのシステム子会社
 内製
 東急ハンズの各種システムの内製開発と運用保守
 MD、CRM 、POS
 外販
 自社開発の経験を活かした受託開発、内製支援
Copyright © 2016. All rights reserved.
アジェンダ
1. 東急ハンズのPOS概要
2. 開発環境等
3. バックエンド(AWS)の設計思想と工夫点
3
Copyright © 2016. All rights reserved.
東急ハンズのPOS「HandsPOS」概要
4
自動釣銭釣札機
 一般的なPOS機能は全て搭載
 ただ無駄な機能は削ぎ落とす
 シンプル設計に
 操作性の飛躍的向上
 自動釣銭機、バーコードスキャナ 連動
 現在クレジット、電子マネー機能開発中
レシートプリンタ バーコードスキャナ
POS
Copyright © 2016. All rights reserved.
東急ハンズとHandsPOSについて
5
 売上高:948億円(2016年3月度)
 店舗数 : 計81店舗 (HandsPOS: 40店舗)
 レジ台数 : 計800台 (HandsPOS : 200台)
 商品件数 : 100万件
Copyright © 2016. All rights reserved.
アジェンダ
1. 東急ハンズのPOS概要
2. 開発環境等
3. バックエンド(AWS)の設計思想と工夫点
6
Copyright © 2016. All rights reserved.
HandsPOSアプリ開発環境
7
 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アプリのテクノロジ
8
AWS 設定データ、API、ポイント付与
WebSocket iOSとレシートプリンタとの接続
Realm マスタ、取引のCRUD
P2P Multipeer Connectivity: iOS同士の接続
SwiftTask Promise
RxSwift Reactive
Copyright © 2016. All rights reserved.
AWSとiOSの相性
9
柔軟性
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.
アジェンダ
1. 東急ハンズのPOS概要
2. 開発環境等
3. バックエンド(AWS)の設計思想と工夫点
10
Copyright © 2016. All rights reserved.
取引データ連携 構成図
11
Copyright © 2016. All rights reserved.
取引データ連携 構成図: iOSから見るAWS
12
 安全なAWSリソースへのアクセスのためCognitoを介する
 Lambda経由で情報をアクセス
 Lambda ⇒ DynamoDB
 Lambda ⇒ S3
 iOSアプリのアップデートは時間がかかる
 機能追加や不具合修正は、Lambdaの修正で完結出来る
Copyright © 2016. All rights reserved.
取引データ連携 構成図: 設計思想、工夫点
13
 EC2は極力使わない
 基本的にユニケージ(shell script)を使う部分のみに抑える
 S3のObjectCreatedイベントでのLambdaがたまに発動しない
 リカバリ方法を考えるか、違う方法にしよう
 DynamoDBのキャパシティは最初から大きめに設定
 基本的に何が置きてもいいよう、繁忙期なみのキャパシティで運用
 今後、店舗が増えてもすぐさま対応できる
Copyright © 2016. All rights reserved.
HandsPOSは他にないPOSを目指して
14
 より良い設計、アーキテクチャ、実装へ!
 HandsPOSアプリを更に改良!
 カスタマーディスプレイの有効活用!
 カメラでポイントカード付与
 おすすめ商品サジェスト機能
 電子レシート
 店員に配っているiPod touchとの連携
 先に商品だけスキャンしてレジと連携
 クレジットならその場で決済
 Apple Pay
Copyright © 2016. All rights reserved.
We are hiring!
15
ハンズラボではエンジニアを募集中です!
弊社ホームページ、Wantedlyにてご応募ください
AWS Infra Engineer
iOS Engineer
Web App Engineer

20170311 JAWSDAYS Lunch Session「東急ハンズのiPad POS「HandsPOS」と AWSの付き合い方」

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

Editor's Notes

  • #3 画面はiPadに 旧レジの物理キーを全てなくして、ソフトウェアキーのみになります。 これによって、必要なボタンのみ表示されており、誤ったキーを押して、エラー音が鳴り響くこともなくなりました 周辺機器についてです。 自動釣銭機、レシートプリンタ、バーコードスキャナの3つがあります。 以前までのレジ同様、自動釣銭釣札機に対応しています。 自動釣銭機は、お客さんから預かった紙幣、硬貨を投入すれば、自動でおつりが計算されて、出金されます。 レシートプリンタは、会計が終了した際のレシート、両替の際に利用する両替レシートが印刷できます。 バーコードスキャナは、主に商品をスキャンする役割です。
  • #5 本日お話すること
  • #6 画面はiPadに 旧レジの物理キーを全てなくして、ソフトウェアキーのみになります。 これによって、必要なボタンのみ表示されており、誤ったキーを押して、エラー音が鳴り響くこともなくなりました 周辺機器についてです。 自動釣銭機、レシートプリンタ、バーコードスキャナの3つがあります。 以前までのレジ同様、自動釣銭釣札機に対応しています。 自動釣銭機は、お客さんから預かった紙幣、硬貨を投入すれば、自動でおつりが計算されて、出金されます。 レシートプリンタは、会計が終了した際のレシート、両替の際に利用する両替レシートが印刷できます。 バーコードスキャナは、主に商品をスキャンする役割です。
  • #9 開発着手段階からSwiftを選択していました この選択は間違っていなかったと思っています Swiftが出る前は、ObjectiveCをメインで開発することがスタンダードでした いまや、Swiftが主流になっています フレームワークの多さ コミュニティの活発さ 開発メンバーは4人で私含めコーダーが3人です。 Pull requestをフル活用して、コミュニケーションもGitHub上ですることも多々あります。
  • #12 本日お話すること
  • #13 35店舗
  • #15 Design for failure: 障害を前提としたデザイン
  • #16 35店舗
  • #17 35店舗