データ分析

FITファイルとは:ランナーのためのウォッチデータ完全ガイド

Garmin、COROS、Wahooのデバイスで記録したすべてのランは、FITファイルというコンパクトなバイナリ形式の中に保存されています — そこにはプラットフォームが表示する以上の情報が詰まっています。このガイドでは、FITファイルに実際に何が含まれているのか、GPXやTCXとどう違うのか、開き方と変換方法、そして生データを使ってトレーニング履歴を検証・修復し、真に自分のものにする方法を解説します。

18分で読めます
主なポイント
  • FITはFlexible and Interoperable Data Transferの略です。ANT+無線プロトコルを生み出したカナダ・アルバータ州の企業で、2006年からGarmin傘下となったDynastream Innovationsによって開発され、現在ではGarmin、COROS、Wahoo、Zwift、そして主要なトレーニングプラットフォームの事実上の標準記録形式となっています。
  • FITはテキストではなくバイナリ形式です。1時間のランはFITで約100〜300 KBですが、GPXやTCXでは1〜3 MBになります。冗長なXMLタグではなく、すべての値がコンパクトな型付きバイトとして格納されるためです。トレードオフとして、デコードせずにテキストエディタやExcelで開くことはできません。
  • FITはウォッチが知っているすべてを記録します:秒単位のGPS、心拍数、ケイデンス、パワー、温度、ランニングダイナミクス、ラップ、デバイス情報、R-R間隔、そしてStrydパワーのようなサードパーティのデベロッパーフィールドまで。GPXは位置・時刻と少数の拡張のみを保持し、TCXはラップと心拍を追加しますが、それでもほとんどのセンサーデータは失われます。
  • FITからGPXへの変換は不可逆的なデータ損失を伴います。心拍数、ケイデンス、温度はGPX拡張で残せますが、ラップ、パワー、ランニングダイナミクス、R-R間隔、デバイスメタデータは失われます。GPXへの変換はルート共有のためだけに、実際の数値を分析したい場合はCSVへ変換しましょう。
  • オリジナルのFITファイルは常に取得できます:Garmin Connect(「オリジナルをエクスポート」)、COROSとSuuntoのアプリ(FITのエクスポート/ダウンロード)、Strava(「オリジナルをエクスポート」)、そしてApple WatchではHealthFitやRunGapといったアプリ経由で取得できます(AppleはFITをネイティブに記録しないため)。
  • FITファイルにはランナーが思っている以上の個人データが含まれています:スタート地点の座標、デバイスのシリアル番号、そして場合によってはユーザープロフィールの身体データまで。生のファイルを公開共有する前に、これらのフィールドを削除またはトリミングしましょう — 地図のスクリーンショットは、その背後のファイルよりもはるかに多くを隠してくれます。

FITファイルとは?

FITはFlexible and Interoperable Data Transferの略です。スポーツ・フィットネスデバイスのデータ — ウォッチが記録するすべてのラン、ライド、ラップ、センサー読み取り値 — を保存・共有するために設計されたバイナリファイル形式です。このフォーマットを作ったのは、カナダ・アルバータ州コクランのDynastream Innovations社で、心拍ストラップやフットポッドで使われるANT+無線プロトコルを発明した企業でもあります。Garminは2006年にDynastreamを買収し、FITはGarminエコシステム全体の記録形式になりました。Garminがdeveloper.garmin.comで無料のオープンなFIT SDKを公開しているため、このフォーマットは1ブランドの枠を大きく超えて広がりました:COROS、Wahoo、Zwift、Stryd、Hammerheadをはじめとする現代のトレーニングデバイスのほとんどがFITをネイティブに書き出し、Strava、TrainingPeaks、Runalyze、GoldenCheetah、Hashiri.AIといった本格的な分析プラットフォームはすべてFITを読み込めます。

FITが存在するのは、それ以前のフォーマットが別の目的のために作られていたからです。GPXは2002年に地図プログラム間でGPSトラックを交換するために設計されました — 位置とタイムスタンプのみで、生理データは扱いません。Garminの旧XMLフォーマットであるTCXはラップと心拍数を追加しましたが、XMLの根本的な問題を継承していました:テキストは巨大になるのです。3時間のマラソンで毎秒10個のデータフィールドを記録するウォッチは数メガバイトのXMLファイルを生成し、メモリが数メガバイトしかない2008年当時のデバイスには保存が負担で、ANTや初期のBluetoothでの転送も遅くなりました。FITはコンパクトなバイナリエンコーディングでこれを解決しました:各値は生の型付きバイトとして格納され(心拍数は1バイト、GPS座標は4バイト)、自己記述的なメッセージ定義により、どのデコーダーでもどのデバイスのファイルでも解析できます。

