HTML5のIndexed Database API(IndexedDB)を利用して、郵便番号検索を作ってみました。
仕様が今の時点(2013年3月)で策定中ですが、Chrome/Firefox/IEと主要なブラウザでは既にプリフィックスなしで利用できるようになっています。資料が少ないのと古い仕様のままの資料も多くちょっと混乱しました。加えて、SQLを使わない形式のデータベース(NoSQL)で作るので、ちょっと工夫が必要です。
とは言え、少し悩む部分はありましたが、一応、IndexedDBの使い方を一通り楽しむことができました。ソースコード、参考にしてみてください。
ブラウザ | 実装されたバージョン |
---|---|
IE | 10.0 |
Firefox | 16.0 |
Chrome | 24.0 |
今回、以下のようなオブジェクトをDBに突っ込んでいます。
[ {"zip":"1020072","ken":12,"shi":"千代田区","cho":"飯田橋"}, {"zip":"1020082","ken":12,"shi":"千代田区","cho":"一番町"}, {"zip":"1010032","ken":12,"shi":"千代田区","cho":"岩本町"}, 〜省略〜 ]
都道府県(ken)のフィールドを数字にしました。というのは、住所から郵便番号を探す部分で、都道府県のフィールドにキーをはって、そこからデータを取り出そうとしたのだけど、どうもうまく行きませんでした。悩んだ末に、ダメもとで都道府県のフィールドを数値に置き換えてやってみたら、なんと、正しくデータを取り出せました。Chrome/Firefoxともにダメだったので、バグというわけでも無さそうです。何が理由でしょうか。
あと作ってみての感想なのですが、せっかくIndexedDBにはオブジェクトがそのまま保存できるので、もう少し、データのもたせ方を工夫して作ればよかったなぁと思いました。NoSQLはまだ経験値不足なので、まだまだ修行が必要です。
以下の順に読んでいくと理解しやすいです。