| @登山/ランニング
福岡マラソン完走

福岡マラソン 2023 に出場してほぼ歩かず1完走することができた。

ランニングを始めた当初は走ること自体は目標ではなく、登山の際の体力をつけるのが目的で、マラソン大会に出るなんて考えてもいなかった。タイムは 4 時間 5 分だった。マラソンはサブフォー( 4 時間切り)すると「お、やるね」という感じで、サブスリー( 3 時間切り)すると「マジすげー」という感じらしい2

自分は普段、 6'10"/km くらいで走ると結構きついのだが、マラソンのときは何と 5'46"/km ペースで走っていたことになる。ちなみにサブフォーを達成するには 5'41"/km ペースで走る必要がある。「 40km 以上もキロ 5 分台で走るなんて無理だろ」と思ってたが何とできてしまった。ただサブフォーには届かなかった。

良かった点

30キロ過ぎで一番速く走るマラソン サブ4・サブ3を達成する練習法』を読んだこと

直前だったが小出監督の著書をマラソン前々日の金曜夜に Kindle で買って読んで、最初はゆっくり、 30km 以降からスピードを上げる作戦をとった。

サブフォーは 5'41"/km ペースだからと無策にこのペースを維持しようとしたら自分はおそらく途中で歩いてしまっていたと思う。特に福岡マラソンは中間の九大折り返し地点と 30km 付近で結構きつい坂がある。この辺で失速することも見越してペース配分しないといけない。

自分は以下のような感じでペース配分をしていた(左が計画、真ん中が実績、右が計画と実績の差分)。

計画・実績・乖離: ずっと 5'41"/km で走るのではなく、最初はゆっくりめに走って後半からペースを上げる走り方を想定
計画 実績 乖離
地点 ペース ラップ ペース ラップ ペース ラップ
5km 05:50 29:10 06:22 31:52 +00:32 +02:42
10km 05:45 28:45 05:50 29:10 +00:05 +00:25
15km 05:45 28:45 05:46 28:48 +00:01 +00:03
20km 05:45 28:45 05:45 28:45 00:00 00:00
25km 05:45 28:45 05:39 28:14 -00:06 -00:31
30km 05:40 28:20 05:56 29:39 +00:16 +01:19
35km 05:30 27:30 05:52 29:20 +00:22 +01:50
40km 05:25 27:05 05:30 27:29 +00:05 +00:24
42.195km 05:25 11:53 05:21 11:45 -00:04 -00:08
合計 05:40 3:58:58 05:48 4:05:02 +00:09 +06:04

インターネット上の情報源

エンジニアがすごく頑張ってサブスリーしたよって話 - KAYAC engineers' blog は何度も読んだ。

YouTube でいろんな動画も見た。うたランチャンネルは実際になかの人がサブスリーを達成するまでのドキュメンタリーっぽくなっててやる気出た。

YouTube には他にもランニング系の動画がたくさんあるが、いかにフォームを良くして楽に走るか的なやつが多く、説明も観念的なやつが多い(頭を前方から上に引っ張られてるつもりで走れとか)。基本的にそんなに楽に走る方法はないと思ってる。楽に走れるフォームがあるとして、そのフォームで走るためにはある程度の心肺能力と足腰の筋力がないとダメだったりする。なのでまず最初はジョギングで距離を稼ぎ、心肺能力と筋肉をつけてからフォームを改善していくべきだと思う。

ランニング系の動画で見る価値あるやつは科学的に説明してるやつで、なぜそうなのかをきちんと説明してるやつ。「なぜ」の部分が説明されていない動画は見る価値がないと思う。

コースの後半を走る 30km 走を事前に二回行っていてイメージトレーニングができていた

30km 走(試走)により、二見ヶ浦(景色の良い観光地)にさしかかったタイミングで景色に見とれず走りに集中できたし、強風にシャツが煽られて乳首スレすることがわかっていたので当日は乳首スレ対策に乳首を覆うテープを貼って走った。終盤には外れていたけど乳首痛で走れないのはめっちゃしんどいので事前予習しておいて良かった。

身軽作戦

ランニング用ウェストポーチを身につけず、財布も iPhone も持たずに、ジェル三つランパンに突っ込んだだけの身軽作戦で走った。やはり身軽さに勝るものはないと思う。とても走りやすかった。

マラソンにあわせて買ったグッズが役立った

  • C3fit のアームスリーブ
    • 腕振りの疲労軽減効果はわからないが防寒効果は確実にあった
  • Altra の Escalante 3
    • 足幅広すぎおじさんなので NIKE などのシュッとした靴ははけない
    • アメリカ Amazon で買って輸入、送料込み 16000 円くらいで買えた。 Altra のシューズは国内正規品で買うと軒並み 20000 円オーバーなので助かった。
  • Inner Fact の AXIO NIKKE 5 本指ソックス
    • 長い距離を走ると自分の汗で足がふやけて靴擦れしたりマメができたりするが、この靴下はドライをキープしてくれてマメもできなかった。
  • 半信半疑で買ったモルテンの高級ジェルがめっちゃ効いて、 30km 以降のエネルギー切れ・集中切れがなかった
    • 35km 付近を最速ラップで走れていた