その結果生まれたのが、小さく、拡張性があり、損失のないフォーマット — 持久系スポーツにおける『RAWファイル』に最も近い存在です。Strava、Garmin Connect、TrainingPeaksが同じランに対して異なる数値を表示するとき、FITファイルこそが、すべての出発点となったグラウンドトゥルースです。だからこそ、このガイドはFITファイルをブラックボックスではなく理解する価値のあるものとして扱います:それはあなたのトレーニングのオリジナルレコードであり、ウォッチブランドを乗り換えるときにプラットフォーム間を移動でき、適切な(無料の)ツールがあれば自分で開き、変換し、修復し、分析できるのです。プラットフォームが計算するすべて — ペースチャート、トレーニング負荷、VO2 Max推定 — は、次のセクションで説明するバイト列から導かれています。

FITファイルの中身:フォーマットの仕組み

すべてのFITファイルは3つの部分で構成されています:ヘッダー、レコードのストリーム、そして末尾のチェックサムです。ヘッダーは12または14バイトで、プロトコルバージョン、プロファイルバージョン、後続データのサイズ、そしてバイト8〜11にASCII文字「.FIT」 — ツールがこのフォーマットを認識するためのシグネチャ — を含みます。ファイルの末尾には、デコーダーが破損を検出するための2バイトのCRCがあります。その間に実際のデータがあり、2種類のレコードで構成されています:定義メッセージとデータメッセージです。定義メッセージは「これに続くローカルタイプNのデータメッセージには、これらのフィールドが、この順序で、これらのバイトサイズで含まれる」と宣言します。それに続くデータメッセージはラベルのない純粋な値です — これこそFITがコンパクトな理由であり、テキストエディタで開くと文字化けしか見えない理由です。デコーダーは各データメッセージをその定義と対応させることで意味を再構築します。

メッセージ自体は、GarminのFIT Profileで定義されたグローバルメッセージ番号によって型付けされます。典型的なアクティビティファイルはfile_idメッセージ(デバイスのメーカー、製品、シリアル番号、作成時刻)で始まり、続いて数千のrecordメッセージ — 最近のウォッチではほとんどが毎秒1件 — がストリームされ、それぞれがその瞬間のGPS位置、高度、距離、速度、心拍数、ケイデンス、パワー、温度を運びます。lapメッセージは各ラップスプリットを要約し、eventメッセージはタイマーの開始/停止を記録し、最後に1つのsessionメッセージが、ウォッチのサマリー画面に表示される合計値を保持します。初めて読む人がつまずきやすい2つの詳細:FITのタイムスタンプは1989年12月31日UTCからの秒数をカウントし(Unixエポックではありません)、GPS座標は「セミサークル」で格納されています — 180/2³¹を掛けると度に変換できます。

FITプロトコル2.0はデベロッパーフィールドを追加しました。これは名前以上にランナーにとって重要です。Connect IQアプリやペアリングされたサードパーティセンサーは独自のフィールドを定義し、同じrecordストリームに書き込めます:Strydはランニングパワー、レッグスプリングスティフネス、エアパワーをデベロッパーフィールドとして保存し、筋肉酸素センサーや深部体温センサーも同様です。ファイルには各カスタムフィールドを説明するfield_descriptionメッセージが含まれるため、準拠したデコーダーなら事前知識なしに読み取れます。だからこそ、1つのFITファイルはどんなプラットフォームよりも長生きできるのです:その日にウォッチとセンサーが測定したもの — ネイティブもサードパーティも — はすべて、1つの自己記述的なコンテナに保存されています。

アクティビティファイルに含まれる主なFITメッセージタイプ

