データはどこに保存される?DB・ブラウザ・Cookieの違い

入力したデータが実際どこに保存されているのか——DB・ブラウザのストレージ・Cookieの違いと、自分のアプリの保存先を確かめる方法をまとめます。

動画で見る

結論から

「データを保存する」と言っても、保存先は1つではありません。代表的なのは次の3つで、それぞれ「どこに」「いつまで」残るかが違います。

  • データベース(DB):サーバー側にある正式な保管庫。別の端末からでも、ブラウザを消しても、データは残る
  • ブラウザのストレージ(localStorage など):その端末・そのブラウザの中にだけ残る。他の人からも、別の端末からも見えない
  • Cookie:ログイン状態などを覚えておくための小さなデータ(上限およそ4KB)。ブラウザとサーバーの間で毎回自動でやり取りされる

AIツールで作ったアプリが「保存できているように見える」場合でも、実際にどこへ保存しているかは、見た目では分かりません。

3つの保存場所の違い

同じ「保存」でも、残り方はまったく違う
  • DBに保存:ブラウザを閉じても、スマホなど別の端末から見ても、データは残っている。会員登録・問い合わせ・投稿など「複数の人が使う」「消えたら困る」データは、ここに入っている必要がある
  • ブラウザのストレージだけ:同じ端末・同じブラウザでしか見えない。容量はおよそ5〜10MB。手動で消さない限り残るが、別の端末から見ると空っぽ。ブラウザのデータを消せば一緒に消える
  • Cookieだけ:主にログイン状態の維持など、一時的で小さい情報向け。毎回サーバーへ送られるので、大量のデータや、そのままの個人情報を入れる場所ではない

「動いているのに、他の人には残っていない」が起きる理由

AIツールは、動作確認を早く済ませるために、まずブラウザのストレージにデータを置くことがよくあります。自分のパソコンで操作している限りは、投稿も設定もちゃんと残るので「保存できた」と感じます。

しかし——

  • 別の端末(スマホなど)で開くと、その投稿は無い
  • 他の人がアクセスすると、自分が入れたデータは見えない
  • ブラウザの履歴・データを消すと、一緒に消える

「自分のPCでは動くのに、他の人が使うと消えている」という報告は、DBではなくブラウザ側にしか保存されていない、ほぼ確実なサインです。

逆に、DBに保存されていても安心とは限りません。誰でも読める設定になっていれば、居場所が正しくても中身は漏れます(この点は認証・個人情報の回で扱います)。

自分のアプリがどこに保存しているか、3分で確かめる

  1. アプリで何かデータを作る(投稿・登録・設定変更など)。
  2. 同じ端末のシークレット/プライベートウィンドウで同じURLを開く。さっきのデータが見えない・ログインが切れている → ブラウザ側(localStorage / Cookie)に依存している可能性が高い。
  3. スマホなど別の端末で開く。見えない → ほぼ確実にブラウザ側にしか保存されていない。
  4. パソコンのブラウザで F12(開発者ツール)→ Application タブ(Chrome)→ 左メニューの Local Storage / Session Storage / Cookies を開く。自分の投稿内容や個人情報がそのまま入っていたら、それはサーバーのDBではなく、この端末の中にある。

AIツールへの指示例

「このアプリのユーザーデータ(投稿・会員情報・アップロードした内容)は、ブラウザの localStorage や Cookie ではなく、サーバー側のデータベースに保存されていますか? どのテーブル/コレクションに入るか教えてください。もしブラウザ側だけに保存しているなら、サーバーのデータベース(Supabase など)に保存するよう直してください。」

よくある質問

ブラウザのストレージに保存する設計は、いつも悪いのですか。

いいえ。一時的な下書き、ダークモードや言語などの設定、個人情報を含まない表示状態の記憶なら問題ありません。避けたいのは、会員情報・決済情報・投稿など「消えたら困る」「複数の人で共有すべき」データを、ブラウザ側だけに置くことです。

「キャッシュ」とは違うのですか。

違います。キャッシュは表示を速くするための一時コピーで、元のデータが別(サーバー)にある前提です。localStorage を保存の本体として使うのは、それとは別の話で、元データがどこにも無い状態になり得ます。

エクスポート(書き出し)機能があれば、消えても復元できるので安心では。

利用者全員がこまめにエクスポートしてくれる前提は成り立ちません。共有すべきデータは、やはりDBを本体にしておく必要があります。エクスポートはあくまで補助です。