初めてのハードウェア対応
by
ykkc
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
ɹɹ ©︎ hey, Inc 初めてのハードウェア対応 テクノロジー部門モバイルアプリケーション本部 レジグループ ソフトウェアエンジニア 横小路 健(@_ykkc)
Slide 2
Slide 2 text
ɹ ɹ 自己紹介 横小路 健 Takeshi Yokokoji @_ykkc(Twitter) 2019.1 オンラインフィットネスサービスの開発 2019.2 hey入社 STORES 決済のプロダクト改善を行う 2020.8 STORES レジの立ち上げに参画 2021.6 STORES レジをリリース 2021.8 STORES レジの新機能開発 / 改善を行う
Slide 3
Slide 3 text
ɹ ɹ アジェンダ ● STORES レジの紹介と対応ハードウェア ● ハードウェア対応の裏側 ● 〜CoreBluetooth編〜 ● 〜External Accessory編〜 ● ハードウェア対応で苦労したことまとめ
Slide 4
Slide 4 text
ɹ ɹ STORES レジの紹介 STORES レジはお商売を支えるSTORES プラットフォームのプロダクトの内の1つ
Slide 5
Slide 5 text
ɹ ɹ STORES レジの紹介 技術スタック ● 言語:Swift ● フレームワーク:SwiftUI, Combine ● API:GraphQL (using Apollo-iOS) ● DB:Realm ● ツール:GitHub, Bitrise, Firebase, Fastlane
Slide 6
Slide 6 text
ɹ ɹ みなさんは 「レジ」 と言われてどんなものを思い浮かべますか? STORES レジの紹介
Slide 7
Slide 7 text
ɹ ɹ STORES レジの紹介
Slide 8
Slide 8 text
ɹ ɹ STORES レジの紹介 レシートの発行 決済 合計金額の通知 商品の読み取り
Slide 9
Slide 9 text
ɹ ɹ STORES レジの紹介 会計の流れには様々なハードウェアが必要 レシートプリンター キャッシュドロワー 決済端末 バーコードリーダー レジアプリ
Slide 10
Slide 10 text
ɹ ɹ ハードウェア対応の裏側 〜全体観〜 全体の流れ ● やりたいことを明らかにする ● 仕様書を読み、ハードウェアを選定する ● 開発 ● Bluetoothの規格によって異なる ● Bluetooth Low Energy ● Bluetooth Classic ● ( Optional ) Bluetooth Classicを利用する場合はMFi登録申請をする ● 審査 ● リリース
Slide 11
Slide 11 text
ɹ ɹ ハードウェア対応の裏側 〜CoreBluetooth編〜 Bluetooth Low Energy(BLE) ● Bluetooth 4.0以降の規格 ● 特徴 ● 以前と比較して低消費電力での通信を実現した ● CoreBluetooth Frameworkで実装
Slide 12
Slide 12 text
ɹ ɹ ハードウェア対応の裏側 〜CoreBluetooth編〜 Central Peripheral Service Characteristic iPhone BLEϓϦϯλʔ
Slide 13
Slide 13 text
ɹ ɹ ハードウェア対応の裏側 〜CoreBluetooth編〜 σόΠεͷ༷ʹؔ͢Δใ
Slide 14
Slide 14 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン ● 印刷の実行
Slide 15
Slide 15 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン ● 印刷の実行
Slide 16
Slide 16 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン ● 印刷の実行
Slide 17
Slide 17 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン ● 印刷の実行
Slide 18
Slide 18 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン
Slide 19
Slide 19 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン
Slide 20
Slide 20 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン
Slide 21
Slide 21 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス ● ハードウェアの 接続状態の検知 ● デバイスのスキャン
Slide 22
Slide 22 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 Bluetooth Classic ● Bluetooth 3.0以前の規格 ● 特徴 ● External Accessory Frameworkで実装 ● 実装以外にも… ● Info.plistのUISupportedExternalAccessoryProtocolsに accessory protocol stringsを追加する必要あり ● リリース前にMFi登録申請する必要あり
Slide 23
Slide 23 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 EAAccessoryΛར༻࣮ͨ͠ྫ
Slide 24
Slide 24 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ΞϓϦ͔ΒͷଓͰFrameworkͷUIʹґଘ͢Δ
Slide 25
Slide 25 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 EAAccessoryΛར༻࣮ͨ͠ྫ
Slide 26
Slide 26 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 MFi登録申請 ● MFi登録申請って何? ● MFi(Made for iPhone/iPad/iPod)認証 ● Apple製品に対応したハードウェアと認められるために必要なもの ● MFi認証されたハードウェアに対応したアプリの審査にはPPIDが必要 ● メーカー経由でAppleからPPIDをもらうためにメーカーにする申請
Slide 27
Slide 27 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ MFiొਃ ᶆ MFiొྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυΣΞΛఏڙ͢ΔϝʔΧʔ
Slide 28
Slide 28 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ MFiొਃ ᶆ MFiొྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυΣΞΛఏڙ͢ΔϝʔΧʔ
Slide 29
Slide 29 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ MFiొਃ ᶆ MFiొྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυΣΞΛఏڙ͢ΔϝʔΧʔ
Slide 30
Slide 30 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ MFiొਃ ᶆ MFiొྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυΣΞΛఏڙ͢ΔϝʔΧʔ
Slide 31
Slide 31 text
ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ MFiొਃ ᶆ MFiొྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυΣΞΛఏڙ͢ΔϝʔΧʔ
Slide 32
Slide 32 text
ɹ ɹ STORES レジでの審査時 の端末記載例 ハードウェア対応の裏側 〜External Accessory編〜
Slide 33
Slide 33 text
ɹ ɹ ハードウェア対応の裏側 〜苦労編〜 接続状態管理 ● アプリでハードウェアとの接続状態を知りたい要件がある ● ハードウェアとの接続状態の通知の確実性を担保するのが難しい
Slide 34
Slide 34 text
ɹ ɹ ハードウェア対応の裏側 〜苦労編〜 ハードウェア固有の動作差分 ● 同じメーカーでも一部の端末で挙動が異なる場合がある ● 調査に難航しがち
Slide 35
Slide 35 text
ɹ ɹ ハードウェア対応の裏側 〜苦労編〜 普段のアプリ開発ではなかなかない体験が出来る ● ハードウェアを理由に自宅にブースが出来たり… ● 開発中にレシートにまみれたり…
Slide 36
Slide 36 text
ɹ ɹ おわりに ● 低レイヤーの実装を体験できたのはよかった ● 普段Bluetoothで接続しているデバイスがどのような仕組みで動いてい るかを知ることができたのもよかった ● アプリを含めた周辺機器を踏まえた体験まで考える視野が広がった ● 触っている人が少ない分、ノウハウをアウトプットする機会が増えた
Slide 37
Slide 37 text
募集中の職種 hey採用 https://hello.hey.jp/ 詳細はこちらで検索
Slide 38
Slide 38 text
No content