Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
現在地から始まる物語:位置情報アプリ開発の冒険
Search
riataso
April 29, 2025
Programming
1
22
現在地から始まる物語:位置情報アプリ開発の冒険
riataso
April 29, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
ぽちぽち選択するだけでOSSを読めるVSCode拡張機能
ymbigo
9
3.7k
プロダクトエンジニアのしごと 〜 受託 × 高難度を乗り越えるOptium開発 〜
algoartis
0
170
状態と共に暮らす:ステートフルへの挑戦
ypresto
3
1.1k
Road to RubyKaigi: Making Tinny Chiptunes with Ruby
makicamel
4
540
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
800
VitestのIn-Source Testingが便利
taro28
8
2.4k
ComposeでWebアプリを作る技術
tbsten
0
130
UMAPをざっくりと理解 / Overview of UMAP
kaityo256
PRO
3
1.5k
In geheimer Mission: AI Agents entwickeln
joergneumann
0
110
AWS Summit Hong Kong 2025: Reinventing Programming - How AI Transforms Our Enterprise Coding Approach
dwchiang
0
110
今話題のMCPサーバーをFastAPIでサッと作ってみた
yuukis
0
110
20250426 GDGoC 合同新歓 - GDGoC のススメ
getty708
0
110
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Visualization
eitanlees
146
16k
4 Signs Your Business is Dying
shpigford
183
22k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
For a Future-Friendly Web
brad_frost
177
9.7k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.3k
Become a Pro
speakerdeck
PRO
28
5.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.4k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Into the Great Unknown - MozCon
thekraken
38
1.7k
Transcript
現在地から始まる物語:位置情報アプリ開発の冒険 2025/04/26(土) Nagoya.swift #1
自己紹介 riataso ・入社3年目のクラウドエンジニア(23年入社) @riataso_kebin ・リモートはじめてから1年で体重10kg増え ました
目次 ・位置情報を使ったアプリの種類 ・位置情報とは ・iOSアプリで位置情報取得する方法と実装例 ・パフォーマンスとバッテリー消費の最適化
みなさんは位置情報を 使ったアプリを普段利用していますか?
位置情報を使ったアプリはたくさん存在します。 ・歩きながらできるゲーム ・配送アプリ ・地図、ナビゲーションアプリ ・天気アプリ ・SNS
位置情報を使ったアプリを作る中で学んだ、 基本的な概念から実践的な活用方法までご紹介します。
位置情報とは 位置情報の基本は「緯度(Latitude)」と「経度(Longitude)」という2つの数値 地球上のどこにいても、この2つの数値があれば位置を特定できる。 名古屋市市政資料館の場合 (愛知県名古屋市東区白壁1丁目3番地) 画像はGoogle Mapsから (35.1812666,136.9103417)
CLLocationManagerクラスを利用することで取得することができる。 iOSアプリで位置情報を取得する方法 CLLocationManagerとは iOS、macOS、watchOSなどのAppleプラットフォームでロケーションサービスを管理す るための中心的なクラスです。 このクラスを使用して、位置情報関連の機能を設定、開始、停止することができます。 引用: https://developer.apple.com/documentation/corelocation/cllocationmanager
・ユーザーの現在位置の追跡 ・コンパスによる方角情報の提供 ・地理的な領域の監視 (ユーザーが特定の領域に入った・出たときのイベント生成) ・Bluetoothビーコンとの距離測定 CLLocationManagerでできること
・ユーザーの現在位置の追跡 ・コンパスによる方角情報の提供 ・地理的な領域の監視 (ユーザーが特定の領域に入った・出たときのイベント生成) ・Bluetoothビーコンとの距離測定 CLLocationManagerでできること 身近でよく使われている、ユーザーの現在位置の追跡に関して実装例を紹介します。
CLLocationManagerの導入例 ・importでCoreLocationを追加します。 ・NSObjectを継承・CLLocationManagerDelegateプロトコルを採用した Classを作成する。 ・CLLocationManagerのインスタンスを作成する。 ・locationManager.delegateの設定 ・(位置情報の使用許可リクエスト) ・(位置情報の取得開始)
位置が変わった・エラーが起きたなどのイベントが発生したときに、その通知を 受け取る「受け取り役」を設定するプロパティです。 CLLocationManager.delegateとは CLLocation.delegateを設定するとどうなるか?
・位置情報が更新された場合 (例)最新の位置情報をもとにマップを更新する。 ・位置情報の取得に失敗した場合 (例)ユーザーにエラーで取得できなかったことを通知 ・位置情報サービスの認証状態が変わった場合 (例)認証が不足している場合、ユーザーに再度有効化してもらう通知 delegateを設定すると以下のようなメソッドが呼ばれるようになります。 ※デリゲートメソッドは自分で実装する必要があります。
位置情報の使用許可について 位置情報は個人情報となるため、アプリは位置情報サービスへのアクセスを使 用する際にユーザーから明示的な許可が必要 ユーザーへの許諾申請画面
・info.plistにキーの追加・位置情報を使用する理由をValueに記載します 位置情報の使用許可設定 Location When In Use Usage Description・・・アプリがフォアグラウンドの時のみ位置情報を使用する場合 Location Always
and When In Use Usage Description・・・アプリがバックグランドでも位置情報を使用する場合
位置情報アプリを利用している時に バッテリー消費が早いと感じたことありませんか?
位置情報を使ったアプリでは、用途に合う取得設定を設定していない場合、過剰なバッテ リー消費や不十分な位置精度によりユーザー体験が損なわれます。 アプリの目的に最適化された設定を選択することが重要になります。 ユーザー体験が損なわれる要因 ・位置情報の取得頻度 ・位置情報の取得精度 ・位置情報の取得方法
CLLocationManagerでは、distanceFilterを設定することで頻度を調整できる。 位置情報の取得頻度 distanceFilterとは 位置の更新が生成されるためにデバイスが移動しなければならない最小距離 (メートル) ※デフォルトは0のため設定していない場合、常に位置の更新が生成される
位置情報の取得精度 desiredAccuracyを設定していない場合 CLLocationManagerではdesiredAccuracyを設定することで精度を調整できる。 ※kCLLocationAccuracyBestがデフォルトで設定されます
・一度のみ位置情報を取得する ・フォアグラウンドで継続的に位置情報を取得する ・バックグラウンドで継続的に位置情報を取得する 位置情報の取得方法 電力消費量は:フォアグラウンド<バックグラウンド ・バックグラウンドは必要最低限とする ・常に位置情報を更新しつづけるのでは状況に応じて停止する
用途にあった取得精度・頻度・方法を調整することで、 バッテリーの消費量を抑えることができ、より安定したサービスを提供できる。
・iOSアプリで位置情報を取得する際にはCLLocationManagerを使って取得することが できる ・位置情報のアプリを作成する際には適切な取得設定をすることが大切 まとめ