axiom-location について
axiom-locationは、Core LocationとMapKitの開発を案内するルーティングスキルです。権限、位置情報の監視、ジオフェンス、地図、検索、経路案内のガイド、APIリファレンス、診断資料へ導きます。
主な機能
- 01Core LocationとMapKitのタスク案内
- 02権限と位置情報監視の解説
- 03ジオフェンスと位置APIリファレンスへのリンク
- 04地図・検索・経路案内のガイド
- 05位置情報と地図の問題診断
活用シーン
- 01位置情報の権限や監視方式の選定
- 02ジオフェンスやバックグラウンド位置情報の実装
- 03地図の注釈・検索・経路案内の追加
- 04位置情報更新や地図要素の欠落診断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ charleswiltgen/ axiom --skill axiom-locationインストール後、Claude Code で/axiom-locationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skills/core-location-diag.mdcore-location-ref.mdcore-location.mdmapkit-diag.mdmapkit-ref.mdmapkit.md詳細
位置情報とマップ
位置情報サービス、マッピング、ジオフェンシング、Core Location/MapKit に関する作業では、必ずこのスキルを使用してください。
クイックリファレンス
| 症状/タスク | リファレンス |
|---|---|
| 認証戦略(使用中のみ/常に) | skills/core-location.md を参照してください |
| 監視方法(継続的、重要な変更、CLMonitor) | skills/core-location.md を参照してください |
| 精度の選択、バックグラウンドでの位置情報 | skills/core-location.md を参照してください |
| CLLocationUpdate、CLMonitor、CLServiceSession API | skills/core-location-ref.md を参照してください |
| 認証 API のパターン、ジオフェンシング API | skills/core-location-ref.md を参照してください |
コンパスの方位、方位の基準となるボディ(headingBody) | skills/core-location-ref.md(パート 12)を参照してください |
| 位置情報の更新が届かない | skills/core-location-diag.md を参照してください |
| バックグラウンドで位置情報が機能しなくなる | skills/core-location-diag.md を参照してください |
| 認証が常に拒否される、ジオフェンスの失敗 | skills/core-location-diag.md を参照してください |
| SwiftUI Map、アノテーション、マーカー、クラスタリング | skills/mapkit.md を参照してください |
| MKMapView と SwiftUI Map の選択 | skills/mapkit.md を参照してください |
| 検索、経路案内、ルーティング | skills/mapkit.md を参照してください |
| MapKit API:Marker、Annotation、MKLocalSearch、MKDirections | skills/mapkit-ref.md を参照してください |
| Look Around、MKMapSnapshotter、MKMapItem | skills/mapkit-ref.md を参照してください |
| アノテーションが表示されない、リージョンが飛ぶ | skills/mapkit-diag.md を参照してください |
| クラスタリングが機能しない、検索の失敗 | skills/mapkit-diag.md を参照してください |
| オーバーレイの描画、ユーザーの位置情報が表示されない | skills/mapkit-diag.md を参照してください |
判断ツリー
digraph location {
start [label="Location / Maps task" shape=ellipse];
domain [label="Core Location or MapKit?" shape=diamond];
cl_type [label="Need what?" shape=diamond];
mk_type [label="Need what?" shape=diamond];
start -> domain;
domain -> cl_type [label="Core Location"];
domain -> mk_type [label="MapKit / Maps"];
cl_type -> "skills/core-location.md" [label="authorization, monitoring\nstrategy, accuracy,\nbackground location"];
cl_type -> "skills/core-location-ref.md" [label="API syntax\n(CLLocationUpdate,\nCLMonitor, CLServiceSession)"];
cl_type -> "skills/core-location-diag.md" [label="something broken\n(no updates, denied,\ngeofence not firing)"];
mk_type -> "skills/mapkit.md" [label="patterns, decisions\n(SwiftUI Map vs MKMapView,\nannotations, search)"];
mk_type -> "skills/mapkit-ref.md" [label="API syntax\n(Marker, Annotation,\nMKLocalSearch, MKDirections)"];
mk_type -> "skills/mapkit-diag.md" [label="something broken\n(annotations missing,\nregion jumping, clustering)"];
}
- 認証戦略、監視方法、精度については? →
skills/core-location.md1a. 特定の API 構文(CLLocationUpdate、CLMonitor、CLServiceSession)が必要ですか? →skills/core-location-ref.md1b. 位置情報が機能しませんか? →skills/core-location-diag.md - マップ、アノテーション、検索、経路案内を追加しますか? →
skills/mapkit.md2a. 特定の MapKit API 構文(Marker、MKLocalSearch、MKDirections)が必要ですか? →skills/mapkit-ref.md2b. マップの表示に問題がありますか? →skills/mapkit-diag.md - 位置情報がバッテリーを消耗していますか? → axiom-performance(skills/energy.md)を参照してください
- 位置情報のバックグラウンドタスクのスケジュール設定については? → axiom-integration を参照してください
- 位置情報のプライバシーマニフェストについては? → axiom-integration を参照してください
競合の解決
location と axiom-performance:位置情報がバッテリーを消耗している場合:
- まず location を試してください — 精度が過剰に高い、または更新が継続的であることが、最も多い原因です。精度の選択と監視戦略については
skills/core-location.mdを参照してください。 - 位置情報の設定がすでに適切な場合に限り、axiom-performance を使用してください — 過剰な追跡の可能性を排除してからプロファイリングしてください。
location と axiom-integration:バックグラウンドで位置情報を実装する場合:
- バックグラウンド位置情報の設定(Info.plist、ケイパビリティ、CLServiceSession)→ location を使用
- 定期的な位置情報処理のための BGTaskScheduler → axiom-integration を使用
location と axiom-data:位置情報データを保存または同期する場合:
- 位置情報の更新の取得、ジオフェンシング → location を使用
- 位置情報履歴の永続化、CloudKit 同期 → axiom-data を使用
location と axiom-build:シミュレーターで位置情報の権限が機能しない場合:
- 認証ダイアログ、Info.plist のキー → location を使用(
skills/core-location-diag.md) - シミュレーターの GPS シミュレーション、
simctl location→ axiom-build を使用
重要なパターン
Core Location の基本(skills/core-location.md):
- 認証を段階的に引き上げる戦略(まず「使用中のみ」、後から「常に」)
- モニタリングの判断ツリー(継続的な更新/重要な変更/CLMonitor)
- バッテリーへの影響を考慮した精度の選択
- バックグラウンドでの位置情報設定
- 時間コストを伴うアンチパターン(「常に」の認証を早まって要求する、不要な継続的更新)
Core Location API(skills/core-location-ref.md):
- CLLocationUpdate AsyncSequence(iOS 17+)
- 条件ベースのジオフェンシングを行う CLMonitor(iOS 17+)
- 宣言型の認証を行う CLServiceSession(iOS 18+)
- 認証 API のパターン、バックグラウンドモードの設定
Core Location の診断(skills/core-location-diag.md):
- 位置情報の更新が届かない
- バックグラウンドで位置情報が機能しなくなる
- 認証が常に拒否される
- ジオフェンスイベントが発生しない
- 位置情報の精度が予想外に低い
MapKit(skills/mapkit.md):
- SwiftUI Map と MKMapView の判断ツリー
- アノテーションのパターン(Marker、カスタム Annotation)
- 検索(MKLocalSearch、オートコンプリート)
- 経路とルート案内
- アンチパターン(ビュー本体内のアノテーション、ビューの再利用なし、setRegion のループ)
MapKit API(skills/mapkit-ref.md):
- SwiftUI Map API(MapCameraPosition、コンテンツビルダー、コントロール)
- MKMapView のデリゲートパターン
- MKLocalSearch、MKDirections
- Look Around、MKMapSnapshotter
- クラスタリングの設定
MapKit の診断(skills/mapkit-diag.md):
- アノテーションが表示されない(緯度/経度の入れ替わり、デリゲートの設定漏れ)
- マップ領域が飛ぶ/ループする(updateUIView のガード)
- クラスタリングが機能しない(clusteringIdentifier の設定漏れ)
- 検索結果が返らない(resultTypes、領域による絞り込み)
- オーバーレイの描画に失敗する
誤った合理化を防ぐ
| 考え | 実際 |
|---|---|
| 「最初に『常に』の認証を要求すればいい」 | 拒否率は30~60%です。まず「使用中のみ」を要求し、後から引き上げてください。戦略については skills/core-location.md を参照してください。 |
| 「自分の用途なら継続的な更新で問題ない」 | アプリが秒未満の精度で位置情報を必要としていなくても、継続的な更新はバッテリーを消耗します。重要な変更かCLMonitorを使用してください。 |
| 「MKMapViewを使おう。こちらのほうが柔軟だから」 | iOS 17以降、SwiftUI Mapでほとんどの用途に対応できます。MKMapViewを使うと、UIViewRepresentable の定型コードが必要になります。判断ツリーについては skills/mapkit.md を参照してください。 |
| 「アイテムが少しなら、ビュー本体にアノテーションを置いても問題ない」 | ビューが更新されるたびにアノテーションが再作成されます。50個でも表示が引っかかります。@State または @Observable を使ってモデルに移してください。 |
| 「ジオフェンシングの仕組みは分かっている」 | CLMonitor(iOS 17以降)は従来の領域モニタリングを条件ベースの仕組みに置き換えます。APIは大きく変更されています。 |
| 「バックグラウンドで位置情報を使うには、ケイパビリティを設定するだけでいい」 | Info.plist のキー、ケイパビリティ、CLServiceSession(iOS 18以降)、そして適切な認証レベルが必要です。どれか1つでも欠けると、何も通知されずに失敗します。 |
| 「位置情報のエラー対応は後でやればいい」 | 認証の拒否はエラーではなく、デフォルトの状態です。最初から対応してください。 |
使用例
ユーザー:「位置情報の権限を要求するにはどうすればよいですか?」
→ 参照:skills/core-location.md
ユーザー:「CLLocationUpdate APIとは何ですか?」
→ 参照:skills/core-location-ref.md
ユーザー:「位置情報の更新がまったく届きません」
→ 参照:skills/core-location-diag.md
ユーザー:「ピン付きのマップを追加するにはどうすればよいですか?」
→ 参照:skills/mapkit.md
ユーザー:「SwiftUI Map APIとは何ですか?」
→ 参照:skills/mapkit-ref.md
ユーザー:「アノテーションがマップに表示されません」
→ 参照:skills/mapkit-diag.md
ユーザー:「ジオフェンシングを実装するにはどうすればよいですか?」
→ 参照:skills/core-location.md、続いて skills/core-location-ref.md
ユーザー:「位置情報でバッテリーが消耗します」
→ 参照:skills/core-location.md、続いて axiom-performance(skills/energy.md)を参照
ユーザー:「マップに検索機能を追加するにはどうすればよいですか?」
→ 参照:skills/mapkit.md、続いて skills/mapkit-ref.md