ROWFILE/1
.rowfileは、完全なローイングセッションを1つのファイルに保存します。Row Smarterは現在すでに読み込みと書き出しに対応しています。情報を失わないセッション記録に加え、表計算やトレーニングサイト向けのCSV・TCX書き出しを含みます。
このファイルは今すぐ直接共有できます。セッション全体を含むため、途中で情報が失われません。
コンテナーの区切り
コンテナーは決定的な連結形式で、zipファイルではありません。各エントリーの生バイトをASCIIの区切りで囲みます。
ROWFILE/1\n
>> <name> <size in bytes, decimal>\n
<size raw bytes>\n
...repeated per entry...manifest.jsonが最初に書き込まれます。読み取り側はエントリーをどの順序でも受け付け、未知の名前は読み飛ばし、同じ名前が2回現れた場合は拒否する必要があります。
エントリー名
Row Smarterは次の固定名を書き込みます。
manifest.json:アーカイブのバージョンと書き込み元の詳細。session.json:読み込み処理が信頼する、情報を失わないコピー。summary.csv:セッション概要の書き出し。samples.csv:記録したサンプル。strokes.csv:記録したストローク。rowingdata.csv:rowingdata形式の書き出し。beats.csv:未加工のRR間隔。session.tcx:TCX書き出し。
CSVとTCXのエントリーは、個別の書き出しとバイト単位で同一です。つなぎ合わせたアーカイブにはsession.jsonがない場合があり、その場合はほかのエントリーから可能な限り復元します。
manifest.json
必須キーはformatVersionだけです。ツールが個別ファイルからアーカイブを組み立てる場合、ほかの値は省略できます。
formatVersion:整数。現在のコンテナー形式は1です。sessionID:任意のUUID文字列。appVersion:任意の文字列。writer:任意の文字列。Row SmarterはRowSmarter、復元ツールはstitch-rowfileを書き込みます。
session.json
セッションスキーマはバージョン1です。値は丸めません。必須キーは以下に明記し、それ以外はすべて任意です。
セッション
v:必須の整数。セッションスキーマのバージョン。id:必須のUUID文字列。セッションの識別子。start:必須の数値。プラットフォームのDate参照日時からの秒数。dur:必須の時間長オブジェクト。mov:移動時間の時間長オブジェクト。dist:必須の数値。距離、メートル単位。name:ワークアウト名。tz:開始時のタイムゾーン識別子。utc:開始時のUTCオフセット、秒単位。mass:選手の体重、キログラム単位。age:年齢、年単位。maxW:最大パワー、ワット単位。minSplit:500メートル当たりの最小秒数。maxSR:最大レート。plan:保存したWorkoutPlan文書。race:レースオブジェクト。avgPace:500メートル当たりの平均秒数。avgW:平均パワー、ワット単位。work:総仕事量、ジュール単位。kcal:キロカロリー。strokeCount:必須の整数。avgSR:平均レート。avgHR:平均心拍数、拍/分。peakHR:最大心拍数、拍/分。avgLen:平均ストローク長、センチメートル単位。avgRatio:ドライブとリカバリーの平均レシオ。samples:必須のサンプルオブジェクト配列。strokes:必須のストロークオブジェクト配列。beats:必須の拍オブジェクト配列。prov:来歴オブジェクト。hk:HealthKitワークアウトのUUID文字列。
時間長オブジェクト
s:必須の整数。整数秒。a:必須の整数。アト秒。
サンプルオブジェクト
t:必須の時間長オブジェクト。経過時間。d:距離、メートル単位。p:ペース、500メートル当たりの秒数。w:ワット。sr:レート。sc:ストローク数。hr:心拍数、拍/分。df:drag factor。sl:ストローク長、センチメートル単位。ap:平均ペース、500メートル当たりの秒数。aw:平均ワット。wj:仕事量、ジュール単位。hr0:未加工の心拍数、拍/分。
ストロークオブジェクト
i:必須の整数。ストローク識別子。t:必須の時間長オブジェクト。開始時刻。dr:ドライブ時間。rc:リカバリー時間。ds:機器が報告した時間ではなく推定値の場合はtrue。d:距離、メートル単位。w:平均ワット。fc:フォースカーブオブジェクト。pf:ピークフォース、ニュートン単位。af:平均の力、ニュートン単位。dl:ドライブ長、センチメートル単位。sd:ストローク当たりの距離、メートル単位。
フォースカーブオブジェクト
f:必須の力サンプル配列。dt:必須の時間長オブジェクト。サンプル間隔。cal:必須の真偽値。サンプルがキャリブレーション済みかどうか。
拍オブジェクト
e:必須の時間長オブジェクト。経過時間。r:必須の数値。RR間隔、秒単位。
レースオブジェクト
id:必須のレース識別子。name:レース名。dist:レース距離、メートル単位。own:選手の参加者識別子。src:結果の出所。field:必須の参加者配列。各参加者には必須の参加者識別子pがあり、表示名n、レーンl、順位r、距離(メートル)d、経過ミリ秒e、完了フラグfは任意です。
来歴オブジェクト
kind:エルゴの種類。erg:エルゴ名。hrm:心拍計名。app:アプリのバージョン。build:アプリのビルド。ver:記録形式のバージョン。si:サンプル間隔、秒単位。npc:1カウント当たりの力、ニュートン単位。hrfix:心拍数の補正件数。imf:読み込み形式。isrc:読み込み元アプリ。iat:読み込み時刻。プラットフォームのDate参照日時からの秒数。ifn:読み込んだファイル名。fid:セッションの情報保持度。mtd:移動時間が推定値かどうか。