結論|Pythonで「トレーニング×ブログ運用」は完全自動化できる
これまで手作業で行っていた
- 総距離の計算
- ラン/ライド別の集計
- 月間距離の把握
- 峠トレーニングの抽出
をPythonで自動化しました。
👉 結論
分析・振り返り・ブログ作成まで一気に効率化できます
今回やったこと
- リスト+辞書でログ管理
- datetimeで日付管理
- timedeltaで時間管理
- for文で集計処理
- キーワード検索
👉 Python基礎の総まとめです
サンプルデータ(実ログの一部)
from datetime import datetime, timedeltatraining_log = [
{
"date": datetime(2025, 11, 15).date(),
"type": "ライド",
"distance": 50.8,
"time": timedelta(minutes=105),
"avg_speed": 29.0,
"memo": "復帰ライド",
},
{
"date": datetime(2025, 11, 15).date(),
"type": "ラン",
"distance": 15.22,
"time": timedelta(minutes=80),
"avg_pace": 319,
"memo": "彩湖ラン",
},
]
※実際には数ヶ月分のデータを記録しています
① 総距離の自動計算
total_distance = 0for log in training_log:
total_distance += log["distance"] or 0print(f"総距離: {total_distance:.2f} km")
出力結果(例)
総距離: 512.3 km
👉 約500kmを超え、持久力ベースは順調に向上
② 種目別集計(ラン・ライド)
run_distance = 0
ride_distance = 0for log in training_log:
if log["type"] == "ラン":
run_distance += log.get("distance") or 0
elif log["type"] == "ライド":
ride_distance += log.get("distance") or 0print(f"ラン距離: {run_distance:.2f} km")
print(f"ライド距離: {ride_distance:.2f} km")
出力結果(例)
ラン距離: 320.5 km
ライド距離: 191.8 km
👉 ウルトラ対策としてラン比率が高め
③ 月間距離の算出
month = "2026-03"
total = 0for log in training_log:
d = log["date"]
if d.strftime("%Y-%m") == month:
total += log.get("distance") or 0print(f"{month} 距離: {total:.1f} km")
出力結果(例)
2026-03 距離: 210.4 km
👉 ロング走中心の月
④ キーワード検索(峠練抽出)
keyword = "峠"for log in training_log:
if keyword in log["memo"]:
print(
f"{log['date']} | {log['type']} | "
f"{log['distance']}km | {log['memo']}"
)
出力結果(例)
2026-03-29 | ライド | 36.23km | 定峰峠TT
2026-02-22 | ライド | 27.4km | 失速した定峰峠ヒルクライム
👉 峠トレーニングだけ簡単に抽出可能
よくあるエラーと解決方法
■ ① Noneによるエラー
TypeError: unsupported operand type(s)
※3本ローラートレーニングでは距離はNoneと入力。
原因
"distance": None
解決
log["distance"] or 0
👉 データは欠損する前提で書く
■ ② datetimeエラー
strptime() argument must be str
原因
👉 すでに日付型
解決
d = log["date"]
■ ③ f文字列エラー
print(f"'ラン距離:", {run_distance:.2f} km')
👉 書き方ミス
正解
print(f"ラン距離: {run_distance:.2f} km")
■ ④ ループのミス
for log in training_log:
if keyword in log["memo"]:
for log in training_log:
👉 二重ループ
正解
for log in training_log:
if keyword in log["memo"]:
print(log)
実装して感じたメリット
✔ 分析が高速化
👉 手計算ゼロ
✔ ブログに直結
👉 データをそのまま使える
✔ 振り返りが深くなる
👉 感覚 → 数値
今後の発展
- 平均ペース・平均パワー
- 週別トレーニング量
- グラフ化(matplotlib)
- CSV出力
👉 ここまでやれば「分析ツール」になります
まとめ
今回の学習で一番大きかったのは👇
👉 Pythonが実生活とつながったこと
- トレーニング
- 分析
- ブログ
すべてが一つになりました。
関連記事
▶︎Python独学ロードマップ|初心者が最短で学ぶ勉強手順と学習記録
https://run-ride-code.com/python-selfstudy-roadmap/
▶︎【富士ヒルシルバーのトレーニングメニュー】1時間15分切りを目指す練習方法
https://run-ride-code.com/fuji-hill-silver-training/
▶︎【40kmロングラン】ウルトラマラソン練習+GarminマルチGNSSバッテリー検証|荒川CR
https://run-ride-code.com/ultra-marathon-40km-longrun-garmin-battery-test/
▶︎🏁 🏃♂️🚴♂️800kmチャレンジ完遂記録|9日間で815km走破したトレーニング戦略と学び
https://run-ride-code.com/800km-challenge-summary/


コメント