ByteScope

GPX & FIT Viewer

時計やサイコンのGPX/FITを読む:サマリー・軌跡・グラフを一画面で確認し、FIT→GPX変換とCSV書き出しもブラウザ内で完結。ファイルは外に出ません。

GPX と FIT はこのページ上、あなたの端末の worker で解析します。アップロードもログインも不要で、ルートの場所が伝わりかねない地図タイルの取得も一切しません。

.gpx または .fit をここにドロップ

ウォッチ、サイクルコンピューター、アプリの記録を 1 つでも複数でも。クリックして選んでも構いません。

ファイルを追加でドロップするとリストに加わります。切り替えは左側から。

制限事項

  • 獲得標高と下降は、直前に数えた地点から 3 m 以上変化したときだけ加算します。GPS のぶれが積み重なって山にならないようにするためです。Strava や Garmin Connect は独自の標高データと平滑化を使うので、合計が違うのは普通のことです。
  • 移動時間は、速度が 0.5 m/s 以上だった区間の時間を足し合わせたものです。
  • ファイルに情報があれば距離は 2 つ表示します。デバイスが記録した値と、座標を足し合わせた値です。
  • メーカー独自の FIT メッセージは詳細セクションに番号だけ並べ、中身はデコードしません。
  • トラックの下に地図はありません。タイルを取りに行けば、その事業者にルートのあるエリアが伝わります。
  • FIT → GPX では、ラップ、デバイスのイベント、デベロッパーフィールド、デバイスが記録した速度と距離が失われます。パワーもオプションをオンにしない限り失われます。
  • FIT の時刻は UTC で、ブラウザのタイムゾーンに変換して UTC も併記します。タイムゾーンのない GPX の時刻は推測せず「タイムゾーン不明」と表示します。

このツールについて

スポーツウォッチやサイクルコンピューターが記録するのは .fit、ところが多くのルートサイトやアプリが受け付けるのは .gpx です。どちらでもこのページへドロップすれば、その場で解析されます。まずサマリー——距離、経過時間と移動時間、獲得標高と下降、平均・最高速度(またはペース)、心拍、パワー、記録した機器——続いて縮尺どおりに描いた軌跡(スケールバーと北矢印付き)、そして標高・速度・心拍・ケイデンス・パワー・気温のグラフを、ファイルに入っている分だけ表示します。複数ファイルをまとめてドロップし、左のリストで切り替えることもできます。

すべてブラウザの中で完結します。GPS 軌跡は「いつ、どこにいたか」の日記そのもので、ちょっと中身を見たいだけなのにサーバーへ渡す理由はありません。解析はあなたのマシン上の Web Worker で動き、ページにアップロード先は存在せず、タブを閉じれば何も残りません。軌跡を地図の上ではなく無地の背景に描くのも同じ理由です。地図タイルを要求した時点で、ルートのある地域がタイルサービス側に伝わってしまうからです。

FIT を GPX や CSV に変換

FIT から GPX への変換は GPX 1.1 のトラックを書き出し、心拍・ケイデンス・気温は Garmin の TrackPointExtension に収めます。Strava、Komoot、Garmin Connect をはじめ、ほとんどのルートツールが読める形式です。GPX にはラップ、機器イベント、developer fields、機器が計測した速度と距離を入れる場所がないため、これらは失われ、ページに失われた項目を列挙します。パワーには標準の GPX 要素がなく、チェックを入れると非標準の <power> として書き出せますが、スキーマ検証に通らなくなるため初期状態ではオフです。FIT も GPX も CSV に書き出せます。レコード1点につき1行、単位は列名に含めてあり(ele_m、speed_mps、hr_bpm)、そのまま CSV Explorer で開くリンクも用意しています。

数値の計算方法

獲得標高と下降は、前回カウントした地点から 3 m 以上変化したときだけ加算します。GPS のぶれが積もって山になるのを防ぐためです。Strava や Garmin Connect はそれぞれ独自の平滑化と標高ソースを使うので、合計が一致しないのは普通のことです。移動時間は、隣り合う2点間で 0.5 m/s 以上の速度が出ていた秒数だけを足し合わせます。距離はファイルが許す限り2種類示します。機器が記録した値(ホイールセンサーや機器側の GPS フィルタ)と、生の座標を点ごとに足し合わせた値です。

パーサーが「分からない」と認める部分

FIT ファイルにはメーカー独自のメッセージが含まれ、そのメーカーのソフトでしか読めません。詳細セクションでは、メッセージ種別ごとの件数とフィールド名、developer fields の名前と単位、そして解読できないメッセージ番号を列挙します——分かったふりはしません。1レコードが壊れていてもファイル全体を捨てることはなく、解析できた点はそのまま表示し、スキップした件数を下に示します。FIT の時刻は UTC で保存されているため、ブラウザのタイムゾーンで表示しつつ UTC 値も併記します。GPX の時刻に末尾の Z も +09:00 のような時差もない場合は、推測せず「タイムゾーン不明」と表示します。

よくある質問

GPX や FIT ファイルはどこかにアップロードされますか?

いいえ。ファイルはディスクから読み込まれ、ページ内の Web Worker で解析されます。サマリー、軌跡の描画、グラフ、変換後のファイルはすべてローカルで生成されます。サーバーもアカウントも介在せず、ルートの場所が漏れるような地図タイルの要求も一切行いません。

獲得標高が Strava や Garmin Connect と違うのはなぜ?

唯一の正解がないからです。各プラットフォームは標高ソース(ファイル内の気圧計か、座標から引いた地形モデルか)と平滑化の方法をそれぞれ独自に選んでいます。このページはファイル内の標高を使い、前回カウントした地点から 3 m 以上動いたときだけ加算します。その規則はページに明記してあるので、同じ基準で比較できます。他のプラットフォームと合計が食い違うのは普通のことで、不具合ではありません。

FIT を GPX に変換すると何が失われますか?

ラップ、機器イベント(一時停止やボタン操作)、Connect IQ アプリの developer fields、機器が計測した速度と距離、そして非標準オプションにチェックを入れない限りパワーです。心拍、ケイデンス、気温、標高、時刻は Garmin の TrackPointExtension に残ります。開いたファイルについて失われる項目をページに列挙するので、必要なものがあれば元の .fit を残しておいてください。

軌跡の下に地図がないのはなぜ?

意図的です。ルートの下に道路を描くには、あなたがいた地域そのものをタイルサーバーに要求することになり、自宅や職場、いつもの練習コースの位置を第三者に渡してしまいます。代わりに軌跡は無地のキャンバスへ縮尺どおりに描き、スケールバーと北矢印を添えています。ルートの形を見分けたり GPS の飛びを見つけたりするには十分です。

スタート付近の点を削れば、Strava に自宅はバレませんか?

保証はできません。そもそも現在のバージョンにはトリミング機能がなく(後の段階で予定しています)、仮に削ったとしても安全とは言えません。時刻、出発した方向、データが始まる地点はプラットフォーム側に見えたままで、他のアクティビティと突き合わせれば推定できてしまいます。Strava、Garmin Connect、Komoot にはそれぞれプライバシーゾーン機能があり、自分の統計はそのままに他のユーザーから該当エリアを隠せるので、そちらを使うのが確実です。

距離が2つ表示されるのはなぜ?

片方は機器が記録した値で、通常はホイールセンサーか機器側の GPS フィルタによるもの。もう片方は生の座標を点ごとに足し合わせた値です。自転車ではホイールセンサーのほうが正確で、低速時は GPS のぶれが座標の合計を水増しします。両方を示すことで、アップロード先のプラットフォームがどちらに近いかが分かります。

GPX に変換するとき、パワーのオプションはチェックすべき?

読み込み先のツールが対応していると分かっている場合だけです。GPX にはパワーの標準要素がなく、ここで書き出す <power> は GPX 自身の名前空間に置かれるため、厳密なバリデーターはファイルを拒否します。Strava や大半のルートプランナーに使うならオフのままに。パワーが必要なら CSV に書き出すか、.fit を残してください。

時計の FIT ファイルが他で開けません。中に何が入っていますか?

ここで開いて詳細セクションまでスクロールしてください。メッセージ種別ごとの件数とフィールド、developer fields の名前と単位、パーサーが理解できないメーカー独自メッセージの番号が並びます。ファイルの一部が壊れていても解析できた点は表示され、スキップした件数が下に出ます。