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