0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

営業が得意ではないので実力を示すべく移動距離計測スマホアプリを作ってみました。

Last updated at Posted at 2025-10-04

【React Native】AWS Location Serviceで作る高精度GPS距離トラッカーアプリ

はじめに

夜な夜な家の周りを散歩してデバッグしてリアルE2Eテストして仕上げたのにこれでどっかの誰かがパクって“私が書きました”って言ったら笑えるよね
React NativeとAWS Location Serviceを使って、リアルタイムで移動距離を計測・可視化するGPSトラッカーアプリを開発しました。
AWSのサービスを使うことで、AWSエコシステムとの統合が容易になり、より柔軟な位置情報アプリケーションを構築できます。

この記事では、アプリの機能紹介とAWS Location Serviceを活用したアーキテクチャについて解説します。

完成アプリの概要

主な機能

📍 リアルタイム位置追跡

  • GPS位置情報を継続的に監視し、3メートル以上の移動を検知して記録
  • バックグラウンドでもトラッキングを継続
  • デバイスの位置情報をAWS Location Service Trackerにリアルタイム送信

🗺️ インタラクティブ地図表示

  • 現在位置をマーカーで表示
  • 移動した軌跡をラインで可視化
  • ワンタップで現在地に地図を移動できる📍ボタン
  • トラッキング中は地図が自動追従

📊 移動統計のリアルタイム表示

  • 総移動距離: メートル/キロメートル単位で表示
  • 現在の速度: リアルタイムで時速を計算・表示
  • 経過時間: トラッキング開始からの時間を秒単位で計測
  • 平均速度: 総移動距離と経過時間から自動計算

🎯 高精度な距離計算

従来のHaversine公式ではなく、楕円体モデル(WGS84)を使用した測地線距離計算を実装しています。これにより:

  • 地球の形状(回転楕円体)を正確に考慮
  • 長距離でも誤差が蓄積しにくい
  • 実際のGPS測量に近い精度を実現
    Screenshot_20251005-055435.png

技術スタック

フロントエンド

  • React Native: クロスプラットフォーム開発

バックエンド(AWS)

  • Amazon Location Service: 位置情報の中核サービス
    • Map: 地図タイルの配信
    • Tracker: 位置データの収集・保存
    • Place Index: ジオコーディング機能(オプション)
    • Route Calculator: ルート計算機能(オプション)
  • Amazon Cognito: 認証とアクセス制御

アプリケーションの特徴

バッテリー効率の最適化

  • 位置更新の間隔を動的に調整
  • 移動していない時は更新頻度を下げる
  • 最小移動距離フィルターで不要な更新を削減
  • バックグラウンド動作時の省電力モード

ユーザーインターフェース

  • 直感的な開始/停止/リセットボタン
  • トラッキング状態を視覚的に表示(緑/赤のステータスドット)
  • 統計情報を見やすいカード形式で配置
  • レスポンシブなデザインで様々な画面サイズに対応

セットアップの流れ

1. AWS リソースの準備

  • Cognito Identity Poolの作成(認証不要でもOK)
  • Location Service Mapの作成(Esri等のデータプロバイダーを選択)
  • Location Service Trackerの作成
  • IAMポリシーで適切な権限を付与

2. React Nativeプロジェクトの構築

  • 必要なnpmパッケージのインストール
  • Android/iOSの権限設定(位置情報アクセス)

3. AWS SDKの統合

  • AWS SDK for JavaScriptの設定
  • Cognito認証情報の設定
  • Location Service APIとの接続

活用シーン

フィットネス・ヘルスケア

  • ランニング・ウォーキングの距離記録
  • サイクリングルートの保存
  • 消費カロリーの計算(移動距離と時間から推定)

ビジネス用途

  • 配送ドライバーの位置追跡
  • 営業担当者の訪問記録
  • フィールドワークの行動記録

個人利用

  • 旅行の記録とルート保存
  • 日々の移動パターンの分析
  • 新しい散歩コースの発見

今後の拡張可能性

統計・分析機能

  • 週間/月間の移動距離をグラフで可視化
  • よく訪れる場所のヒートマップ表示
  • 時間帯別の移動パターン分析

ソーシャル機能

  • ルートの共有(GPXファイルエクスポート)
  • 友人とのルート比較
  • おすすめルートのコミュニティ

機械学習の活用

  • AWS SageMakerで移動パターンを学習
  • 異常な移動の検知(セキュリティ用途)
  • 次の目的地の予測
  • 最適なルートの提案

ジオフェンス機能

  • 特定エリア進入/退出時の通知
  • 子供やペットの見守り
  • 営業エリアの管理

データエクスポート

  • GPX形式でルートデータを出力
  • CSV形式で統計データを出力
  • 他のフィットネスアプリとの連携

パフォーマンスへのこだわり

メモリ管理

  • 長時間トラッキング時のメモリリーク防止
  • ルート座標の適切な間引き処理
  • 不要になったデータの自動クリーンアップ

レンダリング最適化

  • React.memoによる不要な再レンダリング抑制
  • 地図タイルの効率的なキャッシング
  • 60FPSを維持する滑らかなアニメーション

ネットワーク最適化

  • バッチ処理による通信回数の削減
  • リトライロジックによる通信の安定性向上
  • 圧縮による通信量の削減

セキュリティとプライバシー

認証とアクセス制御

  • Cognito Identity Poolによる安全な認証
  • IAMポリシーによる最小権限の原則
  • デバイスIDベースのデータ分離

データ保護

  • 通信時のHTTPS暗号化
  • AWS側でのデータ暗号化保存
  • 位置データの匿名化オプション

プライバシー配慮

  • ユーザーによるトラッキングの完全制御
  • データ削除機能の実装
  • 透明性の高いプライバシーポリシー

まとめ

AWS Location Serviceを活用することで、以下を実現できました:

高精度な距離計算: 楕円体モデルによる測地線距離の正確な計測
リアルタイム追跡: スムーズな地図表示と軌跡の可視化
AWSエコシステムとの統合: 他のAWSサービスとの柔軟な連携
スケーラブルなアーキテクチャ: 大量のユーザーにも対応可能
データ主権の確保: 位置情報の完全なコントロール

React Nativeの開発しやすさとAWSの堅牢なインフラを組み合わせることで、プロダクションレベルの位置情報アプリケーションを効率的に構築できます。

位置情報を活用したアプリ開発を検討している方は、ぜひAWS Location Serviceという選択肢も視野に入れてみてください!

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?