Strava MCPを使って自分のレースとトレーニングを分析させてみてトレーニング計画を作ってみた
結論から言うと、AIは「失点の所在」を数字で言い当ててきた
結論から書きます。Strava の生データを Claude Code に繋いで、横浜往復のトレーニングライドと2025年の小松鉄人レースを分析させてみたところ、「私が来季どこで時間を取り戻せるのか」が約21分ぶんの内訳として数字で出てきました。
しかも、その大半は脚力アップではなく「取りこぼしの回収」でした。一番大きな失点はバイクのパンク(約6分半)で、これは練習ゼロで取り返せる時間です。
正直に言うと、自分のレースは自分が一番わかっているつもりでした。でも、生データと公式リザルトと自分のブログを突き合わせてもらったら、思い込みを一つ訂正させられました。その過程がおもしろかったので、AIに何をどう分析させたのか、順番に残しておきます。
使ったもの: Claude Code + Strava MCP
今回の主役は Strava MCP です。分析を担当させたのは Claude Code(モデルは Opus 4.8)で、MCP(Model Context Protocol)は AI から外部サービスのデータを呼び出すための仕組みです。これを Claude Code に繋ぐと、私の Strava アクティビティを AI が直接読めるようになります。
実は、有志が作った野良の MCP サーバーは以前から存在していました。ただ、Strava 公式の MCP が登場したのは今回が初めてです。公式が出たことで、認証まわりやデータの取り回しが一気に素直になりました。
とはいえ、正直に書くと、私の環境で実際に使えるようになるまで1週間ほど四苦八苦しました。。。認証の通し方やトークンの設定でつまずき、何度もやり直しました。一度繋がってしまえば快適なので、これから試す方はそのつもりで臨むとよいと思います。
接続を確認したところ、使えた主なツールはこんな顔ぶれでした。
| ツール | 取れるもの |
|---|---|
| アクティビティ一覧 | 距離・時間・速度・心拍(日付範囲指定) |
| 単一アクティビティ詳細 | 心拍・パワー・ラップ・セグメント・PR |
| 時系列ストリーム | GPS・心拍・パワー・ケイデンス・標高の秒単位データ |
| ゾーン情報 | 心拍/パワーゾーン、FTP、ランペースゾーン |
| ギア情報 | バイク・シューズの累計距離 |
ポイントは、AI が「アクティビティを探す → 詳細を取る → 比較する」を自分で組み立ててくれるところです。私は「4月と5月で西麻布から横浜まで3回ライドしたので分析して」と日本語で頼むだけでした。
検証1: 同じコースの3本を横並びにすると「調子の波」が見える
まず手始めに、私がベンチマークにしている西麻布↔山下公園の往復ライド(片道約30km、国道15号メイン)を3本投げました。
- 4/29 60.9km
- 5/6 61.7km(みなとみらい観光あり)
- 5/9 60.9km
全体サマリーがこちらです。FTP 225W を基準に見ています。
| 指標 | 4/29 | 5/6 | 5/9 |
|---|---|---|---|
| 移動時間 | 2:06:38 | 2:07:52 | 2:05:04(最速) |
| 平均速度(移動) | 28.8 km/h | 29.0 km/h | 29.2 km/h |
| 平均パワー | 176.8 W | 186.6 W | 179.3 W |
| 1時間ベストパワー | 173 W | 180 W | 158 W |
| 平均心拍 | 136 | 135(最低) | 138 |
| セグメントPR | 47 | 61 | 46 |
ここで AI が気を利かせたのは、**「3本すべてに出てくる同一区間だけで揃えて比較した」**点でした。コンディションも信号待ちも違う日同士を、生の平均値で比べても公平ではありません。そこで復路の主要区間(国道15号、横浜→品川 21.4km)でラップを揃えると、こうなりました。
- 4/29: 50:12 / 150 W / 140 bpm
- 5/6: 47:44 / 190 W / 142 bpm ← 最速・最高出力
- 5/9: 49:48 / 174 W / 137 bpm
結論は「5/6 がぶっちぎりで調子が良かった」。心拍は3本で一番低いのに、パワーは一番高い。つまり同じ心拍でいちばん速く走れていた日です。メモを見たら、この日は「サドルを10mm上げた」直後でした。フィット変更がハマった回だったわけです。

