HTML5 Web SQL の正体

なんか、正体などと書くと、いかがわしいもののようですが、結論を書けば、Chrome の Web SQL は SQLite でした、ということです。

データベースファイル自体の所在は、[cci]~/Library/Application\ Support/Google/Chrome/Default/databases/[/cci] 以下に、URL っぽいフォルダがあって、その中に収まっています。

うちの Mac (Mac OS X 10.6.8) に最初からはいっている SQLite (sqlite3) は、version 3.6.12 でしたが、これで問題なく、閲覧などはできました。

今までは、いちいち AppleScript を併用して、[cci]do shell script[/cci] していたのですが、Chrome なら、直接 SQLite のデータベースファイルができるので、その方がスマートそうです。

筆まめのデータをSQLiteに取り込む

かれこれ、放置してしまいましたが、以前の続編です。
今回は、前回の失敗をふまえて作戦を変更しました。

まず、ContactXML に書き出すまでは、これ以外に選択肢がないので、変更はありません。

次に XML を PHP で parse するのをやめて、Safari を使うことにします。
そして、Safari を AppleScript で制御して、JavaScript によりデータを SQL 文に変換、それを AppleScript から SQLite に書き出す、という方法で変換することにしました。

Continue reading

localStorageでハッシュを手間なく永続化するには

HTML5 Web SQL が期待の使い心地ではなかったため、localStorage を値の永続のために使うことにしました。

が、やはりというか、オブジェクトはそのままでは永続できません。
たとえば、[cci_JavaScript][1,2,3][/cci] は、[cci_JavaScript]”1,2,3″[/cci] という文字列に変換されてしまいます。
なので、ちょっと細工をしました。

もっとうまい方法があるかと思いますが、そいういう場合は、生温く見守るか、哀れだと思ったら、コメントを頂けると幸いです。
Continue reading

HTML5 Web SQL

JavaScript でも SQL が使えるということで試してみたのですが、これ、とっても使いやすくて、使いにくいです。

使いやすい部分は説明は不要だと思うので、使いにくい部分を説明すると、例えば、リンゴの値段がデータベースに記録してあるとして、リンゴの値段を返す関数を書こうと思っても、すんなりと書けないんです。

[cci_JavaScript]SQLTransaction.executeSql[/cci_JavaScript] にコールバックを渡す仕組みになっている以上、値を戻すのではなくて、この関数の呼び出し元も、また同じくコールバックを渡す、ということが必要になるわけです。

今は、昔ながらの上から下に流れるスタイルで開発してしまっているので、この部分だけコールバックに書き直すは面倒くさいです。

それはそうと、以前、筆まめが吐き出した ContactXML からデータを抽出する作業を JavaScript と AppleScript を組み合わせて行ったのですが、HTML5 Web SQL を使えば、完全にブラウザだけで筆まめと同等か、それ以上の処理ができてしまいそうです。