Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

日焼けと雨

今日の天気は曇りらしい。まだまだ梅雨空が続く中、貴重な中休みだ。

久々に鎌倉方面に行きたくなった。 CHPT3 を購入してすぐに登った栄光坂 に、もう一度チャレンジしたいのだ。あの時は坂の楽しみ方も知らず、ただ我武者羅に突撃して苦しかった。今度は改めてじっくりと堪能したいのである。

大船までは、いつもと違うルートを使って向かった。と言っても、基本的にはいつも通り Google Map 任せである。 昔はよく行っていた激安スーパー や旧居などを巡った後、 Google Map が示す道から普段は出てこないようなルートを選択した。横浜方面へは第一京浜やその裏の浜通りを使っていくことが多いのだが、今日は帷子川沿いを通って鎌倉街道に出た。その後は鎌倉ハムの工場の横を通り、ただならぬ雰囲気の陸橋を超えていく。

この陸橋の上部は歩道と一車線分の車道しかなく、対向車がある場合は待避所で待たなければならない。知らずに自転車で突入すると、肝を冷やすことになりそうだ。

ここを抜ければ大船駅前で、駅前をバスターミナル方面へ右折すれば、そのまま栄光坂に至る。信号で路線バスだけ先に行かせて、今回はじっくりと坂を堪能した。良い坂であった。

それにしても、照りつける太陽が痛いくらいである。曇りという予報はどうなってしまったのか。予報を信じてアームカバーをして来なかったので、すっかり日焼けしてしまった。

さて、目的は達成したので後は帰るだけだ。帰りはいつものように市道18号を行くことにする。もちろん、海側の道を使ったほうが近いし起伏も少なくて速いのだが、行きと帰りで同じ道を使ってしまうのはつまらない。ちょうどランチの時間だったので、たまたま近くにあった町中華でレバニラを頂く。駅前とは違い、郊外で潰れずに生き残っている店は大体美味い。この店も例外ではなかった。

家に帰るのであれば、ここから中山方面へ向かうことになるのだが、少々時間が早い。せっかくの梅雨の中休みなのだから、夜までしっかりと乗りたいものだ。そのまま町田方面へ向かうことにする。ちょうど、行ったことのない スターバックス町田金森店 という店舗があったので、行ってみた。熱くて喉もカラカラだったので、ベンティサイズのアイスコーヒーを一気に飲み干した。夏は冷たい飲み物が美味くて良い。

ついでに飲み物も補給しようとコンビニに入ったのだが、何を考えたのか炭酸水を買ってしまった。当たり前だが、ボトルに炭酸水を入れて自転車を漕げば、振動で炭酸は全て抜けてしまう。買ってから「しまった!」と思ったのだが、完全に後の祭りである。止むを得ず炭酸水をボトルに入れて走ったが、圧が高まり過ぎて水漏れした上に、フタを開けると「ポン!!」と弾け飛んでしまった。言うまでもないが大変危険なので、絶対にやってはいけない。

この時点で、時間は午後2時前。まだ時間がある。もう少し北上しよう。今度は スターバックス多摩境店 へ向かう。なぜそんなにスタバにばかりと思われるかもしれないが、アイスコーヒーを買うと one more チケットが着いてきて、もう一杯格安で飲めるのだ。正直、そんなに飲みたかったわけでもないのだが、2杯目のコーヒーもぐいと飲み干す。

ここから多摩川経由で帰れば、 100Km 以上の距離となる。どうせ明日も明後日も雨だろうから、天気の良い今日のうちにたくさん乗っておこう。多摩川に向かう途中には、まだ行ったことのない多摩動物公園がある。多摩モノレールに初めて乗ったときから気になっていた施設なのだが、未だに行ったことがない。向かってみることにした。

記憶によれば、動物園は山上にあったはずである。多少の坂道は覚悟して向かったのだが、まさかこんな立派なトンネルまであるとは思ってもみなかった。モノレールもそのままトンネル内に続いており、すごい迫力である。

最高地点はトンネル内にあり、そこから少し下ると多摩動物公園があった。アスレチック施設もあるようで、楽しそうだ。息子を連れてくると喜ぶだろうか。

