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
45
現在地から始まる物語:位置情報アプリ開発の冒険
riataso
April 29, 2025
Tweet
Share
More Decks by riataso
See All by riataso
SwiftUIのアニメーション_ちょっと触ってみた話
riataso_kebin
0
10
Other Decks in Programming
See All in Programming
EMこそClaude Codeでコード調査しよう
shibayu36
0
590
PyCon mini 東海 2025「個人ではじめるマルチAIエージェント入門 〜LangChain × LangGraphでアイデアを形にするステップ〜」
komofr
3
490
釣り地図SNSにおける有料機能の実装
nokonoko1203
0
200
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
9.5k
Vueのバリデーション、結局どれを選べばいい? ― 自作バリデーションの限界と、脱却までの道のり ― / Which Vue Validation Library Should We Really Use? The Limits of Self-Made Validation and How I Finally Moved On
neginasu
3
1.8k
ノーコードからの脱出 -地獄のデスロード- / Escape from Base44
keisuke69
0
420
Kotlinで実装するCPU/GPU 「協調的」パフォーマンス管理
matuyuhi
0
280
AIのバカさ加減に怒る前にやっておくこと
blueeventhorizon
0
150
ALL CODE BASE ARE BELONG TO STUDY
uzulla
30
6.9k
O Que É e Como Funciona o PHP-FPM?
marcelgsantos
0
250
GC25 Recap: The Code You Reviewed is Not the Code You Built / #newt_gophercon_tour
mazrean
0
140
CSC305 Lecture 13
javiergs
PRO
0
360
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
Thoughts on Productivity
jonyablonski
72
4.9k
Side Projects
sachag
455
43k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
8k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Typedesign – Prime Four
hannesfritz
42
2.9k
Writing Fast Ruby
sferik
630
62k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
BBQ
matthewcrist
89
9.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
We Have a Design System, Now What?
morganepeng
54
7.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
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を使って取得することが できる ・位置情報のアプリを作成する際には適切な取得設定をすることが大切 まとめ