世界を動かす技術を、日本語で。

ソーシャルファイルシステム

2026年1月18日原文(overreacted.io)

概要

  • ファイル は個人コンピューティングの基本概念
  • ソーシャルアプリ では従来ファイルの概念は希薄
  • ATプロトコル により、ソーシャルデータもファイルのように扱う発想
  • レコード という単位で投稿やプロフィールを管理
  • 分散型ソーシャルファイルシステム の可能性

ファイルの素晴らしさ

  • ファイル はアプリの外に存在し、ユーザー自身が所有・管理
  • アプリはファイルを 読み書き するが、所有権は持たない
  • ファイル形式 はアプリ間の共通言語として機能
    • 例:SVGはオープン仕様、複数アプリで互換性
    • .doc のような独自形式もリバースエンジニアリングで拡張可能
  • ツールと作品の分離 という直感的なモデル
    • 原稿はタイプライターに、写真はカメラに縛られない
  • アプリ非依存のストレージ (ファイルシステム)による自由
  • ファイルは 複数アプリ で活用・変換・再利用可能
  • アプリが消えてもファイルは残る、新しいアプリでも利用可能

ソーシャルアプリとファイルの関係

  • InstagramやReddit等の ソーシャルアプリ は従来「ファイル」概念が希薄
  • 投稿やフォロー、投票などは ファイル として扱われていない
  • もし「 everything folder」として全てのソーシャル活動をファイル化できたら?
    • 投稿、フォロー、いいね等が 個人フォルダ にファイルとして保存
    • フォルダが データの唯一のソース となり、アプリはそれを反映
    • フォルダの変更はアプリにも即時反映
  • 分散型ソーシャルファイルシステム の構想
    • 各ユーザーのフォルダがネットワーク全体で共有
    • アプリは キャッシュ やビューとして機能
  • ATプロトコル はこの仕組みを実現
    • Bluesky, Leaflet, Tangled, Semble, Wisp等が実例

レコード:ソーシャルファイルシステムの単位

  • ソーシャル投稿を JSON形式のレコード として保存
    • 例:{ text: 'no', createdAt: '2008-09-15T17:25:00.000Z' }
  • 著者情報やカウント系データ はレコードから分離
    • 著者のプロフィールは別レコード(例:profiles/self)
    • 返信数やいいね数は他ユーザーのアクションから派生
  • レコード名 はタイムスタンプ+ランダムID等で一意化
    • posts/34qye3wows2c5 など
    • 並び替えでタイムライン表示も容易

レキシコン:データ形式の厳密な定義

  • レコードの 形式や制約 を明確に定義する必要性
  • TypeScript型だけでは 制約表現が不十分
    • 例:「textは最大300グラフェム」「createdAtは日時形式」
  • 独自スキーマ言語 (レキシコン)で柔軟に記述
    • 例:
      {
        "defs": {
          "main": {
            "type": "record",
            "key": "tid",
            "record": {
              "type": "object",
              "required": ["text", "createdAt"],
              "properties": {
                "text": { "type": "string", "maxGraphemes": 300 },
                "createdAt": { "type": "string", "format": "datetime" }
              }
            }
          }
        }
      }
      
  • レキシコン により、アプリ間で一貫したデータ管理が可能

まとめ:分散型ソーシャルファイルシステムの未来

  • 個人のデータ主権 を取り戻す新しいソーシャルの形
  • アプリは ファイルのビュー や編集ツールとして機能
  • データの移植性・相互運用性 が飛躍的に向上
  • ATプロトコル の普及により、ソーシャル活動も「ファイル」として扱う時代へ
  • 既存のソーシャルアプリの枠を超えた 新しい可能性

Hackerたちの意見

何回この記事を読んで楽しんだか覚えてないけど、いつもダンが書いてるって気づくのは嬉しいよね ;)

ありがとう!

これはATのいいイントロだったけど、もうちょっと短くても良かったかな。全体的にちょっと過剰に設計されてる気がするし、関心の分離が悪いね。デザインをフラットにして、すべてをレコードに埋め込む方がスマートだと思う。で、他のレイヤーはその上に構築すればいい。すべてのレコードには著者の公開鍵(または署名)を含めるべきだよね。必要なものには、そのハッシュか、ハッシュ+著者の公開鍵を使えばいい。この方法で、変なファイルシステムの階層を完全に排除できる。あとは、レコードに埋め込むだけ。レキシコンやコレクションは、単なるレコードのフィールドだし。ハッシュを逆引きして何かを見つけるのは、また別の問題だね。