そのまま下山して府中四谷橋を渡る。 Brompton in Palace に行くときにはいつも通る道だ。・・・と、ここで思い出した。今日は奇数月の第二土曜日なのではないかと。ああ、すっかり忘れていた、 今日は開催日 だった。まあでも、自分は車体にそれほど興味があるわけでもないし、ブロンプトンは乗り回してナンボのものだと思っている。こうしてロングライドができたのだから、かえって良い休日を過ごすことができた。

そんなことを思いながら多摩川を下っていると、ポツポツと雨粒が降ってきた。湿度が高いもんな、曇でも水滴くらいは落ちてくるよな、と呑気に構えていたのだが、そのまま雨は本降りとなった。話が違う。今日は梅雨の中休みだから帰らずにロングライドをしているのだ。雨の中走るのだったら、明日でも明後日でもいつでもできる。

振り返ってみるに、今日は朝からたっぷりと日焼けをして、帰りはザーザー降りの雨で車体ごとずぶ濡れになってしまった。全く曇りではなかったのである。一昨年も去年も痛い目にあってわかっていたことではあるのだが、夏の天気予報は信じてはいけない。

道志みちと山中湖

今日は 道志みち を登って山中湖に行く日である。と言っても、ルートについてはあまりわかっていない。最近忙しかったのもあるが、結局はヒルクライムは現れた坂を淡々と登るしかないわけで、たとえ事前知識があってもそれは変わらないのである。経験豊富な人が先導してくれるのであれば、なおさらだ。

ヒルクライムをするときには補給食が必要だ。自分は去年の冬からヒルクライムを始めたので、補給食はずっとチョコレートを使ってきた。しかしチョコは溶ける。最近のライドでは、ベトベトに溶けたチョコを飲むように食べることが多くなり、非常に不快だった。そこで今日は、補給食としてカロリーメイトを選んでみた。カロリーメイトは子供の頃好きだったのだが、カロリーが高く気軽に食べられないので食べるのを辞めてしまった。ライド中であればカロリーを気にせず気軽に食べることができる。何より、せっかく補給食を摂るのであれば、ゼリーや羊羹を飲むよりも好きなものを食べたほうが良い。

補給食も揃えて準備万端、朝 7:00 に橋本駅でサークルの方達と合流し、一路道志みちを目指した。約一時間ほどで「青山」という交差点に辿り着き、ここが道志みちの起点らしい。交差点を右折後は、のどかで心地の良い風景が続く。

途中の久保吊り橋で休憩。渡ってみたが、割と揺れるので高所恐怖症の人にはきついかもしれない。

この吊り橋があるのは、山梨県だ。実は先週、家族で山梨県に旅行に来たばかりである。まさか、二週間連続で山梨県に来ることになるとは,思ってもみなかった。

吊り橋の横には昔ながらの売店があり、地域の野菜などを買うことができる。

さらに登っていくと道の駅どうしがあり、休憩することができる。ソフトクリームを食べたが、猛暑だったこともあって大変美味しく感じた。

今回走っている道志みち東京五輪のロードコースで使われたらしく、道の駅に看板が出ている。

ヒルクライムとしてはここからが本番だ。と言っても、最大斜度で 10% くらいなので、そろーりそろーりと登っていけばいずれは頂上に着く。最後の一直線の登りと、そこから続くヘアピンカーブに心を折られそうになりながらも、無事に頂上に着いた。頂上には残念ながらトンネルしかなく、展望を楽しむことはできない。

そこから長い下っていけば、すぐに山中湖だ。想像以上に富士山が大きく見えて、驚く。

湖畔をぐるりと回った後は 籠坂峠 を登る。 116m ほどの峠なので、ここまでヒルクライムをしてきたことを考えればどうってことはない。サクッと頂上まで登りきる。

後は御殿場までひたすらダウンヒルとなる。正直に言って、ダウンヒルは嫌いだ。常に命の危険を感じるし、腕に体重がかかりクタクタになる。念仏を唱えながらもなんとか無事に下りきって御殿場駅に着いた。駅前にはなぜかはわからないが蒸気機関車が置いてある。本日のゴールだ。

