libro
www.tuyano.com
PhoneGapによるAndroid/iPhoneアプリ開発入門

Databaseオブジェクトによるデータベース・アクセス (1/7)

作成:2012-04-23 09:03
更新:2012-04-23 09:03

■データベースの仕組みを理解しよう

本格的なデータ管理を行うアプリを作ろうと思ったら、何より「データベース」が使えなければいけません。iPhoneやAndroidには「SQLite」というデータベースプログラムが内蔵されており、これを使ってスマートフォンのデータ類は管理されています。

このデータベースは、PhoneGapからも利用することができます。PhoneGapには「Database」というオブジェクトが用意されており、これを利用することでデータベースアクセスが可能になります。ただし! そのためには、いろいろと覚えておかなければいけないことがあります。

まず、なによりも頭に入れておきたいのは「データベースアクセスは、SQLを使う」という点です。SQLというのは、リレーショナルデータベースで用いられているデータアクセス言語です。SQLiteでもこれが使われています。このSQLという言語を使って記述されたクエリーをデータベースに送信することで、必要な処理が実行されます。ですから、SQLがわからなければデータベースは使えない、ということになります。SQLを知らない人は、まず別途SQLの基本について勉強しておくとよいでしょう。

■データベースアクセスの仕組み

続いて理解しないといけないのは、「データベースアクセスの仕組み」についてです。データベースへのアクセスは、「このメソッドを呼び出せばデータが取り出せるよ」というような単純なものではありません。もっと複雑なのです。使用するオブジェクトごとに流れを整理しましょう。

・Databaseオブジェクト
PhoneGapに用意されているデータベースアクセス用のオブジェクトは「Database」というものです。メソッドを呼び出して、指定のデータベースにアクセスするためのDatabaseオブジェクトを取得します。

・SQLTransactionオブジェクト
Databaseで何かを実行させるには、まず「トランザクション」というものを用意します。これは、まぁ「データベースへのアクセスを安全に行うための仕組み」のようなものと考えてください。このトランザクションを管理するのが「SQLTransaction」というオブジェクトです。

このオブジェクトのメソッドを呼び出して、トランザクション処理を実行するのですが、この処理は「非同期」で実行されます。つまり、「実行するメソッドを呼び出しても、すぐには処理が完了しない」のですね。したがって、これは「処理が終わったら呼び出してね」というコールバック関数を設定しておき、続きの処理(トランザクションで実際に実行する内容)はその関数内に用意することになります。

・コールバック関数
トランザクションのコールバック関数内で実行するのは、SQLTransactionオブジェクトの「executeSql」というメソッドです。これが、データベースにSQLを送信して必要な処理を行わせるためのものです。これを実行して、ようやくデータベースにアクセスできる、というわけです。

このexecuteSqlは連続して実行することができます。複数の処理を実行するのに、毎回「Databaseを取得して……」とやる必要はありません。

――まずは、この「データベースアクセスの基本的な流れ」をしっかりと頭に入れておいてください。これをベースに、主なデータベースアクセスの具体的な処理について説明していきましょう。



※Web SQL Databaseの注意点

実をいえば、このデータベースアクセス機能は、PhoneGap独自のものというわけではないのです。これは「Web SQL Database」といって、HTML5の仕様としてブラウザが実装しているものなのです。

「HTML5の仕様なのか。なら安心だ」と思った人。それがそうでもないのです。このWeb SQL Databaseというものは、HTML5の仕様に一時は乗ったものの、現在では「HTML5で標準化するには不向きだ」と判断され、策定作業が中断されています。いずれはこの機能がHTML5から抹消される予定です。

なぜか?といえば、それは「SQLという言語に頼ったデータベース利用」に問題があると判断されたためでしょう。新たに仕様に追加されたのは、「Indexed Database」と呼ばれる、非SQLのデータベースなのです。HTML5でSQLはこれから使っちゃダメ!というのが基本的な方針のようです。

というわけですので、現時点では問題なく使えますが、この先のことを考えると、果たしてここで詳解する機能がどれぐらい使い続けられるか、正直いってわかりません。PhoneGapの今後の計画を見ると、PhoneGap 2.xにて「Indexed DB」という項目がありますので、間もなくIndexed DBは使えるようになるはずです。そうなったところで、次第にこちらへと移行する、とかんが得ておくとよいでしょう。

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

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

※関連コンテンツ

「PhoneGapによるAndroid/iPhoneアプリ開発入門」に戻る