ランニングやサイクリングなどの走行ログを GPS で記録し、地図・グラフで可視化する Flutter アプリです。
以前 Objective-C で作成していた Runlogger を、Flutter / Dart 習得のためテスト的に再実装したサンプルプロジェクトです(元アプリの基本機能のうち一部を実装)。後に SwiftUI 版 も作成し、マルチプラットフォーム対応を比較検証しています。数週間の作業なので、Flutter / Dart のプロから見れば改善点は多々あると思いますが、何かの参考になればと公開しています。
解説ブログ: Flutterで作るランニングロガー(y42u.net)
- 地図画面 — 現在位置をピンで表示。地図の拡大・縮小、衛星画像への切り替え
- 走行画面 — 走行時間・走行距離・速度・標高をリアルタイム表示
- グラフ表示 — 速度・標高の変化をグラフで可視化(区間ごとに表示切り替え)
- ログ保存 — 走行データを CSV ファイルとして保存
- フレームワーク: Flutter / Dart
- 主要パッケージ:
platform_maps_flutter— iOS / Android 共通の地図表示geolocator— GPS 位置情報の取得fl_chart— 速度・標高のグラフ描画latlong2— 座標(緯度経度)管理path_provider— CSV ファイルの保存先取得intl/flutter_launcher_icons/cupertino_icons
lib/
├── main.dart エントリポイント
├── map.dart 地図画面
├── run.dart 走行画面(データ・グラフ)
└── model/
├── gps.dart GPS 位置情報の取得
├── gpsLogData.dart 走行ログデータ
└── debugData.dart デバッグ用データ
Mac の VSCode に Flutter 開発環境を追加し、実行デバイスに iPhone シミュレータを指定して実行しています。iOS 以外は未検証ですが、iOS 依存部分はほとんど無いため Android への移植も容易です。
参考リンク:
- 環境設定: https://zenn.dev/lisras/articles/9f4fe12f920e59
- 地図プラグイン(platform_maps_flutter): https://zenn.dev/tama8021/articles/1231_flutter_apple_map
- 起動アイコン設定: https://zenn.dev/hott3/articles/flutter-launcher-image
(iOS は各サイズのアイコンが必要ですが、
assets/images/icon_ios.pngを1つ用意すれば自動生成されます)
- RunloggerSWUI — 同アプリの SwiftUI 版
- 作者の他のプロダクト: github.com/amru195704
MIT License。自由に使用してもらって問題ありません。
本プロジェクトはあくまでサンプルです。自由に参照・使用して構いませんが、自己責任でご利用ください。本ソースを使用した結果いかなるトラブルが発生しても、作者は一切の責任を負いません。