ところで、自分はこの御殿場という駅を完全に甘く見ていた。知らないうちに静岡県に入っており、ここから家までは2時間以上かかるらしい。 18 時には自宅で家族と食卓を囲まねばならない。松田駅の乗り換えでは土地勘のある人に連れられて走って乗り換え、その後は海老名駅でサークルの方とは別れ、相鉄線から東横線経由で帰路についた。東横線相鉄線に乗り入れた直後は、「誰が使うんだ、こんな路線」と思っていたのだが、神奈川方面のツーリングとは非常に相性が良い。お陰で海老名からは乗り換え無しで家まで帰ることができた。

病み上がりの江戸川

ナマモノに中ってしまった。正確に言えばナマモノが原因かは定かではないのだが、倒れる前日に食べた頭トロ丼以外に思い当たるフシがない。高い昼飯だっただけに、残念な気持ちでいっぱいである。抗菌剤を処方されるまで6日間、そして抗菌剤を飲み続けて5日間。正直に言って、まだ本調子ではない。

とは言え、2週間近くも調子を崩してしまったために、すっかり足が鈍ってしまった。ここらでガツンと喝を入れておく必要がある。都内を抜けて、松戸方面に足を伸ばすことにした。生憎、早朝は雨で、止むまで自宅で待機する必要があった。

松戸へはよく行く。昔、馬橋に住んでいたことがあり、他の場所よりは土地勘があるからだ。距離も自宅から 50Km ほどと丁度良い。朝のうちに都内を抜けてしまえば、人混みも避けられる。人がほとんどいない銀座を抜けて、日本橋に至る。

本調子ではなく腹が減らないこともあり、昼食を摂る前にランチのピークタイムを迎えてしまった。こうなるとどこも混み合ってしまって入りにくくなる。どうしようかと思っていたところ、たまたま通りがかった商店街で、 カレー屋 を見つけた。常磐線の駅はどこも適度に落ち着いていて良い。席が空いてそうだったので、すかさず入って昼食を摂る。

カレーは素晴らしい。油や化調に塗れたラーメンと違って、スパイスにはそれぞれ薬効がある。そして、ラーメンほどではないが、店舗数もそれなりに多い。ラーメンの代わりにカレーが流行ってくれれば、日本人は今よりも健康になるのではないか。

馬橋駅に到着した。せっかく来たので、記念撮影しておく。と言っても、何度も来ている場所なので、今更ではある。

その後は新松戸まで足を伸ばし、 イオンフードスタイル新松戸店ミスタードーナツに立ち寄った。かつてはダイエーだった店舗だが、今はもうダイエーの看板は掲げていない。こうして全てがイオンに食い潰されていくのは、とても残念だ。

本日のゴールは、市川駅に決めた。新松戸からであれば江戸川を通って1時間程度で着き、武蔵小杉にも戻りやすい。そう思ってイオンフードスタイル新松戸店を出たのだが、江戸川に向かう途中で風がやたら強く吹いていることに気がつく。しかも、風向きはちょうど江戸川の下流側から上流側に向かっている。完全に向かい風だ。

案の定、江戸川に入ってからは強烈な向かい風で、進むのに苦労した。ただ、これは病み上がりの体に喝を入れるためのライドだ。これくらいの方が鈍った体には丁度良い。そう考えながら、みっちりと一時間向かい風を進んで、本日のゴールである市川駅に到着した。

市川駅から横須賀線武蔵小杉駅までは一本だ。グランツリーまで来ると、ようやく帰ってきたなあという気分になる。今日もいい運動になった。早くもとの体力にまで回復したいものだ。

PinはUnpin

未だにきちんと型が読めなくて困る。

Pinning - Asynchronous Programming in Rust

To use a Future or Stream that isn't Unpin with a function that requires Unpin types, you'll first have to pin the value

!Unpin でも Box::pinUnpin になると書いてあるのだが、ドキュメントを見るとなんか違う気がする。

Pin in std::pin - Rust

impl<Ptr> Unpin for Pin<Ptr>
where
    Ptr: Unpin,

where によれば Ptr は「 Unpin である必要」があり、 !Unpin では駄目な気がする。答えを言えば、ポインタである Box&mut はどう考えても Unpin なわけで、 Pin<Box<...>> の形であれば Unpin なのである。同じく「 Unpin である必要」がある DerefMut と定義を比べるとわかる。

impl<Ptr> DerefMut for Pin<Ptr>
where
    Ptr: DerefMut,
    <Ptr as Deref>::Target: Unpin,

