Web SQL Database APIによるデータベース・アクセス (1/6)
作成:2010-07-17 16:24
更新:2011-09-20 08:56
更新:2011-09-20 08:56
■データベース利用の基本を覚える
HTML5では、「オフラインWebアプリケーション」のための機能がいろいろと用意されています。本来、サーバーにアクセスしてさまざまな動きをするものを、オフラインで、ローカル環境でも動くようにするための仕組みが考えられているのです。
中でも非常に重要となるのが「データベース機能」でしょう。HTML5では、SQL言語によってアクセスできるデータベースを内蔵するようになります。通常、SQLというのはデータベースサーバーというのを立てて、これにアクセスするような仕組みになっているのですが、HTML5の場合は内部にデータベースをもっていて直接ファイルにアクセスするようなシンプルなものです。
現在、こうした(データベースサーバーを必要としない)SQLデータベースとしては「SQLite」というものが広く使われており、HTML5に対応しつつあるWebデータベースも多くはこれを利用しているようです。ただ、仕様として「SQLiteを使う」というわけではないようですが、現時点の判断としては、「SQLLiteの基本を覚えておけば、HTML5のデータベース機能を利用するのに困ることはないだろう」といえます。
では、データベースを利用するには、どのようなスクリプトを書けばよいのでしょうか。これは、けっこうややこしいんですが、まずもっとも基本となる部分を整理するなら、以下の2つの処理が必要となると考えてよいでしょう。
1.データベースアクセスのオブジェクトを生成する。
2.トランザクション処理を用意する。
まず、なにより先に「データベースアクセスのためのオブジェクト」を用意しないといけません。これは「openDatabase」という関数を使って作ることができます。これは引数に「データベース名」「バージョン」「データベースの表示名」「見積りサイズ(バイト数)」といったものを用意します。これで、データベースにアクセスするためのオブジェクトが用意できます。
実際にデータベースにアクセスをする場合には、「transaction」というメソッドを呼び出します。これは「トランザクション」というのを行うためのものです。トランザクションというのは、「その処理が完了するまで他からの干渉を受けないようにする」機能です。Webというのはたくさんの人間が同時にアクセスをします。データベースアクセス中に、よそからのアクセスでデータベースの内容が書き換わったりすると、思わぬトラブルを起こしてしまいます。そこで、処理が完了するまでの間、外部からデータベースにアクセスできないようにする、それがトランザクションなのです。
このtransactionでは、引数にコールバック関数を用意します。この関数の中で、データベースにアクセスを行うわけです。このコールバック関数では、引数に「SQLトランザクション」というオブジェクトが渡されます。このオブジェクトにあるメソッドを使って、データベースにアクセスを行うのです。
とりあえず、この「データベースオブジェクトの作成」「トランザクションの実行」「コールバック関数の用意」という基本を、まずはしっかり頭に入れておいてください。まだまだややこしい説明が続きますから。
※――Web SQL Database APIは、W3CのHTML5勧告では既に更新が停止しており、HTML5への実装は見送られることが確定しています。データベース機能は、非SQLの「Indexed Database API」の利用を推奨しています。Indexed Database APIについては以下の記事を参照ください。
http://libro.tuyano.com/index3?id=697001
中でも非常に重要となるのが「データベース機能」でしょう。HTML5では、SQL言語によってアクセスできるデータベースを内蔵するようになります。通常、SQLというのはデータベースサーバーというのを立てて、これにアクセスするような仕組みになっているのですが、HTML5の場合は内部にデータベースをもっていて直接ファイルにアクセスするようなシンプルなものです。
現在、こうした(データベースサーバーを必要としない)SQLデータベースとしては「SQLite」というものが広く使われており、HTML5に対応しつつあるWebデータベースも多くはこれを利用しているようです。ただ、仕様として「SQLiteを使う」というわけではないようですが、現時点の判断としては、「SQLLiteの基本を覚えておけば、HTML5のデータベース機能を利用するのに困ることはないだろう」といえます。
では、データベースを利用するには、どのようなスクリプトを書けばよいのでしょうか。これは、けっこうややこしいんですが、まずもっとも基本となる部分を整理するなら、以下の2つの処理が必要となると考えてよいでしょう。
1.データベースアクセスのオブジェクトを生成する。
2.トランザクション処理を用意する。
まず、なにより先に「データベースアクセスのためのオブジェクト」を用意しないといけません。これは「openDatabase」という関数を使って作ることができます。これは引数に「データベース名」「バージョン」「データベースの表示名」「見積りサイズ(バイト数)」といったものを用意します。これで、データベースにアクセスするためのオブジェクトが用意できます。
実際にデータベースにアクセスをする場合には、「transaction」というメソッドを呼び出します。これは「トランザクション」というのを行うためのものです。トランザクションというのは、「その処理が完了するまで他からの干渉を受けないようにする」機能です。Webというのはたくさんの人間が同時にアクセスをします。データベースアクセス中に、よそからのアクセスでデータベースの内容が書き換わったりすると、思わぬトラブルを起こしてしまいます。そこで、処理が完了するまでの間、外部からデータベースにアクセスできないようにする、それがトランザクションなのです。
このtransactionでは、引数にコールバック関数を用意します。この関数の中で、データベースにアクセスを行うわけです。このコールバック関数では、引数に「SQLトランザクション」というオブジェクトが渡されます。このオブジェクトにあるメソッドを使って、データベースにアクセスを行うのです。
とりあえず、この「データベースオブジェクトの作成」「トランザクションの実行」「コールバック関数の用意」という基本を、まずはしっかり頭に入れておいてください。まだまだややこしい説明が続きますから。
※――Web SQL Database APIは、W3CのHTML5勧告では既に更新が停止しており、HTML5への実装は見送られることが確定しています。データベース機能は、非SQLの「Indexed Database API」の利用を推奨しています。Indexed Database APIについては以下の記事を参照ください。
http://libro.tuyano.com/index3?id=697001
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※データベース・オブジェクトの生成 変数 = openDatabase( データベース名, バージョン, 表示名, 見積りサイズ ); ※トランザクションの実行 [データベース].transaction( コールバック関数 ); ※トランザクションのコールバック関数 function 関数名 ( SQLトランザクション ){ ……処理…… }
※関連コンテンツ
「JavaScriptによるHTML5プログラミング入門」に戻る