データの読み方(エクスポートガイド)
山元60 の「設定」→「データエクスポート」で書き出した JSON ファイル(setanta_export_YYYY-MM-DD.json)の中身を説明するページです。
このガイドは 2 つの使い方を想定しています。
- 自分のデータが何なのかを理解する — 書き出したファイルの各項目が何を表すかを知る。
- 生成 AI に相談する — エクスポートした JSON とこのガイドの両方を ChatGPT や Claude などに貼り付けて、トレーニングの分析やアドバイスをもらう。AI はこのガイドを「データの読み方の説明書」として使えます。
まず最初に:プライバシーの注意
エクスポートしたファイルには、表示名・メールアドレスなどあなた個人を特定できる情報が含まれます。
生成 AI に貼り付けて相談する場合は、不安であれば user セクションの displayName と email を削除してから貼り付けてください。トレーニングの分析にこの 2 項目は必要ありません。
AI に相談する方法
エクスポートした JSON ファイルの中身と、このガイドのテキスト全体を、生成 AI(ChatGPT・Claude・Gemini など)に貼り付けて、続けて次のような文章を送ると分析が受けられます。コピーしてそのまま使えます。
あなたは経験豊富なストレングス&コンディショニングのコーチです。
貼り付けた JSON は、トレーニング記録アプリ「山元60」から書き出した私のトレーニングデータです。
あわせて貼り付けた「データの読み方」が、各項目の意味の説明書です。
種目は exerciseTypeId というコードで記録されています。コードと種目名の対応は、同じファイルの exerciseTypes(標準種目)と customExerciseTypes(私が作った種目)に入っているので、それを使って名前に読み替えてください。
このデータをもとに、次の観点で分析とアドバイスをください。
- 直近のトレーニング頻度・総ボリューム(totalVolume)の傾向
- 部位ごとのバランス(鍛えられていない部位はないか)
- 主要種目の重量・推定1RM(estimatedOneRm)の伸び
- やりすぎ/不足している部位、ケガのリスク
- 次の4週間のおすすめメニューと重量・レップの設定
専門用語はかみ砕いて説明してください。
ヒント:重量はすべてキログラム(kg)です。
weightが0の種目は自重トレーニングです。日時はすべて協定世界時(UTC)の ISO 8601 形式なので、日本時間に直すには +9 時間してください(date項目は記録時の日付そのままです)。
ファイル全体の構造
ファイルは 1 つの JSON オブジェクトで、次の項目(キー)を持ちます。
| キー | 内容 |
|---|---|
exportedAt | 書き出した日時(ISO 8601・UTC) |
userId | あなたのアカウント ID |
schemaVersion | このファイル形式のバージョン(現在 1.0.0) |
user | プロフィール(表示名・体重・目的・所持器具など) |
workoutLogs | 完了したワークアウト 1 回ごとの記録 |
exerciseLogs | 完了した種目の 1 セットごとの記録 |
activeWorkouts | 進行中(未完了)のワークアウト |
activeExercises | 進行中のワークアウトに含まれる種目 |
equipments | 登録した所持器具 |
exerciseTypes | 種目の対応表(標準種目+あなたの自作種目)。コードを名前に読み替えるための表 |
customExerciseTypes | あなたが自分で作成したオリジナル種目の元データ |
記録(
exerciseLogs)の中で種目はコード(exerciseTypeId)で書かれています。そのコードが何の種目かは、同じファイルのexerciseTypes(対応表) を見れば分かります。標準種目・自作種目のどちらもこの表に含まれているので、ファイル単体で内容を読み解けます。
各セクションの意味
user(プロフィール)
| 項目 | 意味 |
|---|---|
userId | アカウント ID |
displayName | 表示名 |
email | メールアドレス |
weight | 体重(kg)。自重種目の負荷計算などに使用。未設定の場合あり |
gender | 性別(male / female / other) |
birthDate | 生年月日(YYYY-MM-DD)。未設定の場合あり |
purpose | トレーニングの目的(dieting 減量 / body_make 体づくり / strength_up 筋力向上 / health_maintenance 健康維持) |
startedAt | トレーニングを始めた年月(YYYY-MM) |
equipment | 所持器具の設定(bench ベンチの種類 / dumbbells 持っているダンベルの重量一覧(kg)/ others その他器具) |
createdAt / updatedAt | アカウントの作成・更新日時 |
tier | 料金プラン(free 無料 / paid 有料) |
workoutLogs(ワークアウト 1 回ごとの記録)
トレーニング 1 セッション分のサマリーです。1 件 = 1 回のワークアウト。
| 項目 | 意味 |
|---|---|
workoutLogId | このワークアウトの ID |
date | 実施日(YYYY-MM-DD) |
startTime / endTime | 開始・終了時刻(ISO 8601・UTC) |
durationMinutes | 所要時間(分) |
totalVolume | 総ボリューム(kg)。各セットの「重量 × 回数」の合計 |
totalSets | 総セット数 |
exerciseCount | 行った種目の数 |
prCount | この日に出た自己ベスト(PR)の数 |
notes | メモ |
overallRating | その日の総合評価(1〜5) |
createdAt | 記録の作成日時 |
各セットの詳細は exerciseLogs 側に入っていて、workoutLogId でひも付きます。
exerciseLogs(1 セットごとの記録)
ここが一番細かいデータです。1 件 = 1 セット。どのワークアウトのセットかは workoutLogId でたどれます。
| 項目 | 意味 |
|---|---|
exerciseLogId | このセットの ID |
workoutLogId | 属するワークアウトの ID |
exerciseTypeId | 種目のコード(末尾の対応表、または customExerciseTypes で名前に変換) |
order | そのワークアウト内での実施順 |
weight | 重量(kg)。0 は自重のみ |
reps | 回数 |
volume | このセットのボリューム(kg)= weight × reps |
work | 物理的な仕事量(ジュール)。記録があれば |
perceivedExertion | 主観的なきつさ(RPE、1〜10) |
formQuality | フォームの良さ(1〜5) |
combination | スーパーセット(連続して行う種目グループ)の番号。同じ番号同士が 1 グループ |
notes | メモ |
isPersonalRecord | このセットが自己ベストなら true |
estimatedOneRm | 推定 1RM(1 回挙げられる最大重量の推定値、kg) |
completedAt | 完了時刻(ISO 8601・UTC) |
activeWorkouts / activeExercises(進行中の記録)
まだ完了していない(記録中・一時停止中の)ワークアウトです。完了すると workoutLogs / exerciseLogs に移ります。普段はほとんど空か、記録途中のものが入っています。
activeWorkouts:進行中ワークアウトの本体。statusはin_progress(進行中)/paused(一時停止)。activeExercises:その中の種目ごとの状態。completedSets完了セット数、targetSets目標セット数、currentWeight/currentReps現在の重量・回数、targetWeight/targetReps目標、setRecordsに完了済みセットの一覧(後述の「文字列の中の JSON」参照)。
equipments(所持器具)
| 項目 | 意味 |
|---|---|
id | 器具の ID |
name | 器具名(例:「ダンベル 10kg」) |
category | 分類(例:dumbbells) |
metadata | 追加情報(文字列の中の JSON) |
exerciseTypes(種目の対応表)
記録に出てくるコード(exerciseTypeId)を種目名に読み替えるための表です。標準種目とあなたの自作種目の両方が入っているので、この表を見ればファイル内のすべての種目コードを解決できます。
| 項目 | 意味 |
|---|---|
id | 種目コード(exerciseLogs.exerciseTypeId と対応) |
name | 種目名(例:「ベンチプレス」) |
muscle | 主に効く筋肉 |
body_part | 部位(胸・背・脚・肩・腹・腕 など) |
equipment | 使う器具(配列) |
coefficient | 自重係数(0〜1) |
movement_distance | 動作の移動距離(m) |
dumbbellUsage | ダンベルの使い方 |
userId | 標準種目は無し(または null)、あなたの自作種目はあなたの ID |
customExerciseTypes(自作のオリジナル種目)
あなたがアプリ内で自分で作成した種目だけが、詳細つきでここに入ります(バックアップ用の元データ。種目名の読み替えだけなら上の exerciseTypes で足ります)。
| 項目 | 意味 |
|---|---|
id | 種目コード(exerciseLogs.exerciseTypeId と対応) |
name | 種目名 |
muscle | 主に効く筋肉 |
bodyPart | 部位(胸・背・脚・肩・腹・腕 など) |
equipment | 必要な器具(文字列の中の JSON 配列) |
coefficient | 自重係数(0〜1) |
movementDistance | 動作の移動距離(m)。仕事量の計算に使用 |
dumbbellUsage | ダンベルの使い方(文字列の中の JSON) |
単位・形式の約束
- 重量はすべてキログラム(kg)。
weightが0の種目は自重トレーニング(プッシュアップ・懸垂など)。- 日時は ISO 8601・協定世界時(UTC)(例:
2026-06-14T12:34:56.789Z)。日本時間にするには +9 時間。dateのような日付だけの項目は記録時の日付そのままです。 - 文字列の中の JSON:次の項目は、JSON がさらに文字列として入っています(読み解くにはもう一段「パース」が必要)。AI に渡せばそのまま解釈してくれます。
equipments[].metadatacustomExerciseTypes[].equipment、customExerciseTypes[].dumbbellUsageactiveExercises[].setRecords(例:[{"setNumber":1,"weight":50,"reps":8,"completedAt":"..."}])
サンプル(抜粋)
{
"exportedAt": "2026-06-14T12:34:56.789Z",
"userId": "user-abc123",
"schemaVersion": "1.0.0",
"user": {
"displayName": "太郎",
"weight": 75,
"gender": "male",
"purpose": "body_make",
"equipment": { "bench": ["flat"], "dumbbells": [5, 10, 15, 20], "others": ["pullUpBar"] }
},
"workoutLogs": [
{
"workoutLogId": "w-001",
"date": "2026-06-14",
"durationMinutes": 45,
"totalVolume": 1500,
"totalSets": 12,
"exerciseCount": 3,
"prCount": 1,
"overallRating": 5
}
],
"exerciseLogs": [
{
"exerciseLogId": "e-001",
"workoutLogId": "w-001",
"exerciseTypeId": "BPS",
"order": 0,
"weight": 100,
"reps": 8,
"volume": 800,
"perceivedExertion": 8,
"isPersonalRecord": false,
"estimatedOneRm": 125,
"completedAt": "2026-06-14T10:15:00Z"
}
],
"exerciseTypes": [
{
"id": "BPS",
"name": "ベンチプレス",
"muscle": "大胸筋",
"body_part": "胸",
"equipment": ["バーベル", "ベンチ"],
"coefficient": 0,
"movement_distance": 0.4
}
]
}
exerciseLogs の "exerciseTypeId": "BPS" を、exerciseTypes の中の "id": "BPS" から「ベンチプレス」と読み替えられます。