逆に5/9は移動時間こそ最速ですが、前半に突っ込んで後半失速するネガティブな配分で、メモには「フロントの細かい振動が多すぎて辛い」。快適性の問題で出し切れなかった可能性が高い、と。
ここまでで一つ実感したのは、AI に分析させると「同一条件で比べる」という当たり前を勝手にやってくれることです。私が手でやると、つい平均速度だけ見て満足してしまいます。
検証2: 2025年小松鉄人を「3つの情報源」で突き合わせる
次が本命です。2025年の小松鉄人レースを分析させました。このレースはバイク20km → 登山8km → バイク30km → ラン20kmという変則デュアスロンで、累計の獲得標高は約1,100mあります。
最初は Strava の生データだけを渡しました。すると4区間それぞれの出力や心拍を綺麗にまとめてくれたのですが、ラン区間についてこう書いてきました。
ラン: 平均心拍150・最大163で、登山では177まで上げているので心拍に余白あり。余力を残してゴールした可能性。
これ、実は間違いでした。そしてその間違いを正したのが、情報源を足したことです。
私は AI に、公式リザルト(AI Triathlon Result で見られます)と、自分で書いたレースブログの2つを追加で読ませました。3つの情報源が揃った瞬間、分析が一段深くなりました。

公式リザルトで「順位が動いた場所」が見えた
公式記録は総合29位/102人、年代別(40-44)7位/17人。区間順位を時系列で並べると、レースの物語が一目瞭然でした。
| 区間 | タイム | 区間順位 |
|---|---|---|
| バイク① 20km | 39:10 | 15位 🟢 |
| 登山 8km | 56:53 | 21位 |
| バイク② 30km | 53:23 | 50位 🔴 |
| ラン 20km | 1:43:36 | 39位 |
「バイク①で15位 → 登山で踏ん張って一時13位 → バイク②で50位に転落 → ランも取り返せず総合29位」。登山までは表彰台ペースだったのに、バイク②とランの2区間で確実に取りこぼした構図がくっきり出ました。

ブログを読ませたら、AIが自分の分析を訂正した
そして一番おもしろかったのがここです。ランの「余力を残した」という最初の読みを、AI 自身がこう訂正してきました。
⚠️ 前回の分析を訂正します。ブログで真相が判明しました。3km地点の山田峠で歩き始め、内転筋が攣りかけて10人に抜かれていました。平均心拍が150と低く見えたのは「省エネ」ではなく、歩きが平均を引き下げていたのが正解です。
その通りです。生データだけだと「心拍に余裕がある=余力を残した」と読めてしまう。でも実際は脚が攣って断続的に止まっていたから心拍が上がりきらなかった。数字は同じでも、意味は正反対でした。
このとき思ったのは、生データはあくまで結果でしかなく、「なぜそうなったか」は本人の記憶や文脈がないと埋まらない、ということです。ブログを書いておいてよかった、と心から思いました。
検証3: 分析から「2026年の優勝プラン」を引いてもらう
弱点が数字で出たので、そのまま「年代別で優勝したい。トレーニングプランを作ってほしい」と頼みました。週6時間・平日は朝夜の短時間・山は週末のみ、という私の制約を伝えたうえで出てきたのが、この「伸びしろテーブル」です。
| 区間 | 2025実績 | 現実的な目標 | 短縮 | 取り戻し方 |
|---|---|---|---|---|
| バイク① | 39:10(15位) | 維持〜38:30 | -0:30 | 強み。崩さない |
| 登山 | 56:53(21位) | 〜52:00 | -5:00 | 下り技術 |
| バイク② | 53:23(50位) | 〜46:30 | -7:00 | パンク撲滅(練習不要) |
| ラン | 1:43:36(39位) | 〜1:33:00 | -10:00 | 攣り対策+ラン耐久 |
| 合計 | 4:13:02 | 〜3:52 | 約-21分 |