家族、同僚、友だち、その他見ず知らずの人の応援

  • 知ってる人の応援もありがたいが、知らない人の応援もありがたかった
  • 九大の近くの蔦屋書店前で九大の学生が爆風スランプの "Runner" を演奏していて、正直自分がこの曲で励まされるとは思っていなかったが元気が出た

足が攣りそうでギリギリ攣らなかった

  • もしゴールがあと 1km 先だったら攣ってたと思う
  • アキレス腱からふくらはぎにかけてテーピングをしたあと、トレランのレースでも使うカーフガード(着圧タイツ)を履いていた
  • その他前日に 2 本、当日朝にも 1 本 Mag-on の顆粒を飲んでいた

悪かった点

スタート前の寒さ

  • スタートブロックに入ってから走り始めるまでの待ち時間が 1 時間近くあり、とても寒くて具合が悪くなりそうだった
    • patagonia のフィーディニジャケットを携帯しておくべきだった
    • とはいえ極力荷物を減らす作戦だったので仕方ない面も
    • 使い捨てのゴミ袋ポンチョを着てる人たちが羨ましかった

事前申告タイムの適当さ

  • エントリー時に申告した予測タイムが 5 時間で、後方ブロックからのスタートとなり、スタート後 15km 地点くらいまで混んでいて非常に走りにくかった
    • エントリー時、自分がサブフォーを狙えるとは思っていなかった

ためらわずにおしっこに行くべきだった

  • スタートブロックに入る前におしっこは済ませていたが、寒い中待っている間にまたトイレに行きたくなり、スタートして 2km くらいの地点でトイレに行ってしまった
    • スタートブロックに並んでいる間に列から抜けてトイレに行くべきだった

Teton Bros. のシャツの耐久性の低さ

  • Teton Bros. の Elv1000 Non Sleeve を着て走ったが、安全ピンで穴を開けないために両面テープでゼッケンを貼ったところ、テープを剥がす際に生地にあとが残って最悪だった。まだ 5 回くらいしか着ていないのに 😢

Apple Watch バッテリー切れ寸前

  • Apple Watch Ultra も持っているが重さが気になるので 3 年以上使ってバッテリーが弱ってる Series 6 で走ったところバッテリーがギリギリだった(ゴールしてワークアウトを止めた途端バッテリーが切れた😰)
    • Apple Watch は iPhone とセットで使うと iPhone 側の GPS を使うが、単体で使うと自分の GPS を使うのでバッテリー消耗が激しくなるらしい

総じて

マラソン楽しかった。トレランののんびりした感じもよいが(エイドで休憩したり、まわりの人としゃべったりする感じ)、一秒のロスを惜しんで立ち止まらずひたすら走るマラソンにもマラソンならではの良さがあると思った。

今後

計画と実績の乖離を見てわかる通り、スタート直後の混雑とトイレ、上り坂区間でのロスが響いている。トイレや混雑、上り坂で失速してしまうことは避けられないので、それらも織り込み済みの上でペース配分を考えないといけない。つまり全般的にスピードが足りてなかったと言えそう。普段のランニングのペースをもう少し上げて、 5km を 25 分以内に走るくらいは楽々できるようになってないとサブフォーは難しいのかもしれない。これまでスピード練習と言えばインターバル走がメインだったが、ペース走を取り入れてマラソンで狙うペースよりも速いペースで 10km くらいを走る練習をやっておく必要がありそうだ。

来年 2 月 18 日に熊本城マラソンに出ることになっているので今回の反省を活かしてここでサブフォーを達成したい。めっちゃ田舎の何もないところを走らされるみたいなので糸島の農道を走ってメンタルを鍛えておきたい。

