| @登山/ランニング

浮嶽 大岩展望台

4/2 ~ 4/4 で脊振山系全山縦走に挑戦した。福岡の西端の十坊山から佐賀の基山まで二泊三日で歩いた。総歩行距離は 72km 、累積獲得標高は 5500m 。 20km 以上歩き、 1500m 以上登るのを三日間繰り返す。泊まりはハンモック + タープで、食料の補給はなし、水は湧水や沢で補給しつつ歩き通した。

自分は体力がなく歩くのがとても遅くて、全山縦走のことを知ったときにはとても自分に踏破できるとは思ってなかった。実際、 2 年前の夏に脊振山から金山までのセクションハイクをしたときにはバスに乗り遅れるし散々な有様だった。

4 年前にも十坊山から二丈岳までを歩く糸島四座縦走に挑戦して失敗している。

UL (ウルトラライト)メーカーの軽量な登山用品を買い集めながら歩くのが遅いどん亀という矛盾した雑魚だったのだが、 2021 年はジョギングを開始して徐々に体力をつけ、長めの縦走もこなした。4年前に途中で撤退した糸島四座縦走も比較的楽に達成した。

ちゃんと歩けた勝因と改善点をまとめてみた。

勝因

  • 荷物は軽く
    • 服はメリノウールにして余計な着替えは持たなかった
      • メリノウールは汗をかいても匂わない、化繊の服はひどい匂いを漂わせるので着替えが必要になる
    • カメラも持っていくことを諦めたので iPhone で撮った写真しかない
  • ちゃんとした昼飯を食わない
    • 基本的に昼間の食事は行動食のみ
    • 絶景ポイントで休憩して山飯作ったりコーヒー飲むとかやらない
    • 時間を節約でき、荷物も減らすことができる
  • 塩味の行動食
    • 日中、ちゃんとした飯を食わない代わりに塩味の行動食があると良い
      • 具体的にはカルパスや魚肉ソーセージ
    • コストコのアドベンチャーミックス(塩味のミックスナッツ + ドライフルーツ)もよかった
  • アミノバイタルゴールド
    • 現代の仙豆
    • めっちゃ疲れてても翌日足がパンパンにはならない(少なくとも午前中は)
    • 一日一本飲んでたが二、三本飲んでもよいみたいなのでもっとたくさん飲めばもっと楽だったかも
  • 山と道 MINI2
    • メッシュポケットがスーパー便利
      • 暑くなって脱いだ服をしまう
      • 行動食をつっこんでおく
      • 水場で浄水器をさっと取り出して浄水する
  • KATADYN Be Free (浄水器)
    • どこの水もサクッと浄水できるとわかっていたので大量に水を持って歩かずに済んだ(必要に応じて沢水などを浄水して調達すれば良い)
  • Black Diamond Distance Z (トレッキングポール)
    • 軽量なアルミポールを初めて買った
    • 脚の負荷をだいぶ軽減してくれたと思う
    • 荷物が多いので左右のふらつきを抑制して安全に歩けた

改善点

  • カロリー
    • カロリー計算した上で行動食を準備できてなかった
    • 持参したウィーダーインゼリーはプロテインやビタミンなどを重視した低糖質のやつでカロリーが少なくエネルギー源としてふさわしくなかった
    • 安くて甘くて体に悪そうなやつをもっと持ってくるべきだった(どらやき、ようかん、惣菜パン、イカフライなど)
  • サイズの合ってない靴
    • Altra Olympus 4 はちょいとデカめでサイズが合っておらず、下りで靴の中で足が動いて辛かった
  • メリノウールの靴下
    • これまでメリノウールの靴下で足が蒸れると感じたことはなかったが、 Injinji の五本指ソックスと履き比べてみて蒸れを感じてしまった
  • かさばるレインウェア
    • 低山のレインウェアとして雪山でも使えるハードシェルを持って行くのはかさばって良くない
    • レインウェアとウィンドシェルで機能がかぶるものを二つ持つのも邪魔
    • 省スペースでレインウェアとウィンドシェルの両方の役割を果たす雨具が必要
      • 山と道の UL All-Weather Hoody を買った

装備

  • 帽子
    • Milestone メッシュキャップ
  • Tシャツ
    • icebreaker メリノウールTシャツ
    • Smartwool Everyday Exploration T Shirt (予備)
  • 行動着
    • 山と道 Merino Hoody
  • ウィンドシェル
    • Patagonia Houdini Jacket
  • パンツ
    • WORKMAN メリノウールパンツ × 2 ( 1 枚予備)
  • ズボン
    • 山と道 Light 5-Pocket Shorts
  • 靴下
    • OS1ST FS4 PLANTAR FASCIITIS SOCKS
    • Injinji Trail SP TIE-DYE
    • Point 6 Hiking Lt Mini × 2 ( 1 足予備)
    • Altra Olympus 4
  • トレッキングポール
    • Black Diamond Distance Z
  • ザック
    • 山と道 MINI2
  • 防寒着
    • Patagonia Nano Puff Jacket
    • Mountain Equipment パウダーパンツ
    • EXPED ダウンソック
  • レインウェア
    • ARC'TERYX Alpha SL
    • Patagonia トレントシェルパンツ
  • クッカー
    • EVERNEW Ti 570 Cup
  • バーナー
    • EVERNEW チタンアルコールストーブ
    • VARGO Titanium Hexagon Wood Stove
  • ハンモック
    • AXESQUIN ウキグモ Light
    • AXESQUIN モグ 350
  • タープ
    • EXPED Hammock Trekking Tarp
  • ライト
    • Petzl Tikka
    • Ledlenser ML4
  • モバイルバッテリー
    • Anker PowerCore Essential 20000 PD

コロナ禍で飲み会に行かなくなって浮いた金でアウトドアギア買いまくったのが生きた感じの縦走だった。なかでもベストを挙げるとすると山と道 MINI2 だろう。

山と道総帥の夏目さんが書いている MINI2 の制作ノート 2021 年版がとてもよい。

山と道設立当初は、「耐久性や強度よりも軽量性が大事」と思っていました。1回のULハイクが人生を変えるかもしれない可能性を秘めていると信じているからです。

しかし、たくさんの方々にMINI2を送りだしていくと、みんな上手く使えているだろうか、壊れていないだろうかと、心配も積もるようになりました。できれば安心して長く使ってもらいたい。UL原理主義的であった自分の物作りの考え方も少しずつ変化してきているのかもしれません。

そして2017年に、山と道HLCで日本全国を旅して色々な方々と出会い、気がついたことがありました。僕が考えているようなULハイカーは、日本中を探しても実はほとんどいなかったのです。

ULハイカーのための道具作りをしてきた自分は誰に向けて作っていたのか? 自分の思いは独りよがりだったのか? あらためて自分が作る道具と向き合うきっかけとなりました。

MINI2 | 山と道 U.L. HIKE & BACKPACKING

この文章は首がもげるほど頷きながら読んだ。アプリやウェブサービスの開発に携わってる人なら似たような経験をしたことがあるのではないだろうか。

実際に縦走で初めて使った MINI2 は軽いながらも頑丈な作りで木の枝で何度も擦ったがダメージがなかったし、メッシュポケットはとにかく便利だった。暑くなって脱いだ服をガサツにメッシュポケットに突っ込み、寒くなったらさっと取り出して着て、腹が減ったら行動食をパッと取り出して食べる。ハードな山行を支えてもらったし、今回の UL ハイクで人生が変わった(少なくとも登山人生の一つの目標を成し遂げた)。

山と道の短パンを初めて買ったのは 2017 年の 3 月で、それから登山アプリの会社に入って登山をするようになり、昼飯に 120 円のチキンカツとインスタントそばを食べて浮かせた金で山と道の製品を買ってきた。 UL ギアを身につけながら歩くのがめっちゃ遅いしロングハイクもしたことがなかったのだが、今回やっと、自分で考えて可能な限り荷物を削り、誰かに荷物を持ってもらったりすることなく、途中で補給を受けることもなく、 70km 以上の縦走路を歩き通すことができた。ようやく UL ギアが様になるハイカーになれたのではないかと思っている。