こちらは DerefTargetUnpin である必要があり、 !UnpinBox で包んでも駄目なのである。 Deref の定義も念のためあわせて記載するとこうなる。

pub trait Deref {
    type Target: ?Sized;

    // Required method
    fn deref(&self) -> &Self::Target;
}

型定義もまともに見ずに日本語で雑に一辺倒に「 Unpin である必要」と読んでしまうのは、勘違いの元である。

前に同じ内容を書いたときには、わかっていたんだろうなあ。

hiratara.hatenadiary.jp

菖蒲で勝負

一人のライドは気楽で良いが、いつも行き先に困る。今週もまったくどこに行けばいいかわからなかったので、 meetup で検索をしてみるとちょうど土曜日のライドがある。 pedal to empower というチャリティイベントの一環らしい。ささやかな寄付をして主催者にメールをしてみたところ、快く参加の許可を頂いた。

そして本日がライド当日。主催者が集合場所を間違えると言うトラブルはあったものの、その後は滞りなくライドは進んだ。幸い、主催者は日本語が堪能だったので話を聞くと、30年前から活動をしているグループで、普段はチャリティでトレッキングをしたり、荒川のゴミ拾いなどをしているのだそうだ。自分は日本人なのにも関わらず、まったく日本のために役立つようなことはしていないので、頭が下がる思いである。異国にまでやってきてボランティア活動をし続けるモチベーションはなんなのだろう。

上野公園で昼食を食べた後は、いよいよ本格的に北に向かって走り出す。聞いていなかったのだが、今日のテーマはしょうぶ祭りだそうだ。まったく知らないのだが、この時期は各所でしょうぶ祭りをやっているらしい。最初は堀切菖蒲園。しょうぶの花の前に何やら名前が書かれており、コンテストをやっている雰囲気だ。焼きそばの出店があって心惹かれたのだが、生憎昼食を食べてからまだ時間が経っていない。

その後はしょうぶ沼公園である。途中で赤信号で逸れてしまったが、なんとか電話をして探しに来てもらった。グループライド全般でそうなのだが、多くの人は黄色信号でも強引に進もうとする。ソロのときはなるべく止まることにしているので、必然的に置いていかれがちになる。

しょうぶ沼公園は出店もたくさん出ていて、子供も多く祭りの活気に満ちていた。

その後は都立水元公園に行ったのだが、非常に広い公園で、地元にもあったらいいなあと思いながら通過した。あまりの広さに見とれてしまったせいか、こちらは写真を撮りそびれた。堀切菖蒲園と同様に、葛飾菖蒲まつりの一部のようだ。

2024葛飾菖蒲まつり|葛飾区公式サイト

最後に、小岩菖蒲園に行き、本日のライドを終えた。こちらの菖蒲はまだつぼみが多く、来週にはもっときれいに咲きそうだ。

グループライドの質としては現在所属しているサークルがダントツに良くて、最初に今のサークルに出会ったのは本当に幸運だったと言える。とは言え、英語を話す機会がほぼないので、こうやって英語圏の人達とライドに行くのは有意義な休日の過ごし方だなあと思うのである。

データとタイヤが失われた週末

最近、 気合を入れて Google Timeline を触っていたのだが、あっけなく終了してしまった。

support.google.com

Timeline won’t be available on Maps on your computer after your data is moved to your phone

ということで、 androidiPhone 端末で Timeline の移行に同意すると、 Google のサーバーから一瞬でデータがすべて消される。 10 年分のデータが、一瞬で、だ。何も考えずに移行をしてしまったせいで、自分のデータはもう消えてしまった。 Google Takeout からダウンロードしても、 Records.json は含まれていない。 android/ios 端末内にはデータが存在する可能性があるので、取り出したいのだが、どうにもならないのだろうか。

そんなわけで傷心の中、代替サービスも必要で土曜日を一日費やして検索する羽目になったのだが、結局いいものが見つからず、さらに疲弊しただけの結果となった。

これ以上疲弊しても仕方ないので、日曜日は一日自転車に乗ることにした。インタネットで知り合ったフランスとオーストラリアから来たというメンバーで、埼玉方面を走る。一人は日本語が苦手ということで英語で話していたのだが、やっぱり何を話しているのかわからない。これだけ英語を勉強しているのに未だにリスニングの一つも身についていないことが情けない。

