| @散財

2024 年買って良かったものをつらつらと。

Kindle Paperwhite

Kindle Paperwhite

動作が速くてビックリ。これまで使っていた 2020 年のモデルは動作がもっさりしていて線を引くことすら難しかったが、 2024 年のモデルはキビキビ動く。また 2020 年モデルはバッテリーの減りが早く、あまり使っていないのに読もうと思って開いたらバッテリー切れになっていることが多かった。しかも充電が micro USB というのがイライラした。充電端子が USB-C になり、ケーブルの問題とバッテリー持ちの問題が同時に解決されて満足。

今回、初めて純正ケースも買ってみたけどなかなか良かった。バッグに入れてるといつの間にかスリープが解除されててページが移動したりバッテリーが減ってることもあったがそれがなくなった。液晶も傷つかない。

Kindle Paperwhite ケース

おおむね気に入っているが値段に関しては不満が大きい。 10 年前に買った初代 Kindle Paperwhite は 7800 円だったのに今回のは 30000 円近くしたので 4 倍近く値上がりしてるのにはちょっと閉口。比較的発売されたばかりなのに 1 月 3 日からの初売りで 5000 円引きになるらしい。この前のプライムデーでもセールしてたしやっぱり値付けが高すぎるのだと思う。

Apple Watch Series 10

Apple Watch Series 10

Series 6 からの買い換え。 Ultra も持ってるけどこっちはドナドナすることに。 Ultra は重すぎてランニングで使うにはしんどかった(登山では良いと思う)。

実は今年 COROS の Pace 3 も買っている。 Pace 3 は軽くて電池持ちよくて GPS の精度が高いのもよいが、ランニング時に取れるメトリクスが Apple Watch よりも少ない。具体的には Ground Contact Time (接地時間)と Vertical Oscillation (上下動)が取れない。これらを計測するためには追加で COROS Pod を買わないといけない。

センサーの性能や Apple Pay とか音楽再生のコントロールとか日常生活での利便性を加味するとやっぱり Apple Watch が最強。シリアスに走るとき(マラソンのレースとか、 30km 走とか)やトレランのレースでどうしても Apple Watch だとバッテリーが足りなくなることが想定される際には COROS を使うが、普段は Apple Watch で問題なし。

TAZO ORGANIC CHAI

TAZO ORGANIC CHAI

会社でサンプル品のチャイのティーバッグをもらって飲んだらうまかったが、自分で買うには値段が高すぎて買えなかった(ティーバッグ一つあたり 280 円くらいする)。代わりになるものを探していて、ハーブティーといえば TAZO だなと思って調べてみたら何といまは TAZO は日本国内では取扱がないようだった。 20 年以上前、自分がアルバイトしていた頃のスターバックスのお茶は TAZO だったのだが、スターバックスは傘下に収めていた TAZO を手放したらしい。

仕方なく楽天で探したらアメリカから発送してくれる会社があった。それでもティーバッグ一つあたり 80 円くらいするので結構高い。でも味は期待通りだった。

ちなみに TAZO のティーバッグが切れたので代わりに Amazon で安く売られていた他のチャイを試してみたら、香りが薄くてイマイチだった。 TAZO のやつの方が生姜とスパイスの香りがガツンときてうまい。高いとは思いつつも引き続き楽天で TAZO のやつを追加購入した。

Patagonia エアシェッドプロプルオーバー

Patagonia エアシェッドプロプルオーバー

ウィンドシェルと化繊シャツのハイブリッドみたいな素材のプルオーバー。胴体はナイロン生地、腕とフードの部分はポリエステルの化繊(キャプリーンクールライトの生地)。防風性と通気性のバランスが絶妙。値段は高い(ウィンドシェルのフーディニジャケットよりも高い!)がめっちゃよい。

冬のランニング、着るものが難しい。化繊シャツの上にウィンドシェルを着ると途中で暑くなって脱がなければならずかさばる。エアシェッドプロプルオーバーは最初から最後まで着たまま走れる。暑くなったら胸のダブルジップのところを開ければ換気できるし、袖は伸縮性があるので簡単に袖まくりできる。ドライレイヤーのシャツの上にエアシェッドプロプルオーバーを着て体感気温1℃の大濠公園を走ったがちょうど良かった。

Smartwool のメリノビーニー

Smartwool メリノビーニー

ランニングとかトレラン用の薄手のニット帽。冬のランニングは耳が痛くなるのでニット帽がないと厳しいが、厚手のやつは暑い。薄手のビーニーだとちょうどよい。ふんわりした被り心地も優しくてよい。値段も 3000 円くらいで良心的だった。唯一残念なのは薄いグレーを買ったので汗が目立つこと。頭が禿げてて頭皮が剥き出しだからかもしれない。

| @雑談

今宿地区納涼花火大会

毎年八月に福岡市西区の長垂海岸で行われてきた今宿地区納涼花火大会(長垂花火大会とも言われる)、楽しみにしていたがなんと去年で終了ということになってしまった。町内会誌『今宿タイムズ』によると、協議の結果 2023 年大会を最終回とし、 2024 年以降は実施しないことになったそう。

今宿の花火大会は 2014 年から毎年見に行っている。確かに 10 年前は牧歌的な花火大会だったが、大濠公園の花火大会が終了してから開催時期が近いこともあって、福岡市内の中心部からも観覧客がやってくるようになりとても混雑するようになった。

今宿は普段から閑散とした郊外の住宅地だから、道が狭く、大勢の人が詰めかけるとキャパオーバーになってしまう。普段から人が来るような地力があるところでないと継続的な開催は難しいのかもしれない。

おまけ 2024 年に福岡市内近辺で開催される花火大会の一覧

今宿の花火の代わりに行けそうな福岡市から西方向の花火大会情報をまとめてみた。

8/15(木) 姪浜花火大会(姪浜漁港・愛宕浜マリナタウン海浜公園)

(↑トップページに開催の旨記載あり)

姪浜花火大会開催のお知らせ

8/17(土) 周船寺花火大会(湯溜池)

九大学研都市と周船寺の中間地点くらいがお祭り会場。花火が打ち上げられる場所は九大学研都市寄り。

10/5(土) 糸島市民まつり(加布里漁港)

行ったことないのでどんな感じか知らない。お祭り会場は志摩中央公園(福岡マラソンのゴール地点)で、花火が打ち上げられる場所(加布里漁港)とは少し距離がありそう。

10/12(土)九州花火大会(唐津)

こちらも行ったことがないが、公式サイトの動画が見る限り、砂浜で花火が見られるみたい。ただ今宿の花火みたいに海上から打ち上げられてすぐ目の前で見られる訳ではなさそう。とはいえ雰囲気は今宿の花火に一番近いかも。

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

福岡マラソン 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 に移行しようとしている方の参考になれば幸いです。