| @登山/ランニング

10 月のくじゅうを短パンで歩いている様子

何か新しいことを始めようとしたとき、道具を揃えれば揃えるほど快適になるのではないかと思うかも知れない。例えばキャンプでは道具が多ければ多いほど快適になる。テントに加えてタープがあれば日差しをしのげる。寝袋のほかにマットやコットがあれば快眠できる。調理器具が多ければ作れる料理の種類が増える。しかし登山の場合はそうとは言えなくて、道具が少ない方が楽になるケースの方が多い。なぜなら自分で道具を運ばないといけないからだ。服についても沢山着込めばよいということではない。登山は自分の足で歩かなければならないため、冬でもヒートアップしやすい。荷物を軽くすること、服装が適切で体温調節がしやすいことは、思っているいる以上に大切だ。

登山では暑い日でも長袖長ズボンの着用が常識とされている。短パンで山に行くなんて常識知らずにもほどがあると言われるかもしれない。しかし本当に短パンで山に入ってはダメなのだろうか? 長袖のシャツや長ズボンだと絶対安全なのか?

確かに長袖や長ズボンであれば枝で手や足を怪我することはないだろう。また短パン・半袖では道迷いして山で夜を明かすことになった場合は低体温症になる可能性が高い。しかし山に行くときはなにがしかレインウェア的なものは持っているだろうし、エマージェンシーブランケットを携行するようにすれば半袖短パンでも何とかなる(暖かい季節限定)。そもそも短パンや半袖は、暑さで体力を消耗するのを避け、歩くスピードを上げてきちんと日中に下山するための手段だ。長袖・長ズボンではちょっとした擦り傷や遭難時に低体温症になるリスクは避けられるかもしれないが、気温が高い日の登山では体温調節しにくくなる。体力を消耗して歩けなくなってしまったり、歩くスピードが遅くなって日中に下山できず、山中で夜を過ごさざるを得なくなってしまうリスクがある。遭難したときのことを考慮して長袖・長ズボンで山に行き、逆に体力を消耗して遭難してしまっては本末転倒だ。長袖や長ズボンにもリスクがあると思う。

初心者の人が登山用品店に行くと大して必要なのかもわからないのに重くてソールの固いブーツを勧められたりする。しかし重くてソールの固いブーツが必ず正解とは限らない。九州の低山にしか登らない人にはごついブーツは不要だ。北アルプスだって夏ならトレランシューズで十分歩ける。長袖長ズボンのケースと同様に、重くて固いブーツをはいていたせいで体力を消耗してしまい、遭難してしまうことも十分考えられる。

登山を始めようという人には靴は 1 万円程度のトレランシューズをおすすめしたい。ゆくゆくはアルプスにも行くかも知れないからと、最初から何万円もするアルパインブーツを買うのはおすすめしない。重くて歩きづらいからだ。そのようなブーツは岩だらけの岩稜帯で真価を発揮するし、履きこなすには体力が必要だ。まずは軽量なローカットのシューズで手頃な山を歩いてみて、本格的に登山を趣味にできそうだと思ったときにしっかりしたブーツを買えばよい

| @料理/食事

サリーナフライパンで作った塩焼きそば

最近、あまり自炊しなくなってしまった。リモートワークなので自炊しやすいはずなのに、レトルトとかしか食べてない。前職勤務時にリモートワークしてたときには良く料理していたのになんでだろうと考えてみると、フライパンが焦げ付きやすいからだと思い至った。

前職勤務時は T-fal のフライパンを買ったばかりで、炒め物をしても焦げ付きを気にすることなく料理していた。チャーハン、オムレツ、ペペロンチーノなんかを作ってた。