言葉の壁はありつつも、自転車に乗ってしまえばただ走るだけ。天気も悪くはなく、気持ちよく走っていた。そして、自販機周りで休憩をしていたところ、同行者がブロンプトンに興味を持ってくれたので、ここがチタンだとかここは鉄だとか得意げに色々と説明をした。その時であった。日本語が流暢なメンバーが、前タイヤを指さして「これはなに?」と言い出した。見ると、なにか丸いものがタイヤにくっついている。シールでも着いたのかな、と近くで見てみると、これは明らかに金属である。画鋲だ。画鋲が突き刺さっている。抜いたら最後ということはわかってはいたが、まだ走り始めたばかりであと 50Km は走らなければならない。ああ、これは無理だなと早々に諦め、画鋲を引き抜いた。同行者たちが「Oh!」「アアー!」と声を上げると同時に、ぷしゅーと勢いよくタイヤから空気が抜け始めた。ブロンプトンに乗り始めてから初めてのライド中のパンクである。

幸い、 LIFE with Bicycle のお兄さんに修理の仕方は習っていたし、家で後輪のスローパンクの交換はやったことがある。まあ、できるだろうと、ネジを外してホイールを取り出し、チューブを交換した。 30 分はかかってしまっただろうか。屋外で部品を散らかしてしまいそうで心配ではあったが、なんとか交換を終えることができた。「本当にこれは大丈夫かいな」と疑いながらも携行していた nanoFumpa Bike Pump も、しっかりと仕事をしてくれた。これで tubolito は使い切ってしまったので、また買わねばならない。

さて、パンク修理は無事に終えたのだが、一つ、問題が残った。刺さっていた画鋲が見当たらないのである。せっかくパンクを直したのに、また突き刺してしまっては大変だ。そう思って注意深く探したのだが、どこにも見つからない。仕方なく、慎重に押し歩いて画鋲がないことを確かめながらその場を後にした。

その後のライドは順調そのもので、途中、柴又帝釈天に寄るなどした。一人で走ると不安になる人気のない道も、グループライドであれば安心して楽しめるのが良い。

なんだかんだで合計 100Km 近く走り、帰りは輪行する運びとなった。袋に詰めた自転車を担いでホームへ向かう階段を歩いていると、どうも自分の靴から、コツ、コツ、コツ、と金属のような音がする。嫌な予感しかしない。確信して靴の裏を覗き込むと、そこには想像した通りの光景があった。

パンク修理に夢中になって画鋲を放置してしまい、挙句の果てにきっちり自分で踏んでいたのである。誰かに刺さって怪我をしたり再び自転車のタイヤに刺さってパンクをしたりしなかったのは、不幸中の幸いだったと言えるだろう。

続・GoogleのLocation History(Timeline)を可視化

GW も終わってしまい、ブログに書くようなネタが何もないのである。とは言え、別に何もしていなかったわけでもない。

最近はプライベートでずっと bevy を触っている。なぜ bevy かと言えば、 Location History を静的な画像ではなく、アニメーションとして可視化したいからである。そのためにはなんらかの方法でグラフィックを扱う必要があり、 nannou も目を引いたのだが、どうせならゲームエンジンをきちんと使ってみようと思った次第である。

hiratara.hatenadiary.jp

幸い、 bevy_slippy_tiles - Rust というクレートがあったので、これを足がかりに作業を始めた。 staticmap と同様に内部でメルカトルの計算をしているのだが、中途半端に googleprojection を使っていたりもして、まあ、取りあえず動くかなといった代物ではあるが、今回の用途には十分だ。

以下は 伊豆大島に行った ときの GPS のデータを可視化したものである。静的な画像で見るよりも、いつどこを通ったのかがわかりやすい。

ECS の使い方にも多少は慣れた。とは言え、この程度の用途であればパフォーマンスを気にする必要はないので、どんな風に書いても割と動きはする。

ところで、データの可視化で本当にやりたかったことは、今通っている道が初めて来たところなのか、それとも以前に来たことがあるところなのか、わかるようにするということである。現在、データは SQLite に入れており 、 geohash をキーにしているので、データを検索するだけなら実はすぐできる。ただ、検索して DB に入っている行をターミナルに表示するだけでは、残念ながら何もピンとこない。きちんとした可視化をする必要がある。今後、そのような可視化の機能を実装していくつもりである。