PC | mobile ver.20170108.

 libro ~入門ドキュメント・サイト~

JavaScriptによるHTML5プログラミング入門:

Indexed Database APIによるデータベース (1/7)

作成:2011-09-19 08:57
更新:2011-09-19 08:57
■Indexed Databaseとは?
HTML5では、ローカルな環境での利用に関する機能が強化されています。その中の目玉とも言えるのが「データベース」関係の機能でしょう。しかし、このデータベース機能は、現在までかなり迷走していました。HTML5には、データベースに関する機能が実は2種類用意されています。以下にざっと整理しておきましょう。

Web SQL Database API――これは既に連載の第4回で取り上げましたね。SQLベースのリレーショナルデータベース機能です。
Indexed Database API――これが今回取り上げるものです。非SQLによるデータベース機能です。

もともとデータベース機能は、Web SQL Database APIのほうが早くブラウザ側の実装が進められていました。が、ChromeやFirefoxなどが実装した頃になって、W3C(HTML5の規格を策定しているところ)がSQLベースのデータベース機能をHtmL5に標準化しないよう方向転換をしたのです。既にW3CのドキュメントにもWeb SQL Database APIの作業を停止し、以後、ローカルボリュームへのデータ保存についてはWeb StorageとIndexed Database APIを使用するように推奨されています。

Web SQL Database API自体は既にWebブラウザで実装されていますので、いきなり使えなくなることはないでしょう。当分の間、それぞれのブラウザに実装された機能はそのまま使い続けることができます。が、最終的にHTML5のデータベース機能は、Indexed Database APIで統一されるのはほぼ間違いないようです。

なぜ、Web SQL Database APIがHTML5からはずされてしまったのか。これは正確なところはわからないのですが、おそらくは「SQLという特定のスキーマにしばられた形でのデータベース利用は好ましくない」と判断されたためでしょう。皆さんも、どこかで「NoSQL」という言葉を耳にしたことがあるかも知れません。現在、リレーショナルデータベースでは「SQL」というデータベース言語が広く使われていますが、これはデータベースによって多少の方言があるなど標準SQL規格が厳格に守られていません。またSQLという特定の言語に依存する形でHTML5の規格が実装されていくのも問題と言えるでしょう。

こうして、HTML5ではIndexed Database APIが新たに策定されることになりました。これは、SQLに依存しないデータベースです。リレーショナルではありませんが、データベースの基本的な仕組みを備えており、しかもSQLのクエリーを書くのではなくメソッドを呼び出してデータアクセスできるように設計されています。Web SQL Database APIに比べ複雑な処理は苦手でしょうが、シンプルにデータアクセスできるという点ではこちらが上でしょう。

Indexed Database APIは、Firefoxではver.4からサポートされていました。が、HTML5の実装をいち早く実装しているChromeでは、当初一時的にサポートをしたものの、途中から使えなくなってしまっていました。これはIndexed Database APIのプログラム部分を刷新するためです。

Chrome 14になり、ようやくIndexed Database APIが再び使えるようになったため、ここでその基本について説明を行うことにします。ここでは、現時点でサポートされているFirefox 6とChrome 14を対象ブラウザとして説明します。Safari 4およびOpera 10以降でもサポートをしていますが、記事の執筆において動作確認はしていません。(IE? えっと、忘れてください)


※なお、Indexed Database APIは、まだ完全に確定した仕様というわけではないため、今後、ブラウザの実装などが変更される可能性もあります。ここでの説明内容から変わってしまう可能性もあるので注意してください。


 

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。


 


「JavaScriptによるHTML5プログラミング入門」に戻る



※その他のコンテンツ