Skip to content

Garmin のデータは宝の山だった#1825

Merged
ma91n merged 1 commit into
mainfrom
feature
May 15, 2026
Merged

Garmin のデータは宝の山だった#1825
ma91n merged 1 commit into
mainfrom
feature

Conversation

@ma91n
Copy link
Copy Markdown
Collaborator

@ma91n ma91n commented May 15, 2026

No description provided.

@ma91n ma91n self-assigned this May 15, 2026

ただ、毎日眺めているうちに、どこか使い切れていない感覚が残る。Garminは膨大な数字を出してくれるのに、「結局どこが悪かったのか」には踏み込んでくれない。

直近の土浦かすみがうらマラソンがまさにそれだった。前半をゆっくり入りすぎて17km関門をギリギリ通過、焦って残り15kmを急激に上げたら腹痛が来て後半は完全に崩れた。ペース配分の問題なのか、スタミナなのか、フォームなのか。感覚ではなんとなくわかるが、数値で裏付けられない。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "が" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "が"
  • "が"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)


- ケイデンス:1 分間に何歩踏んでいるか。一般的に 170〜180 歩/分
が効率的とされている
- 上下動:体が上下に動く幅。前に進むために使えるエネルギーが、上下動に無駄遣いさ
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "に" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "に"
  • "に"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)

- ランニングパワー:自転車でいうパワーメーターと同じ概念。出力の安定性や疲労によ
る低下が数値でわかる

ただ、それを見ても「良いのか悪いのか」「どう直せばいいのか」まではわからない。それがこのプロジェクトを作った動機だ。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "か" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "か"
  • "か"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)


#### ペース変動の深刻さ

**ペース変動係数(CV)28.01%** — これはマラソンとして極めて高い数値です。理想は5%以下、10%でも「不安定」と評価されるレベルに対し、約6倍です。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.spellcheck-tech-word> reported by reviewdog 🐶
%で => %で (spellcheck-tech-word)

| Z4(80–90%: 166–186 bpm) | 26分38秒 | 7.3% | 閾値付近 |
| Z5(90–100%: 186–207 bpm) | 8分04秒 | 2.2% | 無酸素域 |

**心拍ベースでは理想的な分布**です。Z3に66%、Z2+Z3で85%はマラソンとして適切な有酸素強度帯です。心肺系のコントロールは良好と評価できます。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.spellcheck-tech-word> reported by reviewdog 🐶
%は => %は (spellcheck-tech-word)

**目標: 現在150 spm → まず160 spm、最終的に170 spm**

- 週2回、メトロノームアプリ(160 BPM設定)に合わせて20〜30分のイージーランを行う
- 最初の4週間は160 spmに慣れることに集中し、その後4週間で165 spm、さらに170 spmへ
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "に" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "に"
  • "に"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)


#### アドバイス3: レース中の歩行戦略を「計画的」に変える

**目標: ペースCV 28% → 15%以下(計画的Run-Walkなら10%前後が可能)**
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.spellcheck-tech-word> reported by reviewdog 🐶
%以 => %以 (spellcheck-tech-word)


#### アドバイス5: 垂直比を改善するドリルを導入する

**目標: 垂直比9.55% → 8.5%以下**
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.spellcheck-tech-word> reported by reviewdog 🐶
%以 => %以 (spellcheck-tech-word)


# FIT ファイルのパース

Garmin デバイスが保存するデータ形式は `.fit` はバイナリフォーマットのため、テキストエディタでは読めない。`fitparse` というライブラリを使えば、これを数行で読み込める。このファイルは Garmin Connect の「アクティビティ」画面から手動でダウンロードできる(エクスポート → オリジナル形式)。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "は" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "は"
  • "は"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)


## enhanced_speed と speed の使い分け

新しいデバイスでは `speed` と `enhanced_speed` の両方のカラムが存在することがある。精度の高い `enhanced_speed` を優先して使う必要がある。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [textlint] <eslint.rules.ja-technical-writing/no-doubled-joshi> reported by reviewdog 🐶
一文に二回以上利用されている助詞 "が" がみつかりました。

次の助詞が連続しているため、文を読みにくくしています。

  • "が"
  • "が"

同じ助詞を連続して利用しない、文の中で順番を入れ替える、文を分割するなどを検討してください。
(ja-technical-writing/no-doubled-joshi)

