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

BLEアプリ設計パターン / ble_app_pattern

8yabusa
February 08, 2019

BLEアプリ設計パターン / ble_app_pattern

DroidKaigi2019 での発表です
QrioLockアプリ開発の経験をベースにAndroidのBLE(Bluetooth Low Energy)を使ったアプリ開発のノウハウを話しました

8yabusa

February 08, 2019
Tweet

More Decks by 8yabusa

Other Decks in Programming

Transcript

  1. デバイスの特徴 • 近くじゃないと通信できない。
 BLEなので数m程度。 • なるべくシンプルにしたい - アップデートが⼤変
 (ユーザーがアプリからアップデートする) -

    故障する可能性(交換可能にしたい) - 開発効率低い(C⾔語) - メモリの制約 BLEアプリ設計ノウハウ #1 情報の持ち⽅
  2. べき等なAPIの例 1. 設定を更新する -  叩くたび設定が逆になる {autolock_toggle: true} -  何回叩いても同じ設定になる {autolock:

    true} 2. ログをアップロードする -  同じログをPOSTすると重複して作られる -  ログにIDを付けて識別し、同じログをPOSTしても
 重複して作られないようにする BLEアプリ設計ノウハウ #3 結果整合性
  3. 設計イメージ Presentation Infra Domain Model Entity ValueObject DomainService Repository UI

    Service/ Background Task Broadcast Receiver/ AppDelegate Dao WebAPI Preference UseCase Model Impl DomainServiceImpl RepositoryImpl use use use depends BLE BLEアプリ設計ノウハウ #4〜#6 前提設計
  4. ドメインじゃない層 • 何のシステムか以外を分離 • UIでどのように表現するか、
 Android SDKからどのように 呼ばれるか(Presentation層) • データをどのように保存取得

    するか(Infra層) Presentation Domain Model Entity ValueObject DomainService Repository UI Service/ Background Task Broadcast Receiver/ AppDelegate UseCase use use depends Presentation Infra Domain Model Entity ValueObject DomainService Repository UI Service/ Background Task Broadcast Receiver/ AppDelegate Dao WebAPI Preference UseCase Model Impl DomainServiceImpl RepositoryImpl use use use depends BLE BLEアプリ設計ノウハウ #4〜#6 前提設計
  5. Presentation Infra Domain Model Entity ValueObject DomainService Repository UI Service/

    Background Task Broadcast Receiver/ AppDelegate Dao WebAPI Preference UseCase Model Impl DomainServiceImpl RepositoryImpl use use use depends BLE 別モジュール BLEアプリ設計ノウハウ #5 BLEは専⽤アプリを作る
  6. • リターン - UIからプレゼンテーションロジックを分離 できる - プレゼンテーションロジックをテストでき る • コスト

    - MVVMの実装コスト - MVVMのベストプラクティスを探るコスト BLEアプリ設計ノウハウ #6 UIは簡素に設計 MVVMのリターンとコストを考える
  7. BLEアプリ設計ノウハウ #6 UIは簡素に設計 MVVMのリターンとコストを考える ؆ૉͳUIͩͱ
 ϝϦοτ͕ബ͍ ؆ૉͳUIͰ΋
 ίετ͸͔͔Δ • リターン

    - UIからプレゼンテーションロジックを分離 できる - プレゼンテーションロジックをテストでき る • コスト - MVVMの実装コスト - MVVMのベストプラクティスを探るコスト