ずっとずっと誤解してたのかな。

Safariが3.1になって、HTML5のClient-side database storageが付いた。これでGoogle Gearsインストール済み環境と同様、JSからSQLiteが扱える。
この機能、ずっとGoogle GearsとかFirefox3のオフライン機能とかのイメージでWebアプリのオフライン対応をするためのものだと思ったけど、よく考えたら実は違うんじゃない?と気づいた。
Gearsの機能を見てみよう。以下のような機能を積んでる。

  • LocalServer
  • Database
  • WorkerPool

このうち、Client-side database storageが相当するのは2番目のDatabase。オフライン対応アプリを作る場合、最後のWorkerPoolはあれば便利だけど無くても良くて、上二つがあればよい。逆に言うと、Safari3.1はLocalServer相当の機能を持っていないから単体ではオフライン対応アプリを走らせることは出来ない。
結論としては、Client-side database storageはオフライン用の機能ではなくオンライン用の機能。各クライアントごとにデータを持たせたい場合、現状ではCookieはサイズが厳しすぎるのでセッションIDを振って全てサーバ側に持たせるとか、Flash Cookieを使うと言った手法が使われていた。その他の新しい選択肢として、Fat Cookieを実現するためにこの機能が付いたんかな。
オフライン対応アプリケーションを書くときはこれまで通りGearsとかを使って書けばいいようです。