{
"path": "/3mey5il42rk2t",
"site": "at://did:plc:urj4pkche2yvpr5ilj4ykteu/site.standard.publication/3mbpveyjbq22q",
"tags": [],
"$type": "site.standard.document",
"title": "navigation の lexicon",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "019c6698-cc34-7cc4-b304-20b59a267faf",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "従来の一般的なウェブサイト、たとえば、example.jp というドメインのウェブサイトだとして、"
}
},
{
"$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": 19,
"byteStart": 0
},
"features": [
{
"uri": "https://example.jp/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "https://example.jp/ トップページ"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 24,
"byteStart": 0
},
"features": [
{
"uri": "https://example.jp/about",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "https://example.jp/about ◯◯について"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://example.jp/news",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "https://example.jp/news 新着情報"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 27,
"byteStart": 0
},
"features": [
{
"uri": "https://example.jp/articles",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "https://example.jp/articles なんらかの記事集"
},
"children": []
},
{
"$type": "pub.leaflet.blocks.unorderedList#listItem",
"content": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 23,
"byteStart": 0
},
"features": [
{
"uri": "https://example.jp/link",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "https://example.jp/link リンク集"
},
"children": []
}
]
}
},
{
"$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.code",
"language": "plaintext",
"plaintext": "[TOP] [ABOUT] [NEWS] [ARTICLES] [LINK]"
}
},
{
"$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": "さて、Atmosphere 上でウェブサイトを作りたいとする。それぞれのページについてはPDSに格納します。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "トップページはシンプルならペライチのページなので site.standard.document で表現できる。「◯◯について」についても同様。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "新着情報は Bluesky の投稿をそのまま流用してしまおう。かつて、Twitterのタイムラインを表示するウィジェットをトップページにはっつけて新着情報をCMS使って更新する代わりにしているところが多かったのを記憶していることでしょう。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "「なんらかの記事集」は site.standard.publication と site.standard.document で。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "リンク集は blue.linkat.board を使いましょう。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "そういったことを単純なJSONで表現すると、こうなります。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.code",
"language": "json",
"plaintext": "[\n {\n\t \"label\":\"TOP\",\n\t \"url\": \"https://example.jp\"\n\t \"aturi\": \"at://<did>/site.standard.document/abcde123\"\n },\n {\n\t \"label\": \"ABOUT\",\n\t \"url\": \"https://example-jp.leaflet.pub/fghij456\"\n\t \"aturi\": \"at://<did>/site.standard.document/fghij456\"\n },\n {\n\t \"label\": \"NEWS\",\n\t \"url\": \"https://bsky.app/profile/example.jp\",\n\t \"aturi\": \"at://<did>/app.bsky.feed.post\"\n },\n {\n\t \"label\": \"ARTICLES\",\n\t \"url\": \"https://example-jp.leaflet.pub\",\n\t \"aturi\": \"at://<did>/site.standard.publication\"\n },\n {\n \"label\": \"LINK\",\n \"url:\" \"https://linkat.blue/example.jp\",\n \"aturi\": \"at://<did>/blue.linkat.board\"\n }\n]"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "これを良さげなlexiconの形式にしてPDSに格納しておきます。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "そして、ちょっとしたウェブアプリを作って、このナビゲーションデータをPDSから引っ張ってきて、https://example.jp/ というドメインで見れるようにするのができないかな。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "もし、各AppView (フロントエンド) の協力があれば、このナビゲーションデータをPDSから引っ張り出してきて、良さげなUIで各ページの上部とかに表示してくれると嬉しいかもしれない。"
}
},
{
"$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": "仕組みとしては大昔にあったOLEとかOpenDocみたいな複合ドキュメントのAtmosphere版なのだけど、こういうのがあれば、SNSやブログが登場する以前、みんなが個人ホームページを作っていた時代が戻ってこないかな。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"index": {
"byteEnd": 19,
"byteStart": 0
},
"features": [
{
"uri": "https://blento.app/",
"$type": "pub.leaflet.richtext.facet#link"
}
]
}
],
"plaintext": "https://blento.app/ も近い感じ。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.horizontalRule"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.header",
"level": 3,
"facets": [],
"plaintext": "追記"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "UI側としてはブラウザのツールバーとして実装してみるのが早い気がしてきた。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": "このlexiconのデータを持つユーザーのAtomosphereアプリのサイトにアクセスすると、グローバルナビゲーションが表示される、みたいな。"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [],
"plaintext": ""
}
}
]
}
]
},
"description": "website on atproto",
"publishedAt": "2026-02-16T13:23:36.205Z"
}