{
"path": "/3mfhemft5ic2i",
"site": "at://did:plc:aajyn6qzw67cnmwf7zxzbjdy/site.standard.publication/3lyuurwxkbk24",
"tags": [
"network perception in atmosphere"
],
"$type": "site.standard.document",
"title": "中2階——キャッシュタグで作るBlueskyの情報ネットワーク",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019c85c1-09bc-7778-9251-9ca0afc1b06e",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "タイムラインは流れる。スレッドは沈む。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Blueskyのタイムラインには構造上の制約がある。投稿は流れる。リプライツリーは深くなるほど見えにくくなる。ある話題について過去に書いたことと、今書いていることを繋ぐ手段が乏しい。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 76,
"byteStart": 69
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
},
{
"index": {
"byteEnd": 88,
"byteStart": 81
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
},
{
"index": {
"byteEnd": 379,
"byteStart": 357
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
},
{
"index": {
"byteEnd": 405,
"byteStart": 380
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
},
{
"index": {
"byteEnd": 419,
"byteStart": 406
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "ハッシュタグは使える。だが問題がいくつかある。#読書 や #日記 のような大きなカテゴリでは粒度が粗すぎて、自分の文脈を保持する道具にはならない。アクティビズムに転用されてタグ本来の機能が政治化することもある。さらに厄介なのは、同じ話題について #朝ドラばけばけ #NHK朝ドラばけばけ #ばけばけ のようにタグ名が分裂する問題だ。ひとつの番組の感想が三つも四つものタグに散らばり、集約できない。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "キャッシュタグによるアンカーは、これらの問題を迂回する。意味を持たないランダム文字列だからこそ、政治化しない。名前の揺れも起きない。意味は文脈の側にある。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "キャッシュタグとは何か"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 91,
"byteStart": 90
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "Blueskyにはキャッシュタグ(Cashtag)という機能がある。ドルマーク $ のあとに英数字を5文字まで並べたもので、投稿中に書くとタグとして機能する。もともとは金融・株式の文脈で銘柄コードを参照するための記法で、旧Twitterが2012年に導入したものをBlueskyが2026年1月のv1.114で採用した。だが、英語圏でも反応は冷ややかだ。Blueskyのユーザー層と株式銘柄コードの相性がそもそも良くない。実装の発表に対して寄せられたのは、編集ボタンや下書き保存のほうが先だろうという声だった。日本語圏ではさらに存在感が薄い。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "機能としては存在する。検索もできる。だが使い道が定まっていない。であれば、別の用途に転用しない理由はない。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "ここで考えたいのは、このキャッシュタグをランダムな文字列として生成し、投稿同士を繋ぐアンカーとして使うことだ。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "4500万通りの空間"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "当初、英字の大文字・小文字と数字の62種で計算し、9億通りと見積もった。だが実際に運用を始めて二つの制約が判明した。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 112,
"byteStart": 106
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
},
{
"index": {
"byteEnd": 123,
"byteStart": 117
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "2026年2月23日、キャッシュタグは大文字と小文字を区別しないことがわかった。$AbCdE も $abcde も同じタグとして扱われる。使える文字は英字26種と数字10種の36種になり、空間は6200万通りに縮小した。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "翌24日、先頭が数字だとキャッシュタグとして認識されないことが判明した。先頭は英字でなければならない。この制約を加えると、使える空間はこうなる。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "3文字:33,696通り"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "4文字:1,213,056通り"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "5文字:43,670,016通り"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 25,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#bold"
}
]
}
],
"plaintext": "合計:44,916,768通り"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "9億から4500万へ。20分の1になった。それでも4500万通りは個人が使い切れる数ではない。仕様は走りながら確かめていく。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "「中2階」という空間"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "この仕組みを使った情報ネットワークを「中2階」と呼ぶことにした。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "建築用語で中2階(mezzanine)とは、1階と2階の間に設けられた半階の空間だ。正規のフロアではない。だが確かにそこに空間がある。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "Blueskyにおける中2階も同じだ。タイムラインでもなく、スレッドでもない。正規の導線の外にある、半階ずれた接続層。キャッシュタグという周波数を合わせた者だけがアクセスできる。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "使い方"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "むずかしいことは何もない。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "ランダムな文字列を生成する(あるいは好きな文字列を決める)"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 11,
"byteStart": 10
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "投稿に $ をつけてタグとして添える"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "関連する投稿に同じタグをつける"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "これだけだ。同じタグを検索すれば、時間を超えて投稿同士が繋がる。リプライツリーに閉じ込めずに、各投稿がTL上で独立して存在したまま、裏側でアンカーされる。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "後から別の投稿を同じタグで追加できる。他者が同じタグで参加することもできる。ゆるいスレッド的な集合が、タイムラインの流れとは無関係に形成される。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "無線の周波数を合わせるように、誰かが偶然同じタグを使うかもしれない。意図しない接続。それも中2階の一部だ。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "ソーシャル・グラフから離れる"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "中2階にはもうひとつの遊び方がある。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "atprotoの仕様上、Blueskyに鍵アカウントはない。グループDMも今のところ未実装だ。だが、メインのアカウントとは別に中2階用のアカウントを作り、フォロー・フォロワーのグラフから切り離された状態でタグだけで繋がることはできる。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "完全な秘匿ではない。ソーシャル・グラフの分離だ。都市の雑踏を歩く感覚に近い。誰かがそこにいるのはわかる。ただ、誰のタイムラインにも属していない。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 79,
"byteStart": 67
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "カスタムドメインを使っている人は、残してある .bsky.social のアカウントを中2階用に転用するのもいい。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "強制はしない。メインのまま参加しても構わない。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "ノイズへの対処"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "自分が使っているタグに合わない相手が入ってきたらどうするか。アカウントをミュートすればいい。タグは消えない。周波数はそのまま残る。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "設計思想"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "中2階は、Blueskyの「非ウイルス的」な設計思想と相性がいい。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "バズを狙う仕組みではない。アルゴリズムによる拡散もない。周波数を知っている者、あるいは偶然そこにたどり着いた者だけが繋がる。過去と現在が相互浸透する。リーチではなく接続を志向するネットワークだ。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "意味のないランダム文字列がタグになるということは、文脈を知らない第三者にはその意図が見えないということでもある。これは欠点にも利点にもなる。中2階は、見えるが見えにくい場所であることを選んでいる。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "タグの生成"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "わたしは個人用に、中2階で使うキャッシュタグをランダムに生成するツールを作った。一度使ったタグは記録され、重複しない。文字数は3〜5で切り替えられる。使い方は生成ボタンを押すだけだ。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "ツールなど作らなくとも、好きな文字列を自分で考えて紙のメモに鉛筆で書きとめておくのでもいい。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 2,
"facets": [],
"plaintext": "始める"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 41,
"byteStart": 35
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "中2階の最初のアンカーは $cT7aZ だ。たまたま生成された文字列が、このネットワークの起点になった。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "以下の周波数も開いている。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.unorderedList",
"children": [
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 6,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "$xS0yV:最近知って驚いたこと"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 6,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "$iFaWr:今読んでるもの・観てるもの"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 6,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "$bCZUr:誰かに聞いてほしい小さな話"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 6,
"byteStart": 0
},
"features": [
{
"$type": "pub.leaflet.richtext.facet#code"
}
]
}
],
"plaintext": "$rMazF:マジックリアリズムの掌編"
},
"children": []
}
]
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "周波数を合わせろ。中2階で会おう。"
}
}
]
}
]
},
"publishedAt": "2026-02-22T14:40:58.106Z"
}