2024-01-29
東京都のシビックテック「Tokyo OSS Party 福井会場」でのプランのひとつ、ウェブ標準、W3Cの分散型SNSの規格、ActivityPubを使った情報提供プラン。W3Cで長年話題になっていた情報のサイロ化に対するひとつの解!

Mastodonもプロトコルを途中で変更した模様、国産の実装MisskeyもActivityPub対応とのこと。


MastodonでURLを入力すると表示できた!


Misskeyからも!


「code4fukui/ActivityPub-test」

Denoをインストールした環境で、endpoint.txt に「https://example.com/」など、自分のサーバーのエントリーポイントを設定して、動かせばOK!

5つ星オープンデータで有名、語彙付きJSON、JSON-LDを使った比較的シンプルな仕様。DenoでひとまずアカウントがMastodonとMissikeyから認識できるまでを実装してみました。(参考、LOD3基準、JSON-LDとN-Quadsを相互変換するJavaScript ESモジュール&Denoモジュール on GitHub Pages

対応しているリストはこんな感じ。いろいろ受け取ったデータであれこれしていく予定です。 Deno.serve({ port, hostname: "[::]", handler: async (request, info) => { const path = new URL(request.url).pathname; console.log(request, request.headers.accept, path); if (path == "/nodeinfo/2.1") { return await reply("./nodeinfo.json"); } else if (path == "/") { return await reply("./person.activity.json"); } else if (path == "/.well-known/host-meta") { return await reply("./host-meta.xml"); } else if (path == "/.well-known/webfinger") { return await reply("./webfinger.jrd.json"); } else if (path == "/following") { return await reply("./following.activity.json"); } else if (path == "/followers") { return await reply("./followers.activity.json"); } else if (path == "/outbox") { return await reply("./outbox.activity.json"); } else if (path == "/inbox") { const param = await getParam(request); await writeLog("inbox", param); return await reply("./inbox.activity.json"); } else if (path == "/outbox") { return await reply("./outbox.activity.json"); } else if (path == "/items/note.1.activity.json") { return await reply("./note.1.activity.json"); } else { return handleWeb("static", request, path, info); } }, }); server.js#L47-L79 on ActivityPub-test

links
- 東京都のお題をシビックテックで解決しよう!Tokyo OSS Party 福井会場と公園オープンデータ&マップアプリ

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS