Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ブラウザストレージを活用した、複数アプリをまたぐ永続化とリアクティブな同期

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for 永田哲平 永田哲平
September 21, 2025
1.6k

 ブラウザストレージを活用した、複数アプリをまたぐ永続化とリアクティブな同期

Avatar for 永田哲平

永田哲平

September 21, 2025
Tweet

More Decks by 永田哲平

Transcript

  1. 1. ブラウザストレージについて 2. Alive Studio のブラウザストレージ活⽤について a. OBS 内での動作 b.

    localStorage+イベントでの同期 3. 注意点 a. セキュリティ b. イベントハンドラの氾濫と抽象化 c. 型安全性 4. まとめ ⽬次 3 ブラウザストレージを活⽤した、複数アプリをまたぐ永続化とリアクティブな同期
  2. localStorage ・ブラウザに key/value形式でデータを永続的に保存 できる仕組み。 ・保存容量は Cookie より大きい(ブラウザによって数MB〜10MB程度) ・ブラウザを閉じてもデータは残る(ユーザーが削除するかブラウザのストレージをクリアしない限り保 持)。 ・同一オリジン

    (同じスキーム(https)、ホスト名(hoge.com)、ポート(:431))で共有される ブラウザストレージを活⽤した、複数アプリをまたぐ永続化とリアクティブな同期 https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
  3. ブラウザストレージを活⽤した、複数アプリをまたぐ永続化とリアクティブな同期 1.セキュリティ https://raxis.com/blog/dangers-of-storing-sensitive-data-in-web-storage/ ・localStorage は任意のスクリプトから参照可能 → XSS による情報漏洩のリスク ・localStorage の値はユーザー側で改変可能

    → データの完全性を保証できないリスク そもそも機密性の高いデータは localStorage に保存しない。 「消えても問題ない情報」「漏洩しても問題ない情報」のみ保存するようにする。 ⭐サーバー側で使用するときは保存された localStorageの値は基本「信用しない」。 サーバー側で検証/認証を行う。
  4. ブラウザストレージを活⽤した、複数アプリをまたぐ永続化とリアクティブな同期 まとめ localStorage と storage イベントを組み合わせると、クロスタブ間でリアクティブな同期ができる ・しかし利用には セキュリティ・型安全性・保守性 に注意が必要 localStorage

    の利用指針 ・機密性の高い情報は保存しない ・保存するのは「消えても困らない」「漏洩しても困らない」情報だけ ・サーバー側で扱う時には検証/認証 実装上 ・イベントハンドラの増殖 → 抽象化・依存性を外から注入することでテストを書く ・型安全性 → Zod 等で 安全にparse + validate