本格的なデータ管理を行うアプリを作ろうと思ったら、何より「データベース」が使えなければいけません。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は使えるようになるはずです。そうなったところで、次第にこちらへと移行する、とかんが得ておくとよいでしょう。