メッセージタイプ出現頻度含まれる内容
file_idファイル先頭に1回ファイルタイプ、メーカー、製品、デバイスのシリアル番号、作成タイムスタンプ
record毎秒(または「スマート」間隔)GPS位置、高度、距離、速度、心拍数、ケイデンス、パワー、温度、ランニングダイナミクス
lapラップ/スプリットごとに1回ラップタイム、距離、平均/最大ペース、心拍数、ケイデンス、カロリー、トリガー(手動または自動)
sessionアクティビティごとに1回スポーツタイプ、合計値:時間、距離、カロリー、平均/最大値、トレーニング効果
eventイベント発生ごとタイマーの開始/停止/一時停止、ラップボタン押下、アラート、バッテリー警告
device_info接続デバイスごとウォッチとセンサーのモデル、ファームウェアバージョン、バッテリー状態、ANT+/BLE ID
hrv心拍ごと(有効時)HRVおよび呼吸分析に使われる拍動ごとのR-R間隔
field_descriptionデベロッパーフィールドごとカスタムフィールドの名前、単位、型(例:Strydパワー、Connect IQメトリクス)

FIT vs GPX vs TCX:各フォーマットに何が入るか

3つのフォーマットは異なる問いに答えます。GPX(GPS Exchange Format)は2002年のオープンなXML標準で、「このトラックはどこを通ったか?」に答えるために作られました — 緯度、経度、標高、時刻を持つトラックポイントのリストです。心拍数、ケイデンス、温度はオプションの拡張タグ(GarminのTrackPointExtensionが一般的)の中でのみ運べますが、拡張のサポート状況はツールによってまちまちです。TCX(Training Center XML)はGarminの旧トレーニングフォーマットで、「ワークアウトはどうだったか?」に答えます — ラップ、ポイントごとの心拍数とケイデンス、カロリー、スポーツタイプを追加しますが、依然として冗長なXMLであり、ランニングパワー、ダイナミクス、デベロッパーフィールドよりも前の時代のものです。FITは「デバイスは何を記録したか?」に答えます — センサーメタデータ、R-R間隔、カスタムフィールドを含むすべてを、わずかなサイズで保持します。

エンコーディングの違いにより、サイズの差は劇的です。FITでは1秒分のランニングデータは約25〜35バイトですが、同じトラックポイントはGPXやTCXでは山括弧と十進文字列で数百バイトになります。毎秒記録された1時間のランの場合、FITファイルは約100〜300 KB、GPXは約1〜2 MB、TCXはさらに大きくなることが多く、おおよそ5〜10倍の差があり、センサーが増えるごとに開きます。サイズは2008年のウォッチほど現代のスマートフォンでは問題になりませんが、実際にはまだ顔を出します:メール添付の容量制限、100マイルウルトラのファイルのアップロード速度、そして10年分のトレーニング履歴がFITなら、TCXの1シーズン分のスペースに収まるという単純な事実です。

実践的なルール:FITをアーカイブフォーマットとして保持し、GPXとTCXは特定の用途のためのエクスポート先として扱いましょう。GPXしか読めないアプリを使う友人とルートを共有したい?GPXをエクスポート。TCXを要求する古いツールに渡したい?TCXをエクスポート。しかし、GPXをアクティビティの唯一のコピーにしては絶対にいけません。変換は一方向の損失を伴うからです — ラップ、パワー、デバイスデータが一度削られたら、どんなコンバーターも元に戻せません。主要なプラットフォームはすべてFITの直接アップロードを受け付けるため、インポート前に変換する理由はほとんどありません — 先に変換すると、移行先が問題なく読めたはずのフィールドを失うリスクしかありません。以下の比較表でトレードオフを一覧できます。

FIT vs GPX vs TCX 早見表

フォーマット種類1時間のランのサイズ記録されるデータ最適な用途
FITバイナリ~100–300 KBすべて:GPS、心拍、ケイデンス、パワー、ラップ、R-R間隔、デバイス情報、デベロッパーフィールドアクティビティのアーカイブ、プラットフォーム間移行、詳細分析
TCXXML(テキスト)~1–3 MBGPS、時刻、心拍、ケイデンス、ラップ、カロリー;パワーは拡張経由のみFIT対応以前のレガシートレーニングソフトウェア
GPXXML(テキスト)~1–2 MB位置、標高、時刻;心拍/ケイデンス/温度はオプション拡張のみ;ラップなしルートの共有、地図アプリへのコースのインポート

FITファイルの開き方

