×

ブログを移転した

はてなブログからblog.shivaduke28.netに移転した。

折登さんのHyperstrataを見て、自分もやりたくなった。

Hyperstrata とは、各ノートをその時点の思考の層として保存し、後続するメモからハイパーリンクで参照することで、思考の堆積と変遷をネットワーク状の地層として残す個人 Web サイトの形態である。

自分もScrapboxをデジタルガーデン的にメンテするのが大変苦手で、scrapbox.io/shivaduke28 も虚無なページが多くてイマイチ手入れができていない。 Scrapboxは好きなサービスなんだけど、全てのページがmutableな感じがどうにも落ち着かない。なんというか、commitしていないGitのdiffがずっと残っているような居心地の悪さがある。

Hyperstrataは記事をなるべくimmutableにして、更新がある場合は上の層に新しく記事を重ねればいい、という立場で、これはかなり好き。 あと、Rector にしてもそうだが、グラフが好きというのもある。

Textpile

タイムスタンプを標高にして記事を配置し、記事から記事への参照を道として表現することにした。 参照は”continues”と”references”の2種類があり、前者はシリーズものっぽい時に使って、後者はもう少し弱い参照に使う。 道のメタファーでは、continuesは文字通り道が続いていて、referencesは分かれ道とか横道みたいなニュアンス。

高さをy軸に割り当てるとすると、記事のy座標は投稿日から決まる。xz座標は自由に設定できるようにしている。 記事のxz座標から地形情報を動的に生成する必要があるが、これはClaudeがよしなに実装してくれた。

道もナイーブに引くと意図しない交差が生まれたり、見栄えが好ましくないことがあるので、中間点を追加して曲線をいじれるようにしている。 デジタルガーデンは苦手と言いつつ、結局のところ記事をimmutableにしたいだけで、グラフの見た目をいじりたいのである。 振り返ってみると、俺はmiroでグラフを作りまくるのがかなり好きで、趣味でも仕事でもmiroにたくさんグラフを作ってきた。クラス図、ロードマップ、技術的負債の管理、プロジェクト進行、なんでもmiroで図にしている。 図にするということが自分の中で理解を進める手続きなのである。 そういう自分のパーソナリティをあらためて認識する機会になって、面白いなと思った。

このブログの形式はデジタルガーデンともHyperstrataとも少し違うように思うので、“Textpile”という名前をつけた。 “text file”と響きが似ているし、pileからは積読的なテキストの山みたいなニュアンスがあるのも好き。

それとは別にブログにはcairn(ケルン)という名前をつけた。ケルンというのは石積みを意味する。

ケルンはいくつかの目的のために構築される。

  • 埋葬場所の特徴付け及び慰霊
  • 山の頂上を特徴付けること
  • 特定のルートを示す道標

ケルン (石積み) - Wikipedia

Textpileはルック含めて好きなんだけど、「塵も積もれば山となる」的なコンセプトが少しキラキラしすぎているような気がしたので、墓標・賽の河原の石積みみたいな暗い意味を込めたかった。 ちなみに、はてなブログのときのタイトルは「孤独に歩め」だが、これはイノセンスで引用されているブッダの言葉からとっている。

孤独に歩め。悪をなさず、求めるところは少なく。林の中の象のように。

Bayou

Textpileの前身として、記事の参照を川で表現する”Bayou”という形式を考えていた。 自分のブログの記事をざっと分類すると以下のようになる。

  • Rector
  • 写真
  • Arshes
  • 思想
  • その他、小さな開発の話

これらの分類を「トピック」と呼ぶことにして、トピックの上に記事を重ねていくことを考えた。 各トピックは完全に独立しておらず、トピックをまたいで記事が参照したりする。 例えば、俺がSIGMA fpを買ったのはRectorとnormalize.fmの文脈だし、Arshesは(直接的な参照はないが)どうみても写真の文脈である。

この「トピック形式」には、トピック自体の変化を表現できないという問題がある。 例えば、「ヨーロッパ」というトピックでヨーロッパの国について記事を書くとする。 フランス、イギリス、ドイツについて記事をいくつか書くとそれらが「ヨーロッパ」トピックの上に乗っていく。 その後、特にフランスにハマってきたので、「フランス」というトピックを作りたくなったとする。 そのときに昔書いた「ヨーロッパ」トピックに属するフランスに関する記事のトピックを変更するべきか?

折登さんのXのスペースで、hachaさんと3人で話していて、この問題に気付かされた。 DJのライブラリ管理で、最初は全部ハウスだと思っていたけど、実はテックハウスとかディープハウスとか色々サブジャンルがあるわけで、曲が増えてきて、違いがわかり始めた後になって、小分けにしたくなるのである。 ブログの記事のトピックにしても、曲のジャンルにしても、これらの分類は客観的なものではなく、極めて主観的なものである、というのが重要なように思う。そして主観は時間と共に変化するのだから、それ自体を表現できるモデルにすると良さそうという結論に至った。 まずトピックがあって、その上に記事が乗るのではなく、記事の連なりがあって、それが分かれたり合流したりしてもよく、ある区間では「ヨーロッパ」だし、ある区間では「フランス」と「イギリス」と「ヨーロッパ(その他)」に分かれていてもよい、ということになる。

それは、なんだか川みたいだなぁと思い、Bayouという名前をつけた。

バイユー (bayou [ˈbaɪ.uː, ˈbaɪ.oʊ]) は細くて、ゆっくりと流れる小川を意味する。バイユーは通常低地に位置し、例えばアメリカ合衆国南部のミシシッピ川の三角州地帯にある。多くのバイユーには、ザリガニ、エビ、貝類やナマズが生息する。

バイユー (地形) - Wikipedia

バイユーという響きが可愛いし、“by you”とかかっていて好き。

川のモデルにすると、古い記事ほど上流で、新しい記事ほど下流になる。 それでタイムスタンプを高度にして投稿線を表示すると、HUD的ルックが作れて好みになりそうと思ったので試した。

ぱっと見それっぽいが、じっと見ているとなんだかのっぺりしていて違和感がある。 山の高度と川は密接に関係していて、大きな川は低いところをゆったり流れるし、細い川が山の斜面に沿って急に流れたりもするが、それが欠如している。 結局この違和感が拭えないままで、良い感じの地形生成アルゴリズムのアイデアも思い浮かばなかったので、Bayouは諦めてTextpileに乗り換えた。 川の方が概念的には好きなので、川と山をいい感じに整合する形でプロシージャルに地形を作る何かを作ってみたいなとは思う。

実装

はてなブログのエクスポート機能を使って記事をエクスポートして、Claude Codeに全部やらせた。 ルックや手触りはかなり口を出したけどコードは全く書いてない。

内部的にはAstro + Cloudflare Workersで動いている。 いい機会なので shivaduke28.net のドメインも買った。

地形の編集もブラウザ上で行うようにしていて、ローカルでnpm run devしたときだけ、編集結果をファイルに保存できるようにしている。 編集結果はmap.yamlに格納されて、ランタイムで動的に地形を作っているはず。

保存はできないが編集自体は誰でもできるようにしているので、左上の⚙️のボタンからEdit Modeを有効にして山を編集して遊んでみて欲しい。

References