できれば来年の福岡マラソンか青島太平洋マラソンでサブ 3.5 ( 4'58"/km ペース)を達成したい。

必死の形相でゴールに駆け込む著者

  1. スタート直後におしっこがしたくなってトイレに並んだときと、 30km 過ぎのエアーサロンパスステーションでサロンパスをスプレーするときにちょっと止まった 

  2. サブフォー達成はマラソン完走者の上位 28% くらいで、サブスリー達成者は上位 3% くらいらしい。
    https://sub3.blog/sub4/degree-of-difficulty 

| @雑談

Money

個人開発ではないが、課金については仕事で結構やってきてまぁまぁの知見を得た。かつて自分も情報を得ようとネットで探してみたが、極めて情報が少なかった。ソフトウェア開発についてのノウハウは結構ネットに転がってるが、値付けなどについての情報は少ない。エンジニアとマーケッターでは文化が違うのかもしれないが、そもそも値付けに関しては商材(ソフトウェア)によって様々なので定石がなく、結局のところ自分で試してみないと正解がわからないのではないかと思う。そういう前提はあるものの、自分が得た知見をベースに Cside さんの質問に答えてみたいと思う。

寄付募集型か、有料で一部の機能を解放する型か

寄付型ではかなり少人数しかお金を払ってくれない。どんなにヘビーに使ってもお金を払う必要がなければ1円も払わない人の方が圧倒的だと思う。

機能に課金しないのであれば、共感とか支援という文脈でお金を払ってもらうかたちになる。となるとソフトウェアにどんな機能があるかよりも、どんな人が作っているかや、作り手の思想や哲学の方が大事になる。ソフトウェアのファンではなく作り手個人のファンを作る感じに近い。

とういわけで、自分の人間的魅力に自信がある場合を除いて機能解放型(フリーミアム)をおすすめしたい。

価格設定

めちゃくちゃに難しい。これは実験もしづらい。しかしある程度ユーザーを集められているなら、「ヴァン・ウェステンドルプの価格感度メーター」がおすすめ。ユーザーに以下の四つを問い、グラフ上にプロットして最適価格を探る。

  • この商品がいくらなら高すぎて購入に抵抗を感じますか?
  • この商品がいくらなら安くないと感じますか?
  • この商品がいくらなら高くなくて買得だと感じますか?
  • この商品がいくらなら安すぎて品質に不安を感じますか?

高すぎると高くないの交点が高さの限界点、安くないと安すぎるの交点が安さの限界点、安すぎると高すぎるの交点が最適価格となる。

書籍『Product-Led Growth』より
書籍『Product-Led Growth』より

有料で一部の機能を解放するなら、どこまで有料にするか

これもめちゃくちゃに難しいが、以前書いた以下の記事は正鵠を射ていると思う。

ソフトウェアには売りとなるコア機能があるはずで、この機能を段階性の課金にする。たとえば一定期間内で 5 回までは無料で使えるが、 6 回目からはサブスクリプション登録済みのユーザー限定にする。そしてそのコア機能を使いたくなる魅力的なおまけの機能をたくさん作る。そうするとおまけ機能を使いたいがためにコア機能もじゃんじゃん使って制限に到達し、お金を払うことになる。

おまけ機能自体に課金することはあまり良くなくて、課金の仕組みが複雑になってメンテナンスコストが上がる。課金体系をシンプルにするためにおまけ機能とコア機能をセット販売すると、人によって何に価値を感じるかは様々なので「コア機能だけ使いたいのでコア機能だけの安いプランを作ってほしい」と言われてしまう。なので課金対象はあくまでコア機能の無料枠をはみ出た部分だけにし、おまけ機能は無料化するのが良い。

料金プランはシンプルであればシンプルであるほど良く、開発者自身も楽になるしユーザーの認知的負荷も小さくなる。複雑な料金プランは誰も幸せにならない。

買い切り型か、月額サブスクリプション型か

自分が買い手のときは買い切り型が好みだが、売り手として考えるときは月額サブスクリプションが良い。

ソフトウェアは作っておしまいではなく必ずメンテナンスが発生する。買い切り型では常に新機能を追加した新しいバージョンをリリースしなければ収益を上げられず、メンテナンスに十分な時間を割くことができない。結果としてソフトウェアの品質が低下してしまう。サブスクリプション型であれば毎月定額で収入を得られるので、メンテナンスに時間を割きやすい。

ユーザーとしても海のものとも山のものともつかないソフトにいきなり数千円を払うのには抵抗があるはずなので、試しやすい金額で使い始められるサブスクリプションの方がうれしいはずだ。

サブスクリプションの継続率は作り手にとって示唆に富んだ情報源にもなる。継続率が低下していたらユーザーの満足度が下がってきているというシグナルだし、開発方針の決定に有効活用できる。ソフトウェアはユーザーの満足度が全てだ。満足度を測るために機能開発することさえある。それをせずにサブスクリプションの継続率から満足度を推し量ることができるなら一石二鳥だ。

サブスクリプションのデメリットは開発難易度が上がることだ。 App Store や Google Play の仕組みを使うと Apple や Google にショバ代を取られるし彼らの方針に振り回されて大変な目に遭う。ウェブアプリであれば Stripe を使って自前実装することもできるが、スマートフォンアプリで機能課金をする(有償で機能制限を解除する)場合はアプリ内決済の実装がルール上必須となる(リーダーアプリ除く)。そのほか、ユーザーからの問い合わせも増えるので、サブスクリプションは財務的にはメリットがあるが、肝心の機能開発に割ける時間が減ってしまうというリスクもある。


以上が自分の知見を元にした Cside さんの質問への回答になる。

しかし冒頭にも書いたように価格を含めた課金の設計は売る物によって様々で定石はないと思う。結局のところは実際に自分で試して正解を探り当てていくしかない。

ここに書いてある情報がある日突然マーケティングっぽいことに手を出すことになった門外漢の人の助けとなれば幸いです

| @登山/ランニング

Apple Watch でトレイルランニングするためのアプリ

Apple Watch トレラン のようなキーワードで検索すると、「 Apple Watch はトレランでは使えない」、「ランニングウォッチとしては微妙」というようなレビューが見つかる。自分もそうだと思ってたんだけど、それらのレビューは純正のワークアウトアプリか Strava アプリ、 NIKE のアプリくらいしか試してないようだった。果たして本当に Apple Watch はトレイルランニングで使えないのだろうか?

※この記事で紹介しているアプリよりももっと良いアプリを見つけたので以下の記事も是非読んでみて下さい。

Garmin などランニング特化の時計でできること

Twitter を見てると Garmin の時計を付けてランニングをしてる人たちがその日のトレーニングの様子とか体調をキャプチャで載せてる様子が観測できる。

どうも Garmin だと心拍数と睡眠時間などから「今日は体調良くないですよ」(トレーニングレディネス)とか、今日の運動メニュー(おすすめワークアウト)とか、フルマラソンなどのレースの予想タイム(レースウィジェット)を教えてくれるっぽい。

Apple Watch にも Apple 純正のアクティビティトラッカー(ワークアウトアプリ)あるし、心拍数を計測する機能も睡眠トラッキング機能もあるけど、その日のトレーニングがどうだったのか、体調がどうなのか(その数字が何を意味するのか)は自分で解釈・判断しないといけない。

加えて Garmin の上位機種( Forerunner 955 など)では地図とルート表示およびナビゲーションが可能で、山の中でスマートフォンや紙地図を取り出すことなく予定のルートと地図を確認できるようだ。つまり

  1. オフライン地図表示&ナビゲーション
  2. 運動回復支援機能

↑の二つが Apple Watch にはない機能で、 Garmin 勢うらやましいなぁと思っていたが、いろいろ調べてみると以下の二つのアプリを入れることで Apple Watch を Garmin 相当にすることができるようだった。

  1. WorkOutDoors
  2. Athlytic

オフライン地図表示&ナビゲーションアプリ WorkOutDoors

WorkOutDoors

Apple Watch には Apple 純正のワークアウトアプリがあって、普段走るときはこれを使っているが、メトリクスを計測するのみで地図でのナビゲーション機能はない。レースコースという、過去の自分のルート・記録と比較しつつ走れる機能はあるが、同じルートを何回か走ってからでないとレースコースとしてワークアウトに表示されない。

しかしルートを表示する機能は初めて行く山域や知らない場所を走るときにこそ必要で、 WorkOutDoors はそれを実現するアプリだ。ワークアウトアプリにはできない、任意の GPX ファイルを読み込ませてルート表示することができ、特定の範囲の地図をダウンロードしてオフライン表示することも可能だ。

しかも純正のワークアプリと同等のアクティビティログの取得も可能で、きちんとランニングのデータが保存される。 GPS ログや心拍数に加え、 watchOS 9 から取得できるようになったランニングパワーや上下動もちゃんと記録される。

実を言うと最初自分はこのアプリを iPhone で GPX ファイルを閲覧するためにインストールしていたが、あまり便利ではなく(使い方が難しかった)すぐ使わなくなっていた。しかし改めて Apple Watch でアクティビティトラッカー件ルートナビゲーションアプリとして使えることを知ってまさにこういうのが欲しかったということに気が付いた。ルートを外れたときの警告機能もあるし、心拍数などのメトリクスを Apple Watch で計測しながら道がわからないところを走るならこれ一択という感じがする(土地勘があるところなら Apple のワークアウトアプリの方がシンプルで使いやすい)。

WorkOutDoors はハチャメチャふにカスタマイズ可能

さらにこのアプリがすごいのがめちゃくちゃ細かくカスタマイズできるところで、画面表示やレイアウトだけでなく、画面を複数回タップしたときの挙動までカスタムできる。自分はソフトウェア開発者なのでこういう複雑な UI には強い方だと思うけど、これは普通の人には使いこなせない複雑さだと思う。しかしランニング意欲と IT リテラシーの両方が高い人からするとめっちゃうれしい使い勝手の良さを備えている。

watchOS 9 でワークアウトアプリがだいぶ進化して、ランニング中に表示するメトリクスの内容を自分でカスタマイズできるようになったが、いまにして思うとこのような機能は WorkOutDoors アプリでは以前から搭載されていたようで、ワークアウトアプリは WorkOutDoors の後追いをしているとも言える。純正ワークアウトアプリの方がデザインが洗練されていて使いやすいが、少々込み入った作業が必要でも自分に本当に必要なデータ(ペース、心拍数、累積獲得標高などなど)を厳選したい人にはうってつけだ。

WorkOutDoors は有料ソフトだがサブスクリプションではなく一回だけの買い切りで値段も安く良心的( 1100 円)。トレランでも Apple Watch を使いたい人にはおすすめです。

運動回復支援アプリ Athlytic

Athlytic

Garmin の時計でいうところのトレーニングレディネスとおすすめワークアウト機能のようなものを提供してくれるのが Athlytic だ。

Apple 純正のヘルスケアアプリで睡眠時間や安静時心拍数などを知ることができるが、どう理解すれば良いかがわからない。昨日の睡眠時間は 6 時間で、そのうちレム睡眠が〇時間です、なんて言われてもそれが良いのか悪いのかがわからない。

Athlytic は睡眠の状況と心拍数からその日の体調をはじき出し、今日は休んだ方がよいとか、激しいトレーニングしてもオッケーとか教えてくれる。

Athlytic Athlytic Athlytic

このブログでたびたび話題にしている HealthFit というアプリでも回復具合を表示してくれるが、睡眠時間や安静時心拍数からではなく、トレーニングをしているかしていないかで判定している。元の TSB モデルというもの自体がそういうものなので仕方がないが、トレーニングしてないから体調が良いかというとそうでもなくて、あまりよく眠れてなくて体が重いこともあるので、 Athlytic のようなアプリが欲しいと思っていた。本当はあんまり体調良くないときに張りきって高負荷のトレーニングをして怪我したら最悪だ。 Athlytic を使うことで客観的に自分の体調を把握できるようになる。

なお買い切りの WorkOutDoors と異なり Athlytic は年間 3400 円のサブスクリプションだ。調べたところ同種のアプリはほかにもあって、値段が安いものや無料のもののあるが、 iPhone 側にはほとんど UI がなくて Apple Watch で情報を見なければならなかったり( Training Today )、体調の判定だけでおすすめのワークアウトを教えてくれる機能はなかったり( CHIPR )するので、少々出費は必要だが Athlytic を使うのが良さそうだ。

でも Apple Watch はバッテリーもたないですよね?

バッテリーに関してはやっぱり Garmin に負けてしまう。自分の 2 年半使った Apple Watch Series 6 はワークアウトを動かすと 6 時間くらいで電池が切れてしまうので、登山やトレランで Apple Watch を使う場合は Ultra を買うしかないだろう。また Apple Watch Ultra であったとしても二日に一回は充電が必要なのは避けられない。

しかしトレランの 100 マイルレースで Apple Watch Ultra を使って完走したという情報もあるので、 Apple Watch Ultra で節電モードをうまく使えばウルトラマラソンや 100 マイルレースでも Apple Watch Ultra は使えそうだ。

これまで泊まりの登山や 100km 、 100 マイルのトレランレースでは Apple Watch は候補に入ってこなかったと思うが、 Ultra によって 20 時間以上のワークアウトを記録できるようになったので、ランニングのときのためだけに Garmin を使う必要がなくなったとも言える。 WorkOutDoors や Athlytics のようなアプリが本領発揮できるような環境が Apple Watch Ultra によって整ったということだ。

おとなしく Garmin 使えばよくない? 何で Apple Watch にこだわるの?

この動画見てください。

Garmin は長時間のアクティビティには確かに向いてるかもだけど、日常生活が厳しい…。アメリカですら Garmin Pay は使い勝手が良くないと言われているのに日本だったらもっと使えないですよ。音楽を聞くのだって Amazon Music と Spotify しか対応してなくて事前に楽曲をダウンロードしておく必要があって不便。

一方で Apple Watch は日常の使い勝手はとてもよく、 Apple Pay でコンビニやスーパーで買い物できるのはもちろんのこと、 Mac のスクリーンロックを解除したり、 Siri で Apple TV を操作したり、運転中には Apple マップのナビゲーション通知を受け取ったりできる。最近の車だと Apple Watch が車の鍵になったりもするようだ。

運動好きだけどデジタルガジェットも好きで、 Apple エコシステムの提案する快適な生活を捨てがたいという人は Apple Watch を使うしかないでしょう。金持ちだったらランニング用に Garmin を買うこともできるだろうけど、トレーニングレディネス(睡眠や日常の心拍数変動から算出)のことを考えるとトレーニング中もそうじゃないときも同じ時計を使っていることに意味があるので、日常は Apple Watch 、走るときは Garmin という使い分けはあんまり意味がない。同じものをずっと身に付けていた方がよい。

まとめ

WorkOutDoors と Athlytic というアプリを使うことで Garmin のような機能が手に入る。これまで日常生活での快適さを諦めて Garmin 使ってた人も Apple Watch Ultra に乗り換えて WorkOutDoors と Athlytic をインストールすれば Garmin を使ってた頃と近しい感じでトレーニングできる。

様々なアプリが App Store にあって自分好みのアプリを探してインストールすることができるのが iOS / watchOS の強みなので、純正のワークアウトアプリだけ使って「 Apple Watch はトレランでは使えない」という評価を下すのは早計だと思う。適したアプリを探して入れてやれば Apple Watch はトレランでも使えます。 40km くらいまでの短いレースであれば普通の Apple Watch でもバッテリー切れにはならないはず。活動時間が 6 時間を超えてくるような距離( 50km 以上?)のレースでは Apple Watch Ultra が無難でしょう。

なお、このゴールデンウィーク期間中、 Amazon で Apple Watch Ultra がタイムセール対象になっているようだ(人気のないバンドカラー、サイズのみ)。自分も正直買おうか悩んでいてここ 4 日くらいカートに入れたり出したりを繰り返している。よろしければご検討ください。

| @Mac/iPhone

ossan.fm playing in Castro, a CarPlay podcast client

(※タイトルは ChatGPT に考えてもらいました)

Apple CarPlay はとてもよくできたサービスだと思うけど、ネットであまり使っている情報を見かけない。自分の観測範囲が狭いだけかもしれないが、デジタルガジェット好きな人が大抵東京近辺に住んでて車を運転する習慣がないからではないかと思っている。なので今日は CarPlay の便利さについて書いてみたい。

自分は 3 年前のハワイ旅行でレンタカーで使った CarPlay に衝撃を受けて車を買い換えることにした。

いまも車の純正カーナビは使っておらず、車を運転するときは CarPlay で Apple マップか Google マップを使っている。ナビゲーションはもちろんのこと、届いたメッセージを読み上げてくれたり、音声入力で返信したり、 Hey Siri できたり、電話をかけたり受けたりできる。もちろん音楽や Podcast も聴ける。運転中に iPhone でしたいようなことが大抵できるようになってる。車に純正で付いてるカーナビだと精々 Bluetooth で iPhone につながってハンズフリー通話したり音楽を再生したりくらいしかできないが、 CarPlay を使うと車が iPhone の外付けデバイス的な感じになる。

CarPlay のなかでも Apple マップがめちゃくちゃよくできてて、例えば休みの日に 11 時からショッピングセンターで予定があったとして(カレンダーに予定と場所の情報が入れてある)、 10 時半に車に乗って iPhone を車につなぐと iPhone にプッシュ通知が来て「ショッピングセンターへのナビゲーションを開始しますか?」と表示される。ようわかっとるやんけと思いながら通知をタップするとナビゲーションが始まる。

運転をしていると交差点が近づいてきたときに Apple Watch が震えて右折しなければならないことを教えてくれる。カーナビで音声ナビゲーションさせることもできるし、音声は出さずに Apple Watch 経由でナビゲーションしてもらうこともできる。 Podcast を聞き入っていたのにナビの音声に邪魔されるということがない。

目的地に着いて駐車場に車を止めると駐車位置が Apple マップ上に反映される。ショッピングセンターの広大な駐車場で自分の車の駐車位置がわからなくなり延々さまようということがなくなる。

うっかりガソリンを入れ忘れていて燃料警告灯が付いてしまった。すると iPhone にプッシュ通知が届いて「ガソリンスタンドを探しますか?」と表示される。通知をタップすると地図上で最寄りのガソリンスタンドが表示される。

このように Apple マップは車とつながることでハチャメチャにユーザーの状況に適した提案をしてくる。めちゃくちゃかゆいところに手が届く感じ。ガソリン切れそうになったときに通知が来たときは便利すぎて正直引いた。

フツーの車が近未来デバイスみたいになったみたいな感じになるので、 CarPlay に対応しているカーナビを搭載している車を持ってる人は今すぐ純正カーナビ使うのやめて CarPlay で Apple マップ使い始めた方がよいし、これから車を買おうとしている人はナビが CarPlay 対応しているかどうかはチェックした方がよい。車がデジタルガジェットの一部になる感覚を味わって欲しい。

| @技術/プログラミング

偶発的に puma のバージョンを上げたところ Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ISO-8859-1 が多発して厳しい感じになった。

このブログでは puma は v4 系を使っていたが、調べると最近 v6 もリリースされたようで v5 系に上げてみることにした。すると忘れていたのだが puma は v5 系から daemonize する機能が削除され、デーモン化は systemd を使うべしということになっていた。プロセスのデーモン化は puma にやってもらわないと capistrano で deploy するときに面倒なので以前は v5 に上げるのを諦めて v4 を維持していたのだった。

capistrano3-puma が systemd に対応していたのでえいやっと puma を v5 に上げて deploy してみたところ、冒頭の Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ISO-8859-1 が多発してページが全く表示されなくなってしまった。

一方で管理画面やアーカイブページは表示に問題がなかった。どうもファイルの読み込みが発生するページ(このブログではキャッシュを多用していて、ファイルに書き出したキャッシュを読み込んでいる)でエラーが発生しているようだった。

自分で fork した sinatra-cache.gem でファイル読み込みする部分で encoding オプションを指定してみたりしたが問題が直らない。 Haml や Sinatra のバージョンも古いのでこれらも上げてみようかと試みたが、そうするとより盛大にエラーが出てしまう( Haml を v6 にすると html_safe している出力もさらにエスケープされて HTML がぶっ壊れる)。

気になるのはローカル環境( Mac )ではこのエラーが発生しないこと。「これは環境起因では?」と思い至ってガチャガチャやってみたところ修正することができた。

Lokka では Encoding.default_external を参照しつつ String#force_encoding しているところがある。「ひょっとして Encoding.default_external の値がローカルとサーバーで異なるのでは?」試してみたところ、ローカルでは #<Encoding:UTF-8> となる Encoding.default_external の結果が、サーバーでは #<Encoding:ISO-8859-1> となっていた。

以下のブログを参考に、環境変数 RUBYOPT でエンコーディングを指定して puma を動かすことでエラーを回避できた。

systemd 経由で puma を動かすときに環境変数を設定するのは結構難しい。最初は puma が RACK_ENV=production で動かず困ったが、 systemd 用の設定ファイルで EnvironmentFile のパスを指定し、環境変数用のファイルの中で各種環境変数を定義してやる必要があった。こんな感じ。

systemd の設定ファイル

[Unit]
Description=Puma HTTP Server for portalshit (production)
After=network.target

[Service]
Type=simple

WorkingDirectory=/var/www/deploys/portalshit/current
# Support older bundler versions where file descriptors weren't kept
# See https://github.com/rubygems/rubygems/issues/3254
EnvironmentFile=/var/www/app/.config/systemd/user/portalshit_env
ExecStart=/var/www/app/.rbenv/bin/rbenv exec bundle exec --keep-file-descriptors puma -C /var/www/app/portalshit/config/puma.rb
ExecReload=/bin/kill -USR1 $MAINPID
StandardOutput=append:/var/www/deploys/portalshit/shared/log/puma_access.log
StandardError=append:/var/www/deploys/portalshit/shared/log/puma_error.log

Restart=always
RestartSec=1

SyslogIdentifier=puma

[Install]
WantedBy=default.target

環境変数の定義ファイル

RACK_ENV=production
RUBYOPT=-EUTF-8

puma v5 に移行しようとしている方の参考になれば幸いです。

| @WWW

博多駅前

サウナイキタイのサ活と Google マップのクチコミには結構乖離があることに気が付いた。自分が行ってめっちゃ気に入って、サウナイキタイでも好意的なサ活が多い佐賀の KOMOREBI の評価が Google マップでは低い。サウナにも水風呂にも入らないのに物価の安い九州(温泉に 500 円で入れる)で風呂に 1100 円払えと言われたら高すぎると感じる人もいるのだろう。しかも混んでるし。

Google マップのクチコミはとても便利だけど、一つの施設で二つ以上の役務を果たしてる場所や客を選ぶタイプの店は評価が下がると思う。本当は自分の好みにピッタリの施設が低評価となっている可能性がある。なので評価が低いからと切り捨ててしまうのではなく、自分と似た属性の人からのクチコミを探し出して読むと実際のところの雰囲気がわかるかもしれないが、それは難易度が高すぎる。

今日のプラットフォームサービスには不幸なマッチングを回避する仕組みが必要なのだと思う。あなたはサウナ好きだからこの施設は満足できますよとか、ここは常連向けですよ的な情報が簡単にわかるようになるとか。

ただ一方でそれは Instagram で自分のようなおっさんに微エロのリール動画ばかり表示されるようなレコメンデーションとアルゴリズムによる支配がいろんなサービスに広まるということであり、それはそれで残念ではある。

もう一つの選択肢としては、釣り SNS や登山 SNS が出来たように、レビューサイトも専門分化させていくアプローチが考えられる。自分のようなアルゴリズムやレコメンデーションにあらがいたいウェブ縄文人にはそういう進化の方が向いているかもしれない。

というようなことを思ってたら一つ前の記事に言及しつつ伊藤直也さんが似たようなことを書いていた。

2ch みたいにごちゃごちゃカテゴリーがサイドバーに並んでいるのには普通の人には難しすぎるので、釣り掲示板がツリバカメラになり、登山掲示板がヤマレコや YAMAP になったんだろう。考えてみるとサウナイキタイもサウナに特化した SNS ・情報サイトだ。

サウナイキタイに話を戻すと、サウナイキタイはローカルルール満載の町銭湯に対する評価が甘いという特徴もある。サウナイキタイでベタ褒めされてる施設(「番台のおばあちゃんが優しい」、「常連の方達とほのぼの交流」などなど)が Google マップではボロクソに書かれてたりする(「番台は意地悪ばあさんそのもの」、「彫り物を入れたヤクザや半グレの常連でサウナが占有されていて入れない」などなど)。ネガティブなことは書かないというコミュニティポリシーの影響なんだろうか(以前、サ活でドラクエ集団がいたと書いたら公式アカウントから警告された)。サウナイキタイだけ見て福岡の銭湯サウナに行ったら刺青を彫った怖い人から凄まれながら入浴しなければならないという体験をしそうだ。

レコメンデーションにしても専門分化にしても塩梅が難しい。レコメンデーションはやり過ぎるとただの偏見にしかならない( 40 代男性はおっさん → おっさんはエロが好き → 微エロ動画見せとくか)し、専門分化して蛸壺化しすぎると一般的な感覚と離れたレビューが集まるようになってしまう(怖い人だらけの銭湯サウナが高評価)。昔のインターネットではこんなことに悩むことはなかった。

昔のインターネットは良かったとばかり言ってもどうにもならないが、インターネットを飯の種とする者の一人として人が増えたいまのインターネット特有の問題をどうにかしたい。

| @雑談

武蔵ヶ丘バス亭

熊本から福岡(天神・博多)には通えます。

熊本出身で東京や関西で就職したものの、子育てや親のことが気になり熊本に帰りたい、しかし熊本には仕事がない…、というケースはあるのではないでしょうか。熊本でこれまでの経験が活かせ、収入ダウンとならない仕事を見つけるのは大変かもしれません。しかし福岡であれば選択肢が増えます。なので熊本に住みながら福岡の会社に就職して熊本から福岡に通えば良いのです。

熊本出身の方であれば熊本から福岡は遠いというイメージを持ってるかもしれません。しかし、実はそんなに離れてはいません。

いまは九州新幹線があるので優雅に新幹線通勤もできます(熊本から博多まで 40 分!)が、JR熊本駅は交通の便が悪いところにあり通勤では使いづらいですし、新幹線の通勤定期は月額 115,130 円します(通常の定期券代 + エクセルパス料金)。通勤手当は大体月額 2 ~ 3 万円が上限の会社が多いでしょうから、持ち出しが 9 万円程度になってしまってかなり厳しいです。やっぱり遠いじゃないかと思われたかも知れません。

しかしそこそこ短時間でしかも経済的に熊本から博多・天神へ通勤する方法はあります。高速バスのひのくに号です。ひのくに号なら新幹線のデメリットを解消できます。

  1. 定期券は 62000 円で新幹線の半額程度
    ひのくに号定期券 | 定期券 | 産交バスポータルサイト
  2. 熊本駅まで行かずとも、通町筋や味噌天神、県庁前などから乗車できる
    路線(バス停)のご案内|熊本⇔福岡(博多/天神)・福岡空港 高速ひのくに号|産交バスポータルサイト

定期券代は 62000 円と高額ですが、通勤手当が 30000 円出ると仮定するなら持ち出しは 32000 円で済みます。福岡でこれまでのキャリアを活かした専門性の高い仕事に就いて都会で働いていたときと同水準の収入を得ることができるならば、年間 38 万円の交通費はペイできるのではないでしょうか。

次に大きなメリットとしてあげられるのが交通の便の良さです。所要時間では新幹線に負けますが、最寄りのバス亭から 1 時間半程度で天神・博多へ通勤できるのは便利です。熊本の人口密集地である市中心部から北東部にバス亭が配置されているので、これらの地域に自宅がある場合、わざわざ熊本駅まで出ることなくバスに乗車して通勤できます。

熊本から福岡へ通勤することを前提に U ターンしてくるとして、熊本のどこに住むのが良いでしょうか。個人的におすすめしたいのは九州自動車道武蔵ヶ丘バス亭周辺です。熊本市中心部へは少し距離があり郊外の住宅街といった感じですが、熊本市の北東端にありバスの乗車時間が短くて済みます(博多まで 1 時間 15 分)。味噌天神などの中心部からバスに乗ると高速の IC に辿り着くまでに渋滞して時間がかかりますが、武蔵ヶ丘バス亭からならその次の西合志のあとは一足飛びに博多バスターミナルです(スーパーノンストップひのくに号の場合)。

武蔵ヶ丘周辺は近くに光の森というショッピングセンターがあり、住宅街でありながら商店や飲食店も多く暮らしやすいです。武蔵塚という JR 豊肥線の駅もあるため、いざとなったら JR で熊本駅まで行って新幹線で福岡や関西へ出ることもできます。そして九州自動車道の熊本 IC が近く、熊本のロードサイド商店街の中心地である東バイパスにも近いです。

また中心部から遠いと言っても 10km ありませんから、お子さんが中心部の高校に通ったとしても大した距離ではありません(クマタカまで 7.4km 、済々黌まで 6.8km 、北高まで 2.5km )。

さらに今後は隣町の菊陽町に TSMC の工場が建設されます。隣接する熊本市北東部のこのエリアは益々発展し、国際色豊かな街となるでしょう。お子さんへの教育にも適した環境となることが想定されますし、ゆくゆくは日本の首都になるかもしれません。

というわけで東京で消耗している熊本出身者の皆さんは熊本へ U ターンしつつ福岡へ通勤するというプランについて考えてみてください。自分が生まれ育った街で子どもを育てられるのは幸福感が強いと思います。僕はいま福岡で暮らしていますが、人生やり直せるなら熊本に住みつつ福岡へ通勤する暮らしを真剣に検討します。