FITファイルを開く最速の方法はオンラインビューアーです。Hashiri.AIの無料FITビューアーは完全にブラウザ内で動作します:ファイルをドロップするだけで、ルートマップ、ペース/心拍数/標高チャート、完全なラップテーブルが表示されます — アカウント不要、サーバーへのアップロードなし、インストールなしです。だからこそ、手元にファイルだけがあって疑問があるという、よくある状況に最適なツールです:友人がレースのファイルを送ってくれた、クラッシュしたウォッチからアクティビティを復元した、どこかにアップロードする前にファイルの中身を確認したい、といった場合です。ブラウザベースのビューアーは前述のバイナリ構造をそのままデコードするため、プラットフォームが再計算した結果ではなく、ファイルが実際に保存している内容が見えます。

ただ閲覧するのではなく、トレーニング履歴にアクティビティとして残したい場合は、プラットフォームにインポートしましょう。Garmin ConnectはウェブのインポートボタンからFITファイルを受け付けます(クラウドアイコン)。Stravaはstrava.com/uploadで受け付けます。TrainingPeaks、Runalyze、intervals.icuはすべてドラッグ&ドロップでのFITインポートに対応しています。Hashiri.AIも同様です — アップロードされたFITファイルは、地図、ラップ、AIコーチ分析を備えた完全なアクティビティになります。デスクトップでは、GoldenCheetahがパワーツールです:FITをネイティブに読み込み、デベロッパーフィールドを含むすべてのフィールドをチャート化・エクスポートできる、無料のオープンソース分析スイートです。GPXSeeは軽量なオープンソースビューアーで、FIT、GPX、TCXファイルのトラックと標高プロファイルを素早く描画できます。

うまくいかないのは、Excel、Numbers、テキストエディタで直接開くことです。FITはバイナリです:Excelは区切り文字付きのテキストを期待するため、文字化けの羅列が表示されます。意味のある構造は、定義メッセージをデコードし、FIT Profileのフィールド型とスケーリング係数(速度はmm/s、座標はセミサークル、タイムスタンプは1989年起点のエポック)を適用して初めて現れるからです。FITデータをスプレッドシートに取り込むには、まずCSVに変換する必要があります — 次のセクションで説明します。プログラマーならコンバーターを完全にスキップできます:Garminの公式FIT SDKにはJavaScript、Python(PyPIのgarmin-fit-sdk)、Java、C、C#のデコーダーが同梱されており、コミュニティ製のfitparseとfitdecodeライブラリも成熟した代替手段です。

FITファイルの変換:CSVへ、GPXへ、そして逆方向へ

FITからCSVへの変換(FIT CSV 変換)は、数値そのものを見たい人のための変換です。優れたコンバーターはすべてのrecordメッセージを読み取り、タイムスタンプ、緯度、経度、距離、速度(またはペース)、心拍数、ケイデンス、高度、パワー、温度といった列で1秒ごとに1行を書き出します — Strydパワーのようなデベロッパーフィールドの列も含めて。Hashiri.AIの無料FITコンバーターはまさにこれをブラウザ内で行います:FITファイルをドロップすれば、クリーンなCSVが手に入ります。アカウント不要です。そこからスプレッドシートで、どのアクティビティページも答えてくれない問いに答えられます:ランの任意の区間の平均心拍数、ケイデンス閾値を超えていた時間、あるいは1回のロングランにおけるペース対心拍数の散布図などです。CSVはコーチや研究者にとって誠実な交換フォーマットでもあります。プラットフォームのスムージングの裏に何も隠れていないからです。

FITからGPXへの変換は、ランがどこを通ったかを共有するためのものですが、変換で何が生き残るかを理解することが重要です。位置、標高、タイムスタンプはきれいに変換されます。心拍数、ケイデンス、温度は、コンバーターが書き出せばGarmin TrackPointExtensionタグで保持できます — 最小限のコンバーターの多くは書き出しません。常に失われるもの:ラップとスプリット(GPXにラップの概念はありません)、ランニングパワー、ランニングダイナミクス、R-R間隔、カロリー、トレーニング効果、デバイスメタデータです。移行先が地図・ナビゲーションアプリ、レースルートの共有、FITを読めない古いプラットフォームの場合にGPXへ変換しましょう。GPXをトレーニングデータのバックアップフォーマットとして使ってはいけません — 気づかぬうちにファイルの大半を捨てていることになります。