21分のうち最大の7分が「パンク対策=練習ゼロ」というのが衝撃でした。投資対効果で並べると、優先順位はこうなります。
- 機材リスク撲滅(最優先) — チューブレス化、シーラント更新、タイヤ交換の自宅リハーサル。これだけで-6〜7分。
- ランの耐久&攣り対策 — トレイルで脚を使ったあとに20km走り切る神経筋がまだ未対応。補強筋トレ+ブリック+レース当日の補給(カフェインを忘れない仕組み化)で-10分。
- トレイルの下り技術 — 登りで稼いだ分を下りで返している。下り特化で-5分。
そして「週6時間・平日は朝夜の短時間・山は週末のみ」という制約に合わせて、平日=質の高い短時間、週末=土曜トレイル+日曜ブリックという型を提案してくれました。要点は「土台はある。あとは後半の維持とフィット、そして機材を詰める段階」ということです。
検証4: そのまま「14週・日別プラン」まで書かせた
ここまで来たら、と思って「14週間のデイリープランを作って」と頼みました。W1=6/15(月)スタート、レース=9/20(日)小松鉄人。出てきたのが下のプランです。さすがにここまで具体的だと、あとはこなすだけです。
まず強度の凡例から。
| 略 | 内容 | 目標 |
|---|---|---|
| Z2 | 有酸素ベース | バイク130–165W / ラン5:40–6:00 |
| SST | スイートスポット | 200–215W |
| THR | 閾値 | バイク220–235W / ラン4:10–4:20 |
| VO2 | 最大酸素 | バイク250–265W / ラン3:55 |
| Tempo | テンポ | ラン4:30–4:45 |
| RP | レースペース | ラン5:10–5:20 |
| STR | 補強筋トレ | 内転筋・片脚・カーフ |
| MOB | モビリティ+体幹 | 20分 |
Phase 1|基礎+弱点導入(W1–4)
| 週(時間・ねらい) | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|---|
| W1 6/15–21・約5h・セットアップ&テスト | MOB | FTPテスト(20分全力)60’ | ランベースライン(20分Tempo)45’ | STR導入35’ | 休 | トレラン90’(登り+下り意識・タイヤをチューブレス化&交換リハ) | ブリック バイク40’Z2→ラン15’ |
| W2 6/22–28・約5.5h | MOB | SST 2×15’@205W | Tempo 25’@4:40 | STR40’ | 休 | トレラン105’(下り反復) | ロング走70’(5:40漸進) |
| W3 6/29–7/5・約6h | MOB | SST 3×12’@210W | 坂ダッシュ8×75s | STR40’ | 休 | トレラン120’ | ブリック バイク50’→ラン20’@5:20 |
| W4 7/6–12・約4h・回復週 | 休 | バイク易40’Z2 | ラン易30’ | STR軽30’ | 休 | トレラン75’(楽に技術) | ブリック短 バイク30’+ラン15’ |
Phase 2|専門ビルド(W5–8)
| 週(時間・ねらい) | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|---|
| W5 7/13–19・約6h | MOB | THR 2×12’@222W | ランInt 5×3’@3:55 | STR40’ | 休 | トレラン120’(下り全開練) | ブリック バイク60’SST→ラン20’@5:15 |
| W6 7/20–26・約6.5h・本番栄養テスト開始 | MOB | THR 2×15’@225W | Tempo 30’@4:35 | STR40’ | 休 | トレラン135’ | ブリック バイク60’→ラン25’(ジェル・電解質・カフェインを実走で試す) |
| W7 7/27–8/2・約7h・ビルドのピーク | MOB | VO2 5×4’@255W | ランThr 3×8’@4:15 | STR45’ | 休 | トレラン150’(最長) | ブリック バイク70’→ラン25’ |
| W8 8/3–9・約4.5h・回復週+再測定 | 休 | FTP再テスト(72kgで・PWR更新) | ラン易30’ | STR軽30’ | 休 | トレラン80’(楽) | ブリック短50’ |
Phase 3|ピーク&本番シミュレーション(W9–11)
| 週(時間・ねらい) | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|---|
| W9 8/10–16・約7h | MOB | THR 3×12’@228W | ランInt 6×3’@3:55 | STR45’ | 休 | トレラン150’(下り) | ブリック バイク75’→ラン30’ |
| W10 8/17–23・約7h | MOB | VO2 6×4’@258W | ランThr 4×8’@4:15 | STR45’ | 休 | トレラン150’ | ロングブリック バイク80’→ラン35’ |
| W11 8/24–30・約7.5h・🎯ミニ本番シミュ | MOB | THR 2×15’@228W | 易ラン35’ | STR軽30’ | 休 | 本番シミュ:バイク30’→トレイル30’→バイク30’→ラン40’を連続(下り全開・栄養フルリハ・乗り換え動作も確認) | 易ジョグ40’回復 |
Phase 4|シャープ&テーパー+レース(W12–14)
| 週(時間・ねらい) | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|---|
| W12 8/31–9/6・約5.5h・量-25%/質維持 | MOB | THR 2×12’@225W | RP走5km@5:15+jog | STR軽35’ | 休 | トレラン100’(中強度+下り) | ブリック バイク50’→ラン20’@RP |
| W13 9/7–13・約4h・テーパー量-45% | 休 | バイク刺激 3×3’@230W 45’ | ラン20’easy+4×100m流し | STRごく軽25’ | 休 | トレラン60’(楽+少し下り) | ブリック短 バイク30’+ラン15’@RP |
| W14 9/14–20・レース週 | 休/MOB | バイク2×3’@レース感覚35’ | ラン20’easy+3×100m流し | 休(機材最終チェック・タイヤ目視・補給パッキング) | 軽ジョグ15’+流し・現地入り | コース下見+15’刺激 | 🏁 RACE・当日プロトコル実行 |
運用ルール
AI が最後に添えた注意書きが、いかにも私の弱点をわかっている内容でした。
- 攣り兆候や強い疲労があれば、その日の高強度は短縮するか易日に差し替える。順序より「質の日を質で終える」ことを守る(内転筋リスクを優先)。
- 火(バイク高強度)と水(ラン強度)は連日になるので、どちらかが重ければ入れ替え/間引きでよい。
- テスト=W1・W8。栄養リハ=W6以降の週末すべて。下り技術=土曜トレイル毎回。
おまけ: プランを1枚のHTMLダッシュボードに書き出す
ここまでの分析とプランを、そのまま「1枚の HTML ダッシュボードにまとめて」と Claude Code へ頼んでみました。すると、コードもデザインも私は一行も書いていないのに、こんなものを書き出してくれました。