買った当時は焦げ付くことがなかった T-fal のフライパンは購入後 2 年を過ぎたくらいから激しく焦げ付くようになり、炒め物が億劫になった。テフロンが剥がれたあとのテフロン加工フライパンはただの異常に焦げ付きやすいアルミフライパンに成り下がってしまう。まだ鉄フライパンの方がましな状況で、目玉焼きを焼くのにも鉄フライパンを使うような状況だった。目玉焼きや肉料理であればまだしも、焼きそばやチャーハンなど炭水化物を炒めようとすると鉄フライパンは全くダメで、はちゃめちゃに焦げ付いてしまう。というわけで料理をしなくなってしまったのだった。

購入したのはバッラリーニ( Ballarini )のサリーナ( Salina )というフライパン。形状、コーティング、重さの三つのバランスが良くとても気に入っている。

コーティング

頑丈なコーティング

金属を石っぽい材質の何かでコーティングしてあり、金属へらを使ってもコーティングが傷ついているようには見えずとても頑丈。テフロンフライパンは金属のへらを使うと傷が付いてそこからべろっとコーティングが剥がれてしまったりするが、そういうのがない。

形状

縁がそり立った形状

縁がくっとそり立っており、炒め物でフライパンを振ったときに中身が飛び出しにくいようになっている。チャーハンや野菜炒めのときに思いっきりフライパンを振れる。

重さ

サリーナフライパンの 26cm と 20cm

重すぎず軽すぎずでちょうど良い。軽いフライパンだと炒めるときに取っ手をつかんでいないと動いてしまったりするし、鉄フライパンだと重すぎて振れないが、そういう問題がない。 26cm と 20cm を買ったが、26cm でも重さは 1kg で、男性なら問題なく片手で持てると思う。

価格について

値段がちょっと高くて、 20cm でも 8000 円程度、 26cm は 1 万円弱したが、どうせリモートで飲み会とかも行かないのだし、調理器具に金かけても良いと思ったのでリストカット感覚で購入してみることにした。都会に住んでたら UberEats とかテイクアウトで豪遊できるのだろうけど、テイクアウトやってる近所の店は電話しても出来上がりは二時間後とか平気で言ってくるのでレトルトでない物を食べたいなら家で作るしかないと自分を説得した。ちょうど先月ぐらいから Amazon でクレジットカードの二回分割払いが出来るようになっていたことも後押しした。 8500 円ずつの二回払いなら何とかなる。

結論

バッラリーニのサリーナフライパン、ちょっと高かったがとても良い買い物でした。おすすめです。

目玉焼きのせソース焼きそば

| @雑談

2020 年、時系列でふりかえるとこんな感じだった。

できたこと

ハワイ旅行

ハワイで最近の SUV に乗って Car Play に感動した。車の買い換えを検討するきっかけになった。ハワイ楽しかったのでまた行きたい。

Akaka Falls Cadillac XT4 Volks Wagen Atlas

ブログの ActiveRecord 化

脱 DataMapper できた。

ブログ UI 刷新

トップページの見た目、アーカイブページにグラフを表示するようにした。ブログ記事を書いてきた実績が可視化されるとやる気が出る。

ウッドデッキの塗り替え

サンドペーパーをかけて塗り直した。

ウッドデッキ塗り直し

庭で焼き鳥

バーベキューに飽きて焼き鳥おじさんになった。

焼き鳥

ハンモック入門

ウキグモ Light & ウンカイ Light 購入。

ハンモック

UL クッカー購入

アルコールストーブ、チタンカップ、メスティン、アルミフライパンなどなど。

アルコールストーブ

山で肉まん・焼売・炊飯

カップラーメンとおにぎりからの卒業。メスティンでの炊飯はめちゃ美味くて感動する。

焼売 メスティンで炊いた米でたまごかけご飯

車の買い換え

スバルインプレッサから Jeep Compass へ。ハワイ旅行でアメ車の SUV に乗って車に対する考え方が変わり、車を買い換えたくなった。国産車はディーラーとの交渉がわずらわしすぎて値引き交渉やオプションがほとんどない外車になってしまった。アメ車はアホみたいにガソリン喰って笑える。プラスチック部品の質が悪い(ゴルフ 2 を思い出す)。

