Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初めてのハードウェア対応

9adb9a67e73d93190e1d07d077a9aae7?s=47 ykkc
September 18, 2021

 初めてのハードウェア対応

iOSDC2021 DAY1 10:50〜でお話させていただくものです!

9adb9a67e73d93190e1d07d077a9aae7?s=128

ykkc

September 18, 2021
Tweet

Transcript

  1. ɹɹ ©︎ hey, Inc 初めてのハードウェア対応 テクノロジー部門モバイルアプリケーション本部 レジグループ ソフトウェアエンジニア 横小路 健(@_ykkc)

  2. ɹ ɹ 自己紹介 横小路 健 Takeshi Yokokoji @_ykkc(Twitter) 2019.1 オンラインフィットネスサービスの開発

    
 2019.2 hey入社 
 STORES 決済のプロダクト改善を行う 2020.8 STORES レジの立ち上げに参画 2021.6 STORES レジをリリース 2021.8 STORES レジの新機能開発 / 改善を行う
  3. ɹ ɹ アジェンダ • STORES レジの紹介と対応ハードウェア • ハードウェア対応の裏側 • 〜CoreBluetooth編〜

    • 〜External Accessory編〜 • ハードウェア対応で苦労したことまとめ
  4. ɹ ɹ STORES レジの紹介 STORES レジはお商売を支えるSTORES プラットフォームのプロダクトの内の1つ

  5. ɹ ɹ STORES レジの紹介 技術スタック • 言語:Swift • フレームワーク:SwiftUI, Combine

    • API:GraphQL (using Apollo-iOS) • DB:Realm • ツール:GitHub, Bitrise, Firebase, Fastlane
  6. ɹ ɹ みなさんは 
 「レジ」 と言われてどんなものを思い浮かべますか? STORES レジの紹介

  7. ɹ ɹ STORES レジの紹介

  8. ɹ ɹ STORES レジの紹介 レシートの発行 決済 合計金額の通知 商品の読み取り

  9. ɹ ɹ STORES レジの紹介 会計の流れには様々なハードウェアが必要 レシートプリンター キャッシュドロワー 決済端末 バーコードリーダー レジアプリ

  10. ɹ ɹ ハードウェア対応の裏側 〜全体観〜 全体の流れ • やりたいことを明らかにする • 仕様書を読み、ハードウェアを選定する •

    開発 • Bluetoothの規格によって異なる • Bluetooth Low Energy • Bluetooth Classic • ( Optional ) Bluetooth Classicを利用する場合はMFi登録申請をする • 審査 • リリース
  11. ɹ ɹ ハードウェア対応の裏側 〜CoreBluetooth編〜 Bluetooth Low Energy(BLE) • Bluetooth 4.0以降の規格

    • 特徴 • 以前と比較して低消費電力での通信を実現した • CoreBluetooth Frameworkで実装
  12. ɹ ɹ ハードウェア対応の裏側 〜CoreBluetooth編〜 Central Peripheral Service Characteristic iPhone BLEϓϦϯλʔ

  13. ɹ ɹ ハードウェア対応の裏側 〜CoreBluetooth編〜 σόΠεͷ࢓༷ʹؔ͢Δ৘ใ

  14. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン • 印刷の実行
  15. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン • 印刷の実行
  16. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン • 印刷の実行
  17. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン • 印刷の実行
  18. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン
  19. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン
  20. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン
  21. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 デバイスの管理クラス • ハードウェアの 
 接続状態の検知

    • デバイスのスキャン
  22. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 Bluetooth Classic • Bluetooth 3.0以前の規格

    • 特徴 • External Accessory Frameworkで実装 • 実装以外にも… • Info.plistのUISupportedExternalAccessoryProtocolsに 
 accessory protocol stringsを追加する必要あり • リリース前にMFi登録申請する必要あり
  23. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 EAAccessoryΛར༻࣮ͨ͠૷ྫ

  24. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ΞϓϦ͔Βͷ઀ଓͰ͸FrameworkͷUIʹґଘ͢Δ

  25. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 EAAccessoryΛར༻࣮ͨ͠૷ྫ

  26. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 MFi登録申請 • MFi登録申請って何? • MFi(Made

    for iPhone/iPad/iPod)認証 • Apple製品に対応したハードウェアと認められるために必要なもの • MFi認証されたハードウェアに対応したアプリの審査にはPPIDが必要 • メーカー経由でAppleからPPIDをもらうためにメーカーにする申請
  27. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ

    MFiొ࿥ਃ੥ ᶆ MFiొ࿥׬ྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυ΢ΣΞΛఏڙ͢ΔϝʔΧʔ
  28. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ

    MFiొ࿥ਃ੥ ᶆ MFiొ࿥׬ྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυ΢ΣΞΛఏڙ͢ΔϝʔΧʔ
  29. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ

    MFiొ࿥ਃ੥ ᶆ MFiొ࿥׬ྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυ΢ΣΞΛఏڙ͢ΔϝʔΧʔ
  30. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ

    MFiొ࿥ਃ੥ ᶆ MFiొ࿥׬ྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυ΢ΣΞΛఏڙ͢ΔϝʔΧʔ
  31. ɹ ɹ ハードウェア対応の裏側 〜External Accessory編〜 ᶅ PPIDൃߦ ᶄ PPIDൃߦґཔ ᶃ

    MFiొ࿥ਃ੥ ᶆ MFiొ࿥׬ྃ with PPID ᶇ ΞϓϦ৹ࠪ with PPID ΞϓϦ։ൃऀ MFiೝূΛड͚ͨϋʔυ΢ΣΞΛఏڙ͢ΔϝʔΧʔ
  32. ɹ ɹ STORES レジでの審査時 の端末記載例 ハードウェア対応の裏側 〜External Accessory編〜

  33. ɹ ɹ ハードウェア対応の裏側 〜苦労編〜 接続状態管理 • アプリでハードウェアとの接続状態を知りたい要件がある • ハードウェアとの接続状態の通知の確実性を担保するのが難しい

  34. ɹ ɹ ハードウェア対応の裏側 〜苦労編〜 ハードウェア固有の動作差分 • 同じメーカーでも一部の端末で挙動が異なる場合がある • 調査に難航しがち

  35. ɹ ɹ ハードウェア対応の裏側 〜苦労編〜 普段のアプリ開発ではなかなかない体験が出来る • ハードウェアを理由に自宅にブースが出来たり… • 開発中にレシートにまみれたり…

  36. ɹ ɹ おわりに • 低レイヤーの実装を体験できたのはよかった • 普段Bluetoothで接続しているデバイスがどのような仕組みで動いてい るかを知ることができたのもよかった • アプリを含めた周辺機器を踏まえた体験まで考える視野が広がった

    • 触っている人が少ない分、ノウハウをアウトプットする機会が増えた
  37. 募集中の職種 hey採用 https://hello.hey.jp/ 詳細はこちらで検索

  38. None