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
62
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
現在地から始まる物語:位置情報アプリ開発の冒険
riataso
April 29, 2025
More Decks by riataso
See All by riataso
SwiftUIのアニメーション_ちょっと触ってみた話
riataso_kebin
0
20
Other Decks in Programming
See All in Programming
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
110
MIZARU@SPAJAM2026 第二回予選
1901drama
0
100
新卒PdEのリアル
ryu1013
1
380
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
140
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
120
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
340
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
140
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
440
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
110
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
620
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
WENDY [Excerpt]
tessaabrams
12
39k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Site-Speed That Sticks
csswizardry
13
1.5k
Code Review Best Practice
trishagee
74
20k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
Raft: Consensus for Rubyists
vanstee
141
7.7k
New Earth Scene 8
popppiees
3
2.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
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を使って取得することが できる ・位置情報のアプリを作成する際には適切な取得設定をすることが大切 まとめ