GPXからFITは逆方向の変換で、ランナーがこれを必要とする主な理由はコースです:GarminとCOROSのウォッチはFITコースファイルでナビゲーションするため、地図ツールで描いたり、レースのウェブサイトからGPXとしてダウンロードしたルートは、ウォッチが案内できるようになる前にFITに変換しなければなりません(Garmin Connectのコースインポーターは暗黙的にこの変換を行います。Hashiri.AIのGPX to FITツールのようなスタンドアロンコンバーターは明示的に行います)。GPXに含まれる情報はFITより少ないため、この方向の変換は無損失です — 失うものがそもそもないからです。1つ重要な区別があります:コースFITとアクティビティFITは異なるファイルタイプです。そのため、完走したランをGPXに変換して戻しても、ツールが明示的にコースを構築しない限り、ナビゲーション可能なコースにはなりません。以下の判断表で、よくある目的を適切な変換にマッピングします。

あなたに必要な変換はどれ?

やりたいこと変換先注意点
Excel / Google Sheetsでランを分析するFIT → CSVパワーやデベロッパーフィールドを含むすべてのフィールドをエクスポートするコンバーターを選ぶ
別アプリのユーザーとルートを共有するFIT → GPXラップ、パワー、ダイナミクスは失われる。心拍は拡張経由でのみ残る
計画したルートをGarmin/COROSに入れてナビゲーションするGPX → FIT(コース)コースコンバーターを使うこと。アクティビティFITではナビゲーションできない
履歴を新しいプラットフォームに移行する変換不要 — FITをアップロード主要プラットフォームはすべてFITを読める。先に変換するとデータを失うだけ
FIT以前の古いトレーニングソフトに渡すFIT → TCXパワーとランニングダイナミクスは残らない可能性がある。インポート後に確認を
どこかにアップロードする前にファイルを確認する変換不要 — FITビューアーを使うブラウザベースのビューアーならファイルがデバイスの外に出ない

生データでランナーが実際にできること

生のFITデータは、プラットフォームのチャートでは解決できない論争に決着をつけます。GPS精度はその典型例です:ウォッチが10.21 kmと表示し、レースが10 kmだったとき、秒単位の座標を見れば、トラックがどこで蛇行したのかが正確にわかります — スタートバナー周辺のビルの下、トンネルの中、つづら折りの区間 — 推測ではなく。プラットフォーム同士の数値が食い違うのも、それぞれが同じファイルに独自のスムージング、標高補正、停止時間ロジックを適用しているからです。生のrecordストリームを両方のバージョンと比較すれば、どのプラットフォームが何を変えたのかが見えます。そして、プラットフォームがインポートを壊したとき(距離が間違っている、ラップが消えた、パワーが半分になった)、オリジナルのFITファイルは、問題があなたのデータ側か相手のパーサー側かを証明し、再アップロード用のクリーンなコピーにもなります。

生のストリームは、多くのプラットフォームがいまだに埋もれさせたり有料化したりしている分析も解放します。心臓ドリフト — 有酸素デカップリング — が最良の例です:一定ペースのロングランを前後半に分け、それぞれのペース対心拍数比を計算すると、その変化率があなたの有酸素システムの耐久性を教えてくれます(一般的に、安定した努力でドリフトが約5%未満なら堅実な有酸素持久力を示唆し、それ以上ならペースがフィットネス、暑さ、補給を上回ったことを示唆します)。秒単位のデータがスプレッドシートにあれば、これは10分の作業です。ペーススムージングを直接観察することもできます:瞬間GPS速度はノイズが多く、生のジッターを見れば、ウォッチの「現在ペース」が跳ね回る理由と、プラットフォームが移動平均を表示する理由がわかります。ストラップが記録していれば、R-R間隔データはウォッチの表示をはるかに超えたHRV分析を可能にします。

この豊かさの裏返しがプライバシーです。FITファイルは単なるルートではありません:file_idメッセージはデバイスのシリアル番号を運び、最初のrecordメッセージは正確なスタート地点 — 多くの場合あなたの自宅の玄関先 — を特定し、ファイルにはウォッチがカロリー計算に使う体重、年齢、性別といったユーザープロフィールデータが含まれることもあります。生のFITファイルをフォーラムに投稿したり、見知らぬ人に送ったり、バグレポートに添付したりする前に、トラックの始点/終点をトリミングするか、識別情報を含むメッセージを除去するツールを使い、どんなプロフィールフィールドが埋め込まれているか確認しましょう。プラットフォームには地図上で自宅を隠すプライバシーゾーンがありますが、共有されたファイルはそれらをすべてバイパスします。スクリーンショットは気軽に、ファイルは慎重に共有しましょう。

デバイスからFITファイルを取り出す:プラットフォーム別ガイド

Garminには3つのルートがあります。アクティビティ単位:ウェブのGarmin Connectでアクティビティを開き、歯車アイコンをクリックして「オリジナルをエクスポート」を選択 — ウォッチが記録したそのままのオリジナルFITファイルを含むZIPが手に入ります。一括取得:Garminのアカウントデータエクスポート(アカウント管理ページからのGDPR形式の「データのエクスポート」リクエスト)は、オリジナルのFITファイルを含む全履歴を数日以内に届けてくれます。直接取得:ほとんどのGarminウォッチは今もUSBストレージとしてマウントでき、GARMIN/ActivityフォルダにアクティビティがFITファイルとして格納されています — クラウドを介さない選択肢です。COROSはアプリからワークアウト単位でエクスポートできます:ワークアウトを開き、共有/設定アイコンをタップして「データをエクスポート」を選択し、.FIT形式を選びます。COROSのウェブダッシュボードでも同じアクティビティ単位のエクスポートが可能です。

Suuntoのアプリも同様にアクティビティ単位でFITをエクスポートできます:ワークアウトを開き、三点メニューをタップして「FITファイルをダウンロード」を選択します。Polarは例外です — Polar Flowのセッション単位エクスポートはFITではなくTCX、GPX、CSVを提供し、アカウント全体のエクスポートはJSONで届くため、FITが必要なPolarランナーは変換が必要です(TCXが最も多くのデータを保持します)。Apple WatchはFITを一切使いません:ワークアウトはHealthKitのデータベースに保存されます。定番のブリッジはサードパーティアプリです — HealthFitとRunGapが最もよく使われる2つで、HealthKitのワークアウトを読み取り、標準準拠のFITファイルとしてエクスポートします(あるいはStrava、TrainingPeaksなどのプラットフォームに直接同期します)。GPSトラック、心拍数、ランニングパワーも含まれます。

Stravaは特筆に値します。多くのランナーにとって、意図せずアーカイブになっていることが多いからです。デバイスからアップロードした個々のアクティビティは、三点メニューの「オリジナルをエクスポート」で、Stravaが受け取ったそのままのファイルを返してくれます — Garmin/COROS/Wahooの同期で届いたものならFITです。アカウントレベルの一括エクスポート(設定 → マイアカウント → アカウントのダウンロードまたは削除 → ダウンロードリクエスト)は、オリジナルファイルを含む全履歴をパッケージ化します。注意点が2つ:Stravaのスマートフォンアプリで記録したアクティビティにはFITオリジナルが存在せず(GPXになります)、FIT由来のアクティビティでの「GPXをエクスポート」はオリジナルではなく損失のある変換結果です。プラットフォームの組み合わせがどうであれ、長持ちする習慣は同じです:オリジナルFITファイルのフォルダを保管しておくこと。プラットフォームは移り変わりますが、フォーマットは残ります。

よくあるFITファイルの問題を修復する

破損ファイルは最もストレスの大きい障害で、たいていはウォッチのクラッシュやアクティビティ中のバッテリー切れの後に起こります:ファイルは存在するのに、プラットフォームが拒否するのです。原因はほぼ常にトランケーション(切り詰め)です — 末尾のsessionメッセージと最終CRCが書き込まれる前に記録が止まったため、厳格なパーサーがファイルを拒否します。FITのデータレコードは自己完結的なので、復旧の可能性は十分にあります:修復ツールは無傷のレコードを読み直し、欠落しているサマリーメッセージを合成して、有効なファイルを書き出します。FIT File Toolsの無料ウェブユーティリティには、破損修復ツールに加えて、時刻調整、アクティビティ結合、区間削除のツールがあります。GoldenCheetahは他のプラットフォームが拒否する破損ファイルをインポートできることが多く、Garmin自身のSDKに含まれるFitCSVToolは、ファイルをCSV経由で往復変換し、その過程で有効な構造を再生成できます。

他の2つの日常的な問題にも、データレベルの説明があります。ランの開始時にGPSが欠落したり暴れたりするのは、ウォッチが衛星を捕捉する前にスタートボタンを押した場合に起こります — 最初のrecordメッセージには位置フィールドが単純に存在しないか、受信機が収束するまでの数百メートル分の散らばりが含まれます。修正は行動面(測位完了の表示を待つ)ですが、区間削除ツールを使えば既存のファイルから不良部分を切り取れます。2つのアクティビティの結合 — ウォッチのバッテリーが切れてスマートフォンで完走し、1つのランにまとめたい場合 — は結合ツールの仕事です:recordストリームを連結し、単一のsessionを再構築します。タイムスタンプの誤りは、たいていフォーマット自体に由来します:FITはすべてのタイムスタンプをUTCで保存し、表示するプラットフォームがローカライズします。そのため、ちょうど数時間分ずれて見えるアクティビティはタイムゾーン解釈のバグ(または時刻同期を失ったウォッチ)であり、再記録ではなく時刻調整ツールで修正できます。

最後に、永遠の疑問:なぜ同じファイルなのにプラットフォームごとに獲得標高が違うのか?標高には3つの真実のソースがあるからです。気圧高度計搭載のウォッチ(GarminとCOROSのミッドレンジ以上のほとんどのモデル)は、気圧由来の高度をFITファイルに記録します — 滑らかで比較的信頼できますが、天気前線やセンサーポートの詰まりで歪むことがあります。GPSのみのデバイスは衛星由来の標高を記録しますが、これはノイズが多く、その上下を合計すると獲得標高が大きく膨らみます。そのためStravaのようなプラットフォームは、非気圧式デバイスに対して(場合によっては全デバイスにオプションで)DEM補正 — 記録された標高を、トラックに沿って地形標高データベースから参照した値で置き換える処理 — を適用します。同じFITファイルから、3つの筋の通った答えが生まれるのです。ラン同士を比較するときは、1つのプラットフォーム・1つの方式の中で比較しましょう。1回のランを検証するときは、FITファイル内の生の高度列が、誰かが補正する前に実際に記録された値を示してくれます。

よくある質問

FITファイルとは何ですか?

FIT(Flexible and Interoperable Data Transfer)ファイルは、スポーツデバイスがアクティビティを記録するために使うバイナリ形式です。Garmin傘下のDynastream Innovationsによって開発され、ウォッチが測定するすべて — 秒単位のGPS、心拍数、ケイデンス、パワー、ラップ、デバイス情報、カスタムセンサーフィールド — をコンパクトで自己記述的なコンテナに保存します。Garmin、COROS、Wahoo、Zwiftの事実上の標準であり、主要なトレーニングプラットフォームはすべて読み込めます。

Garmin Connectを使わずにFITファイルを開くには?

ブラウザベースのビューアーを使いましょう:Hashiri.AIの無料FITビューアーは、アカウントもインストールも不要で、地図、ペース/心拍/標高チャート、ラップテーブルを表示します。あるいは、Strava、TrainingPeaks、intervals.icuにアップロードするか、デスクトップでGoldenCheetah(本格分析)やGPXSee(トラックの簡易表示)で開けます。どれも同じバイナリレコードをデコードしているので、ちょっと見たいだけか、恒久的に取り込みたいかで選びましょう。

FITファイルをCSVに変換するには?

