iPhone用GPSトラックレコーダー
走った場所を書き留めて、それを失いません。
Roam(ローム)は、GPSの測位が届いたその瞬間に、走行の累計値と同じトランザクションで端末へ書き込みます。だから、iOSがメモリを回収するためにアプリを終了させても、クラッシュしても、手動で強制終了されても、その走行は残ります。トンネルで電波が途切れたときは、証拠のない直線を引くかわりに、穴が開いたことをそのまま記録します。アカウントもサインインも同期もありません。
App Storeでダウンロード
iPhone · iOS 17以降 · 記録・閲覧・リプレイは無料 · アカウント不要
Sample ride
Cycling
recorded
no fix here
18.4 kmdistance
1:02:11moving
241 mclimb · barometer
Signal lost for 4 minutes near the tunnel. Not measured, not guessed, not added to the distance.
- 0アカウント
- 0解析・広告SDK
- 30対応言語
- 3エクスポート形式
このアプリが実際にやっていること
測位は、失う隙ができる前にディスクへ
位置情報のコールバック1回が1バッチ、1バッチが1回のデータベーストランザクションです。測位点と、その走行の累計値は、いつも一緒にコミットされます。停止ボタンが押されるのを待つバッファはどこにもなく、書き込み処理のなかに測位点をそっと取りこぼす経路もありません。コミットできなかったバッチはエラーとして表面化し、握りつぶさずにアラームへ退避させます。路肩で効いてくるのは結局この一点です。40km地点でアプリが落ちても、40km地点まではすでに書き終わっています。復帰のときに2万8千点を最初からたどり直して現在地を割り出すようなこともしません。サマリーの行が背後の測位点と食い違うことを、はじめから許していないからです。
欠けたところは、欠けたまま描きます
トンネル、深い谷、地下駐車場、壁に押しつけられたジャケットのポケット。測位が届かなくなると、Roamはその区間をいったん閉じ、電波が戻ったところで新しい区間を開きます。あいだにできた穴は、両端を持つ実体としてデータベースに残ります。補間は一切しませんし、その直線距離が走行距離に足されることもありません。そのあいだに何が起きたのか、エンジンには証拠がないからです。証拠のないところを推測で埋めることこそ、トラックレコーダーが唯一やってはいけないことだと考えています。地図上の破線と、詳細画面に出る「N分間、信号が途切れていました」という一文は、同じ計算から生まれます。だから絵と数字がすれ違うことはありません。
獲得標高はGPSの高度ではなく気圧計から
GPSの高度は、スマートフォンが出す数値のなかでいちばん頼りないものです。それをそのまま積み上げるアプリは、平坦な走行に600メートルの登りをつけて返してきます。Roamは気圧センサーを読み、気圧高度をGPS高度と並べて保存し、気圧の値があるときはそちらを優先します。そして値がないときは、その理由も追いかけます。センサーが載っていない、許可をまだ求めていない、許可を拒否された、プロファイルで制限されている、Roamの設定で切ってある、起動したが失敗した。外から見ると、センサーが無い状態と黙っている状態は見分けがつきません。この二つを区別できるかどうかが、直せる不具合と、誰にも説明できない数字との分かれ目になります。
記録したサンプルを消すことはありません
フィルタリングも、スムージングも、オートポーズも、行を削除することはありません。いずれも測位点に立つフラグとして記録され、生のデータは届いたままの姿でディスクに残ります。これは保存方法のなりゆきではなく、意図的な保険です。ヒューリスティックは実際の走行を取り違えることがあり、取り違えたときに元のサンプルが残っていれば、後のバージョンがそこからより良い軌跡を導き直せます。自分が気に入らなかったサンプルを黙って捨てるアプリは、自分が間違っていたという唯一の証拠を壊してしまっています。
赤信号と、電波切れを取り違えません
座標の列だけを見ていると、立ち止まっている状態と受信できていない状態はよく似ています。この二つを混同するアプリは、トンネルの入口で走行を一時停止させるか、コーヒーを買っているあいだも時計を回し続けるかのどちらかになります。Roamは端末のモーションデータを使って両者を見分けます。モーションとフィットネスの許可をお願いしている理由は、これひとつだけです。
バックグラウンドの権限はひとつだけ
スタートを押して、端末をポケットに入れて、画面を消して、あとは走るだけです。Roamが宣言しているバックグラウンドモードは、位置情報のちょうど一つだけで、リポジトリにはこのリストが1項目でも増えたらビルドを失敗させるゲートが入っています。それでもiOSが走行の途中でアプリを終了させた場合、位置情報を「常に許可」にしてあれば、iOSがバックグラウンドでアプリを起動し直し、記録を続けられることがあります。これは保険であって、保証ではありません。この許可がなくても記録はできますし、許可を求める文面でも、必須であるかのようには書いていません。
その瞬間を、持って帰る
写真、短い動画、ひとことの音声メモ。自転車から降りずに残したものが、ルート上のまさにその地点に紐づきます。あとで見返すと、地図の上と時系列の上の、起きた場所そのものに並びます。タイムスタンプしかない写真フォルダより、長い一日の索引としてはずっと優秀です。この撮影機能はRoam Proに含まれます。
自分の走行を、よそでも開けるファイルに
トラックはGPX、KML、またはCSVで書き出せます。CSVは2つの形があり、分析向けに1点1行のもの、1年分を表計算にまとめるための1トラック1行のものが選べます。書き出しは動作中のレコーダーではなくデータベースを読むので、記録プロセスが落ちてそのまま戻らなかった中断中の走行も、単独で書き出せます。FITは、中途半端に動くものを載せるくらいならと、あえて用意していません。エクスポートはRoam Proに含まれます。
実際の走行は、こんな流れです
登録の手続きもなければ、埋めるプロフィールもありません。これが全体像のすべてなので、インストールする前に、自分の求めているものかどうかを判断できます。
- 開いてスタートを押すサイクリング、ランニング、ハイキング、ドライブなど、これからやることを選んで1回タップするだけです。アカウント画面が立ちはだかることはありません。そもそもアカウントがないからです。
- 端末をしまうポケット、フロントバッグ、ジャージの背中、グローブボックス。画面は消したままで構いません。Roamはバックグラウンドで記録を続け、測位は戻ってくるまで抱え込まずに、届くそばからコミットされます。
- トンネルは気にしない電波が切れるときは切れます。Roamは区間をいったん閉じ、待ち、測位が戻ったら新しい区間を開きます。こちらから何かする必要はありませんし、抜けた区間は埋められるのではなく、抜けたものとして示されます。
- 覚えておきたいものをつかまえる景色の写真、下りの10秒、次はどこで曲がるかを声に出したひとこと。起きた場所の地図上に残ります。ここはProの機能です。
- 止めて、眺める距離、動いていた時間、速度、気圧計から出した獲得標高、そして信号が途切れていた区間についての正直な但し書き。ラインに沿ってリプレイすれば、その日の流れも見返せます。ここまでは全部、無料のアプリに入っています。
正直に言っておきたい限界が二つあります。Roamは走った場所を記録するアプリで、コーチではありません。目標を立ててくれることも、その走りが良かったかどうかを判定することもありません。もう一つは、これがスマートフォンのGPSだということです。濡れたジャケットの下、ジャージのポケットに入った端末の受信は、専用のサイクルコンピューターには及びません。欠落をならさずに欠落として示しているのは、まさにそのためです。
走行データの置き場所
あなたの端末の中です。アカウントもサインインも同期もないので、トラックがアップロードされる先そのものが存在しません。メールアドレスを持っている人もいません。一度も尋ねていないからです。
走行の一覧を表示する画面には、取りに行く先がありません。これは約束ではなく、仕組みで担保しています。リポジトリには、この機能一式をまるごと走査して通信系のシンボル(URLSession、dataTask、Supabase、裸のhttp://)を探し、一つでも現れたらビルドを失敗させるゲートが入っています。このゲートがあるのは、以前のバージョンが一覧をサーバーから読んでいたからです。その結果、トンネルの中でアプリを開いたライダーには、空の一覧が表示されました。エラーですらありません。空の一覧、つまり「あなたの走行記録は消えました」と読める画面です。
プロジェクト全体で使っているサードパーティ製パッケージは、ちょうど二つです。SQLiteのライブラリと、地図のレンダラー。解析SDKも、クラッシュレポートSDKも、いかなる広告SDKもありません。起動回数を数えているものはなく、どのルートを走ったかを知っているものもなく、あなたについての行を持っているサーバーもどこにもありません。
ひとつだけネットワークを使うものがあり、黙っているのは不誠実なので書いておきます。地図の背景タイルは、ほかの地図と同じように、タイル配信のエンドポイントから取得されます。あの通信が求めているのは世界の絵であって、あなたの軌跡ではありません。座標がどこかへ送られることはなく、ルートの線はあなたの端末の中のデータベースから描かれています。
トラックも、メディアも、設定も、アプリを削除すれば一緒に消えます。残したいものがあれば先に書き出してください。ファイルはiOS標準の共有シートを通るので、送った先にだけ届き、それ以外のどこにも行きません。
無料の範囲と、Roam Proについて
走行を最後まで記録すること、それを見返すこと、リプレイすることは無料で、これからも無料のままにするつもりです。リポジトリにも同じ趣旨がそのまま書いてあります。トラックを最後まで記録できないレコーダーは無料プランではなく、ただの壊れたアプリだ、と。距離、動いていた時間、速度、気圧計による獲得標高、地図、欠落の印、リプレイは、すべて無料のアプリに入っています。
Roam Proが解除するのは4つ、ちょうど4つです。ルート上での撮影(写真・動画・音声メモ)、エクスポート(GPX・KML・CSV)、ホーム画面のウィジェット、そして統計画面。この4項目のリストはソースコード内に一か所だけあり、購入画面はそこから描かれます。だから購入画面が、コードでは制限していないものを約束してしまうことがありません。これは、このアプリが過去に痛い目を見た失敗の形です。
Proは月額サブスクリプション、年額サブスクリプション、買い切りの3通りがあり、どれを選んでも解除されるものはまったく同じです。違うのは支払い方だけです。お住まいの国の現在の価格はApp Storeのページに出ています。ここには書きません。マーケティングページに載せた価格は古くなり、古い価格は不具合だからです。
アプリの中にありながら、あえて販売していない機能が二つあります。オフライン地図パックと、Apple Watchアプリです。開発側の記録によれば、どちらも実機で端から端まで検証できていません。誰も動くところを見届けていないものを売れば、返金の列と審査のリジェクトが待っているだけです。
App Storeでダウンロード
よく最初に聞かれること
圏外でもまったく問題なく動きますか。
記録については、はい。GPSは受信機です。端末は衛星の信号を聞いて自分の位置を割り出しているので、携帯電話回線もWi-Fiも必要ありません。Roamはすべての測位を端末にそのまま書き込み、走行一覧も端末から読むので、アンテナが1本も立たない谷で記録した走行もちゃんと完結します。ネットワークが必要なのは地図の背景画像だけです。データ通信のないルートでは、線は描かれても、その背後の街路は出てこないことがあります。
走行中にアプリが落ちたらどうなりますか。
その瞬間までに記録された分は、すでに端末の中にあります。最後にまとめて書くのではなく、届くそばから書いているからです。次にアプリを開くと、中断していた走行はちゃんと見つけ出され、整合を取り直されます。捨てられることも、黙って締められることもありません。位置情報を「常に許可」にしてあれば、iOSがバックグラウンドでアプリを起動し直すことがあり、そのときRoamはGPSを組み直します。ただし、ここは正直に書いておきます。この自動起動は保険であって、保証ではありません。アプリが落ちてから起動し直されるまでのあいだの位置データは、まったく存在しません。あとから補えるAPIもありません。約束できるのは、書いたものが消えないことまでです。途切れずに続くことではありません。
他のアプリより距離が短く出るのはなぜですか。
おそらくRoamが、測位点を持っていない区間を数えなかったからです。信号が途切れると、その穴は両端を持つ穴として保存され、その直線距離が走行距離に足されることはありません。両端を線で結んでしまうアプリは、もっと長い距離と、建物を突き抜けるルートを見せてきます。Roamが数えなかった区間は走行の詳細画面に明記されるので、何を数えなかったのかがそのまま確認できます。
獲得標高の数字はどこから来ていますか。
端末の気圧計です。GPSの高度ではありません。気圧の値はGPSの高度と並べて保存され、値があるときは常にそちらが優先されます。平坦な走行で数字が膨らまないのはそのためです。値がないときも、Roamはどの理由に当たるのかを把握しています。センサーが無い、許可をまだ求めていない、許可を拒否された、制限されている、設定で切ってある、起動したが失敗した。黙ってゼロと報告することはしません。
アカウントは必要ですか。
いいえ。そもそも作れません。サインイン画面はなく、メールアドレスも集めず、サーバーに同期されるものもありません。そのぶん、はっきり言っておくべきことがあります。走行データはこの端末の中にあります。別の場所にも置いておきたいなら、書き出してください。
無料ですか。
走行の記録、閲覧、リプレイは無料です。Roam Proは4つの機能を解除する有料アンロックで、中身はルート上での撮影、エクスポート、ウィジェット、統計画面です。月額、年額、買い切りから選べて、どれも解除される範囲は同じです。価格はApp Storeのページに出ています。
データを取り出せますか。
はい、Proでどうぞ。GPX、KML、またはCSVで、CSVは1点1行と1トラック1行の2つの形から選べます。書き出しは動作中のレコーダーではなくデータベースを読むので、記録が中断したまま再開されなかった走行でも書き出せます。
何を記録できますか。
サイクリング、ランニング、ハイキング、ドライブのほか、カスタムのアクティビティを含むいくつかの種類に対応しています。種類によって走行の見せ方や分析の一部が変わりますが、記録そのものはどれを選んでも同じ測位のストリームです。
スマホでの軌跡記録は、実際どこで失敗するのか
スマホが「どこを通ったか」を記録するとき、実際に問題になる箇所はそれほど多くありません。その一つひとつを平たく説明します。このアプリを入れるかどうかとは関係なく読めます。
記事一覧