--race-name "土浦かすみがうらマラソン2026"
```

コマンド一つでレースデータを渡すと、ブラウザで見られるレポートが生成される。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
コマンド一つでレースデータを渡すと、ブラウザで見られるレポートが生成される。
コマンド1つでレースデータを渡すと、ブラウザで見られるレポートが生成される。


まず、フルマラソンを最後まで走り切ったことを評価します。6時間台での完走は、42.195kmという距離に対して身体が最後まで「動き続けた」ことの証明です。

しかしデータは、**心肺系には余裕があったにもかかわらず、脚の筋持久力が先に限界を迎えた**ことを明確に示しています。心拍ドリフトはわずか-3.1 bpmと心肺系は安定していた一方、ペースは前半8:13/kmから後半8:56/kmへ+43秒/km(8.7%)失速し、パワー出力も30〜40W低下しました。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
しかしデータは、**心肺系には余裕があったにもかかわらず、脚の筋持久力が先に限界を迎えた**ことを明確に示しています。心拍ドリフトはわずか-3.1 bpmと心肺系は安定していた一方、ペースは前半8:13/kmから後半8:56/kmへ+43秒/km(8.7%)失速し、パワー出力も30〜40W低下しました。
しかしデータは、**心肺系には余裕があったにもかかわらず、脚の筋持久力が先に限界を迎えた**ことを明確に示しています。心拍ドリフトはわずか-3.1 bpmと心肺系は安定していた一方、ペースは前半8:13/kmから後半8:56/kmへ+43秒/km(8.7)失速し、パワー出力も30〜40W低下しました。


#### ペース変動の深刻さ

**ペース変動係数(CV)28.01%** — これはマラソンとして極めて高い数値です。理想は5%以下、10%でも「不安定」と評価されるレベルに対し、約6倍です。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
**ペース変動係数(CV)28.01%** — これはマラソンとして極めて高い数値です。理想は5%以下、10%でも「不安定」と評価されるレベルに対し、約6倍です。
**ペース変動係数(CV)28.01%** — これはマラソンとして極めて高い数値です。理想は5以下、10%でも「不安定」と評価されるレベルに対し、約6倍です。

Comment on lines +205 to +209
| Z1(50–60%: 104–124 bpm) | 19分27秒 | 5.3% | 回復・歩行区間 |
| Z2(60–70%: 124–145 bpm) | 1時間10分 | 19.1% | 軽い有酸素 |
| Z3(70–80%: 145–166 bpm) | 4時間02分 | **66.1%** | 有酸素の中核帯 |
| Z4(80–90%: 166–186 bpm) | 26分38秒 | 7.3% | 閾値付近 |
| Z5(90–100%: 186–207 bpm) | 8分04秒 | 2.2% | 無酸素域 |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
| Z1(50–60%: 104–124 bpm) | 19分27秒 | 5.3% | 回復・歩行区間 |
| Z2(60–70%: 124–145 bpm) | 1時間10分 | 19.1% | 軽い有酸素 |
| Z3(70–80%: 145–166 bpm) | 4時間02分 | **66.1%** | 有酸素の中核帯 |
| Z4(80–90%: 166–186 bpm) | 26分38秒 | 7.3% | 閾値付近 |
| Z5(90–100%: 186–207 bpm) | 8分04秒 | 2.2% | 無酸素域 |
| Z1(50–60: 104–124 bpm) | 19分27秒 | 5.3% | 回復・歩行区間 |
| Z2(60–70: 124–145 bpm) | 1時間10分 | 19.1% | 軽い有酸素 |
| Z3(70–80: 145–166 bpm) | 4時間02分 | **66.1%** | 有酸素の中核帯 |
| Z4(80–90: 166–186 bpm) | 26分38秒 | 7.3% | 閾値付近 |
| Z5(90–100: 186–207 bpm) | 8分04秒 | 2.2% | 無酸素域 |

| Z4(80–90%: 166–186 bpm) | 26分38秒 | 7.3% | 閾値付近 |
| Z5(90–100%: 186–207 bpm) | 8分04秒 | 2.2% | 無酸素域 |

**心拍ベースでは理想的な分布**です。Z3に66%、Z2+Z3で85%はマラソンとして適切な有酸素強度帯です。心肺系のコントロールは良好と評価できます。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
**心拍ベースでは理想的な分布**です。Z3に66%、Z2+Z3で85%はマラソンとして適切な有酸素強度帯です。心肺系のコントロールは良好と評価できます。
**心拍ベースでは理想的な分布**です。Z3に66、Z2+Z3で85%はマラソンとして適切な有酸素強度帯です。心肺系のコントロールは良好と評価できます。

- **具体策**: 30分ごとにジェル1本(約100 kcal)を摂取。6時間で12本、計1,200 kcal
- エイドステーションでの長時間停止を避け、歩きながら補給する練習をロングランで行う

**まとめ**: あなたの最大の強みは**心肺系の安定性**(Z3に66%滞在、ドリフト-3.1 bpm)です。心肺はすでにサブ5.5を狙えるベースがあります。課題は明確で、**ケイデンス改善(150→170 spm)と筋持久力の強化**の2点に集中すれば、次回のフルマラソンで大幅なタイム短縮が期待できます。まずは3ヶ月間、ケイデンスドリルと筋力補強を継続してください。次のレースでは5時間30分以内を現実的な目標として設定できます。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
**まとめ**: あなたの最大の強みは**心肺系の安定性**(Z3に66%滞在、ドリフト-3.1 bpm)です。心肺はすでにサブ5.5を狙えるベースがあります。課題は明確で、**ケイデンス改善(150→170 spm)と筋持久力の強化**の2点に集中すれば、次回のフルマラソンで大幅なタイム短縮が期待できます。まずは3ヶ月間、ケイデンスドリルと筋力補強を継続してください。次のレースでは5時間30分以内を現実的な目標として設定できます。
**まとめ**: あなたの最大の強みは**心肺系の安定性**(Z3に66滞在、ドリフト-3.1 bpm)です。心肺はすでにサブ5.5を狙えるベースがあります。課題は明確で、**ケイデンス改善(150→170 spm)と筋持久力の強化**の2点に集中すれば、次回のフルマラソンで大幅なタイム短縮が期待できます。まずは3ヶ月間、ケイデンスドリルと筋力補強を継続してください。次のレースでは5時間30分以内を現実的な目標として設定できます。

pace_cv = p_series.std() / p_series.mean() * 100
```

先ほどの実例レポートでは CV が **28.01%** と算出された。理想の 5% 以下どころか 6 倍近い値で、「非常にペースが不安定なレースだった」という事実を数値として示している。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
先ほどの実例レポートでは CV が **28.01%** と算出された。理想の 5% 以下どころか 6 倍近い値で、「非常にペースが不安定なレースだった」という事実を数値として示している。
先ほどの実例レポートでは CV が **28.01%** と算出された。理想の 5 以下どころか 6 倍近い値で、「非常にペースが不安定なレースだった」という事実を数値として示している。


## 2. 心拍数分析(`hr_analyzer.py`)

Garmin の 5 ゾーン基準(最大心拍の 50/60/70/80/90/100%)に従ってゾーン分布を算出する。加えて、前後半の平均心拍差(心拍ドリフト)とペースとの相関係数も計算する。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
Garmin の 5 ゾーン基準(最大心拍の 50/60/70/80/90/100%)に従ってゾーン分布を算出する。加えて、前後半の平均心拍差(心拍ドリフト)とペースとの相関係数も計算する。
Garmin の 5 ゾーン基準(最大心拍の 50/60/70/80/90/100)に従ってゾーン分布を算出する。加えて、前後半の平均心拍差(心拍ドリフト)とペースとの相関係数も計算する。


## 3. フォーム分析(`form_analyzer.py`)

ケイデンス・上下動・接地時間・垂直比を前後半で比較する。さらに、独自の **フォームスコア(100 点満点)** を算出して「どこをどう改善すべきか」を定量化している。閾値はランニングエコノミー研究で一般的に参照される市民ランナー向けの目安値(ケイデンス 170〜180 spm、垂直比 8% 以下、接地時間 250ms 以下が効率的とされる)をもとに設定した。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
ケイデンス・上下動・接地時間・垂直比を前後半で比較する。さらに、独自の **フォームスコア(100 点満点)** を算出して「どこをどう改善すべきか」を定量化している。閾値はランニングエコノミー研究で一般的に参照される市民ランナー向けの目安値(ケイデンス 170〜180 spm、垂直比 8% 以下、接地時間 250ms 以下が効率的とされる)をもとに設定した。
ケイデンス・上下動・接地時間・垂直比を前後半で比較する。さらに、独自の **フォームスコア(100 点満点)** を算出して「どこをどう改善すべきか」を定量化している。閾値はランニングエコノミー研究で一般的に参照される市民ランナー向けの目安値(ケイデンス 170〜180 spm、垂直比 8 以下、接地時間 250ms 以下が効率的とされる)をもとに設定した。


技術スタックは Python + fitparse + pandas + Plotly + Claude CLI だけ。特別なインフラも不要で、ローカルで完結する。

このツールを作る前と後では、レースの振り返り方が変わった。「なんとなく後半きつかった」が「CV 28%・心拍ドリフト +12bpm・接地時間後半+18ms」という数値に変わり、次の練習で何を優先すべきかが具体的になる。土浦のレースも、ペース急変→腹痛という因果がデータ上ではっきり見えた。
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[textlint-fix] reported by reviewdog 🐶

Suggested change
このツールを作る前と後では、レースの振り返り方が変わった。「なんとなく後半きつかった」が「CV 28%・心拍ドリフト +12bpm・接地時間後半+18ms」という数値に変わり、次の練習で何を優先すべきかが具体的になる。土浦のレースも、ペース急変→腹痛という因果がデータ上ではっきり見えた。
このツールを作る前と後では、レースの振り返り方が変わった。「なんとなく後半きつかった」が「CV 28・心拍ドリフト +12bpm・接地時間後半+18ms」という数値に変わり、次の練習で何を優先すべきかが具体的になる。土浦のレースも、ペース急変→腹痛という因果がデータ上ではっきり見えた。

@ma91n ma91n merged commit f6a0a17 into main May 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant