Slide 1

Slide 1 text

Shoko Sato 1 watchOSとMapKitを駆使した 位置情報収集 バッテリー消費最⼩化と 取得精度向上テクニック

Slide 2

Slide 2 text

2 ベンチャー企業のフロントエンドエンジニア、マーケティングマネー ジャーを経て、2019年9⽉よりLINEのDeveloper Successチームに てエンジニア組織のTech Branding, Trainingや技術カンファレンス の運営を担当。イベントやブログ、動画などを中⼼に社内外の技術コ ミュニティの盛り上げや機会づくりなど各組織のサポートに従事す る。またGoogle Developer Group TokyoとWTM Tokyoのオーガ ナイザーとして、様々な技術コミュニティに参画。 個⼈でiOS/Androidアプリ開発に挑戦中。趣味はゲームとギターとバ イクとヨガと料理。最近着物と茶道を勉強中。 X(Twitter): @satoshoco Shoko Sato Instruction / iOSDC Japan 2023 Introduction

Slide 3

Slide 3 text

3 Introduction

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

5 位置情報 01 02 03 04 05 Summary 消費電⼒ MapKit PoC & Result まとめ

Slide 6

Slide 6 text

6 01 位置情報

Slide 7

Slide 7 text

7 位置情報の取得技術 01. 位置情報 GPS (Global Positioning System) 原理:24基の⼈⼯衛星からの信号を受信し、その時刻の差から位置を計算します。 ⻑所:屋外での⾼い精度。世界中どこでも利⽤可能。 短所:屋内や⾼層ビルの間では信号が弱まり、精度が低下します。また、初回の位置 特定に時間がかかることがあります。

Slide 8

Slide 8 text

8 01. 位置情報 出典)https://support.apple.com/ja-jp/HT203033 GPS Wi-Fi 基地局 Bluetooth iOS/watchOS

Slide 9

Slide 9 text

9 02 消費電⼒

Slide 10

Slide 10 text

10 watchOSの消費電⼒管理の仕組み ハードウェア最適化 02. 消費電⼒ センサーの管理 アンビエント・ディスプレイ アプリのバックグラウンド活動の制限 通知と更新 通信の最適化 エネルギー節約モード

Slide 11

Slide 11 text

11 位置情報の取得と消費電⼒ ⾼頻度のデータ取得 バックグラウンド処理 02. 消費電⼒

Slide 12

Slide 12 text

12 03 MapKit

Slide 13

Slide 13 text

13 03.MapKit 参考)https://developer.apple.com/documentation/mapkit/ ズーム・パン アノテーション オーバーレイ ルート検索・ナビゲーション

Slide 14

Slide 14 text

14 03.MapKit

Slide 15

Slide 15 text

15 実装⼿順 03.MapKit 1. MapKit導⼊ 2. 位置情報の取得 3. watchOSとの連携 4. iOSでの受信と表⽰ 参考)https://developer.apple.com/documentation/corelocation

Slide 16

Slide 16 text

16

Slide 17

Slide 17 text

18 03.MapKit / 検証⽤アプリ

Slide 18

Slide 18 text

19

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

参考)https://developer.apple.com/documentation/watchconnectivity/wcsessiondelegate/1615637-session 03.MapKit / 検証⽤アプリ

Slide 21

Slide 21 text

25 04 PoC & Result

Slide 22

Slide 22 text

26 Core Location 04. PoC & Result • Background • 取得精度 • 取得間隔(距離) • 位置情報の変化 プロパティ 参考)https://developer.apple.com/documentation/corelocation

Slide 23

Slide 23 text

27 allowsBackgroundLocationUpdates 04. PoC & Result True False 参考)https://developer.apple.com/documentation/corelocation/cllocationmanager/1620568-allowsbackgroundlocationupdates アプリがバックグラウンドで実⾏されているときに位置情報の 更新を受信するかどうかを制御するプロパティ

Slide 24

Slide 24 text

28 desiredAccuracy 04. PoC & Result 取得精度:アプリが受け取りたい位置情報の精度 参考)https://developer.apple.com/documentation/corelocation/cllocationmanager/1423836-desiredaccuracy kCLLocationAccuracyBestForNavigation kCLLocationAccuracyBest kCLLocationAccuracyNearestTenMeters kCLLocationAccuracyHundredMeters kCLLocationAccuracyKilometer kCLLocationAccuracyThreeKilometers

Slide 25

Slide 25 text

29 distanceFilter 04. PoC & Result 参考)https://developer.apple.com/documentation/corelocation/cllocationmanager/1423500-distancefilter 取得間隔(距離):更新イベントが発⽣するまでにデバイスが⽔平 ⽅向に移動しなければならない最⼩距離(メートル)

Slide 26

Slide 26 text

30 CLActivityType 04. PoC & Result 参考)https://developer.apple.com/documentation/corelocation/clactivitytype 位置情報の変化:位置情報の更新に関連するアクティビティの タイプを⽰す定数 Automotive Navigation Fitness Other Navigation Other airborne

Slide 27

Slide 27 text

31 バッテリーの消費/ステータス管理 04. PoC & Result 参考)https://developer.apple.com/documentation/watchkit/wkinterfacedevicebatterystate

Slide 28

Slide 28 text

32 3つの⼿段を⽤いてPoC 04. PoC & Result Walk Bike Car

Slide 29

Slide 29 text

33 04. PoC & Result How Background desired Accuracy distance Filter activity Type Battery (Before) Battery (After) Distance Time Speed(m/s) Battery walk 2km TRUE Nearest Ten Meters None Fitness 97 95 2.11 0:23:28 1.5 95 walk 2km TRUE Best None Fitness 95 93 2.09 0:21:41 1.6 94 walk 2km TRUE Hundred Meters None Fitness 93 91 3.79 0:22:49 2.77 92 walk 2km TRUE Kilometer None Fitness 91 90 3.55 0:22:16 2.66 91 walk 2km TRUE Three Kilometers None Fitness 90 89 3.46 0:22:01 2.62 89 walk 2km FALSE Best None Fitness 89 86 4 0:22:42 2.94 86 bike 2km TRUE Best None Fitness 86 85 2 10:30 3.17 85 bike 2km TRUE Nearest Ten Meters None Fitness 85 84 1.97 0:08:51 3.71 84 bike 2km TRUE Hundred Meters None Fitness 84 83 2.69 0:08:22 5.35 83 bike 2km TRUE Kilometer None Fitness 84 83 2.46 0:07:36 5.38 83 walk 2km TRUE BestForNavigation None Fitness 84 83 2.42 0:23:21 1.6 89 walk 2km TRUE Best 1 Fitness 82 81 2.11 0:21:31 1.63 82 注意) それぞれ20kmの道のりを様々なプロパティの組み合わ せで実証した発表者独自の環境による結果です

Slide 30

Slide 30 text

34 04. PoC & Result allowsBackgroundLocationUpdates False True

Slide 31

Slide 31 text

35 最⾼の精度 kCLLocationAccuracy Best 10メートル以内の精度 kCLLocationAccuracy NearestTenMeters 100メートル以内の精度 kCLLocationAccuracy HundredMeters 1キロメートル以内の精度 kCLLocationAccuracy Kilometer 04. PoC & Result >> Walk ナビゲーション⽤途に 最適な最⾼の精度 kCLLocationAccuracy BestForNavigation 3キロメートル以内の精度 kCLLocationAccuracy ThreeKilometers バックグラウンド: True, 取得間隔: None, 位置情報の変化: Fitness 取得精度: desiredAccuracy

Slide 32

Slide 32 text

