Blueskyってなんだ?ATProtocolのアーキテクチャ入門
TOC
- 01 この動画について - README
- 02 Bluesky と分散型 SNS - 序論
- 03 Yo.ブルスコしてるかい? - ブルースカイ・ソーシャルアプリ
- 04 わたしのなまえ - ユーザーハンドル
- 05 おすすめ - カスタムフィードとアルゴリズムの選択
- 06 しくみ - AT プロトコルのアーキテクチャ
- 07 わたしのデータ - ユーザーデータリポジトリ
- 08 わたしの住む家 - パーソナルデータサーバー
- 09 ググれるようにする - インデクシングインフラストラクチャ
- 10 データあちまれ~! - リレー
- 11 いいねをかぞえて - アプリビュー
- 12 好きを集める、嫌いを避ける - ラベラーとフィードジェネレーター
- 13 わたしを証明する - ユーザー ID
- 14 わたしをさがして - DID ドキュメントの解決
- 15 わたしをさがして 2 - DID PLC メソッド
- 16 だいじなもの - 認証
- 17 ライバル登場!? - 関連研究
- 18 船乗りの SNS - スカトルバット
- 19 ブロックチェーンは万能薬じゃない? - ファーキャスターとブロックチェーンベースのシステム
- 20 いちばんの老舗 - ActivityPub と Mastodon
- 21 まとめ - 結論
01 この動画について - README
WhiteCUL「うわー!青い鳥がぺけ印になってるー!」
春日部つむぎ「どうしたの雪さん?」
WhiteCUL「なんかツイッターが X になっちゃったんだよ!ツイッターじゃなくてぺけったーだしツイートはぺけーとだよ!」
春日部つむぎ「ひとつの会社が運営している SNS は、無理やり変更があってもユーザーに抵抗するすべはないよね。」
春日部つむぎ「この際だから、ブルースカイを始めて見るのはどう?論文読んでみたんだけど、なかなか興味深いんだよね。」
WhiteCUL「ブルースカイ?なにそれ?」
春日部つむぎ「じゃあ今日は ブルースカイについて話していこうか。」
春日部つむぎ「 Bluesky and the AT Protocol: Usable Decentralized Social Media っていう Martin Kleppmann さんの論文だよ。」
春日部つむぎ「気に入ったら原典も読んでみてね。」
02 Bluesky と分散型 SNS - 序論
WhiteCUL「ねぇつむぎちゃん、結局分散型 SNS って一体どういうものなの?」
春日部つむぎ「まず、今までの SNS って、ツイッターとかインスタとか、全部一つの会社が管理してるでしょ?」
春日部つむぎ「それが中央集権型ってやつなの。」
WhiteCUL「確かにツイッターは会社の都合でルールが変わっちゃったもんね…。」
春日部つむぎ「そう!で、そういう会社都合のルール変更とか、運営が不透明だったりとか、ユーザーが何も言えなかったりとか、」
春日部つむぎ「そういう問題がいっぱいあるわけ。そこで登場するのが分散型 SNS ってわけ!」
WhiteCUL「っていうことは、分散型だとそういう問題が解決するってこと?」
春日部つむぎ「そう!分散型 SNS だと、管理する会社が複数あるの。なんなら自分で運営してもいいんだ。」
春日部つむぎ「だから、一つの会社が勝手にルールを変えたり、ユーザーを無視したりってことができにくくなるわけ。」
WhiteCUL「すごい! でも、管理する会社が複数って、なんか複雑そう…」
春日部つむぎ「実は、そこが分散型 SNS の難しいところなんだよね。 例えば、マストドンっていう分散型 SNS があるんだ。」
春日部つむぎ「サーバーごとにルールが違うから、自由にルールを選べて、」
春日部つむぎ「他のサーバーが気に入ったらフォロワーを維持したまま移行できる利点があるんだけど……」
WhiteCUL「それだけ聞くと結構良さそうだね!」
春日部つむぎ「実際好む人もたくさんいるんだ。でも、アカウントを作る時にサーバーを選ばなきゃいけないから、IT 初心者には難しいんだよね。」
春日部つむぎ「しかもそのサーバーがユーザー名の一部になっちゃうから、サーバーを変えたら、ユーザー名も変わっちゃう。」
WhiteCUL「えー、それはちょっと不便だね…。」
春日部つむぎ「でしょ? それに、もしサーバーが急に停止しちゃったら、そのサーバーで作ったアカウントは使えなくなっちゃうの!」
春日部つむぎ「ボランティアで運営してるサーバーだと、そういうリスクもあるみたい。」
WhiteCUL「うわぁ、それは困るなぁ…。」
春日部つむぎ「そこで考えられたのが ブルースカイなんだよね。ブルースカイは AT プロトコルっていう仕組みを使ってて、」
春日部つむぎ「マストドンよりも使いやすくなってるの!」
WhiteCUL「AT プロトコル?」
春日部つむぎ「うん!AT プロトコルだと、ユーザーデータは PDS っていうサーバーに保存されるんだけど、」
春日部つむぎ「PDS は誰でも運営できるようになってるの。 だから、もし ブルースカイの運営会社が気に入らなかったら、」
春日部つむぎ「他の会社の PDS に移行することもできるし、自分で PDS を立てることだってできるんだよ!」
WhiteCUL「えー! それはすごいね!」
春日部つむぎ「でしょ?それに、ブルースカイは モデレーションサービスにも特徴があるの。 これは、嫌がらせとかヘイトスピーチとか、」
春日部つむぎ「そういう問題のあるコンテンツを排除するサービスなんだけど、」
春日部つむぎ「ブルースカイでは誰でもモデレーションサービスを運営できるようになってるの。」
WhiteCUL「それって、誰かが勝手につむぎちゃんのタイムラインをいじるってこと?怖くない?」
春日部つむぎ「心配ご無用! ユーザーは、どのモデレーションサービスを使うか自分で選べるようになってるから、」
春日部つむぎ「気に入ったものだけを選べば安心だよ!」
WhiteCUL「なるほどね! つむぎちゃん、色々教えてくれてありがとう! 分散型 SNS、ちょっと興味が出てきたかも!」
03 Yo.ブルスコしてるかい? - ブルースカイ・ソーシャルアプリ
WhiteCUL「つむぎちゃん、この前教えてもらった ブルースカイってアプリ、ちょっと気になってるの。」
WhiteCUL「どんなアプリか、もうちょっと詳しく教えてくれない?」
春日部つむぎ「おーけー! ブルースカイは、一言で言うとツイッターみたいなマイクロブログアプリって感じで、」
春日部つむぎ「アイフォンでもアンドロイドでも、パソコンでも使えるアプリだよ!」
WhiteCUL「ツイッターみたいなんだ!私ツイッターは割と好きだったよ!」
WhiteCUL「お金がなかったころ、オフィスにファンがピザを届けたエピソードが大好き!」
春日部つむぎ「あーしも好きだったんだよねー!ブルースカイもツイッターみたいに、300 文字までのテキストとか、」
春日部つむぎ「最大 4 枚の画像とか、短い動画を投稿できるの。それに、他の人の投稿に返信したり、」
春日部つむぎ「リツイートしたり、いいね!したり、フォローしたりもできるから、ツイッターに慣れてる人なら、すぐ使いこなせると思うよ!」
WhiteCUL「へぇー、面白そう!どんな投稿が見れるのかな?」
春日部つむぎ「ブルースカイを開くと、二つのフィードが表示されるようになってるの。一つは、フォローしてる人の投稿が新しい順に表示される」
春日部つむぎ「フィードで、もう一つは、ブルースカイ全体で人気のある投稿が表示されるフィードなの。」
WhiteCUL「なるほどね。それで、ブルースカイって、いつから始まったアプリなの?」
春日部つむぎ「ブルースカイは 2023 年 2 月に、招待制のベータ版が公開されたんだけど、」
春日部つむぎ「2024 年 1 月には 300 万人以上の登録ユーザーを獲得したんだって!超人気だよね!」
WhiteCUL「そんなに人気なんだ!ところで、ブルースカイって、誰が運営してるの?」
春日部つむぎ「ブルースカイの公式アプリを開発して、コアサービスを運営してるのはブルースカイ PBC っていう会社なんだけど、」
春日部つむぎ「アプリの一部とか、サーバー側の機能とかはオープンソースで公開されてるんだって。」
春日部つむぎ「オープンソースってことは、誰でも自由にプログラムを見たり、改造したりできるってことね。」
WhiteCUL「ふーん、そうなんだ。」
春日部つむぎ「それに、ブルースカイのシステムの一部は、ブルースカイ PBC 以外の会社とか、」
春日部つむぎ「個人とかが開発・運営してる部分もあるんだって。例えば、フィードジェネレーターとか代替クライアントとか。」
WhiteCUL「フィードジェネレーター?代替クライアント?」
春日部つむぎ「うん!フィードジェネレーターっていうのは、特定のテーマとか、特定のユーザーの投稿を集めて、」
春日部つむぎ「新しいフィードを作ってくれる機能なの。代替クライアントっていうのは、ブルースカイの公式アプリとは別のアプリで、」
春日部つむぎ「ブルースカイの機能を使えるようにしてくれるアプリのことね。」
WhiteCUL「なるほどね!そういえば、昔のツイッターもサードパーティのクライアントがたくさんあったね!」
04 わたしのなまえ - ユーザーハンドル
WhiteCUL「つむぎちゃん、ブルースカイで他のユーザーを指定する時って、@マークで始まる名前を使うじゃない?あれって、どうやって決めるの?」
春日部つむぎ「それはユーザーハンドルっていうんだけど、ツイッターみたいに、ブルースカイでもユーザーは二つの名前を持ってるの。」
春日部つむぎ「一つは表示名で、こっちはほぼ何でも好きな文字列にできるんだけど、もう一つのハンドルは、ユーザーを一意に識別するために、」
春日部つむぎ「ユニークじゃなきゃダメなんだよ!」
WhiteCUL「ユニークって、どういうこと?」
春日部つむぎ「つまり、世界中でたった一つだけの名前ってこと!だから、同じハンドルは二人以上の人が使えないの。」
WhiteCUL「なるほどね。それで、そのユニークなハンドルって、どうやって決めるの?」
春日部つむぎ「それが、分散型システムだと、ちょっと難しい問題なのよ。だって、どのハンドルを誰に割り当てるかを決める権限が必要になるでしょ?」
WhiteCUL「うーん、確かに。」
春日部つむぎ「で、ブルースカイとアットプロトコルっていうブルースカイの基盤になってるシステムでは、」
春日部つむぎ「ハンドルとして DNS ドメイン名を使ってるの。」
WhiteCUL「DNS ドメイン名?」
春日部つむぎ「うん。ウェブサイトのアドレスとかで使う、「.com」とか「.jp」とか、ああいうやつ!ブルースカイでは、」
春日部つむぎ「「.bsky.social」っていうドメインのサブドメインを、無料で使えるようになってるの。」
WhiteCUL「へぇー!じゃあ、例えば「yukisan.bsky.social」みたいなハンドルが使えるってこと?」
春日部つむぎ「そうそう!それに、ブルースカイの中で、ドメインレジストラと提携して、新しいドメイン名を買うこともできるんだって。」
WhiteCUL「ドメインレジストラ?」
春日部つむぎ「ドメイン名を取り扱ってる会社のことね。だから、もし雪さんが「yukisan.com」っていうドメイン名を持ってるなら、」
春日部つむぎ「それをブルースカイのハンドルとして使うこともできるってこと!」
WhiteCUL「すごい!ドメイン名って、なんかかっこいいよね!」
春日部つむぎ「でしょでしょ?DNS ドメイン名をハンドルとして使うのって、他にもメリットがいっぱいあるんだよ。」
WhiteCUL「例えば?」
春日部つむぎ「例えば、ICANN とかレジストラとかネームサーバーとかっていう、既存のインターネットの仕組みを活用できるから、」
春日部つむぎ「商標とかの問題が起こった時も、ちゃんと解決できるようになってるんだって。」
春日部つむぎ「それに、ドメイン名って、技術に詳しくない人でも、なんとなく分かりやすいし、短くて覚えやすいでしょ?」
WhiteCUL「うん、確かに!」
春日部つむぎ「それに、もし雪さんが別のサーバーに引っ越すことになっても、ハンドルは変えなくていいの。」
春日部つむぎ「これは、マストドンっていう別の分散型 SNS だと、サーバーの名前がハンドルの一部になっちゃうから、」
春日部つむぎ「サーバーを移るとハンドルも変えなきゃいけなくて、不便なんだって。」
WhiteCUL「へぇー、そうなんだ。」
春日部つむぎ「それに、自分のドメイン名をハンドルとして使いたい場合は、自分でサーバーを運営しなくてもいいの。」
春日部つむぎ「DNS レコードっていうのを設定するだけで OK!」
WhiteCUL「DNS レコード?」
春日部つむぎ「うん、ちょっと難しい話になっちゃうけど、ドメイン名とサーバーを結びつけるための情報のことね。」
WhiteCUL「うーん?」
春日部つむぎ「例えばニューヨークタイムズみたいな、有名な組織とか人が、ブルースカイのアカウントを作る場合は、」
春日部つむぎ「その組織や人が持ってるドメイン名をハンドルとして使うと、ユーザーは本物のアカウントだって分かりやすいよね。」
WhiteCUL「なるほどね!偽物アカウントとか、見分けやすくなるんだ!」
春日部つむぎ「そうそう!それに、会社とか組織が、従業員に自分のドメイン名のサブドメインをハンドルとして使わせることもできるの。」
春日部つむぎ「例えば、「tsumugi.example.com」みたいな感じ。これって、会社のメールアドレスと同じ仕組みだよね。」
WhiteCUL「うーん、確かに!」
春日部つむぎ「それに、.bsky.social のサブドメインを無料で提供するのって、ブルースカイにとっては、」
春日部つむぎ「ほとんどコストがかからないのもメリットなんだって。」
WhiteCUL「なるほどね!ブルースカイのハンドル、よく考えられてるんだね!つむぎちゃん、教えてくれてありがとう!」
春日部つむぎ「どういたしまして!ブルースカイのハンドルは、分散型システムだけど、ユーザーにとって分かりやすく使いやすいように、」
春日部つむぎ「いろいろ工夫されてるんだよ!」
05 おすすめ - カスタムフィードとアルゴリズムの選択
WhiteCUL「つむぎちゃん、ブルースカイって、おすすめとか、そういう機能はあるの?マストドンはアルゴリズムがないって聞いたんだけど。」
春日部つむぎ「いい質問!実は、ブルースカイにもアルゴリズムはあるんだけど、マストドンとか他の分散型 SNS とは」
春日部つむぎ「ちょっと考え方が違うんだよ。」
WhiteCUL「どういうこと?」
春日部つむぎ「マストドンみたいに、フォローしてる人の投稿が時系列順に表示されるだけのフィードも、もちろんあるんだけど、」
春日部つむぎ「ブルースカイはそれだけじゃないの!いろんなアルゴリズムを使った、カスタムフィードっていう機能があるんだよ!」
WhiteCUL「カスタムフィード?」
春日部つむぎ「うん。ブルースカイが独自に開発したアルゴリズムを使ったフィードもあるし、」
春日部つむぎ「なんと、誰でも自分のフィードジェネレーターを作れるんだって!」
WhiteCUL「フィードジェネレーターって?」
春日部つむぎ「えっとね、コンテンツを選択するための基準を設定して、その基準に合った投稿を集めて表示してくれるプログラムみたいなもの!例えば、」
春日部つむぎ「特定のキーワードが含まれた投稿だけを集めるとか、特定のアカウントの投稿だけを集めるとか、自由に設定できるわけ!」
WhiteCUL「へぇー、すごい!じゃあ、例えば今日のファッションみたいなフィードとか、おすすめカフェみたいなフィードとか、」
WhiteCUL「作れるってこと?」
春日部つむぎ「そうそう!それに、AI みたいな技術を使ったフィードを作ることもできるんだって!」
WhiteCUL「AI がおすすめしてくれるやつか!ああいうのってたまに鋭いときあるよね!」
春日部つむぎ「でしょでしょ?ブルースカイは、オープンで多様なアルゴリズムのマーケットプレイスを目指してるんだって!」
春日部つむぎ「つまり、ユーザーが自分のニーズに合ったフィードを選んで、時間と注意を自由に使えるようにしたいってこと!」
WhiteCUL「なるほどね。じゃあ、なんでマストドンはアルゴリズムがないの?」
春日部つむぎ「実は、マストドンだけじゃなくて、他の分散型 SNS でも、アルゴリズム自体が悪いっていう考え方をする人はいるんだよ。」
春日部つむぎ「特に、中央集権的に管理された、不透明なアルゴリズムは、ユーザーの主体性を奪うって批判されることが多いんだって。」
WhiteCUL「中央集権的に管理された、不透明なアルゴリズム?それって、どういうこと?」
春日部つむぎ「つまり、一部の企業が、自分たちの利益のために、ユーザーがどんな情報を見るかをコントロールしようとしてるってこと!」
春日部つむぎ「例えば、ユーザーエンゲージメントを上げるために、物議を醸す投稿を優先的に表示するアルゴリズムとかが問題になってるみたい。」
WhiteCUL「うーん、確かに、それはちょっと怖いね。機嫌も悪くなりそう。」
春日部つむぎ「でも、ブルースカイは、アルゴリズム自体が悪いわけじゃないって考えてるみたい。」
春日部つむぎ「むしろ、優れた推薦アルゴリズムは、ユーザーにとって役立つって!」
WhiteCUL「例えば、どんな風に?」
春日部つむぎ「例えば、自分に関連するコンテンツを見つけたり、フォローする新しいアカウントを見つけたりするのに役立つし、」
春日部つむぎ「特に新規ユーザーにとっては重要なんだって!それに、特定のトピックに関するコンテンツを見つけるのにも役立つみたい。」
WhiteCUL「なるほどね!ブルースカイのアルゴリズムは、ユーザーが情報を選ぶ主体性を持ちながら、」
WhiteCUL「より便利に SNS を使えるように、考えられてるんだね!」
春日部つむぎ「そうそう!ブルースカイは、ユーザーが自由に情報を選択できる、新しいタイプの分散型 SNS を目指してるんだよ!」
06 しくみ - AT プロトコルのアーキテクチャ
WhiteCUL「つむぎちゃん、ブルースカイってアプリはなんとなくわかったんだけど、その土台になってるアットプロトコルって、どんなものなの?」
春日部つむぎ「なかなか鋭い質問するじゃん!」
春日部つむぎ「アットプロトコルは、ブルースカイだけじゃなくて、いろんな種類のソーシャルアプリを作れるように設計されてる、分散型の基盤なんだよ!」
WhiteCUL「いろんな種類のソーシャルアプリって、どういうこと?」
春日部つむぎ「例えば、ツイッターみたいなマイクロブログ以外にも、レディットみたいなフォーラムとか、」
春日部つむぎ「ブログにコメントできるブログサービスとか、いろんなタイプのアプリが作れるってこと!」
春日部つむぎ「しかも、同じアカウントで、いろんなアプリを使えるようになるみたいだよ!」
WhiteCUL「へぇー、すごい!でも、どうやってそんなことができるの?」
春日部つむぎ「それがレキシコンっていう機能なんだよ!レキシコンは、データの構造とか、アプリが使うリクエストの形式とかを定義するもので、」
春日部つむぎ「それぞれのアプリごとに用意されてるんだって!」
WhiteCUL「ちょっと難しくてわかんないんだけど…。」
春日部つむぎ「例えば、「com.atproto」っていうレキシコンは、ユーザー ID とか、アットプロトコルの中核となる概念を定義してるの。」
春日部つむぎ「で、「app.bsky」っていうレキシコンは、ブルースカイで使われてるマイクロブログの機能を定義してるわけ。」
WhiteCUL「なるほどね。つまり、レキシコンを変えれば、違う種類のアプリが作れるってこと?」
春日部つむぎ「そうそう!それに、誰でも新しいレキシコンを定義できるから、ブルースカイとは全然違うアプリでも、」
春日部つむぎ「アットプロトコルの上で動かすことができるんだって!」
WhiteCUL「すごい!ますます未来っぽいね!でも、制限とかはないの?」
春日部つむぎ「実は、今のアットプロトコルは、公開されるコンテンツを扱うように設計されてるから、プライベートなコミュニケーション、」
春日部つむぎ「例えばダイレクトメッセージとかは、まだ中央集権的なサービスで処理されてるんだって。」
WhiteCUL「えー、ちょっと残念…。」
春日部つむぎ「でも、将来的には、この部分も分散化する予定みたいだよ!」
WhiteCUL「よかった!ますます進化していくのが楽しみだね!」
07 わたしのデータ - ユーザーデータリポジトリ
WhiteCUL「アットプロトコルって、いろんなアプリが作れるようになっててすごいね!で、そのアプリで使うデータはどうやって管理されてるのかな?」
春日部つむぎ「またまたいい質問!ブルースカイでは、ユーザーのデータはリポジトリっていうところに保存されてるんだって!」
WhiteCUL「リポジトリ?」
春日部つむぎ「うん。イメージとしては、ユーザーの行動記録みたいな感じかな。例えば、雪さんがブルースカイで投稿したり、いいね!したり、」
春日部つむぎ「誰かをフォローしたりするでしょ?そうすると、その一つ一つの行動がレコードっていうデータになって、」
春日部つむぎ「雪さんのリポジトリに記録されていくわけ。これは全部公開情報だよ!」
WhiteCUL「えー、なんか恥ずかしい。」
春日部つむぎ「だって、それが公開されるのが前提の SNS なんだもん!プライベートな情報は、今のところブルースカイでは扱ってないみたいだし。」
WhiteCUL「なるほどね。で、そのレコードって、具体的にはどんなデータなの?」
春日部つむぎ「レコードは「DAG-CBOR」っていう形式で保存されるんだって。これは、「CBOR」っていう、」
春日部つむぎ「データをコンパクトにまとめるための特殊なフォーマットを、さらにちょっと改造したやつらしいんだけど…。」
WhiteCUL「うーん、よくわかんない…。」
春日部つむぎ「まあ、とにかく効率的にデータを保存できる形式ってことね!」
春日部つむぎ「で、このリポジトリは、PDS っていうサーバーに保管されてるんだけど…」
WhiteCUL「PDS?また新しい単語が出てきた…。」
春日部つむぎ「PDS はパーソナルデータサーバーの略で、ユーザーのリポジトリを保管して、」
春日部つむぎ「他のアプリとかサービスからアクセスできるようにしてるサーバーのことなんだ。要するにクラウドストレージだね!」
WhiteCUL「ふーん。じゃあ、ブルースカイのアプリを使うときは、この PDS にアクセスしてるってこと?」
春日部つむぎ「そうそう!ブルースカイのアプリだけじゃなくて、他のアットプロトコル対応のアプリを使うときも、」
春日部つむぎ「PDS からデータを取得するんだよ!」
WhiteCUL「なるほどね。このリポジトリって、誰でも見れるの?」
春日部つむぎ「基本的には、誰でも見れるみたい。だって、公開されるのが前提の SNS だからね!」
WhiteCUL「えー、やっぱり恥ずかしい。」
春日部つむぎ「まあ、見られたくない情報は、そもそも投稿しない方がいいってことね!それに、リポジトリはユーザー本人しか更新できないから、」
春日部つむぎ「誰かに勝手に書き換えられたりする心配はないみたいだよ!」
WhiteCUL「それは安心だね。でも、もし PDS がハッキングされたりしたら、大変なことにならない?」
春日部つむぎ「そこは大丈夫!アットプロトコルの AT は「Authenticated Transfer」 の略で、」
春日部つむぎ「リポジトリは暗号技術を使って厳重に保護されてるんだって!」
WhiteCUL「暗号技術?」
春日部つむぎ「うん。具体的には、「Merkle Search Tree (MST)」っていう特殊なデータ構造と、」
春日部つむぎ「デジタル署名っていう技術が使われてて、リポジトリが改ざんされていないかを常にチェックできるようになってるんだって!」
WhiteCUL「へぇー、すごい!じゃあ、安心してブルースカイを使えるね!」
08 わたしの住む家 - パーソナルデータサーバー
WhiteCUL「つむぎちゃん、さっき PDS って言葉が出てきたけど、PDS って具体的にどんなサーバーなの?」
春日部つむぎ「PDS はパーソナルデータサーバーの略で、ユーザーのリポジトリとメディアファイル、つまり画像とか動画ね、」
春日部つむぎ「を保存してるサーバーのことだよ!誰でも HTTP API っていう技術を使えば、PDS に保存されてるデータにアクセスできるんだって!」
WhiteCUL「API って?」
春日部つむぎ「うーんと、例えば、雪さんがブルースカイのアプリで投稿を表示したいとするでしょ?」
春日部つむぎ「そのとき、アプリは PDS に対してこの投稿を見せて!っていうリクエストを送るの。」
春日部つむぎ「で、PDS ははい、どうぞ!って感じで、その投稿データをアプリに返すわけ。」
春日部つむぎ「API は、そういうアプリとサーバーの間のやり取りをするための仕組みみたいなものかな!」
WhiteCUL「なるほどね…。」
春日部つむぎ「それに PDS は、リポジトリの更新情報を WebSocket っていう技術を使ってリアルタイムに配信してるんだって!」
春日部つむぎ「インデクサーっていう別のサーバーは、この配信を受け取って、新しい投稿やいいね!、」
春日部つむぎ「フォローなどの情報をすぐに把握できるようになってるみたい。」
WhiteCUL「インデクサー?また新しい単語が出てきた…。」
春日部つむぎ「インデクサーは、ブルースカイ全体の情報を集めて整理してるサーバーのことみたいだよ。詳しくは後で説明するね!」
WhiteCUL「うん、お願い!で、PDS って、誰でも運営できるの?」
春日部つむぎ「もちろん!PDS を動かすのに必要なコンピューターの資源はそんなに多くないから、」
春日部つむぎ「個人で PDS を運営することもできるんだって!」
春日部つむぎ「クラウド上の安い仮想マシンとか、Raspberry Pi っていうちっちゃなコンピューターでも動かせるみたいだよ!」
WhiteCUL「へぇー、すごい!でも、私には難しそう…。」
春日部つむぎ「大丈夫!ほとんどのユーザーは、ブルースカイの運営会社とか、他の会社が運営してる共有 PDS にアカウントを作ると思うよ。」
WhiteCUL「じゃあ、PDS を選ぶのは重要じゃないってこと?」
春日部つむぎ「そうそう!マストドンっていう別の SNS だと、サーバー選びが重要なんだけど、」
春日部つむぎ「ブルースカイの場合は PDS はどこを選んでもあんまり関係ないんだって。」
春日部つむぎ「同じ PDS を使ってるユーザー同士でしかやり取りできない、なんてこともないみたいだよ!」
WhiteCUL「それはいいね!もし PDS を変えたくなったら、どうすればいいの?」
春日部つむぎ「リポジトリとメディアファイルを新しい PDS にコピーして、アカウントを新しい PDS の URL に切り替えれば OK!」
春日部つむぎ「もし PDS が急に停止しちゃっても、リポジトリのバックアップがあれば、新しい PDS にアップロードするだけで、」
春日部つむぎ「投稿やフォロー・フォロワーの情報が全部復活するんだって!」
WhiteCUL「すごい!データが消えちゃう心配がないのは安心だね!でも、悪質な投稿とかがあったら、誰が削除するの?」
春日部つむぎ「PDS の運営者は、違法なコンテンツを削除する基本的なモデレーションを行ってるみたい。」
春日部つむぎ「でも、ブルースカイではラベラーとフィードジェネレーターっていう別のサーバーが、」
春日部つむぎ「もっと高度なモデレーションの役割を担ってるんだって!」
WhiteCUL「ラベラーとフィードジェネレーター?前に出てきたモデレーションの話?」
春日部つむぎ「そう!ラベラーは、投稿にスパムとか不適切な内容みたいなラベルを付けて、」
春日部つむぎ「フィードジェネレーターは、ユーザーが見たいと思う質の高い投稿を選んで配信してくれるみたい。」
WhiteCUL「そうか。あたりまえだけど、PDS は法に従う必要があって、でもそれ以上のことは必ずしもしなくてもいいんだね!」
春日部つむぎ「今はその理解でいいと思うよ!」
09 ググれるようにする - インデクシングインフラストラクチャ
WhiteCUL「PDS の次はインデクシング・インフラストラクチャっていうのが大事なんだよね?」
春日部つむぎ「そう!インデクシング・インフラストラクチャは、ブルースカイ全体を検索したり、新しい情報を見つけやすくするための仕組みだよ!」
春日部つむぎ「雪さん、インターネットで検索するときって、グーグルとかヤフーを使うでしょ?」
WhiteCUL「うん、毎日使ってる!」
春日部つむぎ「あの検索エンジンと同じような役割をするのが、ブルースカイのインデクシング・インフラストラクチャなんだって!」
WhiteCUL「ふーん、イメージわいてきた!」
春日部つむぎ「ウェブサイトが検索エンジンにクロールされて、インデックス化されるように、ブルースカイでも、」
春日部つむぎ「PDS にあるリポジトリがインデクシング・インフラストラクチャによってクロールされて、インデックス化されるんだって。」
WhiteCUL「クロールって?」
春日部つむぎ「検索エンジンのロボットがウェブサイトを巡回して、情報を集めることだよ!」
WhiteCUL「グーグルってそういう仕組みなんだ!」
春日部つむぎ「で、ユーザーのリポジトリっていうのは一次データ、つまり真実の源泉なんだって。」
春日部つむぎ「インデックスは、そのリポジトリの内容から作られたものなんだ。」
WhiteCUL「ユーザーデータはコピーされうるけど、原本はリポジトリにあるってことだね。」
春日部つむぎ「今は、ブルースカイのインデクシング・インフラストラクチャのほとんどは、ブルースカイの運営会社が管理してるみたい。」
WhiteCUL「分散してないね。」
春日部つむぎ「でも、ブルースカイの運営会社は、特別なアクセス権限を持ってるわけじゃないんだって!リポジトリは公開されてるから、」
春日部つむぎ「誰でもブルースカイのシステムと同じ方法を使って、リポジトリをクロールして、インデックスを作ることができるんだ。」
WhiteCUL「誰でも?」
春日部つむぎ「そう!例えば、ブルースカイの運営会社が、ユーザーに見せたくないアカウントを検閲して、インデックスから外しちゃったとしよう。」
WhiteCUL「それは困るね…。」
春日部つむぎ「でも大丈夫!他の誰かが、検閲しないインデックスを作ってくれるかもしれないんだって。クライアントアプリは、」
春日部つむぎ「別のインデックスから情報を読み込むように切り替えたり、複数のインデックスを組み合わせて使うこともできるんだ。」
WhiteCUL「すごい!」
春日部つむぎ「2024 年 7 月、ブルースカイのユーザーが 600 万人だったとき、」
春日部つむぎ「1 台のサーバーですべてのユーザーのリポジトリのコピーをリアルタイムで管理するのに、月額 153 ドルしかかからなかったんだって!」
WhiteCUL「意外と安い!」
春日部つむぎ「趣味のプロジェクトとしてはちょっと高いけど、多くの組織にとっては手頃な価格だよね。」
WhiteCUL「確かに!」
春日部つむぎ「で、この金額には、リポジトリのストレージと PDS からレコードを取得するための通信費用は含まれてるんだけど、」
春日部つむぎ「そのデータからサマリーインデックスを作って、提供するための計算資源の費用は含まれてないんだって。」
WhiteCUL「サマリーインデックス?」
春日部つむぎ「検索を高速化するためとか、特定の情報をまとめたインデックスのことだよ!」
WhiteCUL「へぇー!」
春日部つむぎ「インデックスを作るのは結構お金がかかるから、趣味でインデクサーをやる人は、PDS をセルフホストする人より少ないみたい。」
WhiteCUL「まあ、そりゃそうか…。」
春日部つむぎ「でも、ブルースカイがもっと成長して、ユーザーが増えていけば、いろんな目的のために、」
春日部つむぎ「専門的に運営されるインデクサーがたくさん出てくる可能性があるんだって!」
WhiteCUL「例えば?」
春日部つむぎ「例えば、あるブランドに関するソーシャルメディアの活動を分析して、顧客に情報を提供する会社があったとしよう。」
春日部つむぎ「そういう会社は、ブルースカイ全体のインデックスを簡単に作ることができるんだって!」
WhiteCUL「なるほど!」
春日部つむぎ「他にも、グーグルみたいなウェブ検索エンジンがブルースカイの情報を検索結果に表示したり、」
春日部つむぎ「インターネットアーカイブみたいなところがブルースカイの活動を保存したりするのに、インデクサーが使われる可能性もあるんだって!」
10 データあちまれ~! - リレー
WhiteCUL「インデクシング・インフラストラクチャって、いろんなサービスで構成されてるんだよね?」
春日部つむぎ「そうなんだよ!で、その最初のコンポーネントがリレーっていうんだけど…雪さん、消防車のホースから水が出てくるイメージ、できる?」
WhiteCUL「うん、できるよ!」
春日部つむぎ「リレーは、ブルースカイ全体から PDS のリポジトリの情報を集めて、それを firehose っていう、」
春日部つむぎ「ホースみたいなものから、ドバドバ~っと流してるんだって!」
WhiteCUL「へぇー!」
春日部つむぎ「リレーの役割は、まず既知のすべての PDS にあるユーザーリポジトリをクロールすること。」
春日部つむぎ「つまり、ブルースカイ全体をくまなく巡回して、PDS のリポジトリを見つけ出すってこと!」
WhiteCUL「ブルースカイって、世界中に PDS があるんだよね?」
春日部つむぎ「そう!だからリレーの仕事は大変なんだよ!で、リレーは PDS のリポジトリから、更新ストリームっていう、」
春日部つむぎ「リポジトリに追加とか削除があったときに出される情報を受け取るんだ。」
WhiteCUL「あちこちから連絡を受けるんだね。」
春日部つむぎ「で、受け取った更新情報が本当に正しいかどうかっていうのを、署名と Merkle Tree の証明を使ってチェックするんだって。」
WhiteCUL「署名って、データが改ざんされてないか調べるときに使うやつだよね。」
春日部つむぎ「そう!で、リレーは各リポジトリのコピーを作って、自分のところに保存しておくんだ。これをレプリカっていうんだって。」
WhiteCUL「コピーを保存しておくのはなんで?」
春日部つむぎ「それはね、もし PDS との接続が切れちゃったり、PDS が急に閉鎖されちゃったりしても、」
春日部つむぎ「リレーがリポジトリの情報を保持できるようにするためなんだって。」
WhiteCUL「なるほどー!」
春日部つむぎ「で、リレーが集めた PDS のリポジトリの情報とか更新情報とかが、firehose からドバドバ~っと流れ出てくるわけ!」
WhiteCUL「firehose って、誰でも見れるの?」
春日部つむぎ「そう!firehose は公開されてるから、誰でも見ることができるんだ。」
春日部つむぎ「firehose から情報を受け取ることを、firehose を消費するっていうんだけど…firehose を消費すれば、」
春日部つむぎ「ブルースカイ全体にインデックスを作ったり、最新の情報を取得したりするのが、めっちゃ楽になるんだって!」
WhiteCUL「firehose、便利だね!」
春日部つむぎ「でしょ!でね、リレー自身は、リポジトリのレコードを解釈したり、インデックス化したりはしないんだって。」
春日部つむぎ「ただ、情報を保存して転送するだけ。」
WhiteCUL「中身は読まないんだ。」
春日部つむぎ「例えば、もし誰かがアプリを作りたいと思ったら、新しいレキシコンを定義するんだ。レキシコンはデータの設計図だったね。」
春日部つむぎ「設計図にもとづいてリポジトリにデータが収まってしまえば、リレーはそれを吸い上げて、firehose に流れてくる。」
WhiteCUL「そうか。データの解釈はほかのサーバーの仕事で、リレーの仕事はデータを吸い上げてひとつの流れにすることだけ、ってことだね。」
春日部つむぎ「そう!リレーのおかげで、ブルースカイはスムーズに動いてるってわけ!」
11 いいねをかぞえて - アプリビュー
WhiteCUL「リレーの次は、アプリビューっていうサービスなんだよね?」
春日部つむぎ「そう!アプリビューは、リレーが集めてくれた firehose から、」
春日部つむぎ「ブルースカイソーシャルアプリに必要なレコードだけを選んで処理するサービスなんだって!」
WhiteCUL「firehose には、いろんな情報が混ざってるんだもんね?」
春日部つむぎ「そうそう!アプリビューは com.atproto と app.bsky レキシコンのレコードを処理するんだけど…」
春日部つむぎ「例えば、いいね!の数をカウントしたり、各投稿への返信をまとめてスレッドにしたりするんだよ!」
WhiteCUL「なるほどー!いいねの数はここで生まれるんだ!」
春日部つむぎ「それに、各ユーザーのフォロワーの情報を管理したり、」
春日部つむぎ「フォローしてるアカウントの投稿を時系列順に並べてタイムラインを作ったりもするんだって!」
春日部つむぎ「で、アプリビューは、これらの情報をウェブサービスとして提供するんだ。」
WhiteCUL「クライアントアプリは、アプリビューから情報をもらってるってこと?」
春日部つむぎ「そう!クライアントアプリがユーザーの情報を見たいときは、まずユーザー自身の PDS に問い合わせをするんだ。」
WhiteCUL「ふーん。」
春日部つむぎ「で、PDS はアプリビューに必要な情報を問い合わせて、それをクライアントアプリに返すんだって!」
WhiteCUL「PDS はユーザーの代理人として、あちこちに問い合わせる役目を持っているんだね!」
春日部つむぎ「そう!でね、アプリビューは画像の処理もするんだって!レコードに画像への参照が含まれてるときは、」
春日部つむぎ「アプリビューは元の PDS から画像ファイルを取得して、必要に応じてファイルサイズを縮小するんだ。」
春日部つむぎ「そして、CDN っていう、コンテンツ配信ネットワーク経由で、画像をクライアントアプリが使えるようにするんだって!」
WhiteCUL「CDN って?」
春日部つむぎ「世界中にサーバーを置いて、ユーザーに近いサーバーからデータを提供する仕組みのこと!」
春日部つむぎ「CDN を使うと、画像の読み込みが速くなるし、PDS の負担も減るんだって!」
WhiteCUL「へぇー!」
春日部つむぎ「それに、アプリビューはモデレーション制御も担当するんだって!」
WhiteCUL「モデレーション?」
春日部つむぎ「そう!例えば、あるユーザーが別のユーザーをブロックしてるとき、ブロックされたユーザーからのいいねやリプライは、」
春日部つむぎ「アプリビューによって非表示にされるんだ。」
春日部つむぎ「ブルースカイでは、ブロックは公開レコードになってるんだけど…」
春日部つむぎ「これは、すべてのアプリビューがブロック情報を共有して、ブロックを正しく機能させるためなんだって!」
WhiteCUL「ブロックは、みんなにバレるってこと?」
春日部つむぎ「そうなんだよ!ちょっと怖いかもね。そして、アプリビューは、ブルースカイ PBC が運営してるものだけじゃないんだって!」
WhiteCUL「え、そうなの?」
春日部つむぎ「もし、ブルースカイ PBC が運営してるアプリビューのモデレーションルールに不満があったら、」
春日部つむぎ「サードパーティが別のアプリビューを運営することもできるんだ!」
春日部つむぎ「そのアプリビューは、同じ firehose を使って、データを違う方法で表示することができるんだって!」
WhiteCUL「へぇー!アプリビューも、いろんな種類があるんだね!」
春日部つむぎ「そう!ブルースカイは、自由度が高いのが魅力なんだよ!」
春日部つむぎ「それに、アットプロトコル を使って新しいアプリを作る場合は、独自のアプリビューサービスが必要になるんだって!」
春日部つむぎ「でも、PDS とリレーは再利用できるから、開発が楽になるね!」
WhiteCUL「なるほど、あたらしいアプリを作るときに、いちからユーザー集めをしなくてよくなるのか!」
春日部つむぎ「すごいでしょ!」
12 好きを集める、嫌いを避ける - ラベラーとフィードジェネレーター
WhiteCUL「アプリビューは、firehose から情報を選んで処理してくれるんだよね?」
春日部つむぎ「そうそう!で、アプリビューって、基本的には中立的なサービスなんだって。」
春日部つむぎ「つまり、コンテンツをランク付けしたり分類したりしないで、中立的な方法でリポジトリのインデックスを計算するってこと。」
WhiteCUL「中立的って、どういうこと?」
春日部つむぎ「例えば、この投稿は面白い!とかこの投稿はつまらない!とか、そういう判断はしないってこと!」
春日部つむぎ「アプリビューは、ただ淡々と、リポジトリの情報を整理して、クライアントアプリが見やすいようにしてくれるだけ!」
WhiteCUL「アプリビューは感情とかないんだね。」
春日部つむぎ「でも、最高のユーザーエクスペリエンスを提供するためには、意見に基づいた判断も必要なんだって。」
春日部つむぎ「例えば、性的に露骨な画像やスパムを検出するコンテンツフィルタリングとか、」
春日部つむぎ「特定のトピックに関する投稿を選択するキュレーションとか!」
WhiteCUL「なるほどー!」
春日部つむぎ「そこで登場するのが、ラベラーとフィードジェネレーターっていうサービスなんだ!」
春日部つむぎ「これらのサービスは、firehose を入力として受け取って、それぞれの役割を果たすんだって!」
WhiteCUL「ラベラーとフィードジェネレーターって、どんな役割?」
春日部つむぎ「ラベラーは、コンテンツに関する判断をストリームとして生成するんだって!例えば、この投稿はスパムですとか!」
春日部つむぎ「フィードジェネレーターは、カスタムフィードに含める投稿 ID のリストを返すんだ。」
WhiteCUL「カスタムフィード?」
春日部つむぎ「そう!ユーザーが自分の好みに合わせて作れるフィードのこと!例えば、猫の画像だけを集めたフィードとか、」
春日部つむぎ「特定のユーザーの投稿だけを集めたフィードとか!」
WhiteCUL「へぇー!」
春日部つむぎ「でね、ユーザーは、クライアントアプリでどのフィードとどのラベラーを使うかを選択できるんだって!」
春日部つむぎ「ラベラーの出力がアプリビューや PDS に流れて、フィルタリングとして機能するんだ。」
春日部つむぎ「フィードジェネレーターは、アプリビューとクライアントアプリの間に挟まって、おすすめを作るんだ。」
WhiteCUL「ユーザーが選べるのはいいことだね!」
春日部つむぎ「そう!でね、ラベラーとフィードジェネレーターのサービスをアプリビューから分離することには、いくつかの利点があるんだって!」
WhiteCUL「どんな利点?」
春日部つむぎ「まず、誰でもラベラーやフィードジェネレーターのサービスを実行できるから、」
春日部つむぎ「同じコンテンツについて異なる当事者が異なる判断を下すことができる多元的なエコシステムが可能になるんだって!」
春日部つむぎ「ユーザー、アプリビュー、PDS のオペレーターは、誰の判断を信頼するかを決定できて、」
春日部つむぎ「もし、現在のプロバイダーが期待に応えられなくなったら、簡単に別のラベリングやフィード生成サービスに切り替えることができるんだ!」
WhiteCUL「なるほどー!競争があって、好きなものを選べて、いろんな考えが共存できるんだね!」
春日部つむぎ「それに、代替アプリビュープロバイダーを作るのが容易になるんだって。」
春日部つむぎ「だって、どのアプリビューでも、どのラベラーやフィードジェネレーターからの出力でも利用できるから!」
春日部つむぎ「だから、各アプリビューが独自のコンテンツフィルタリング・インフラストラクチャを開発する必要がないんだって!」
春日部つむぎ「代替アプリビューの存在は、健全で分散化されたマーケットプレイスにとって重要なんだ!」
WhiteCUL「アプリビューをいちから全部作るのは大変だから、投稿をよりわける機能だけ分離したってことだね!」
WhiteCUL「でも、複数のアプリビューが存在するのがそんなに大事なんだね。」
春日部つむぎ「フィードジェネレーターは、ブルースカイのスターターキットを使って実装することもできるし、」
春日部つむぎ「Skyfeed などのサードパーティサービスを使って実装することもできるんだって!」
WhiteCUL「Skyfeed?」
春日部つむぎ「そう!Skyfeed は、フィードジェネレーターを簡単に作れるサービスなんだって!」
WhiteCUL「まとめると、ラベラーとフィードジェネレーターは、好ましいコンテンツと好ましくないコンテンツをよりわけるためのサーバーなんだね。」
WhiteCUL「そして、アプリビューがいくつもつくられるためには、この仕組みが不可欠だってことだね。よくわかったよ!つむぎちゃん、ありがとう!」
春日部つむぎ「どういたしましてー!」
13 わたしを証明する - ユーザー ID
WhiteCUL「ブルースカイのユーザー ID って、どんな仕組みになっているの?」
春日部つむぎ「ブルースカイのユーザー ID は、DNS ベースで、ホスティングやインデクシングとは分離されてるんだって!ちょっと難しいけど、」
春日部つむぎ「がんばって説明するね!」
WhiteCUL「うん、よろしくね!」
春日部つむぎ「まず、ドメイン名を持っている人なら誰でも、atproto ハンドルとしてサブドメインを発行できるんだって。」
春日部つむぎ「例えば、雪さんが「yukisan.com」っていうドメイン名を持っていたら、」
春日部つむぎ「「bluesky.yukisan.com」っていうサブドメインをブルースカイのハンドルとして使えるってこと!」
春日部つむぎ「しかも、DNS 以外のサービスを実行する必要はないんだって!」
WhiteCUL「へぇー!ドメイン名さえあれば、誰でもブルースカイのハンドルを作れるんだね!」
春日部つむぎ「そうなの!で、ハンドルは変更できるんだけど、すべてのブルースカイ/atproto アカウントには、」
春日部つむぎ「変更できない一意の識別子もあるんだって。それが、「did: 」っていうプレフィックスで始まる分散 ID、略して DID!」
WhiteCUL「DID?それって何?」
春日部つむぎ「DID は、ユーザーを一意に識別するための ID で、「did: 」で始まる URI なんだって。」
春日部つむぎ「例えば、「did: plc: なんとか」みたいな感じ!」
春日部つむぎ「DID は変更できないから、ユーザーがハンドルを変更しても、DID は変わらないんだって。」
春日部つむぎ「だから、DID を使えば、ユーザーを一意に識別できるってこと!」
WhiteCUL「なるほどー!システム向けの ID ってことだね。」
春日部つむぎ「でね、ブルースカイでは、ユーザーが DID やハンドルを変更しなくても、別の PDS に移行できるようにしたいんだって。」
春日部つむぎ「PDS って、前に説明したユーザーの個人データを保存するサーバーのことね!」
WhiteCUL「うん、覚えてる!」
春日部つむぎ「DID は、DID を DID ドキュメントに解決するためのメカニズムを提供するんだって。」
春日部つむぎ「DID ドキュメントは、その DID によって識別されるユーザーに関する情報を含む JSON ドキュメントなんだ。」
WhiteCUL「難しいね。どういうこと?」
春日部つむぎ「DID がわかれば、ドキュメントにアクセスできて、そのドキュメントを読めばユーザーに関する情報がわかるってこと!」
WhiteCUL「なるほど!」
春日部つむぎ「アットプロトでは、なにかするごとにリポジトリに署名するんだけど、」
春日部つむぎ「DID ドキュメントはそのための公開鍵を指定する役割があるんだ。」
春日部つむぎ「そして、ハンドルまたは PDS を変更するには、ユーザーはこの DID ドキュメントを書き変える必要があるんだ。」
WhiteCUL「たしか、公開鍵と署名があれば改ざんがあるかチェックできるんだったね。そして、ハンドルの話だね?」
春日部つむぎ「そう、ハンドルの所有権を証明するために、ユーザーは DID とドメイン名ハンドルの間に双方向リンクを持っている必要があるんだ。」
WhiteCUL「えーっと、ハンドルから DID へのリンクと、DID からハンドルへのリンクの 2 つがあるってこと?」
春日部つむぎ「そう!ハンドルから DID へのリンクは、そのドメイン名の DNSTXT レコードに DID を保存するか、」
春日部つむぎ「そのドメイン名の「/.well-known/」URL への HTTPS リクエストに応答して DID を返すことによって確立されるんだって。」
WhiteCUL「えーっと、ドメインの設定をいじって保存しておくか、サーバーを立ててファイルを置いておくかってこと?」
春日部つむぎ「そういうこと!雪さんえらい!」
WhiteCUL「えへへ!」
春日部つむぎ「で、DID からハンドルへのリンクは、DID が解決されたときに返される、」
春日部つむぎ「DID ドキュメントにハンドルを含めることによって確立されるんだって。」
春日部つむぎ「つまり、DID からハンドルを取得できるようにするってこと!」
WhiteCUL「ふむふむ。で、この双方向リンクは何のために必要なの?」
春日部つむぎ「アプリビューはこれらの双方向リンクを定期的にチェックして、いずれかが壊れている場合はハンドルを無効にするんだって。」
春日部つむぎ「つまり、なりすましを防ぐため!」
WhiteCUL「なりすまし?」
春日部つむぎ「そう!例えば、雪さんが google.com っていうドメイン名を持っていないのに、 @google.com っていう」
春日部つむぎ「ハンドルを使おうとしたとするじゃん?そしたら、アプリビューが双方向リンクをチェックして、」
春日部つむぎ「雪さんが google.com の所有者じゃないってことがバレて、ハンドルが使えなくなるってこと!」
WhiteCUL「なるほどー!双方向リンクのおかげで、なりすましができないようになってるんだね!」
春日部つむぎ「そうなの!アプリビューが正直で、DNS ポイズニング攻撃から保護するための対策を講じている場合なら、このアプローチで、」
春日部つむぎ「ユーザーは所有していないドメインになりすますことができなくなるんだって!DNSSEC を使用するとかね!」
WhiteCUL「えーと、DNS にうそを混ぜる攻撃から守られてれば安全ってことかな。」
WhiteCUL「ブルースカイはセキュリティにもしっかり気を配ってるってことだね!」
春日部つむぎ「そう!ブルースカイは、ユーザーが安心して使えるように、いろんな工夫を凝らしてるんだよ!」
WhiteCUL「まとめると、人間向けのハンドルとはほかに DID っていうシステム向けの ID があるんだったね。」
WhiteCUL「これに紐づいてるドキュメントを書き変えると、PDS を乗り換えたり、ハンドルを変えたりできる。」
WhiteCUL「そして、ハンドルに使うドメインは、なりすましができないんだったね!」
春日部つむぎ「よくできました!」
14 わたしをさがして - DID ドキュメントの解決
WhiteCUL「つむぎちゃん、DID ドキュメントってどうやってみつけるの?」
WhiteCUL「前回はハンドルから DID、DID から DID ドキュメントってつながってるって話だったよね?」
春日部つむぎ「まず、DID 仕様 では、DID を DID ドキュメントに解決するための具体的なメカニズムは決まってないんだって。」
春日部つむぎ「DID って「did: 」で始まって、その後に DID メソッドが来るんだけど、」
春日部つむぎ「DID メソッドの仕様によって DID ドキュメントを取得する方法が決まるんだって。」
WhiteCUL「DID メソッド?それってたくさんあるの?」
春日部つむぎ「そう!たくさんの DID メソッドが定義されていて、特定のブロックチェーンとか外部システムに依存してるものも多いんだって。」
WhiteCUL「そんなにたくさん種類があるんだ!ブルースカイは全部対応してるの?」
春日部つむぎ「いや、ブルースカイはできるだけシンプルにしたいから、」
春日部つむぎ「今は「did: web」と「did: plc」の 2 つの DID メソッドだけを受け入れてるんだって。」
WhiteCUL「ふーん。それで、その 2 つの DID メソッドはどうやって DID ドキュメントに解決されるの?」
春日部つむぎ「「did: web」メソッドはすごくシンプルで、「did: web: 」の後の部分はドメイン名になるの。」
春日部つむぎ「で、そのドメイン名の「/.well-known/」 URL に HTTPS リクエストを送ると、DID ドキュメントが取得できるんだって。」
WhiteCUL「へぇー!でも、それだとそのドメインのウェブホスティングプロバイダーとか、」
WhiteCUL「HTTPS リクエストを認証する TLS 証明書機関を信頼することになるよね?」
春日部つむぎ「そ、その通り!だから「did: web」ID は、ドメイン名ハンドルに似てるんだけど、DID は変更できない識別子だから、」
春日部つむぎ「名前を変更できないっていう違いがあるんだって。」
WhiteCUL「なるほどね!じゃあ、「did: web」はどんな人に向いてるのかな?」
春日部つむぎ「特定のドメイン名にすでに強く結びついている組織の ID に適してるんだって。例えば、企業とかね。」
WhiteCUL「じゃあ、私たちみたいな一般ユーザーは「did: plc」の方を使うってこと?」
春日部つむぎ「そう!ほとんどのユーザーにとって、「did: plc」の方が適切なんだって。「did: plc」は、」
春日部つむぎ「変更可能なハンドルとしてのみドメイン名を使用するからね。」
WhiteCUL「なるほどね!DID ドキュメントの解決、よくわかったよ!つむぎちゃん、ありがとう!」
春日部つむぎ「どういたしましてー!」
15 わたしをさがして 2 - DID PLC メソッド
WhiteCUL「つむぎちゃん、「did: plc」DID メソッドってどんな仕組みなの?」
春日部つむぎ「まず、ブルースカイでアカウント作ると、」
春日部つむぎ「デフォルトで「did: plc: うんたらかんたら」みたいな形式の DID が割り当てられるの。」
WhiteCUL「へー!「did: plc: 」の後の文字列は何の意味があるの?」
春日部つむぎ「実は、初期 DID ドキュメントの SHA256 ハッシュを 120 ビットに切り詰めて、」
春日部つむぎ「base32 でエンコードしたものが、あの文字列なんだって。」
WhiteCUL「ハッシュ?エンコード?ちょっと何言ってるかわかんないんだけど…」
春日部つむぎ「簡単に言うと、DID ドキュメントの内容に基づいて作られた、短い識別子みたいなもの!」
WhiteCUL「ふーん。で、この DID からどうやって DID ドキュメントを取得するの?」
春日部つむぎ「それが、「https: //plc.directory/」っていうサーバーにクエリを実行すると、」
春日部つむぎ「対応する DID ドキュメントに解決できるんだって。」
WhiteCUL「へぇー!そのサーバーは誰が運営してるの?」
春日部つむぎ「今はブルースカイ PBC が運営してるんだけど、」
春日部つむぎ「将来的には、PLC ディレクトリサービスを共同で提供する独立したオペレーターのコンソーシアムを設立する予定らしいよ。」
WhiteCUL「なるほどね。で、その PLC ディレクトリサーバーって、信頼できるものなの?」
春日部つむぎ「実は、PLCDID ドキュメントは自己証明型だから、あんまり信頼されてないんだって。」
春日部つむぎ「DNS ルートサーバーと似たような権威的な役割を果たすんだけどね。」
WhiteCUL「自己証明型?どういうこと?」
春日部つむぎ「つまり、DID ドキュメント自体が、自分が本物だってことを証明してるみたいな感じ!」
春日部つむぎ「もし DID ドキュメントが最初に作成されてから変更されてなかったら、」
春日部つむぎ「ハッシュを再計算することで、DID が DID ドキュメントに正しく解決されたことを簡単に確認できるんだって。」
WhiteCUL「なるほどね。でも、DID ドキュメントって変更されることもあるんじゃないの?」
春日部つむぎ「ディレクトリは、特定の DID のすべての DID ドキュメントバージョンを返すから、」
春日部つむぎ「誰でも署名のチェーンを確認できるんだって。」
春日部つむぎ「DID ドキュメントがちゃんと正しい順番で更新されてることを、公開鍵と署名を使って確認できるってこと!」
WhiteCUL「署名のチェーンを確認できるのか。でも、もしディレクトリサーバーが悪意のあるものだったら、」
WhiteCUL「DID ドキュメントを勝手に変更できちゃうんじゃないの?」
春日部つむぎ「それは大丈夫!ディレクトリサーバーが悪意のあるものであったとしても、DID ドキュメントを変更することはできないんだって。」
春日部つむぎ「応答から有効な DID ドキュメントバージョンを省略するか、まったく応答しないことしかできないの。」
WhiteCUL「なるほどね!でも、もし DID ドキュメントの履歴が分岐しちゃったらどうなるの?」
WhiteCUL「例えば、ある DID ドキュメントに対して正しく署名された 2 つの後継バージョンが存在する場合、」
WhiteCUL「どっちが本物かわかんなくなっちゃうよね?」
春日部つむぎ「確かに!DID ドキュメントの履歴にフォークが発生し、」
春日部つむぎ「ある DID ドキュメントに対して正しく署名された 2 つの後継バージョンが存在する場合、」
春日部つむぎ「ディレクトリサーバーはどちらのフォークを提供するかを選択できるんだって。」
WhiteCUL「うーむ。それはちょっと怖いなぁ…」
春日部つむぎ「だよねー。でも、そういう攻撃を軽減するために、PLC ディレクトリの将来のバージョンでは、」
春日部つむぎ「証明書の透明性に似た追加専用の透明性ログを使用することが予想されてるんだって。」
WhiteCUL「よかったー!」
WhiteCUL「まとめると、did:plc は、最初の DID ドキュメントをもとに作られた ID だから、」
WhiteCUL「最初の DID ドキュメントがあれば改ざんされてないかわかるんだね。」
WhiteCUL「そして、DID ドキュメントが変更されても、過去の DID ドキュメントと署名のチェーンがあるから、」
WhiteCUL「やっぱり改ざんされてないかわかるんだね!」
春日部つむぎ「その通り!よくできました!」
16 だいじなもの - 認証
WhiteCUL「つむぎちゃん、ブルースカイの認証って、どうやって行われるの?」
春日部つむぎ「ブルースカイでは、リポジトリの更新とか DID ドキュメントの更新とか、色々署名が必要なんだけど、」
春日部つむぎ「そのための暗号鍵ってのが超重要なの!」
WhiteCUL「暗号鍵?パスワードみたいなものだよね?」
春日部つむぎ「原理的には、この暗号鍵はユーザーのデバイス、例えばスマホとか PC に直接保管することもできるんだって。」
春日部つむぎ「そうすれば、サーバーに頼らなくてもいいから、セキュリティ的には最強じゃん?」
WhiteCUL「なるほどね!でも、ブルースカイはそうしてないんだよね?」
春日部つむぎ「そうなの。だって、ほとんどのユーザーにとって、手動で鍵を管理するのって、マジ無理ゲーじゃん?」
春日部つむぎ「鍵が漏洩したり、紛失したりするリスク高すぎだし!」
WhiteCUL「確かに…パスワード管理するだけでも大変なのに、暗号鍵なんて、絶対無理!」
春日部つむぎ「でしょ?だから、ブルースカイの PDS は、ユーザーに代わって署名鍵を保管してるんだって。」
春日部つむぎ「ユーザーは、いつものユーザー名とパスワードでホーム PDS にログインするだけ!」
WhiteCUL「それなら安心だね!いつものログインと同じなら、誰でも簡単に使えそう!」
春日部つむぎ「そう!ユーザーにとって、使いやすいのが一番だよね!それに、パスワード忘れた時とか、メールでリセットできるのも、」
春日部つむぎ「この方式のメリットなんだって。」
WhiteCUL「なるほどね!でも、PDS がユーザーを認証する方法って、色々あるんじゃないの?」
WhiteCUL「ブルースカイは、特定の方法を強制してるわけじゃないんだよね?」
春日部つむぎ「その通り!アットプロトコルは、PDS がユーザーを認証する方法については、特に何も決めてないの。」
春日部つむぎ「だから、他の PDS オペレーターは、ユーザー管理鍵を使うとか、もっと別の方法を自由に選べるんだって。」
WhiteCUL「いろんな認証方法があるはずだしね!」
17 ライバル登場!? - 関連研究
WhiteCUL「つむぎちゃん、ブルースカイって、他に似たような分散型 SNS ってあるの?」
春日部つむぎ「あるある!実は、ブルースカイ以外にも、いろんな分散型 SNS が開発されてるんだ!」
春日部つむぎ「大事なのは、完璧な SNS なんてないってこと!」
春日部つむぎ「システムによって、メリットとデメリットがあるから、どれが一番いいってわけじゃないの。」
WhiteCUL「なるほどね。ブルースカイは、どんな SNS なの?」
春日部つむぎ「ブルースカイは、使いやすいことを目指してるんだって!」
春日部つむぎ「例えば、世界中のユーザーと繋がれるし、モデレーションもしっかりしてる。」
春日部つむぎ「クライアントアプリも、軽くて使いやすいように設計されてるんだって!」
WhiteCUL「使いやすいのは、大事だよね!」
春日部つむぎ「でしょ?例えば、会話のスレッドも、モデレーションで削除されない限り、全部表示されるの!」
春日部つむぎ「他のサーバーに投稿された返信も、全部見れるってわけ!」
WhiteCUL「それは、便利だね!」
春日部つむぎ「でも、そのためには、インデックスを作るシステムが、だいぶ集中化されてるらしい。他の分散型 SNS と比べると特殊かも。」
WhiteCUL「集中化って、ちょっと心配…」
春日部つむぎ「インデックスを作る会社がブルースカイ以外にも色々出てくるかが論点だね。」
春日部つむぎ「出てきさえすれば、クライアントアプリは、どのインデックスを使うか、自由に選べるんだって!」
WhiteCUL「それなら安心だね!で、ブルースカイのチームは、2021 年に分散型 SNS のレビューを発表したんだよね?」
WhiteCUL「最近はどうなってるの?」
春日部つむぎ「最近の動向は、論文にまとめられてるんだけど、ここでは、共通のアイデアを持つプロジェクトをいくつか紹介するね!」
WhiteCUL「お願いしまーす!」
春日部つむぎ「例えば、Nostr って SNS は、ブルースカイと同じように、DNS ドメイン名をユーザー名として使うんだって!」
春日部つむぎ「Nostr は公開鍵暗号ベースの、強力な検閲耐性を目指した言論空間だよ!」
春日部つむぎ「サーバーにアイデンティティが紐づかないのが特徴!」
WhiteCUL「サーバーの存在が希薄なのか。攻めた SNS だね!」
春日部つむぎ「あと、アットプロト PDS は、Git リポジトリホスティング、GitHub とか GitLab ね、とか、」
春日部つむぎ「Solid Pods に似てるんだって!サービスとデータを分離する思想だね!」
WhiteCUL「なんか、色々共通点があるんだね!互いを真似することもあるのかな?」
春日部つむぎ「実はよくあるんだ。より似通ったアプローチに収れんしていくこともあるかもね!」
18 船乗りの SNS - スカトルバット
WhiteCUL「つむぎちゃん、分散型 SNS って色々あるって言ってたけど、Scuttlebutt っていうのもあるんだって?」
春日部つむぎ「Scuttlebutt ね!これは船乗りの人がオフラインでも SNS したくて作ったやつなんだ!」
春日部つむぎ「ピアツーピアっていう仕組みで動いてて、サーバーを介さずに、ユーザー同士が直接データをやり取りするんだって!」
WhiteCUL「サーバーがないって、どういうこと?」
春日部つむぎ「うーん、難しいよね。例えば、普通の SNS だと、SNS のサーバーにメッセージが保存されて、」
春日部つむぎ「それを相手に見せるって感じじゃん?」
WhiteCUL「うんうん。」
春日部つむぎ「でも、スカトルバットは、サーバーがないから、ユーザーのデバイス同士で直接メッセージをやり取りするの!」
春日部つむぎ「データの主導権をだれにも奪われないの!」
WhiteCUL「それはすごいね!でも、サーバーがないと、データはどこに保存されるの?」
春日部つむぎ「それが、Scuttlebutt を使う人のデバイスに保存されるんだって!だから、自分のデータは自分で管理するって感じかな。」
WhiteCUL「なるほどね〜。で、Scuttlebutt で有名なアプリってあるの?」
春日部つむぎ「Manyverse っていうアプリが有名みたい。」
春日部つむぎ「Manyverse は、Scuttlebutt のプロトコルを使って作られた SNS アプリなんだって。」
WhiteCUL「Manyverse って、どんなアプリなの?」
春日部つむぎ「Manyverse は、基本的には、フォローしてる人の投稿が時系列で見れる普通の SNS アプリなんだけど、」
春日部つむぎ「オフラインでも使えるっていう特徴があるんだって。」
WhiteCUL「そういえば、オフラインでも使えるって言ってたね。どういうこと?」
春日部つむぎ「Manyverse は、パブっていう特別なサーバーを使うことで、オフラインのユーザーからのメッセージも保存できるんだって!」
春日部つむぎ「だから、電波が届かない場所でも、SNS を楽しめるってわけ!」
WhiteCUL「へぇー!それは便利だね!でも、Scuttlebutt って、なんかちょっと不便なところもあるって聞いたんだけど…。」
春日部つむぎ「そうなんだよね。Scuttlebutt は、ユーザー ID がデバイスに紐付けられてるから、デバイスを変えると、」
春日部つむぎ「アカウントが使えなくなっちゃうこともあるんだって!」
WhiteCUL「それは困るね。ブルースカイは、ユーザー名とパスワードでログインできるから、その点は安心だね!」
春日部つむぎ「ブルースカイは、そういう不便な点を解消してるんだよね。」
春日部つむぎ「Scuttlebutt は、プライバシー重視で、セキュリティも高いし、通信が不安定でも使えるんだけど、」
春日部つむぎ「使いやすさは、ブルースカイの方がいいかもね。」
WhiteCUL「なるほどね〜。あたりまえだけど、人によって必要なものは違うんだね!」
19 ブロックチェーンは万能薬じゃない? - ファーキャスターとブロックチェーンベースのシステム
WhiteCUL「つむぎちゃん、Farcaster っていう SNS も気になるんだけど。」
春日部つむぎ「Farcaster は、ブルースカイと同じ分散型 SNS なんだけど、ちょっと違うところもあるんだ。」
WhiteCUL「へー、どんなところが違うの?」
春日部つむぎ「まず、Farcaster の仕組みは、ブルースカイと似てる部分が多いの。」
春日部つむぎ「ハブっていう、ネットワーク全体の情報を保存するサーバーがあるんだけど、」
春日部つむぎ「これはブルースカイのリレーみたいなものなんだって。」
WhiteCUL「なるほどね。ハブは、リレーと同じような役割をしてるんだね。」
春日部つむぎ「そうなの!で、Farcaster にも、ブルースカイのアプリビューみたいな、ホスト型のアプリサーバーがあるんだって。」
WhiteCUL「ふむふむ。ユーザー ID とかは、どうなってるの?」
春日部つむぎ「Farcaster のユーザー ID は、ブルースカイの DID みたいな感じで、公開鍵に紐付けられてるんだって。」
WhiteCUL「公開鍵か。暗号化したり、署名と組み合わせて改ざんをチェックしたりできるやつだね。」
春日部つむぎ「そうそう!で、公開鍵を紐付けるのに、スマートコントラクトっていう技術が使われてるんだけど、」
春日部つむぎ「これは、ブルースカイの PLC ディレクトリと同じような役割をしてるんだって。」
WhiteCUL「スマートコントラクト?」
春日部つむぎ「簡単に言うと、自動で契約を実行してくれるプログラムみたいなもの!」
春日部つむぎ「ブロックチェーン上で動いてるから、改ざんされにくいっていう特徴があるの。」
WhiteCUL「すごいね!ブロックチェーンって、仮想通貨とかで使われてるやつだよね?」
春日部つむぎ「そうなの!Farcaster は、ユーザー名にも、ブロックチェーン技術が使われてるんだって。」
春日部つむぎ「ENS 名っていう、イーサリアムのネームサービスを使ったり、」
春日部つむぎ「Farcaster が管理してる名前空間を使ったりできるんだって。」
春日部つむぎ「ブルースカイの「.bsky.social」サブドメインみたいな感じかな。」
WhiteCUL「ふむふむ。ところで、Farcaster とブルースカイの大きな違いって、何かあるの?」
春日部つむぎ「実は、Farcaster には、ブルースカイの PDS みたいなものがないんだって!」
WhiteCUL「PDS がない…?じゃあ、ユーザーのデータはどこに保存されるの?」
春日部つむぎ「Farcaster の場合、クライアントアプリが、署名されたメッセージを直接ハブに送信するんだって。」
WhiteCUL「直接ハブに?ブルースカイみたいに、PDS を介さないんだね。」
春日部つむぎ「そうなの。で、ハブ同士が、ゴシッププロトコルっていうのを使って、メッセージを同期させてるんだって。」
WhiteCUL「ゴシッププロトコル?」
春日部つむぎ「これは噂話みたいに、情報を拡散させていく仕組みみたいなもの!」
WhiteCUL「なるほど。でも、Farcaster って、ブロックチェーン技術を結構使ってるみたいだけど、何か問題はないの?」
春日部つむぎ「実は、ブロックチェーンをたくさん使うと、コストが高くなっちゃうっていう問題があるんだって。」
WhiteCUL「コスト?具体的に言うと?」
春日部つむぎ「例えば、Lens プロトコルっていう、Farcaster よりももっとブロックチェーンに依存してる SNS があるんだけど、」
春日部つむぎ「これは、投稿やフォローといった情報を、Polygon っていうブロックチェーンに保存してるんだって。」
WhiteCUL「Polygon?それは、どんなブロックチェーンなの?」
春日部つむぎ「Polygon は、プルーフオブステークっていう仕組みを採用してるブロックチェーンなんだけど、」
春日部つむぎ「簡単に言うと、たくさんの人が参加すればするほど、セキュリティが強くなるっていう特徴があるの。」
WhiteCUL「ふむふむ。でも、それだと、コストが高くなっちゃうの?」
春日部つむぎ「そうなの!ブロックチェーンに情報をたくさん保存すると、処理に時間がかかったり、手数料が高くなったりするんだって。」
WhiteCUL「なるほどね。ブロックチェーンは、万能薬じゃないんだね。」
春日部つむぎ「そうなの!ブルースカイは、Farcaster や Lens みたいに、暗号通貨に依存しないっていうのが、特徴の一つなんだって。」
WhiteCUL「暗号通貨に依存しない?それって、どういうこと?」
春日部つむぎ「Farcaster の場合、ユーザーは、公開鍵を登録したり、データを保存したりするのに、」
春日部つむぎ「イーサリアムっていう暗号通貨で支払わなきゃいけないんだって。」
WhiteCUL「なるほど!ブルースカイは、お金がかからないから、ありがたいね!」
春日部つむぎ「でしょ?ブロックチェーンはすごい技術だけど、使い方を間違えると、コストがかさんだり、使いにくくなったりすることもあるから、」
春日部つむぎ「注意が必要なんだって!」
20 いちばんの老舗 - ActivityPub と Mastodon
WhiteCUL「つむぎちゃん、ActivityPub っていうのが凄く使われてるって聞いたんだけど、どういうものなの?」
春日部つむぎ「まず、ActivityPub は W3C っていうところが広めてるソーシャルネットワーキングの標準規格なんだよ。」
春日部つむぎ「で、マストドンっていうのが、ActivityPub を使った一番有名なソフトウェアってわけ。」
WhiteCUL「ふむふむ。標準規格ってことは、誰でもマストドンみたいなサービスを作れるってことだね?」
春日部つむぎ「そうそう!例えば、誰でもサーバーを立てられるから、いろんなコミュニティが作れるし、中央集権的な管理から解放されるんだ!」
WhiteCUL「確かに、それは魅力的だね!ところで、ActivityPub はどうやって動いてるの?」
春日部つむぎ「例えば、雪さんがあーしをフォローしたら、雪さんのサーバーが ActivityPub を使って、」
春日部つむぎ「あーしのサーバーにこの子の新しい投稿があったら教えてね!ってお願いするんだよ。」
WhiteCUL「へー、メールみたい!」
春日部つむぎ「でも、マストドンはサーバー管理者にめっちゃ権限があるのが特徴なんだよね。」
春日部つむぎ「例えば、他のサーバーをブロックして、そこのユーザーとのやり取りを全部遮断できちゃう。」
WhiteCUL「えー、それはちょっと怖いね。気に入らないサーバーがあったら、管理者の一存で排除できちゃうってこと?」
春日部つむぎ「うん、そういうこと。だから、マストドンだとサーバー選びが超重要で、引っ越しも大変なんだよ。」
春日部つむぎ「ユーザー名が変わっちゃうし、投稿を新しいサーバーに移動できなかったりするし。」
春日部つむぎ「しかも、古いサーバーが使えなくなっちゃったら、友達との繋がりも全部消えちゃう可能性があるんだ。」
WhiteCUL「それは困るね…。バックアップとか取れないのかな?」
春日部つむぎ「セルフホスティングっていう方法なら、リスクを減らせるみたい。」
春日部つむぎ「でも、専門知識が必要だし、お金もかかるんだよね。それに、通知を転送し続けると、」
春日部つむぎ「結局は各サーバーがネットワーク全体のコピーを持つことになっちゃって、やっぱりサーバーの負担が大きくなっちゃう。」
WhiteCUL「うーん、なるほど。完璧なシステムってわけじゃないんだね。」
春日部つむぎ「そう、銀の弾丸はないんだよ。こういう欠点を反省した ブルースカイだって、まだ全然発展途上で完璧じゃないんだ。」
21 まとめ - 結論
WhiteCUL「ブルースカイは、一言で言うと、システムの全部をいろんな会社がバラバラに運営できるように作られてる仕組みだったね。」
WhiteCUL「だから、ユーザーは会社を選んで、簡単に乗り換えられる! ユーザー名も変わらないし、投稿とかお友達リストも消えない!」
WhiteCUL「例えば、アプリを作る会社、ユーザーデータの保管場所を提供する会社、ネットワーク全体を整理する会社、モデレーションする会社、」
WhiteCUL「全部バラバラで OK! しかも、全部ちゃんと連携して動く。」
WhiteCUL「いまはブルースカイ社がほとんどを運営している。でも、もしその会社が潰れちゃったり、ユーザーから嫌われちゃったりしても、」
WhiteCUL「他の会社が同じデータとルールを使ってサービスを続けられるから、分散化されてる、といえるかもしれない。」
WhiteCUL「ブルースカイは、嫌がらせとかフェイクニュースとか、困ったコンテンツにもちゃんと対応するって考え方が基本。」
WhiteCUL「だから、モデレーションは超重要!」
WhiteCUL「それに、このオープンな仕組みのおかげで、いろんな考えを持った人が、自分に合った会社を選んで、でもみんなと繋がっていられる、」
WhiteCUL「多様性のあるシステムが作れる。」
春日部つむぎ「なんか、これからのソーシャルメディアって感じがするでしょ?」
春日部つむぎ「まだまだ発展途上だけど、これからもっと進化して、もっと面白い世界になっていくと思うよ!」