FITからCSVへのコンバーターを使いましょう — Hashiri.AIの無料FITコンバーターはブラウザで動作します:ファイルをドロップすると、1秒ごとに1行、タイムスタンプ、位置、距離、ペース、心拍数、ケイデンス、高度、パワー、温度の列を持つCSVをダウンロードできます。プログラマーなら、Garminの公式FIT SDK(JavaScript、Python、Java、C#)やPythonのfitparse/fitdecodeライブラリを使えば、数行のスクリプトで同じ変換ができます。

ExcelでFITファイルを直接開けますか?

いいえ。FITはバイナリ形式です:値は生の型付きバイトとして格納され、その意味は定義メッセージとFIT Profileから導かれるため、区切りテキストを期待するExcelには読めない文字が表示されます。まずFITコンバーターでファイルをCSVに変換し、そのCSVをExcelやGoogle Sheetsで開きましょう。変換後は、他のデータセットと同じようにフィルタリング、チャート化、計算ができる、クリーンな秒単位の列が手に入ります。

FIT、GPX、TCXの違いは何ですか?

GPXはGPSトラックのためのオープンなXML形式です:位置、標高、時刻を持ち、心拍数やケイデンスはオプション拡張経由のみで、ラップの概念がありません。TCXはGarminの旧XMLトレーニング形式で、ラップ、心拍数、ケイデンス、カロリーを追加します。FITはバイナリ形式で、すべて — 全センサーデータ、ラップ、R-R間隔、デバイスメタデータ、デベロッパーフィールド — を約5〜10分の1のファイルサイズで保存します。FITが最も豊富かつコンパクトで、GPXはルート用途として最も普遍的に読み込めます。

FITをGPXに変換するとデータは失われますか?

はい、必ず一部は失われます。位置、標高、タイムスタンプはきれいに変換され、心拍数、ケイデンス、温度はコンバーターがGarmin TrackPointExtensionタグを書き出せば残せます。しかし、ラップとスプリット、ランニングパワー、ランニングダイナミクス、R-R間隔、カロリー、デバイス情報は、GPXに格納場所がないため恒久的に失われます。GPXはルートの共有用に使い、実際のトレーニングデータのアーカイブコピーとしてはFITファイルを保管しましょう。

StravaからオリジナルのFITファイルを取得するには?

アクティビティを開き、三点メニューをクリックして「オリジナルをエクスポート」を選択します — Stravaが取り込んだそのままのファイルが手に入り、Garmin、COROS、Wahooのデバイスから同期されたアクティビティならFITです。全履歴が必要なら、設定 → マイアカウントからアカウント一括エクスポートをリクエストしましょう。注意点として、Stravaのスマートフォンアプリで記録したアクティビティにはFITオリジナルがなく(GPXになります)、別の「GPXをエクスポート」オプションはオリジナルではなく損失のある変換です。

Apple WatchからFITファイルを取得するには?

Apple WatchはFITをネイティブに記録しません — ワークアウトはHealthKitに保存されます。サードパーティアプリがその橋渡しをします:HealthFitとRunGapはHealthKitのワークアウトを読み取り、GPS、心拍数、ランニングパワーを含む標準的なFITファイルとしてエクスポートするか、Strava、TrainingPeaksなどのプラットフォームに直接同期します。FITベースのトレーニングツールや個人アーカイブにデータを残したいApple Watchランナーにとって、これが標準的なルートです。

破損したFITファイルを修復するには?

破損はたいていトランケーション(切り詰め)を意味します — 末尾のsessionメッセージとCRCを書き込む前にウォッチがクラッシュしたのです。各データレコードは自己完結的なので、修復ツールでファイルを再構築できます:FIT File Toolsの無料ユーティリティは破損ファイルの修復、タイムスタンプの調整、分割アクティビティの結合、不良区間の削除ができます。GoldenCheetahは他のプラットフォームが拒否するファイルをインポートできることが多く、GarminのFitCSVTool(FIT SDK同梱)はファイルをCSV経由で往復変換して有効な構造を再生成できます。

同じFITファイルなのにStravaとGarminで標高が違うのはなぜですか?

異なる標高ソースを使っているからです。気圧式ウォッチは気圧由来の高度をファイルに記録し、GPSのみのデバイスはノイズの多い衛星標高を記録します。そしてStravaのようなプラットフォームは、非気圧式デバイスに対してDEM補正 — 記録値をトラックに沿った地形データベースの参照値で置き換える処理 — を適用します。各方式は小さな上下の合計方法が異なるため、累計獲得標高は乖離します。標高の比較は1つのプラットフォーム内に限定し、実際に何が記録されたかを見るにはFITファイル内の生の高度列を確認しましょう。

FITファイルを数秒で変換

無料のFITコンバーターは、あらゆるFITファイルをブラウザ内でクリーンなCSVに変換します — 秒単位のタイムスタンプ、GPS、ペース、心拍数、ケイデンス、高度、パワー、温度を、ExcelやGoogle Sheetsですぐ使える形で。アカウント不要、サーバーへのアップロードなし、制限なしです。

FITコンバーターを開く