Osync I/O

野良プログラマーおしんこのブログ

集中・分散型 SNS が抱える課題を普通の Web で解決する

Last committed
Posted

集中型 (中央集権型) SNS とは何か?

Twitter や Facebook, Instagram などの一般的なクライアント・サーバー型 Web サービスとしての SNS のことです。つまり、これらはサ終 (サービス終了) でデータが消えます。

特に Twitter は、昨年 10/27 に買収された結果、API の多くが有償化されました。Basic 月 $100 のサブスクを利用しないと、自分のデータすら満足にダウンロードできません。

このように、運営のさじ加減一つで利便性が決まるのが、中央集権型 SNS の特徴です。

中央集権型 SNS が抱えるその他の課題:

  • プライバシーとデータの所有権: 一箇所に集められた大量のユーザーデータは、データ漏洩や不適切な利用のリスクが高まる。
  • 検閲と言論の自由: 一つの組織が全体を管理するため、その組織の方針によっては検閲が行われ、言論の自由が制限される可能性がある。
  • 市場競争とイノベーションの制限: 一つの大規模なプラットフォームが支配的になると、新規参入の障壁が高くなり、イノベーションと多様性が阻害される可能性がある。

分散型 SNS とは何か?

分散型 SNS は、中央集権型 SNS が抱える課題に対する一つの解決策として注目されており、Mastodon や Nostr, Bluesky などが有名です。

分散型 SNS 間の本質的な違いは、そのオープンなプロトコルの種類にあります。現状では、Mastodon の ActivityPub や OStatus などの 連合型 (Fediverse), Nostr や Blusky の AT Protocol などのクライアント・リレー型に大別されます。

クライアント プロトコル 種類
Mastodon ActivityPub, OStatus (Ver 2.x.x まで) 連合型 (いわゆる Fediverse)
Damus Nostr クライアント・リレー型
Bluesky AT Protocol 連合 + クライアント・リレー型

ただし、Mastodon については、連合型、つまり「そのサーバーは、特定のサーバー群に対してのみデータを連携する」という ActivityPub の機能上の特徴から分散型と呼ばれる SNS です。サーバー (Mastodon ではインスタンスと呼ばれる) 間の信頼関係はまちまちだし、最も大きな懸念は、個々のユーザー ID が特定のドメインに紐づいていることでしょう。そのサーバーの運営を放棄されたら何もできません。この辺りは Twitter のような大企業集中型の方が遥かに耐性が高く、まだマシです。

Nostr については、アカウント作成時に作る公開鍵一つあればブラウジングアプリ間の移行は可能だし、秘密鍵があればプロフィール情報の変更もテキストの投稿も他のアプリでできます。しかし、データの所有権に関しては疑問です。例えば、誤って自分や他人の個人情報を含む投稿をしてしまった場合、その投稿を削除したとしても、全てのリレーサーバー (ノード) でそのデータを物理的に削除してくれる保証はありません。投稿が表面上消えて、非表示になったとしても、どこかのノード内にデータが存在している可能性があります。赤の他人に見られたくない個人情報ですから、何かの拍子に表に出ては困ります。これは少し極端で潔癖過ぎるかもしれませんが、Twitter のような大企業であれば比較的気にならないはずです。ログとして存在するかもしれませんが、集中型 SNS であれば、その他のサーバーに散らばりにくいです。少なくとも積極的には散らすことはないです。

普通の Web を使った解決法の提案

集中・分散型のいずれの形式も不足ということです。そもそも「中央集権型 (集中型)」や「分散型 (非中央集権型)」というのは、ビットコインやイーサリアムなど、ブロックチェーンの文脈で話題になった概念であり、Web3 とかいう新手の詐欺もチラつき、控えめにいってキモいです。

そこで、普通に OGP (Open Graph Protocol) 使って解決すればいいんでね?というのが個人的な感想であり、わしからの提案です。

次のようなページがあったとして:

<!DOCTYPE html>
<html>
  <meta property="og:url" content="https://osync.io/posts/sns-20230822">
  <meta property="og:title" content="集中・分散型 SNS が抱える課題を普通の Web で解決する">
  <meta property="og:description" content="集中型 (中央集権型) SNS とは何か?Twitter や Facebook, Instagram などの一般的な...">
  <meta property="og:image" content="https://osync.io/images/headers/twitter.jpg">
  <meta name=twitter:card content="summary_large_image">
  ...

og:url にある通り https://osync.io/posts/sns-20230822 でこのページを公開します。そしてこの URL をそのまま SNS に投稿するだけです。

これでこのデータは完全に自分のものだし、消したかったらページごと消せばいいのです。 急にアホな車屋に API 閉じられても関係なし、データが散らばることもありません。

いかがでしょうか?