伊豆の坂に囚われて

伊豆半島をめぐるサイクリングを中心としたブログです。

ライドスケジュール予測システムを作ってテストしてみた

やってみたかったんです。こういうの。

よくプロの人達がステムシートに補給プランやコースプロファイルなどを貼ってますよね。あれを真似してみようと。

いつもロングライドをする際には、休憩時間など込みのグロス走行時間を予想して出発時刻を決めたり、走行中でも、今いる場所から次の峠まで何時間かかるかなどを予測したりしていました。また、走行経験のないルートなどでは、コンビニなどがあるかどうかなどもリサーチした上で補給食をどの程度携行するかも考えたり。

それらについて、うまいこと予測が立てられて、ステムシートに計画を貼れたら便利だな、と思ってはいましたが、そういったことをできるアプリがあるのかどうか定かではありませんでした。

調べてもいいんですが、最近はAIもとんでもなく進歩しているようで、プログラミングとかの知識がなくても「こういうことやりたい」でアプリみたいなものが出来るとか。試しに自分で作れないか?と思ったのがコトの発端です。

一時が万事、こんなノリでチャットを重ねていきました。

さて。目標としてはSTRAVAで作成したルートを元にグロスの走行時間と、1時間ごとの到達距離をステムシートに貼れるサイズでpdfに出力させることにしました。

使ったのはChatGPTの一ヶ月期間限定無料アップグレード版PlusというプランとCodexというやつ。なんかよくわからないけど「スゴい」とか。僕のAIについての知識なんて、そんな程度。いまだに知りたい情報は、ググって検索結果を上位から眺めて情報に辿り着くような、”ITリテラシーの低い人”であります。

この辺りの経緯は試行錯誤してめちゃくちゃ混乱しているので、別の機会に追々書ければ良いかなと思っていますが、大まかな流れはざっくり下記。

1. 自分の走行傾向を知る

予測を立てるためには自分を知らなければなりません。過去の自分の走行データをSTRAVAからダウンロードして色々分析してもらいました。その手順も聞いたら色々教えてくれました。

2. 分析結果を元に予測行程をpdfに出す

当初は1時間毎の予測到達距離を一覧に出してもらえたら良いな、と思っていたのですが、やっていくうちに色々出来ることがわかってきて「じゃあこの区間にコンビニあるかどうかも出して」「補給するべきカロリーとか出して」などやっていくうちに情報が膨れ上がり、ステムシートに収まりきらなくなったりしました。

3. 欲が出てmapにも表示させたくなった

ステムシートがうまく行ったことでつい欲が出て、スマホでマップを出力してもらって、1時間毎の到達地点や、コンビニの有無、さらには現在地表示までお願いしてみたり。この部分もわからないことだらけで、試行錯誤しましたが、なんとか着地できました。

とにかく「こうしたいんだけどどうやるの?」に対して「これを〇〇に貼り付けてください」みたいなやりとりを重ねた結果。

こんな感じの入力画面でSTRAVAで作ったマップを選択すると、結果が手に入ります。

これがスタート時刻をAM4時にした場合のステムシート。

何やら、謎の記号がありますが、それは単語をそのまま表記すると列幅を超えて文字が重なり合ってしまい、使い物にならなかったため省略表記させているためです。例えば9hの行で言えば、M350はMountainのルート(つまり峠など本格的なクライミングが含まれる)かつ、推奨補給カロリー数。ONI+GEL/WTRとは、おにぎり(Onigiri)とジェルに水を補給しよう、ということを意味します。おにぎりは別にマストではないのですが、ChatGPTはおにぎりを推してきたのでそのまま採用しています。

CVS NOとはコンビニがルート上でこの近辺にないことを表しています。これは今回色々作り込んでいく中で欲しいなと思ったものの一つです。これを見て「あ、ここで2時間分はオヤツを買っておかなきゃ」と出来るので便利。

そうやって作り込んでいったら、ある時点で1時間毎の予測到達点のルート上にあるコンビニをマップで表示させたらさらに良いんじゃないか?と思って、コンビニマップの有無をポイント毎に表示させるマップを作りはじめる始末。

さらには、予想到着時刻や、現在地も表示させるという、大分詰め込んだ仕様になってしまいました。

色々作れてしまうのでついつい”あれもこれも”と盛り込みたくなりますが、キリがなくなってしまうので一旦良いところでテストライドして見ることにしました。

