Solidのストレージ思想を、もっとかんたんに実現したい。このようなストレージサービスを A とする。 たとえば次のようにしてかんたんにアプリをつくれる。TODOアプリをつくりたいとする
つまり、todo.html の開発者がバックエンドをもたなくてもいいということです。静的サイトで配信するだけで、データの保存を「利用者が持っている A のストレージ」に委ねる。
できます。あなたの案は「Solidの思想(アプリとデータの分離)」を、RDFや分散IDまで含めずに “ユーザーが自分で用意したストレージに、静的アプリが直接CRUDする” という最小形に落としたものです。実現のポイントは次の3つだけです。
以下、どう設計すると「バックエンド無しTODO」が現実的に回るかを具体化します。
todo.html(GitHub Pages等の静的ホスティング)storageName = my-todo)storageName を入力todo.html が https://api.A.example/storages/{storageName} へ接続確認todo.html は AのAPIへ直接 GET/PUT/PATCH/DELETE してTODOを読み書き「SolidのHTTPでリソースをCRUD」という性質を、JSONで置き換えるだけで十分です。
GET /storages/{name}/todo.json 取得PUT /storages/{name}/todo.json 全量保存(楽)PATCH /storages/{name}/todo.json 差分更新(任意)DELETE /storages/{name}/todo.json 削除認証は例えば:
Authorization: Bearer <token>必須要件:
ここがSolidの本質に一番近い部分です。最低限、次が必要です。
todo.html がAにリダイレクトしてログイン→トークン取得あなたの「storage nameだけ入力」だと、認証が別途必要です。
baseUrl(例:https://api.A.example/storages/my-todo/)auth(トークン or トークン取得に必要な情報)// 例:接続情報
localStorage.setItem("todoStorage", JSON.stringify({
baseUrl: "https://api.A.example/storages/my-todo/",
token: "...." // PAT方式の場合
}));
GET {baseUrl}todo.json が 200/404 で返るこれはSolidの「Pod+静的アプリ」という構造とほぼ同型です(違いは、SolidはRDFやWebID等の標準で相互運用性を強くしている点)。
ETag + If-Match を入れるとかなり改善します。この方向で進めるなら、次に確認したいのは2点です:
1) ストレージAは「あなたが新規に作るサービス」ですか?それとも既存の何か(S3互換、WebDAV、Firebase的なもの)を想定していますか?
2) 認証は「PATを貼らせる(最短)」と「OAuth/OIDCでログイン(推奨)」のどちらを目標にしますか?
それに合わせて、API仕様(最小エンドポイント、CORS、ETag、権限スコープ)を具体的に起こせます。