カウントダウン、目標FTP、勝負を分ける3点……と、見るだけで気分が上がる仕上がりです。14週ぶんを縦に並べると、フェーズごとに色分けされた全体像と「今どこにいるか」がひと目でわかります。

テキストの表でも十分ですが、専用のUIに起こすと毎朝開く気になります。分析からプラン、見た目のいい成果物まで、対話だけで出てくるのは正直すごいと思いました。
ここまで具体的だと、もう言い訳ができません。あとは淡々と積むだけ……と言いたいところですが、実は今、それどころではありません。
検証5: 風邪で落ちた「いま」を、去年の同時期と比べる
正直に書くと、この記事を書いている今、私は絶不調です。6月3日から風邪をひいてしまい、パフォーマンスは絶賛悪化中。プランはできたのに体が動きません。せっかくなので、この落ち込みが「どれくらいヤバいのか」を、去年の同じ時期と比べてもらいました。
「6月1日〜15日の同じ15日間で、去年と今年を比べて」と頼むと、こう出してきました。
| 指標 | 2025年 | 2026年(いま) | 差 |
|---|---|---|---|
| ランニング距離 | 約80.5 km | 約9.0 km | −89% 🔴 |
| ランの負荷(Relative Effort 合計) | 約298 | 約49 | −84% |
| 実走バイク | 18kmライド+通勤 | ほぼゼロ(E-bikeに置換) | 🔴 |
| 質の高いセッション | 南部坂×10・14.3kmラン・10kmラン複数・テンポ | なし | 🔴 |
| イージー走の平均ペース | 5:13〜5:33/km | 6:55〜7:04/km | 約25%遅い |
| 6/3以降のラン | 継続 | 12日間ゼロ | 🔴 |
数字だけ見ると真っ青ですが、AIの読みは冷静でした。「これは実力が落ちたのではなく、風邪でトレーニングが止まっているだけ」だと。
- 去年の今頃は完全にビルド期。10kmランを何本も、坂ダッシュ(南部坂×10)、14.3kmラン、18kmライドと積めていました。
- 今年は6/1〜6/2の短いラン(しかも7:00/kmと普段より遅い)を最後に、6/3以降はランも実走バイクもほぼ消失。残っているのはE-bike通勤と散歩だけです。アシスト自転車への置き換えは、体が省エネモードに入っているサインだと指摘されました。
なるほど、と思いました。落ち込みの正体は「実力低下」ではなく「活動そのものが12日間止まっている」こと。ベースの実力は、5月の横浜往復で186Wを出せていたデータ(前述)が証明済みです。
AIが添えた「焦るな」という結論
ここでも分析だけで終わらず、こう整理してくれました。
- まず治す。これが最優先。 今は数字を取り戻す時期ではない。
- 14週プランは間に合う。 今日は本来W1にあたります。ただレースは9/20で、まだ約13.5週あります。最初の1〜2週を回復に充てても十分間に合うので、W1のFTPテストは今やらない。
- 復帰は段階的に。 治ってから散歩+20〜30分のイージージョグで入り、心拍と主観で「楽に」を徹底する。復帰直後にペースが遅いのは当然なので、ペースは見ない。
健康面では、大事な注意ももらいました。発熱や咳・胸の重さなど「首から下」の症状がある間は、高強度をやらないこと(発熱中の追い込みは心筋炎のリスクがある)。鼻や喉だけの軽い症状なら散歩〜軽ジョグは可、という目安です。6/3から12日続いているので、長引いたり悪化したりするなら受診します。
復帰のタイミングは、毎朝の安静時心拍が客観指標になるそうです。普段より+5〜7拍以上高い間は、まだ回復途上。これは今朝から測り始めました。
おまけ: いまのPWRを聞いてみた
ついでに「体重72kgで推定PWRは?」と聞いたら、FTP 225W ÷ 72kg = 約3.1 W/kg と即答でした。アマチュア中級の「しっかり踏める層」だそうです。
ただ AI が補足したのが的確で、小松鉄人はほぼ平坦〜緩斜面のバイク中心なので、PWRの絶対値より「その出力を複合疲労下でどれだけ長く維持できるか」が効く、と。実際バイク①は IF 0.89 で踏めていて、PWR はボトルネックではない。数字を出したうえで「でもそこは弱点じゃない」と言ってくれるあたりが、ただの計算機との違いだと感じました。
なお、この FTP は71kg時の測定値なので、起点を正確にするために72kgで測り直す価値がある、とも指摘されました。ごもっともです。
AIにトレーニング分析をさせて感じたこと
良かった点と、限界の両方を正直に書いておきます。
良かった点
- 「同一区間で揃えて比べる」「停止時間を移動時間から逆算する」といった面倒な前処理を、頼まなくても勝手にやる。
- 区間順位を時系列に並べて「物語」にしてくれるので、どこで勝負が決まったかが直感的にわかる。
- 強みと弱みを投資対効果順に並べてくれるので、限られた練習時間の配分を決めやすい。
限界・注意点
- 生データだけだと誤読する。今回のラン区間がまさにそうで、文脈(自分のブログ)を足してようやく正しい解釈にたどり着きました。
- センサー異常を見抜く必要がある。実際、5/9のライドは往路の心拍がきっかり145で張り付いていて、AI も「これはセンサー異常なので参考値」と注記していました。鵜呑みは禁物です。
- 「優勝も射程内」のような前向きな評価は、励みにはなりますが、最後に判断するのは自分です。
要するに、AIは優秀な分析パートナーですが、文脈を与えるのは自分の仕事ということです。レースのたびにブログを残しておくのは、未来の自分(とAI)への一番のプレゼントだなと思いました。
ちなみに、こうしたレース結果のAI分析を誰でも使えるようにしたのが、私が作っているAI TRI+というサービスです。今回のように生ログを自分で繋がなくても、リザルトをアップロードするだけで弱点をあぶり出せます。
FAQ
Q. Strava MCP の設定は難しいですか?
正直なところ、私の環境では繋がるまで1週間ほどかかりました。認証やトークンの設定でつまずいたのが原因です。ただ、一度繋がってしまえば、あとは日本語で「直近のライドを分析して」と頼むだけなので、最初の山さえ越えれば快適です。
Q. AIの分析は信用していいですか?
数字の集計や前処理は信用できます。ただし解釈は別です。今回のように生データだけだと正反対の結論になることもあるので、自分の記憶やレースメモと突き合わせるのを強くおすすめします。
Q. パワーメーターがないと意味がないですか?
いえ、心拍と速度とセグメントタイムだけでも「同一区間比較」はできます。パワーがあると精度が上がるという話で、必須ではありません。
Q. なぜブログまで読ませたのですか?
生データは「何が起きたか」は教えてくれますが「なぜ起きたか」は教えてくれません。脚が攣った、機材が壊れた、補給を忘れた——こうした文脈は本人の記録にしかないからです。
まとめ
- Strava MCP を Claude Code に繋ぐと、自然言語で自分のアクティビティを分析させられます。
- 同一コースの3本比較では、AI が勝手に「同一区間で揃えて」調子の波を可視化してくれました。
- 2025年小松鉄人を公式リザルト・Strava・自分のブログの3情報源で突き合わせると、失点が「バイクのパンク」と「ランの脚攣り」の2点に集中していると判明しました。
- 生データだけだと「ランは余力を残した」と誤読されました。文脈を足して初めて正しい解釈にたどり着きます。
- 来季の伸びしろは約21分。その大半は脚力ではなく「取りこぼしの回収」で、最大の7分は機材対策=練習ゼロで取り返せます。
- 分析からそのまま、レース当日まで逆算した14週・日別トレーニングプラン(強度ターゲット付き)まで書かせられました。
- 風邪で落ちた今の状態も去年の同時期と比べることで、「実力低下ではなく練習停止」と切り分けられました。まず治すのが最優先です。
- AIは優秀な分析パートナーですが、文脈を与えるのは自分の仕事。レースごとにブログを残す価値を再認識しました。