【Python学習記録】トレーニングログを自動集計|距離・月間・検索・エラー解決まで完全解説

Code

結論|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/


コメント

タイトルとURLをコピーしました