pdfをネットワークプリントサービスでプリントアウトしてステムに貼り付けます。ちょっと贅沢して光沢紙でカラー印刷してみました。一枚120円。高いな。

さて。今回のテストルートは片道自走。西伊豆まで向かう途中、熱海で荷物を預け、西伊豆をぐるっと回って熱海に戻る、という220km獲得標高4000mのルートです。

4時スタートを計画してステムシートやマップはそれを基準にして出力していましたが、実際は1時間早い3:04にスタート。

夜明け前の中原街道を南下していきます。1時間後には18km進んでいる予測ですが、果たしてどうだろう、と思いながらアップダウンを繰り返す道を進んでいきます。すると、ほぼ予測通り18km地点で1時間となりました。我ながらびっくり。

2時間後もほぼ予測通りで進んでいきます。陽も既に昇り、快晴の中を進んで金目川の辺りまで。

富士山も霞みながらもよく見えます。この先も雲に隠れなければ良いな、と思いながら、スマホで作成したマップを確認してみました。

こんな感じで現在地や予測最終地点到着時刻(ETA)などがわかります。Scheduleが64分先行となっているのは、作成時点では4時スタートとして出力したからです。実際には3:04スタートなので8分早く進んでいるということになります。ややこしい。この辺りはちょっと工夫しなくては。

そんなことを思いつつ、小田原を過ぎ穏やかな相模湾を横目にご機嫌になりながら熱海駅に到着しました。ようやくバックパックを下ろして身軽になれました。

さて。ここから伊豆多賀の山伏峠を越えていくわけですが、そこでふと思いました。

今回のルートではこの熱海から修善寺までのルートは往路と復路が重なります。マップ上で現在地は取得できても、それが往路か復路かが判別できなければ、場合によってはまだ前半の走行であるにも関わらず復路として到着予定時刻を弾き出してしまうかも、ということです。

うーむ、そんなこと考慮に入ていないな、と思いながら久しぶりの山伏峠を登っていきます。なかなかの激坂仕様ですが、4km程と短く、峠手前では相模湾を見下ろす最高の区間もあるので、好きな上りです。

往路の山伏峠終了。この時点で8時40分でした。予測マップを見たところ、ETAが午前9時過ぎとなっていたので、復路の山伏峠にいることになっているようです。

これは修正しなくちゃなー、と思いながら修善寺に向かってダウンヒル。マップはさておき、ステムシート上の予定時刻では15分ほど先行している程度で、出発から6時間過ぎても比較的良い予測精度になっていました。

修善寺から月ヶ瀬の道の駅に向かいます。今回は土肥から宇久須に南下した後仁科峠を登って西伊豆スカイライン北上、という定番のルートです。仁科峠へのクライミングルートはちょうど今、工事により一部通行規制がかかる期間なのですが、それは平日のみだったことがわかり、ルートに組み込めました。

月ヶ瀬の道の駅に休憩で立ち寄り、特に長居するつもりはなかったものの「究極の生ジュース」のキッチンカーを目にして飲んでみることにしました。

みかんだ!みかんだ!すっごくうまい!っとSサイズを瞬殺。

Lにしてもよかったか?とも思いましたが、お腹がたぷんたぷんになると、この後船原峠までの緩いながらの上りで込み上げちゃうかもなので、良い選択だったかと。

そんなこんなでリスタートして土肥に向かいます。船原トンネルを越えて、土肥へのダウンヒルを気持ちよくこなし、土肥に着いたのは10:30。この時点で予測より30分ほど先行していました。

ここで休憩して11時ぐらいに出たら、宇久須には11:30~45に着くと思われ、そこのコンビニで休憩と補給を済ませて仁科峠の上りに1時間15分程度かかるとして13時に仁科峠。おそらく熱海帰着は遅くとも17:00前かな、とざっくり計算してみました。

実際、ステムシートの予測にこだわりすぎると、それに縛られる感じもあり、ちょっと本末転倒な気もしてきたので、休憩したい時には休憩するし、必要がなければ軽く止まって補給食を食べる、で良いよね、と思い始めました。

トーストセットのトーストから牛乳の風味が感じられてなかなか美味しかったです。

駿河湾を眺めながらしばし、ぼーっとします。

