猛暑が続いているが、皇居の周りを走るランナーたちは汗だくになりながらも軽快に走り続けている。継続は力というが、毎日ランニングしている人々は、体も引き締まり、健康的な肉体を維持している。かくありたいと思うものだが、ランニングにはラップデータをはじめ、データを保有できる楽しさもあるようだ。
HackerNewsで話題になっていたのがAdrien Friggeriさんの10年間欠かさずログをとってきたランニングデータのWebサイト。
nodaysoff.runでは、ライフログやGPSデータをもとに多様な切り口のグラフ、地図に加え、気温や気象なども重ねることで自身のランニングデータをクールにまとめている。20代後半からはじめたランニングは、故郷の街路から国立公園のトレイルまで7大陸を含む場所で1日も欠かすことなく走ることになる。毎日すくなくとも1マイル(約1.6キロメートル)を走り、多い年には、年間3177キロメートルを記録している。日本でも19日間37キロメートルを記している。
技術的には、NextJSアプリとPostgresデータベース、高速インメモリデータベースRedisのキャッシュをバックエンドに、SNS型フィットネスアプリStravaのデータをWebhook APIで更新。SVG(Scalable Vector Graphics)のクールなデータ可視化が魅力のnodaysoff.run、最初はD3.jsなどの可視化ライブラリを想定していたが最終的にはより細かく制御できるように直接SVGを書き出しているという。
"ランニングは私の人生を本当に変えました。生涯の友を作り、美しい場所を探検し、そしてさらに重要なことに、自分の健康と体力に投資しました。年齢を重ねるにつれて、そのプラスの効果を実感し始めています。"と述べるAdrien Friggeriさんは、今後も10年を目標に継続を宣言している。データをストックできる環境にあることも今後の継続の大きな力になるだろう。技術力を生かし、趣味で保有できるデータを可視化し自身のWebサイトに取り込む。自身の健康を増進させながら、趣味を拡張していけるのは、すばらしいことだ。
なにか自分も同じ系統のことをやってみたい。そう思った筆者は、生成AIの力を借りて似たようなことができないか思案した。基礎となっているデータはGPSデータをまとめたGPXファイルだ。筆者が使っている環境で手軽にこれを入手できそうなのが、アウトドア活動のルート計画アプリKomoot。ここからGPXファイルを書き出せるので、地図とルートを表示し、総距離、標高差、所要時間、平均速度を抽出するJavaScriptベースのフロントエンドをVSCodeのLiveServerで構築した。
可視化にはほど遠いが、自分の歩みをローカル環境で残すだけでも何か最初の一歩は踏み出せた気がする。難易度の高そうなバックエンド処理はレンタルサーバー環境で行うことになるが、今回はここまでにしておくにしても、歩く(走る)ことでデータだけはストックしておけばいつかは完成するだろう。そう思った次第である。