Jeep Compass

ソロで脊振山・金山を縦走

2 年ぶりのソロ縦走。盛夏にソロで 20km 歩いてつら寂し楽しかった。

脊振山 猟師岩鼻

腕時計の買い替え

Pebble Time Round から Apple Watch へ。

Apple Watch

朝駆け登山

明け方前に出発して日の出を山頂で見るというやつをやった。

天山から見る日の出

友だちとキャンプ

家族以外とのキャンプは初めてだった。複数の男手がある状態でのキャンプは楽だった(力仕事を分散)。食事は taketin さんが作ってくれて超楽だった。

ピザを焼く taketin さん

ジョギング再開

年末から走るようになった。Apple Watch でリング閉じたい病にかかった。走るときに聞くのは Podcast よりも音楽の方が良い( Podcast だと気が散る)。

一切れ 3000 円の肉を焼く

肉屋で ¥880/100g のリブロースを厚さ 3cm でカットしてもらった。良い肉を低温調理すると柔らかくなりすぎてブヨブヨになった。和牛は普通に焼いてうまくなるように育てられてるのかも知れない。

一切れ 3000 円の肉

Rebuild サポーターに登録

RAW エピソードと Extra エピソードが聞けて全文検索できるようになった。全文検索できると N さんが昔言ってたあの話をもう一回聞きたいというときに便利。サポーター向けの機能差別はもうちょいあってもよいのではと思ったけど( Rebuild を聞くに際してお金払わなくても困ることがない)、実利を得るためというより支援のためにみんな入っているのかな。

できなかったこと

