春告げ抹茶ホイップ

Hyperstrata: 堆積するノートによるWebサイト形式

この記事は「Hyperstrata(ハイパーストラタ)」について紹介する記事である。

Hyperstrata とは私が作った造語であり、Web サイト特に個人 Web サイトなどで使われることを想定した Web サイトの形式とその思想の名前として私が提唱するものである。

詳しくは後で説明するが、簡単に Hyperstrata がどのようなものかを述べておこう。 Hyperstrata とは、各ノートをその時点の思考の層として保存し、後続するメモからハイパーリンクで参照することで、思考の堆積と変遷をネットワーク状の地層として残す個人 Web サイトの形態である。

今あなたが見ているこのサイトも Hyperstrata である。

この画像はこのサイトのスクリーンショットである。 左側にグラフが描画されているのがわかる。 このグラフはドットが 1 つの記事を表していて、線が引用のリンクを表している。 ある記事から引用のリンクを辿ることで関連する記事を過去に未来に辿ることができる。 過去の記事を引用する引用のネットワークが Hyperstrata の構成要素の 1 つである。

この Hyperstrata という語は「hyper-」の接頭辞と、地層を意味する「strata」で構成されている。 ここで「hyper-」は「hypertext」を強く意識している。 テキストが分岐やリンクを素直には扱えず一直線に進む文字のメディアだったのに対し、ハイパーテキストはハイパーリンクなどの様々な機能によって、複雑なネットワーク状の文章を記述することが可能になった。 Hyperstrata は、地層にこのハイパー性を付け加えてネットワーク状の性質を持つ地層をイメージしたネーミングになっている。

「hyper-」は接頭辞であり単語ではない。 そのため、Hyperstrata を二語に分けて Hyper Strata と記載するのは誤りである。 Hypertext の hyper-なので Hyperstrata と一語で表記するのが正しい。

この Hyperstrata は Web サイトの思想・形式あるいはその形式の元で管理更新されている Web サイトのことを指す名前である。 何か Hyperstrata という Web ページ作成のフレームワークやライブラリがあるわけでもない。 Hyperstrata はライブラリやフレームワークの名前ではない。

この Hyperstrata が何者であるかを説明する前に、強く影響を受けた思想としてデジタルガーデンの話をしよう。


デジタルガーデニング

デジタルガーデンという文化、あるいは Web サイトの形態がある。 このデジタルガーデンについて、私は別の記事を書いてそれをどう考えているかはまとめたのだが[1]、ここでももう一度デジタルガーデンがどのようなものかを簡単に振り返っておこう。

デジタルガーデンとはある種の個人 Web サイトの形態である。 それは以下のような特徴を持っている。

  • 未完成のメモを公開する
  • 記事を時系列で並べない
  • 継続的に成長し続ける
  • 個人が所有権を持っている

おおよそ、デジタルガーデンとは「公開日付によって厳密に整理されていない未完成を含むメモの集合体であり、各メモはオーナーによって相互にリンクが貼られているもので、常に更新され成長し続けるもの」と言えると思う。

デジタルガーデンはブログのような形式と異なり、未完成の記事を公開することが許容されている。 各記事は未完成であり今後も変更が加えられて少しずつ育っていくのである。 少しずつ記事を増やしたりアップデートしたりしていくことは、庭の植物が成長して剪定をして整えていくようだ。

また、記事を時系列順に並べないで、記事間のリンクで空間的に配置されるのも 1 つの特徴である。 多くのブログや SNS などでは投稿は 1 本の時系列順に並べられてしまう。 一方でデジタルガーデンは、自由にリンク構造を作って自由に記事たちを整理しまとめ直すことが可能だ。 どのようにつながりまとまった Web サイトを作るかという部分にオーナーの自由度があり、オーナーが好きなように Web サイトを形作っていくことが可能である。

デジタルガーデンは継続的に成長し続けるものでもある。 未完成な記事や足りない記事などを少しずつ手入れして、少しずつ成長していく様を楽しむのは、ガーデニングで植物を植えたり剪定したりして手入れするようだ。

そしてデジタルガーデンでは個人が所有権を持っているのも大事な要素である。 プラットフォームに投稿すると、その投稿が知らないところで表示されることがあるかもしれない。 アルゴリズムによって自分の望む形と異なる形で表示されてしまうかもしれない。 一方でデジタルガーデンはあなたのコンテンツはあなたのものである。 どのように表示するかも自由に決定できる。


庭は public な空間でありつつある種の private さもある。 庭は public と private の間の中間的な領域ともいえる。

private な家の中であれば、そこは完全に個人的な場所で個人が自由にできる。 家の中が外部の人の目に触れることはない。

公共の場の駅とか交差点とか、そういうところで何か展示したり広告を掲載するのは完全に公共的なものであり、多くの人の目につくものになる。 このような公共のスペースに自分の好きなものを展示すると、あまりに多くの人に望むと望まずと関わらず見せつけることにもなるかもしれない。

一方で庭は、その庭が面している通りから通行人が眺めることはできるが、一方で公共の駅とか交差点とかとは違い完全に自分の空間でもある。 庭への訪問者はその庭に手を加えることは許されないし、その庭はその庭のオーナーのものである。 訪問者はあくまで訪問者としてその庭を見ることになリ、個人的な空間を興味を持った人が見に来ることがある、そういう場が庭である。

人の目に触れる場所という意味では public ではあるが、交差点や駅のような public とは異なっている。 庭いじりは自己満足的なものであり人に見せつけるものではない。 訪問者が訪れて見ていくことは妨げないが、非常に個人的な場でもあるのである。


デジタルガーデンについて詳しく知りたければ、次の記事などが歴史まで含めて簡単にまとまっていて良いのでおすすめである。


ズボラな人間にはガーデニングは難しい

デジタルな庭を維持管理するのは実は難しい、ということは以前にも書いた[1]。 ズボラな人間にガーデニングをさせると、最終的には管理されていない雑草まみれの庭になってしまう。

ガーデニングは維持管理することを要求する。 記事が未完成で良い、というのは最初に公開するハードルは下がるが、その後未完成の記事を更新し続ける必要があるという点でメンテナンスコストはむしろ上がっている。 未完成な記事が増えていくと、マネージしないといけないものが増えまくって大変になる。

結果として、デジタルガーデンを私のようなズボラな人間がやろうとしても、気合いを入れて書いた記事もあれば、見出しだけ作って後で書こうと思って放置してしまった記事などが入り乱れ、そしてどれも記事を最初に書いた日からほとんど更新されずに放置されてしまう。 打ち捨てられた庭が出来上がってしまい、庭が育っていかないのである。

庭を常にメンテして育てていくのは、庭いじりが好きな人にとっては楽しいひとときなのだと思う。 しかし、庭いじりに時間をかけたくない人や継続的にメンテナンスできないズボラな人間にとっては、良い庭を育てていくことは難しい。

一方、ブログは書いた記事は手を入れ続ける必要は基本的には多くない。 そのため一度書いた記事に対するメンテナンスコストは低めであると言えるだろう。

しかし、かといってブログに戻るとそちらはそちらで記事を最初に書くハードルが高いのである。 self-contained な内容の記事を書こうとすると、どうしても記事の執筆にエネルギーを使う。 そのためブログの形式で記事をたくさん書いて行くのも、それはそれで向いている人にしか難しい。

デジタルガーデンのように未完成の記事を気軽に書きながら、しかしブログのように記事を一度書いたらメンテナンスコストは小さい、そういうような Web サイトの更新形態はないだろうか?


ノートを堆積させよう・引用しリンクさせよう

そこで、そんな庭を育てられない人に向けて提案するのがHyperstrataという形式である。 庭を管理できない人でもデジタルガーデンのように未完成の記事を公開できる記事を書くコストを下げて育てていける、そんな Web サイトの形態である。

ここで Hyperstrata がどのようなものか説明しよう。

端的に言うと記事同士を引用ネットワークでつないだ Web サイトである。 引用という形である記事から別の過去の記事への参照を貼ることができる。

例えば、ある記事で他のある記事を参照して書いたとする。 そうすると、その記事から参照先の記事へのリンクと、逆向きのリンクが生成を作ることができる。 これで、その記事から参照先にリンクでたどることができる。 その参照先の記事からは参照元の記事のほうへ戻る方向のリンクもたどることができる。

こうするとネットワークは過去の記事を参照して積み重なっていく、有向非巡回なグラフ(DAG)になる。 この引用ネットワークのグラフ構造を持った Web サイトを更新していくというのが Hyperstrata である。


引用は様々な意味で行うことができる。

前の記事の続きの記事を書くときに、前の記事を引用してその記事の続きであることを明記してから書き始めても良い。 前の記事に補足説明をするために、前の記事を引用して補足を追加しても良い。 前の記事の間違いを修正するために、前の記事を引用して正しい情報を書いても良い。 前の記事に書いたことを完全に打ち消すために、新しい記事を書いて前の記事を引用しつつ、ここで書いたことは間違っていたから新しい記事として書き直すと宣言しても良い。

Hyperstrata は堆積していくノートが大事である。 更新を続ければ続けるほど、Hyperstrata には地層が堆積していく。 この地層になったノートは、あるノート単体で意味を成すものではなく、ノートの引用リンクをたどって読み解いて行くことで、時間をかけて変化したり追記されたり補足されるその全体を見て理解する必要がある。

Hyperstraeta では、過去の記事に誤りを見つけたときには新しい記事を書いてその古い記事を引用する。 すると古い記事から新しい記事へのリンクもあるので、古い記事から新しい記事へたどることで間違いの訂正の歴史を見ることもできる。 Hyperstrata では typo の修正やちょっとした更新は記事の上書きをしてもよいが、その記事の内容に編集を加えるのであれば、ちょっと強い気持ちで新しい記事を書いて引用するスタイルを推奨する。


Hyperstrata は更新を続けることで思考がどのように変化していったかを残すことができる。 何年も積み重ねれば、自分の思考がどのように変化したのかについてたどることのできる地層ができあがる。 これはノートを堆積させるからこそのメリットである。

デジタルガーデンでは、庭のメンテナンスのように植物自身が成長して剪定してということを繰り返して、1 つの記事を修正し続けて最新に保ち続ける。 そうすると修正の歴史を眺めることは簡単ではない。 各記事は破壊的に上書きアップデートをされていくことになる。 デジタルガーデンにおいては、どの記事も未完成ではあっても良いが打ち捨てられていない方が望ましい。

Hyperstrata では堆積していくノートによって作られた地層と、それが示す思考の流れの歴史が貴重な情報として育っていくことになる。 堆積した地層全体が観察対象で読み解く必要のあるものである。 最新記事だけに意味があるわけでもなく、各記事を孤立させた内容だけに意味があるわけでもない。 内容をアップデートしたい場合は、過去の記事を破壊的に編集するのではなく、別の記事を書いて引用リンクをつけることで非破壊的に更新を行っていく。

自分の思考がどう変化したか、ある時点で何をどのように考えていたか。 これも何年も後には貴重な情報になる。 成長し剪定して上書きしながら形を変え続けるのではなく、変化の履歴が地層のように堆積するのだ。 管理された庭を育てるのではなく、思考のスナップショットが地層のように堆積していく、そういう Web サイトの形態が Hyperstrata である。


Hyperstrataに必要なもの

改めて Hyperstrata に必要なものをまとめてみよう。

引用ネットワーク

まずは記事同士の引用ネットワークは必要である。 引用・被引用を各記事に搭載するのは Hyperstrata では必要である。

このノートの間を References と Cited By の引用と被引用でリンクして辿れることが Hyperstrata の重要な要素の 1 つである。

上には有向非巡回グラフ(DAG)になる、と書いたがここは厳密には DAG であることは要求しなくても良いかもしれない。 同時に 2 つの記事を執筆しつつ、両方で相互に引用したくなることがないとは言えない。 私のこの Hyperstrata ではループも一応許容されている。 とはいえ、遥か未来に書くであろう記事に引用を貼るということはないので、基本的には過去の記事を参照する形になるだろう。

実装方法についてはどのようなものでもよいが、私は次のようにして引用を埋め込むようにしている。 この記事が掲載されている、私の管理するこの Hyperstrata の実装においては、markdown 中に特別な記法の ^[[slug]] と記述することで、slug の記事を参照できるようになっている。 そうしてノートの内部で参照した参照はすべてサイトのビルド時に収集されて、ノートの最後に References のセクションが自動で追加される。 また、参照先から参照元へたどるための Cited By のセクションも自動で追加されるようになっている。

なるべくイミュータブル(不変)に

Hyperstrata では、記事はなるべく不変にするべきである。 内容をアップデートしたい場合は古い記事を引用した上で新しい記事を書いて訂正するべきである。

もちろん typo とかちょっとした言い回しの修正は問題ないだろう。 しかし内容を改訂する場合は新しい記事を書くのが基本だ。

記事それ自体を更新し続けると、庭を整理するのが難しいズボラな人間にとってメンテナンスが辛くなる問題が再発する。 編集したい場合もグッとこらえて新しい記事を書いた方が良いだろう。

そしてそのノートの引用ネットワークに現れる自分の思考の変遷などは、将来的に貴重な情報になるかもしれない。 ノートを上書き修正するのではなく、ノートは堆積していこう。

例えば私は以前書いた記事[2]の訂正記事を別記事[3]にして引用でつなぐということをした。 こうすることで、訂正された記事は下の方に Cited By のセクションで、新しくこの記事を訂正した記事が存在することが示される。 ノートを更新するのではなく、ノートを補足訂正する新しいノートを作り引用リンクでつなぐのだ。

植物が成長したりそれを剪定したりして編集しながら庭を育てるのではなく。 既存の記事への編集や補足などは新しいノートとして堆積させることで地層を積み育てて行くイメージである。

記事は自己完結していなくてよい

記事は blog とは異なり自己完結している必要もない。

書きかけの記事を投稿して、続きを新しい記事として堆積させても良い。 未完成な思考をメモとして公開して、後でリファインした記事を書いてもよい。

Hyperstrata においては、記事はその記事単体で読まれるものではなく、引用ネットワークの中での位置づけとともに読まれるべきものである。 未完成であっても書きかけであっても投稿して、それを新しい層を堆積させて地層を育てていくのが Hyperstrata である。

ただし、別に自己完結した記事を書きたくなったら、その場合は書くことを止めはしない。 その時の判断に応じて、どのくらいきっちりした記事を書くか、どのくらい雑にメモを書くかはグラデーションの中から選ぶことができる。

グラフビュー(オプショナル)

グラフビューは一応オプショナルではある。 重要なのはデータの構造であり、引用ネットワークの構造がデータに埋め込まれていれば、それをどのように可視化するかは自由である。 各記事のフッターに「References」のセクションと「Cited By」のセクションを作るだけでも十分 Hyperstrata である。

とはいえ、この引用ネットワークを時系列に沿ってグラフとして表示してみるのは面白いことである。

グラフが表示されることで色々と記事を繋げて堆積させて発展させてみたくなる。 新しい記事を書きたい気持ちにさせてくれる効用はあると思う。

オプショナルではあるとはいえ、今時 AI に実装させればこういうグラフを描画するプログラムも難なく作ってくれる時代である。 せっかくなのでグラフビューも表示してみると Hyperstrata の面白さが増すかもしれない。


Hyperstrataの訪問者に求められること

Hyperstratra の訪問者に求められる負担は普通のブログより大きくなる。

Hyperstrarta を閲覧する人は、1 つの記事だけ見て判断するのではなく、その地層の中の堆積ネットワークを追いかけてその変遷も理解する必要がある。 これは Hyperstrata のオーナーが閲覧者にお願いをしなければいけないことだ。 ブログにおいてオーナーが記事を自己完結にまとめる負担を、閲覧者に移したものであるとも言える。

これは庭の時代には許容されるお願いであると私は考えている。

デジタルガーデンも閲覧者に対するお願いはあった。 デジタルガーデンの訪問者は、そこに並んでいる記事が未完成の状態であるということ受け入れた上で閲覧する必要があった。

勝手に流れてくるプラットフォームの投稿と異なり、訪問者は自分の意志でその Web サイトに訪問している人間である。 訪問者が積極的に意図を汲んで理解する必要があっても、多少ならば問題ないだろう。

デジタルガーデンの未完成であることを受け入れるよりも場合によっては訪問者の負担は大きいかもしれない。 オーナーの考えを汲みたければ、地層を読み取る必要がある。 場合によっては地層を辿り多くの記事を見る必要があるかもしれない。 しかし、それが Hyperstrata の読み方なのである。


それぞれのHyperstrataを作ろう

Web サイトに引用ネットワークを組み合わせてイミュータブルにノートを堆積させればそれはもう Hyperstrata である。 この Hyperstrata をアレンジをする場所はいろいろある。

例えば引用のリンクに種別をつけてもよいだろう。 この引用が補足なのか訂正なのかといったラベルをリンク自体に持たせるとかしてもよいかもしれない。

例えば、その引用のリンク先で元の記事を訂正する場合、元の記事の方に訂正済みであることを示すラベルを表示するなどのアレンジも考えられる。

あるいは、例えばグラフの描画方法を工夫して、より楽しいビジュアライズもできるかもしれない。

各々がそれぞれ自分の作りたい Web サイトに合わせて Hyperstrata の思想を取り込んだり取り込まなかったりしながら、各々の Hyperstrata を作っていってほしい。 今時は個人用の Web サイトなどであれば、コーディングエージェントを使うとこのサイトのような引用ネットワークやグラフの実装くらいはやってくれる。


この Hyperstrata という Web サイトの形式や思想が面白いと思ってくれたら、ぜひ個人 Web サイトとして Hyperstrata を立ち上げてみてほしい。 「これが俺の Hyperstrata や!」というのを各自作っていって欲しい。

Hyperstrata の思想で、あなたが個人の Web サイトを更新するハードルを下げることができたなら嬉しい。 あるいは、堆積する歴史として自分の思考をメモすることに興味を持ってくれたのでも嬉しい。 多くの人が個人の Web サイトを持って更新していくようになったら面白いと思うし、Hyperstrata の考えがその後押しになっていれば嬉しい。

References

  1. 1. デジタルガーデンについて思うこと
  2. 2. Obsidianのグラフビューを得意ではない話
  3. 3. Obsidianのグラフビューを得意ではない話の訂正

Cited By