Google Spreadsheet でトレーニング日誌

去年あたりから自分なりに走行距離とかつけてます。目標持ってやるとかいうよりも、走るための動機づけって側面が大きいですが。何事も不純な動機から始まるものです。はい。

レーニング向けのGPSでは付属ソフトとか付いてくるみたいですが、自分は普通の腕時計しかないので、自前でやるしかありません。JogNote にも手を出したのですが、どうにも融通が利かない点がいくつかあって、たとえば、

  • 任意の日の走行データを加工できない(一気に1週間分の練習記録を更新したりできない)
  • せっかくの記録をCSVとかでインポート・エクスポートできない。
  • 重みつけて換算できたりしない。
  • そもそも日記機能がいらない。

結局 Excel でまとめるのが手っ取り早くていいやと思ってしばらく Excel でまとめてたのですが、そのうち職場でも閲覧・更新したいと思って Google Spreadsheet に移行させ、この形式に落ち着いてはや1年経過。割といい感じなので事例紹介な感じで説明してみます。もっといい方法があれば教えてほしいという希望も込めて。

スクリーンショットが、走行距離を記録するオリジナルのシート(今年はなぜか張り切ってお正月から走ってた。どうしてそんなに元気だったのかしら。。)1日1行で、1年分がタイトル行含めて366行となるようなデータです。各列の構成は次の通り。

  • A列 ... 月
  • B列 ... 日付
  • C列 ... Swim (km)
  • D列 ... Bike (km)
  • E列 ... Run (km)

B列は日付列で、B2だけ 2010/01/01 と直打ちし B3 以降は

=B2+1

のようにセル関数を利用。A列はB列の関数とし、たとえばA2は

 =Text(B2, "YYYY-MM")

のようにして "2010-01" のような月の表現を作成します(この列は後で月別で集計するための列)このシート名を "過去記録_縦長" などと命名しておき、普段はこちらを更新します。

走行距離の月別サマリは、別個にシートを1枚おこしてこちらで集計します。Google Spreadsheet には、セル範囲に対して SQL クエリをかけて集計することのできる素敵な関数 QUERY があります(この関数が素晴らしい。ぜひ Excel にもほしい…)自分の場合、別シート(過去記録集計)のセルA1に次の記述を入れました。

=QUERY(過去記録_縦長!A1:E412,
 "SELECT A, sum(C), sum(D), sum(E) Group by A order by A")


そうすると、スクリーンショットのような月別走行距離合計が出ます。この集計結果に対して、この隣に重みをつけた距離を作成し、積層棒グラフを描けば、ここまでの進捗とか描画できます。

オクトーバーランというのは、どこかで見た換算で、

Run + Swim * 4 + Bike * 0.4

だそうです。重みなしでそのまま足し算すると Bike に偏るので、重みをつけて足し算して月別に偏ってないかとかそんなのを見るのにいいかもしれない。自分の場合、猛暑でだれた7月とか、ベトナムで遊んでた9月とか偏りまくりですが…。まあ、そんな傾向がぱっとわかって楽しい。

もう少しAPIとかガシガシいじれば楽しいことができそうだけど、とりあえず間に合ってるのでこれ以上は進歩しない感じ。むしろもうちょっと距離延ばしたいので、そちらにエネルギー使う予定。