こっちは箇条書きで。

  • Lokka の ActiveRecord 化を master に merge
    • あと一歩のところで燃え尽きてしまった
  • iOS / Mac のプログラミング
    • 毎年やりたいと思ってやれない
    • Xcode がでかすぎる&重すぎる
  • Rust の勉強
    • ちょびっとやってたけど難しくて途中でやめてしまった
  • 英会話の勉強
    • 会社の制度でレアジョブを始めたけどなかなか時間を捻出できない
    • 休みには休みたくなってしまう
  • ブログを 100 記事書く
    • 11 月に重めの翻訳記事を書いて燃え尽きてしまった
  • 庭の屏の塗り替え
    • ウッドデッキの流れで塗り替えたかったが梅雨入りして夏が来て冬になってしまった
  • 体重の維持
    • 前回リモートワークをしていたとき( Kaizen Platform 時代)はリモートワークしながら減量できたのに今回は太ってしまった
  • ソロでハンモック泊
    • ハンモックを買ったはいいが、ソロで山に泊まりに行けていない
  • 高い山に登る
    • 今年は標高 1500m 以上の山(ハワイーの Pu'u Kalepeamoa は除く)に登っていない
    • 火山規制が解除されたので阿蘇高岳に登りに行きたかったが、休日にソロでの外出はなかなか難しい
    • 年に一回は久住か祖母山、九州脊梁の山(標高 1700m 程度)に登りたい
  • 仕事でめざましい成果を残す
    • いつも通り

いつものようにあまりパッとしない一年だった。

| @旅行/散歩

ゼインアーツのテント

最近キャンプの話を何回か書いているけど、 2 週間前にもキャンプに行った。去年のゴールデンウィークに家族で行った別府の志高湖キャンプ場に元同僚の @taketin さん父子と行った。 taketin さんが Weber の高級バーベキューグリルを持ってきてくれてピザを焼いてくれた。

taketin さんが高級バーベキューグリルで焼いたピザ

taketin さんが高級バーベキューグリルで焼いたピザ

自分は最近、 GRiPS のブログを読んだり Twitter で銀座カプセル男 (@twiginza) さんという方のツイートを読んだり、ヒロシキャンプの YouTube 動画を見るようになってアウトドアの食事への考え方が変わってきていて、凝った料理を作るよりインスタント食品などを駆使して楽をして、むしろその状況では食べることができないものを食べることのギャップ(例えば山でほかほかの焼売を食べるとか)を楽しむようになってきた。なので今回はイオンの肉まんとソーセージ、生卵くらいしか持ってきてなくて、恐縮しながら taketin さんに食わせてもらった。食べるだけのキャンプというのは楽だった。

taketin さんが平生ヤクルト感覚で飲んでいる高級クラフトビール

taketin さん父子にテントで寝てもらって自分はハンモックで寝ようかとウキグモ Light とウンカイ Light を持ってきていたけど、志高湖は木へのハンモック取り付け禁止になっていた。ツリーストラップを使わず直接木にロープを巻き付ける人がいたのだろう。残念。それで急遽自分もテントのなかで寝ることにした。エアマットを膨らませ、下にウキグモ Light を敷き、上にウンカイ Light をかぶった。

ウキグモ Light とウンカイ Light

前回の嬉野広川原キャンプ場での経験から、ハンモック泊は随分寒いだろうと覚悟していたのだけど、予想に反してめっちゃ快眠できて初めてキャンプで 7 時間以上眠れた。ほとんど無風でテント内に風が入ってこなかったのも助かった。 taketin さんの息子殿よりも早く 10 時には一人で勝手に寝てしまって申し訳なかったけど、翌朝は 6 時前に目が覚めて志高湖の写真を撮って回ったりした。

白鳥と志高湖

朝靄がかかる志高湖

白鳥と志高湖

由布岳と鶴見岳

対岸の紅葉とテント

撤収がギリギリになって最後は大慌てだったがエンジョイできた。 taketin さん父子とは志高湖で別れて一人で久住方面に向かい、猪の瀬戸湿原を歩いたり、由布院でだんご汁を食べたり、長者原で温泉に浸かったりした。

Kaizen Platform 時代の上司だった石橋さん(創業 CTO )は冬も毎週末キャンプに行っててキャンプ場からリモートでミーティングしたりしてたのを思い出す。自分は仕事こそしなかったものの、今回キャンプ場からレアジョブのレッスンを受けるということをやってのけた。引き続き戸外活動頑張っていきたい。

| @ブログ

インデックスページをいじって各カテゴリーの最新記事 4 件を配置するようにしてみた。最近の個人サイト復興ブームでみなさんインデックスページを工夫されているのを見ていて真似したくなってやった。

カテゴリーごとに最新記事 4 件を表示

昔ながらのブログだとインデックスページというのは最新の記事 10 件くらいが表示されていて、「次へ」を押すと古い記事が出てくるという構成になっている。以前のこのブログもそうだった。

しかし自分自身が他人のブログで「次へ」を押して次々に記事を読んでいくということをやった記憶がほとんどない。自分のブログでだって何か目的があって特定のキーワードで検索したあとに引っかかった記事を読むという感じなので、時系列に本文とセットで記事が 10 件ずつ表示される UI というのは意味をなしていないと思った。そもそもインデックスという名称なのに最近の記事数件しか表示していないのはおかしい。インデックスというからにはすべての記事の目次になるべきだ。

このブログはカテゴリーがあるので、サイトマップを作るとするとこんな感じになると思う。

+----------+        +------------+        +-----------+
|          |        |            |        |           |
|   Blog   +---+--->+  Category  +------->+   Entry   |
|          |   |    |            |        |           |
+----------+   |    +------------+        +-----------+
               |
               |
               |    +------------+        +-----------+
               |    |            |        |           |
               +--->+  Category  +---+--->+   Entry   |
                    |            |   |    |           |
                    +------------+   |    +-----------+
                                     |
                                     |
                                     |    +-----------+
                                     |    |           |
                                     +--->+   Entry   |
                                     |    |           |
                                     |    +-----------+
                                     |
                                     |
                                     |    +-----------+
                                     |    |           |
                                     +--->+   Entry   |
                                          |           |
                                          +-----------+

第一階層がインデックスページで、第二階層がカテゴリートップ、そして各記事がある。なのでインデックスページは二階層目の一覧ページになっているのが望ましいはずだ。しかし伝統的なブログはカテゴリーという記事をまとめる概念がありつつも、インデックスページから各記事ページへ直接遷移するのが主な導線だった。常に最新の記事が時系列順に並んでいるだけでは味気ないし、常連の読者ではないコンテキストを知らない訪問者には不親切だろう。

しかも SNS の隆盛で個人のブログのインデックスページが参照される機会というのはとんとなくなってしまった。個人が書いたブログ記事は SNS 経由で読まれ、個別記事だけが読まれる。インデックスページやトップページが読まれることはほとんどない。 SNS でシェアされている URL をクリックして個別記事を読んで、それ以上そのブログのほかの記事を読むことなく離脱してしまう。前後のコンテキストは無視して、一つのコンテンツだけがつまみ食いされてしまう。そんな流れにあらがいたいと思った。

これまで関連記事を記事下に表示するなどやってきたが、気に入っていくつか記事を読んで「ホーム」( = インデックスページ)を訪れたユーザーがもう少しブログを深掘りしてみたくなるようにインデックスページを各カテゴリーの最新記事一覧とするようにしてみた。このブログは現在カテゴリーが 13 個あるので、それぞれから 4 件ずつ記事を取得すると 52 記事になる。全カテゴリーからまんべんなく 4 記事ずつ取得して表示するのは簡単なようで結構難しい。普通の SQL ではできない。 OR マッパーではまず無理だろう。

いろいろ調べてみた結果、 MySQL では GROUP_CONCAT というのが使えそうだった。以下のような SQL を書いた。

select entries.id
from entries
inner join (
  select
    category_id,
    GROUP_CONCAT(id order by created_at desc) as entry_ids,
    max(created_at) as last_created_at
  from entries
  where entries.draft = false
  group by category_id
) as grouped_entries
on grouped_entries.category_id = entries.category_id
and FIND_IN_SET(id, entry_ids) between 1 and 4
order by last_created_at desc, entries.id desc;

GROUP_CONCATFIND_IN_SET という関数を組み合わせることで、各カテゴリーから作成日の降順に記事を 4 件ずつ取得できた。このクエリでは記事 id のみ取得して、もう一回 DB に記事を取得するクエリを ActiveRecord で投げる。 ActiveRecord でクエリを組み立てるときは N+1 が起こらないように関連テーブルを JOIN する。

query = <<~SQL
  select entries.id
  from entries
  inner join (
    select
      category_id,
      group_concat(id order by created_at desc) as entry_ids,
      max(created_at) as last_created_at
    from entries
    where entries.draft = false
    group by category_id
  ) as grouped_entries
    on grouped_entries.category_id = entries.category_id
    and find_in_set(id, entry_ids) between 1 and 4
  inner join categories on categories.id = entries.category_id
  order by last_created_at desc, entries.id desc;
SQL
entry_ids = ActiveRecord::Base.connection.select_all(query).rows.flatten
entries = Entry.includes(:category, :user, :tags, :comments).where(id: entry_ids)

PostgreSQL のときに最初に取得した entry_ids の並び順通りに結果が受け取れるかは怪しいが、 MySQL の場合は一回目のクエリで取得した id 順に各レコードが ActiveRecord のクエリ結果として取得できた。あとはこれをカテゴリーごとにグルーピングして View でよろしくやれば良い。

なお各カテゴリーはカテゴリー内の最新の記事の作成日で降順ソートするようにしている。例えば現在のインデックスページの最下部には音楽カテゴリーがあるが、これは音楽についての記事を最後に書いたのが一年以上前だからだ。もしいま音楽の記事を書けば音楽カテゴリーがトップに浮上するようになっている。

見た目に関しては各カテゴリーの記事最新一件は大きなサイズで表示している。最も最近書かれた記事なのでより多く人の目に付いた方がよいだろうという考えだ。またすべての記事にサムネイルというか、アイキャッチ画像を表示するようにした。画像がない記事に関してはデフォルトのサイトアイコン画像を表示するようにしている。やっぱり視覚的に情報を捉えられるのは重要だ。画像がごちゃごちゃ表示されるのを嫌う人もいるかもしれないが、テキストだけでは人間の認知というのはどうしても追いつかない。

あわせて今回、インデックスページの冒頭部にこのサイトについての説明文を載せることにした。ながしまきょうさんr7kamura さんがやっているののパクりだ。伝統的なブログのインデックスページは初めて訪れた人のことを無視しすぎていたと思う。そのブログ自体について説明するページがあるブログは少ない。最初の記事でブログを始めた経緯みたいなことが書かれたきり、そのブログは何なのか、誰が書いているのかが書かれることは希だ。きちんとブログについての説明ページと著者についての説明ページがあっても、左右のサイドバーやトップのナビゲーションの端っこに押し込まれて見られることはない。これではいけないだろう。というわけでインデックスページの一番目立つ位置にブログと自分自身の簡単な紹介を入れた。

インデックスページトップに紹介文を表示

ブログはなぜ衰退したかを考えてみると、 Facebook や Twitter の隆盛はあるにせよ、ブログ自体に初めて訪れた人に読まれるための工夫が欠けていたのだと思う。誰も自分のブログの継続率を計測したりコホート分析したりはしない。読者が前後の記事を読んでいることを前提に書かれた記事やサイト構成では初めて訪れた人はどうやっても離脱してしまう。特に書き手が芸能人でもない一般人の場合はなおさらだ。誰も RSS フィードを購読していないし、ほとんどの読者は初めて訪れる人なのだから、そういう人たちが読んでブログのテーマや著者の人となりが分かる構成にしていかなければならないのだと思う。でないと SNS でたまにバズったときだけ読んでもらえる、ソーシャルメディアの肥やしにしかならない。

この新しいインデックスページが正解なのかどうかは分からないが、ブログ衰退の流れにあらがっていきたい。

| @ブログ

blog.8-p.info の過去記事ページの真似をして、 Archive ページにタグを表示するようにしてみた。

Archive ページにタグを表示

タグはあまり使っていなかったのだけど、一覧で記事タイトルだけ並んだときその記事にどんな内容が書いてあるのかを把握するためにはタグが便利だなと思い直し、タグを表示させてみることにした。いくつか過去のタグが付いていない記事にタグを振ってもみた。

このブログは技術情報からポエム、日々の日記まで何でもありのごった煮ブログなので、カテゴリーによる情報分類には限界がある。現在 13 個のカテゴリーがあるが、記事数にバラツキがあり、情報分類としてあまり機能していない。カテゴリーの粒度をもっと荒くして緩い分類に変更し、そこから先はタグによって超細かくラベリングすると情報の分類としてはまともになるのではないかと思った。

いま、カテゴリーの内訳がこんな感じ。

- "雑談":303
- "技術/プログラミング":272
- "映画/ドラマ/テレビ":150
- "Mac/iPhone":134
- "WWW":113
- "散財":95
- "旅行/ハイキング":70
- "ブログ":69
- "音楽":63
- "読書":34
- "写真":32
- "料理/食事":31
- "労働":27

もっと緩い分類にして以下みたいな感じにするとよさそう。

- 雑記
- パソコン・インターネット
- 見た・読んだ・聞いた
- 出かけた・撮った・食べた

カテゴリーとタグの使い分けは 10 年以上前から悩んでいる気がする。

情報分類の手法でありつつコンテンツの内容そのものを指し示すものでもあるからだろう。インスタグラムで #ラーメン #からの #うどん とかやってる投稿を見るととても嫌な気持ちになるのだけど、そういうことがされるくらいにタグというものは不安定なもので、正しく使おうとか気負わず、もっと緩く使えばいいのかもしれない。

もう廃れてしまったが、フォークソノミーが勢いを取り戻して、情報の発信者ではなく受け取り側がコンテンツにタグ付けできるような世の中になるとおもしろいのかもしれない。