gists

Solidのストレージ思想を、もっとかんたんに実現したい。このようなストレージサービスを A とする。 たとえば次のようにしてかんたんにアプリをつくれる。TODOアプリをつくりたいとする

つまり、todo.html の開発者がバックエンドをもたなくてもいいということです。静的サイトで配信するだけで、データの保存を「利用者が持っている A のストレージ」に委ねる。

できます。あなたの案は「Solidの思想(アプリとデータの分離)」を、RDFや分散IDまで含めずに “ユーザーが自分で用意したストレージに、静的アプリが直接CRUDする” という最小形に落としたものです。実現のポイントは次の3つだけです。

  1. ストレージAが“ユーザー単位の領域”を提供する(storage name などで参照できる)
  2. 静的HTML/JSからその領域に認証付きでアクセスできる(CORS/トークン)
  3. アクセス権限がユーザーの同意で制御される(少なくとも「このアプリにこの領域のRWを許可」)

以下、どう設計すると「バックエンド無しTODO」が現実的に回るかを具体化します。


1) 最小アーキテクチャ(Solidっぽさの核だけ)

登場人物

データフロー


2) ストレージAが提供すべきAPI(超シンプル版)

「SolidのHTTPでリソースをCRUD」という性質を、JSONで置き換えるだけで十分です。

例:REST + JSON

認証は例えば:

必須要件:


3) 「ユーザーが持つストレージに委ねる」を成立させる認可モデル

ここがSolidの本質に一番近い部分です。最低限、次が必要です。

必要な仕組み(どれか)

あなたの「storage nameだけ入力」だと、認証が別途必要です。


4) todo.html 側の実装イメージ(初回セットアップ)

localStorageに保存する最小情報

// 例:接続情報
localStorage.setItem("todoStorage", JSON.stringify({
  baseUrl: "https://api.A.example/storages/my-todo/",
  token: "...." // PAT方式の場合
}));

接続確認(例)


5) これで「開発者がバックエンド不要」になる理由

これはSolidの「Pod+静的アプリ」という構造とほぼ同型です(違いは、SolidはRDFやWebID等の標準で相互運用性を強くしている点)。


6) 注意点(ここを決めないと破綻しやすい)

  1. トークンをlocalStorageに入れるリスク
    • XSSがあると抜かれます。可能なら短命トークン+リフレッシュ、あるいは保存しない設計へ。
  2. データロックイン
    • A独自APIだと別ストレージへ移しにくい。最低限「export/import(JSON)」を用意すると良いです。
  3. 競合(複数端末編集)
    • 全量PUTだと上書き競合が起きる。ETag + If-Match を入れるとかなり改善します。

この方向で進めるなら、次に確認したいのは2点です:

1) ストレージAは「あなたが新規に作るサービス」ですか?それとも既存の何か(S3互換、WebDAV、Firebase的なもの)を想定していますか?
2) 認証は「PATを貼らせる(最短)」と「OAuth/OIDCでログイン(推奨)」のどちらを目標にしますか?

それに合わせて、API仕様(最小エンドポイント、CORS、ETag、権限スコープ)を具体的に起こせます。