こんにちは。ほぼ個人的なメモですが、日本語で書かれてるものがあんまりない情報なのでまとめておきます。
サイクルコンピューターやGPSの記録アプリを使っていて、『FIT形式』が使える方。アプリの中でしかデータが見えなかったのがCSVを使ってエクセルで表示できるようになります。
概要
サイクルコンピューターなどのデータプロトコルとしてFITという形式があります。GPSデータはもとより、サイコンを使っているときは心拍数なども一緒に記録してくれる方式です。
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のダウンロードのリンクがあるのでダウンロードしてください(この辺はいっぱい解説あるだろうから省略)。
ダウンロード
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の中身については弊ブログ
に書いてます。
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
を使用するときにオプションを指定できます。
面倒なのでGoogle先生に翻訳してもらって少し手直しした結果です。
おすすめオプションその1 -deg
FitCSVToolは、緯度経度をsemicircles
という謎単位で表示してきます。180をかけて2の31乗で割ると角度に変換できるのですが、-deg
オプションを指定するとTool側で変換してくれます。単位名はdegrees
となります。
おすすめオプションその2 -iso8601
FitCSVToolは、タイムスタンプを1989/12/31 00:00:00 UTCからの経過時間で表示します。このとき単位名はs
です。データを計算にかけるときは数値で扱えるのでこっちの方がいいかもしれないです。
-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が使える環境なら基本的に使える)。それについても別の機会に紹介しようと思っています。