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
36
現在地から始まる物語:位置情報アプリ開発の冒険
riataso
April 29, 2025
Tweet
Share
More Decks by riataso
See All by riataso
SwiftUIのアニメーション_ちょっと触ってみた話
riataso_kebin
0
7
Other Decks in Programming
See All in Programming
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
130
rage against annotate_predecessor
junk0612
0
170
スケールする組織の実現に向けた インナーソース育成術 - ISGT2025
teamlab
PRO
2
170
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
4.3k
Namespace and Its Future
tagomoris
6
710
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.9k
「手軽で便利」に潜む罠。 Popover API を WCAG 2.2の視点で安全に使うには
taitotnk
0
870
Tool Catalog Agent for Bedrock AgentCore Gateway
licux
7
2.5k
アセットのコンパイルについて
ojun9
0
130
概念モデル→論理モデルで気をつけていること
sunnyone
3
300
デザイナーが Androidエンジニアに 挑戦してみた
874wokiite
0
550
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
170
Featured
See All Featured
Side Projects
sachag
455
43k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Rails Girls Zürich Keynote
gr2m
95
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Faster Mobile Websites
deanohume
309
31k
Designing for Performance
lara
610
69k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
3k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
How GitHub (no longer) Works
holman
315
140k
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を使って取得することが できる ・位置情報のアプリを作成する際には適切な取得設定をすることが大切 まとめ