そうだね。SSBとANProtoはこれをやってる。実際、公開鍵+署名のハッシュにリンクするだけで、タイムスタンプ付きのハッシュリンクがレコードに開くことができる。この方法だと、すべてがハッシュ検索になるから、すべてのノードがデータを保存できるんだ。

あなたの提案がよくわからないんだけど、私の例(Twitterの投稿)を使って、あなたのシステムでどう保存されるかを示しているの?

この記事は詳細が多すぎて、要点を伝えるのにそこまで必要ないと思う。多くは付録に移せたんじゃないかな?でも、いいメタファーだよね。誰かがPDS用のユーザーフレンドリーなファイルブラウザを書いて、自分で見られるようにすべきだと思う。あと、静的ファイルを提供するウェブサーバーのように、BlueskyのPDSはパブリックファイルシステムなんだ。さらに、Gitリポジトリのように複製されるように設計されてる。データの複製はBlueskyの仕組みの一部だし、複製は自分のコントロール外だよ。明るい面としては、自動バックアップってことだね。だから、パブリックなgitリポジトリと同じように、そこに置いたものは公開されてインデックスされるってことに慣れておくべきだよ。ランダムな人が検索で見つける可能性もあるし、AIがそれを学習するのは避けられない。自分のPDSからは削除できるけど、実質的には永久記録に残るから、その点は覚悟しておいた方がいい。後悔するようなものは置かないようにしよう。できるだけ本名と関係ないエイリアスを選んで、良いオペレーションセキュリティを心がけるのがベストだけど、危険も伴うよね。

それがoverreacted.ioの投稿の一般的なスタイルだと思う。

誰かがPDS用のユーザーフレンドリーなファイルブラウザを書いて、自分で見られるようにすべきだと思う。https://pdsls.dev/はこの目的に役立つと思うよ :) いいアプリだし、オープンソースで、完全にクライアントサイドだよ。編集: あ、pdslsは記事の最後にすでに言及されてるね。

僕の書く目的は、頭の中にあるものをその形のまま外に出すことなんだ。もし役に立つけど長すぎるなら、他の人が価値を見出して、アレンジしたりするのを信じてる。 > 誰かがPDS用のユーザーフレンドリーなファイルブラウザを書いて、自分で見られるようにすべきだと思う。記事の最後にデモをいくつかやってるから、そこに飛んでみてね: https://overreacted.io/a-social-filesystem/#up-in-the-atmosp.... そこではファイルマネージャーを提案するよ: > https://pdsls.devを開いてみて。 [...] 本当に昔のファイルマネージャーみたいだけど、ソーシャルな要素があるって感じだね。そう、パラダイムは基本的に「みんながスクレイパー」ってことだよ。

remoteStorageに似てるね [0]。あれはどうなったんだろう? [0]: https://remotestorage.io/

これ、私には似てないな。remoteStorageはユーザー間でデータを集約しないアプリ向けのように見える。ATは集約を解決しようとしてるけど、多くのユーザーが自分のデータを持っていて、表示したいのはそのデータから計算されたものだよね。ソーシャルメディアやHN自体のように。

remoteStorageはまだ時々アップデートされてるよ。 https://solidproject.org は、ティム・バーナーズ=リーが支援している、やや新しい似たプロジェクトだね。(独自の問題もあるけど。)私はこれらのプロジェクトはプライベートデータには比較的うまく機能していると思うけど、パブリックデータはちょっと awkward だね。ATProtoはその逆で、パブリックデータを実現するためのインフラがたくさんあるけど、プライベートデータはまだちょっと awkward だ。でも、人気があるから、もしかしたらその問題を解決するチャンスが大きいかも?それとも、Blueskyはそのための独自の拡張を持っていて、VCのプレッシャーが高まるにつれて、どんどんその部分を閉じていくかもしれない。とはいえ、Blueskyについてはあまり知らないから、この推測は全部無意味かもしれない。

Hacker Newsで議論の続きを見る