分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ここで TCX を CSV に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 変換はお使いのブラウザーの中で行われるので、ファイルはアップロードされません。Windows でも macOS でも Linux でも、iPhone でも Android でも同じように動き、通信を切っても動き続けます。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
TCX から CSV
TCX はもともとトレーニングセッションを記録するための形式で、アクティビティの中にラップがあり、ラップの中に個々のトラックポイントがあるという階層構造を持っています。ラップにはラップごとの時間や距離、心拍数の平均・最大が記録されています。
このページが作る CSV は、その中の一番下の層である位置情報の点だけを取り出します。緯度・経度を持つトラックポイントが1行になり、その上にあったトレーニングの階層はすべて破棄されます。経路が欲しいなら十分な結果ですが、トレーニングの記録が欲しいなら、そのほとんどはファイルの中に残ったままです。
TCX のトラックポイントは時刻、位置、標高、走行距離の累計、心拍数、ケイデンス、拡張情報を持てますが、このページが読み取るのは時刻と位置、標高だけです。これらが time、latitude、longitude、elevation の列になり、type 列には常に track、name 列にはアクティビティの種目名が入ります。
特に見落とされやすいのが走行距離の累計です。多くの Garmin デバイスがほぼすべてのトラックポイントに記録している値ですが、この変換では読み取られません。座標の差分から距離を計算し直すと、デバイスが記録した値とは微妙に異なる結果になります。
心拍数はトラックポイントの直接の子要素として、ケイデンスはその兄弟として記録されています。ランニングケイデンスやワット数、瞬間速度はさらに一段下の拡張情報の中にあります。いずれも座標のすぐそばに置かれているのに、読み取られません。
これは、このサイトがすべての位置情報形式を「位置・標高・時刻」という共通の形で扱う仕組みになっているためです。TCXをGPXやKMLに変換したり表にしたりする処理を同じコードで行える利点がある一方で、その形に含まれない情報はすべて見えなくなります。
ラップは平坦化されます。1つのアクティビティ内のすべてのラップのトラックポイントが1つの連続した行の並びに結合されるため、400メートルのインターバル走を12本行った記録も、6キロを一気に走った記録と同じ見た目になります。どの行がどのラップに属していたかを示す列もありません。
ラップごとの合計時間や距離、最高速度、消費カロリー、平均・最大心拍数もすべて失われます。ラップの構造が分析の対象であれば、TCX を直接プレーンなXMLとして扱うほうが確実です。ラップの要素はアクティビティの上部近くにあるため、短いスクリプトで抜き出しやすい位置にあります。
位置情報を持たないトラックポイントは行として書き出されません。CSV の行数が TCX のトラックポイントの数より少なくなる場合、たいていこれが原因です。腕時計は衛星をつかんでいるかどうかにかかわらず1秒ごとに心拍数を記録するため、屋内で始まった記録や橋の下を通った記録には、時刻と心拍数だけを持ち位置情報を持たないトラックポイントが含まれます。
トレッドミルやローラー台での記録は極端な例で、すべてのトラックポイントが位置情報を持たないため、書き出せる行が1つもなく、トラックも地点も見つからなかったという結果になります。これは正確な結果であり、経路の形をした出力を求めていたなら、この種のワークアウトには最初から向いていません。
TCX のアクティビティには名前がありません。あるのは Sport 属性だけで、値は Running か Biking か Other に限られています。この値がすべての行に繰り返される name 列になります。
Garmin Connect や Strava で見えるタイトル(「火曜のインターバル」のような)は、プラットフォームのデータベースに属する情報であり、TCX の中には含まれていません。複数のセッションをまとめて変換すると、name 列はすべて Running のような値の繰り返しになり、区別はファイル名や time 列に頼ることになります。
time 要素はそのままコピーされ、書式の変換は行われません。Garmin のデバイスは通常 UTC で末尾に Z を付けて記録するため、時刻の値はそのまま UTC として扱う必要があります。日本時間として直接読むと、9時間分ずれた解釈になります。
ISO 8601の書式のままなので、テキストとしてソートしても正しい時系列に並びます。複数のセッションをまとめた表を作る場合にも、この性質は役立ちます。
心拍数やパワー、ケイデンスの分析が目的であれば、この変換では届きません。TCX は単純な XML なので、HeartRateBpm と Time の要素を直接読み取る短いスクリプトを書くほうが確実です。
あるいは、記録を作成した Garmin Connect や Strava、TrainingPeaks からエクスポートするという選択肢もあります。これらのプラットフォームは正規化されたパワーやトレーニング負荷といった、TCX 自体には存在しない値も含めてエクスポートを提供しています。
XML の解析と行の書き出しは、すべてこのブラウザーの中で行われます。TCXがどこかへ送信されることはなく、変換中にネットワークタブを確認すれば分かります。
トレーニング記録は、いつ、どこで、どれだけ体に負荷がかかっていたかを分単位で記録した、健康情報であり位置情報でもあるデータです。変換された CSV は誰でも一目で読める形になるため、元のファイルと同じ慎重さで扱う価値があります。
| TCX | CSV | |
|---|---|---|
| 正式名称 | Training Center XML | Comma-Separated Values |
| 拡張子 | .tcx | .csv |
| メディアタイプ | application/vnd.garmin.tcx+xml | text/csv |
| 最初の公開 | 2007 | 1972 |
| 発行元 | Garmin | — |
| 仕様 | Training Center XML | RFC 4180 |
| ライセンス | 公開仕様、標準化はされていない | オープン標準 |
| 現在の位置づけ | 現行 | 現行 |
| ブラウザで開けるか | 対応なし | 対応なし |
| 代わりに検討される形式 | GPX, FIT | XLSX, JSON, Parquet |
開くプログラムが重なりません。TCX はGarmin Connect、Strava、TrainingPeaksで、CSV はMicrosoft Excel、LibreOffice Calc、pandasで開きます。結果を渡す相手には後者のどれかが要ります。
2 つは狙っている用途が違います。TCX は運動の記録、CSV はプログラム間のデータ受け渡しです。ここは考える価値があります。一方が存在する理由が、そのままもう一方が使いにくい理由になっていることが多いからです。
TCX は Garmin の形式です(2007 年に登場)。 Training Center XML で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。
CSV は 1972 年から使われています。規定は RFC 4180 です。Microsoft Excel、LibreOffice Calc、pandasがこの形式を読めます。
CSV は 1972 年、TCX は 2007 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。
いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。
はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。
TCX と CSV は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 記録された地点 1 つにつき 1 行です。位置・標高・時刻のほかにファイルが持っていたものは、表には入りません。
変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん Comma-Separated Values を表示するのに使っているソフトが必要です。