36 最⾼の精度 kCLLocationAccuracy Best 10メートル以内の精度 kCLLocationAccuracy NearestTenMeters 100メートル以内の精度 kCLLocationAccuracy HundredMeters 1キロメートル以内の精度 kCLLocationAccuracy Kilometer 04. PoC & Result >> Bike ナビゲーション⽤途に 最適な最⾼の精度 kCLLocationAccuracy BestForNavigation 3キロメートル以内の精度 kCLLocationAccuracy ThreeKilometers バックグラウンド: True, 取得間隔: None, 位置情報の変化: Fitness 取得精度: desiredAccuracy

Slide 33

Slide 33 text

37 最⾼の精度 kCLLocationAccuracy Best 10メートル以内の精度 kCLLocationAccuracy NearestTenMeters 100メートル以内の精度 kCLLocationAccuracy HundredMeters 1キロメートル以内の精度 kCLLocationAccuracy Kilometer 04. PoC & Result >> Car ナビゲーション⽤途に 最適な最⾼の精度 kCLLocationAccuracy BestForNavigation 3キロメートル以内の精度 kCLLocationAccuracy ThreeKilometers バックグラウンド: True, 取得間隔: None, 位置情報の変化: Automotive Navigation 取得精度: desiredAccuracy

Slide 34

Slide 34 text

38 最⾼の精度 kCLLocationAccuracy Best 10メートル以内の精度 kCLLocationAccuracy NearestTenMeters 100メートル以内の精度 kCLLocationAccuracy HundredMeters 1キロメートル以内の精度 kCLLocationAccuracy Kilometer 04. PoC & Result >> Car ナビゲーション⽤途に 最適な最⾼の精度 kCLLocationAccuracy BestForNavigation 3キロメートル以内の精度 kCLLocationAccuracy ThreeKilometers バックグラウンド: True, 取得間隔: None, 位置情報の変化: Automotive Navigation 取得精度: desiredAccuracy

Slide 35

Slide 35 text

39 取得精度の変化によるバッテリー消耗 04. PoC & Result 最⾼の精度 kCLLocationAccuracy Best 10メートル以内の精度 kCLLocationAccuracy NearestTenMeters 100メートル以内の精度 kCLLocationAccuracy HundredMeters 1キロメートル以内の精度 kCLLocationAccuracy Kilometer ナビゲーション⽤途に 最適な最⾼の精度 kCLLocationAccuracy BestForNavigation 3キロメートル以内の精度 kCLLocationAccuracy ThreeKilometers 2% 2% 2% 1% 1% 1% ※それぞれ2キロの距離を計測した結果

Slide 36

Slide 36 text

40 位置情報取得の精度と頻度、バッテリー消耗の関係 精度: 位置情報の取得技術や環境、デバイス の性能による精度の変動。 頻度: 位置情報の更新頻度を⾼くすると、 精度が向上するが、バッテリー消耗も増⼤。 トレードオフ: ⾼い精度と⾼頻度の更新の バランス。 04. PoC & Result > Consideration

Slide 37

Slide 37 text

41 ⼀定時間位置情報が更新されない時の処理 04. PoC & Result > Consideration

Slide 38

Slide 38 text

42 04. PoC & Result > Consideration 参考)https://developer.apple.com/documentation/corelocation/cllocationmanager/1620553-pauseslocationupdatesautomatical pausesLocationUpdatesAutomatically location-managerオブジェクトが位置情報の更新を⼀時停⽌するかどうかを⽰す

Slide 39

Slide 39 text

43 04. PoC & Result > Consideration

Slide 40

Slide 40 text

44 05. まとめ アプリのユースケースに合わせたプロパティの設定と実装が⼤事

Slide 41

Slide 41 text

45 ・バックグラウンドの挙動についてはまだ研究が必要 ・実際のユースケースに合わせたアプリを作って個別課題の解決を模索 ・バッテリーの減少が残数値によっては⼀定でないと考えられる。⻑時間 のワークアウトでの減少率の調査が必要(もっと歩かなければ) ・位置情報の検証には体⼒と時間が必要。⼀緒に歩いてくれる⼈募集中 05. まとめ >> 次回に向けて

Slide 42

Slide 42 text

46 Thank you! @satoshoco