おはやし日記

テーマ……バイク←プログラミング←旅

FIT CSV Toolについての備忘録

こんにちは。ほぼ個人的なメモですが、日本語で書かれてるものがあんまりない情報なのでまとめておきます。

サイクルコンピューターGPSの記録アプリを使っていて、『FIT形式』が使える方。アプリの中でしかデータが見えなかったのがCSVを使ってエクセルで表示できるようになります。

概要

サイクルコンピューターなどのデータプロトコルとしてFITという形式があります。GPSデータはもとより、サイコンを使っているときは心拍数なども一緒に記録してくれる方式です。

developer.garmin.com

FITはバイナリデータなので、そのままでは読むことができません。そこで、Garminが『FIT CSV Tool』というものを提供しています。てかFIT形式がGarminの開発なのかな、たぶんそうです。知らんけど。

導入

環境

To use FitCSVTool.jar on Windows the Oracle Java™ Runtime Environment 8 version 1.8.0 or higher, or equivalent Java Runtime Environment (JRE) or Java Development Kit (JDK), should be installed.

ということで、Javaの実行環境をダウンロードする必要があります。

コマンドプロンプトを開いて(コマンドプロンプト 開き方 - Google 検索

> java -version

と入力します。Javaのバージョンを示すメッセージが表示されればOKです。自分は

openjdk version "22.0.1" 2024-04-16
OpenJDK Runtime Environment (build 22.0.1+8-16)
OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)

と出ますが、これは開発環境(JDK)を入れてるためです。こういうのが表示されなければ、GarminのページからJREのダウンロードのリンクがあるのでダウンロードしてください(この辺はいっぱい解説あるだろうから省略)。

ダウンロード

Garminの公式ページからSDKをダウンロードします。

Download the FIT SDK | Garmin Developers

Accept & Download をクリックします。そうするとFitSDKRelease_21.133.00.zipといったようなZIPファイルがダウンロードされます。解凍します。

こんな感じになってると思います(画像は解凍前)。

使い方

GarminのページにGoogle翻訳かければよくね?と思いつつ)

コマンドプロンプトで、FIT SDKのダウンロードされているところに移動します。移動の仕方ですが、解凍したFitSDK...のフォルダの上で右クリックからのパスのコピーをして

> cd [ctrl + v]

C:\Users\中略\FitSDKRelease_21.133.00>

みたいになるので、対象のFITファイルがC:\Users\中略\download\data.fitとなっている場合

C:\Users\中略\FitSDKRelease_21.133.00> java -jar .\java\FitCSVTool.jar C:\Users\中略\download\data.fit

とすると

FIT CSV Tool - Protocol 2.0 Profile 21.133 Release

Decoding FIT binary file C:\Users\中略\download\data.fit to C:\Users\中略\download\data*.csv files.

と表示され、CSVファイルがC:\Users\中略\download\data.csvに作成されます。

このCSVの中身については弊ブログ

o-treetree.hatenablog.com

に書いてます。

Windowsでバッチファイルを利用する

もう少し簡単な方法として、windows限定ですが、バッチファイルを使う方法があります。

C:\Users\中略\FitSDKRelease_21.133.00\javaの中にFitCsvTool.batというバッチファイルがあります。変換したいFITファイルをこのバッチファイルの上にドラッグアンドドロップすると、元のFITファイルのフォルダにCSVが変換されて入ります。

さらに便利な方法として【以下Google翻訳をコピペ】

より便利な方法は、.FIT ファイル拡張子を持つファイルを FitToCSV.bat ファイルに関連付けることです。これにより、FIT ファイルをダブルクリックして .csv ファイルに変換できるようになります。

FIT ファイルを FitToCSV.bat に関連付けるには、任意の FIT ファイルを右クリックし、[プロパティ] を選択します。

[プロパティ] ダイアログから、拡張子 .FIT を持つすべてのファイルを開くプログラムを変更します。要件に応じて、FitToCSV.bat または他のバッチ ファイルのいずれかを選択します。

[OK] をクリックして変更を適用し、[プロパティ] ダイアログ ボックスを閉じます。 FIT ファイルをダブルクリックするか、右クリックして [開く] を選択すると、.csv ファイルに変換されます。ファイルの関連付けを更新する必要がないように、新しいバージョンの FIT SDK を必ず同じ場所に解凍してください。

とのことです。

発展編?

CSVの中身を見やすくする

FitCSVTool.jarを使用するときにオプションを指定できます。

developer.garmin.com

面倒なのでGoogle先生に翻訳してもらって少し手直しした結果です。

おすすめオプションその1 -deg

FitCSVToolは、緯度経度をsemicirclesという謎単位で表示してきます。180をかけて2の31乗で割ると角度に変換できるのですが、-degオプションを指定するとTool側で変換してくれます。単位名はdegreesとなります。

おすすめオプションその2 -iso8601

FitCSVToolは、タイムスタンプを1989/12/31 00:00:00 UTCからの経過時間で表示します。このとき単位名はsです。データを計算にかけるときは数値で扱えるのでこっちの方がいいかもしれないです。

https://developer.garmin.com/fit/protocol/ より

-iso8601オプションを指定すると、ISO 8601という規格に従って読みやすい形で表示してくれます。2024-04-19T06:34:21Zみたいな。なお協定世界時です。単位名はありません。

おすすめオプションその3 --defn none --data record

デフォルトの設定だと、最初の方になんかよくわからんメタデータ的なのが差し込まれます。--defn noneメタデータを消し、--data recordでデータのうち、サイコンの機種情報などを消して実際のログデータだけを表示するようにします。

このとき、*_data.csvとファイル名をつけられたdataファイルが生成されます。こちらのほうがエクセル分析には向いているかもしれません。

ドキュメントにある通り、これは-bオプションと併用するので

C:\Users\中略\FitSDKRelease_21.133.00> java -jar .\java\FitCSVTool.jar -b [変換するFITファイル] [作成するCSVファイル] --defn none --data record 

のように使います。

バッチファイルの挙動

バッチファイルFitToCSV.batの中身は次のようになっています。

13行目、c=!c:.fit=!って、cから.fitに変換しているんですけどそれだと拡張子がなくなっただけですよね、それ14行目でCSVファイルを指定する変数だと思うんですけど。まあ実際問題なく機能しているし、c=!c:.fit=.csv!にしても機能するのでFitCSVTool側でどうにかしてるんですかね。

複数のFITファイルを選択してバッチファイルにドラッグアンドドロップしたとき、それぞれのFITファイルについてFORループでもって順番に処理がされます。

おわりに

自分は、XOSSのサイコンをツーリングで使って、そのログの処理にFitCsvToolを使っています。

さらに自作のJAVAアプリケーションを使ってGPXにしたりしています(FitCSVToolが使える環境なら基本的に使える)。それについても別の機会に紹介しようと思っています。

プライバシーポリシー ・お問い合わせはこちら