この時点で140km走っているので、距離で言えば2/3近く進んでいます。ただ、ここから先は仁科峠、西伊豆スカイラインが控えているので、気分的にはまだ半分手前の感じです。

11時に再スタートして宇久須へ。

途中で振り返れば富士山がよく見える穏やかな上りを進み、予測通り11時半に宇久須に到着しました。予測システムもいい感じですが、従来の自分の予測も悪くない。

ドリンクと補給食を追加して、いよいよ仁科峠へ。

正面にそびえる仁科峠の稜線に向かってしばしの平坦区間。いきなり勾配ズドン、ではなく気持ち昂る序章としても申し分ない演出です。キツいの知っていてもワクワク。

勾配が本格的になってしばらくは比較的木々に覆われて入るものの確実に夏日の強い日差しが照りつけ、満タンにした700ml容量のボトルもみるみる減っていきます。インサイドは30%あるらしいカーブも切り抜け、わずかにある平坦区間に差し掛かります。そして再び二桁以上の勾配に戻り、やがて駿河湾が見下ろせる開けた区間にたどり着けばそこが天城高原牧場。

途中牛舎の横を通り過ぎるのですが、今回初めて放牧された牛さんたちが牧草地でのんびりとくつろいでいました。みんな怪訝そうな面持ちでこちらを眺めております。

そんなこんなで、仁科峠到着。時刻はちょうど13時。自分の予測ぴったりです。ステムシートでは、この先下って風早峠の先の登り返しの辺りに到着している予定なので数分ビハインドぐらいかな、と思いながら途中で買った一口わらび餅を頬張ります。

ここまで来れば、西伊豆スカイラインの達磨山への上りと大仁線の山伏峠への上りを残すのみ。距離にして60kmで熱海に到着です。

修善寺には2時間あれば着くかな?という計算をして西伊豆スカイラインに向かって再スタート。一時は雲に隠れていた富士山も要所要所で見えていて、定番スポットでは良い具合に眺めることができそう。

西伊豆スカイラインに入る前にそれなりに下ってのち、達磨山に向かって30分ほどの上り。途中で朝下っていた土肥へのダウンヒルの道が遥か下に見えたりして、ずいぶん走ってきたなぁ、と感慨深くなります。

上りが終了する辺りで振り返ると仁科峠が遠くに望めます。そこから一旦ダウンヒルして達磨山の手前の戸田を見下ろせる駐車場へ。

そして軽く登り返して達磨山を回り込み再びダウンヒル。

ここまで自走で来た!以前は沼津や修善寺、もしくは伊東などを起点にしないと無理だと思っていたのが、まさか自走で来るようになるとは。

修善寺駅に着いたら併設の「いずーら」でしいたけそばを食べようと思いながら駅に向かってダウンヒル。標高が下がってくるとだんだん暑さが戻ってきて、冷やしそばに気分が傾いてきます。

大盛りはなかなかのボリュームですが冷えたお蕎麦の心地よい喉越しに、するりと食べきってしまいました。

ひと心地ついて再スタート。山伏峠は本格的な上りの手前まで7kmほどはなだらかな上りです。その後4km弱10%程度を交えた上りをこなせば終わるので、キツイのもあと僅か。

いつの間にかこちら側から西陽が照りつける山伏峠に到着。この時点で15:50となり進行予定からは数分遅れ程度。16:30頃に熱海駅に着くかな、と思いながら最後のダウンヒルに入ります。

山伏峠といえば、この陸橋からの相模湾。ロングライドの最高の締めにホッと一息。

135号線に戻って、熱海まで。熱海の街中を進んでいたら思いのほか信号に捕まりましたが、16:28に駅のコインロッカーの前に到着してサイコンの計測を終了。

グロスの走行予測では13時間17分なのに対して、13時間23分という経過時間だったので、作成した予測システムは中々の出来栄えであります。

何よりも、途中コンビニ休憩以外にもカフェ休憩やお蕎麦休憩など、ロングライドならではの不確定要素も盛り込んでこの精度なのが驚きでした。もちろん、予測システムを作る段階で、そういった要素も含めてグロスでの走行時間や途中経過を予測するように仕立てたのですが、案外使えそう。

あとは、マップの改修とステムシートの内容の見直しなど、色々手入れをしていって使い勝手が良くなれば良いかな、と思案中です。

Posted in

コメントを残す

伊豆の坂に囚われてをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む