AIR+SQLiteで実現するGTDアプリ

  ――「Colabolo」から見るRIAのこれから


テクニカルライター
小林聡史
2009/1/6


AIRの特徴であるローカルDB(SQLite)やメッセージングをフルに活用したAIRクライアントの実装例「Colabolo(コラボロ)」。 Colaboloの実装には、今のデータベースアプリケーションのトレンドが多数含まれています。今後の開発のヒントになるアイデアを見つけてください。

Colaboloって?

 アドビのRIA実行環境である「Adobe AIR」が公開されてからおよそ1年が経過し、国内でも本格的な導入事例が増えつつあります。その中でも、AIRの特徴であるローカルDB(SQLite)やメッセージングをフルに活用したAIRクライアントの実装例が、「Colabolo(コラボロ)」です。

 Colaboloは、後述するように全機能がローカルDBで実装されているため、Webアプリケーションのようにサーバやネットワークの調子もしくは込み具合によって反応が鈍くなったりダウンしたりすることはありません。あくまでも処理はローカルで行われ、ネットワーク接続が復帰したらそれまでの更新内容がほかのメンバーにも自動的に反映される仕組みになっています。こうした使い勝手の良さは、WordやExcelといったデスクトップアプリケーションに引けを取らない実装になっています。

図1 Colabolo

 このほかにも、Colaboloにはさまざまな機能が実装されています。詳細はコラムを参照ください。

 Colaboloをごく短く評するとすれば、「iTunes的なリッチUIとメッセンジャーのスピード感を持ち、Excel並みにポータブルなタスク管理ツール」といったところでしょうか。

「リアルタイムDB同期」がカギ

 こうした独特のエクスペリエンスを生み出すカギは、イマヒマが「リアルタイムDB同期」と呼ぶテクノロジーにあります。

SQLiteプログラミングは意外と簡単

 ご存じのように、AIRは、Flash Playerをベースとしたデスクトップアプリケーションの実行環境です。AIRがFlashやFlexといった既存のテクノロジーと大きく異なる点の1つに、アプリケーション組み込み型のRDBMS「SQLite」がAIRの実行環境そのものに組み込まれていることが挙げられます。

 例えばAIRクライアントでは、以下のようなActionScriptコードを記述することで、簡単にデータベースをオープンできます。

01:
02:
03:
04:
05:
var conn:SQLConnection = new SQLConnection();
var dbFile:File = File.applicationStorageDirectory.resolvePath("foo.db");
conn.addEventListener(SQLEvent.OPEN, onDbOpened);
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
conn.open(dbFile);

 ここでは、ローカルPC上に保存されたデータベースファイルfoo.dbをオープンし(2〜3行目)、オープン処理が完了したら関数onDbOpenedを呼び出すことが記述されています(4行目)。次に、例えば関数onDbOpenedには以下のようなコードを記述します。

01:
02:
03:
04:
05:
06:
var ss:SQLStatement = new SQLStatement();
ss.sqlConnection = conn;
ss.text = "SELECT id, name, email, address FROM employees";
ss.execute();
for each (var record:Object in result.data) {
     trace(record.id, record.name);}

 ここに示したように、SQL文を表すSQLStatementオブジェクトにデータベース接続とSQL文を渡した後、executeメソッドを呼び出すだけで、SQLiteによるDB検索を実行できます。検索結果の個々のレコードはオブジェクトとして取り出せるという流れです。

参考記事
AIRとSQLiteで学ぶ ローカルDB操作の基本(リッチクライアント&帳票 - @IT)

SQLiteの利点を最大限に引き出す

 このようにSQLiteは、1つのファイルに全データを格納するAccessライクな軽量RDBです。AIRクライアント内部でActionScriptコードを記述することで、比較的手軽に利用できます。軽量ながら、ひととおりのSQL構文やトランザクション管理をサポートしており、機能的にもほかのRDBMSと引けを取りません。

 AIRは、クライアント単独でも動作する業務アプリケーションを、上述のような比較的シンプルなコーディングで構築できる能力を備えているといえるでしょう。

 ColaboloのリアルタイムDB同期のミソは、個々のクライアントが内蔵するSQLite間でデータを同期するレプリケーション機能と、同期のタイミングをリアルタイムに通知し合うメッセージング機能を組み合わせたところにあります。

注:メッセージの交換はメッセージングサーバを介して実施します。

 これにより、それぞれのAIRクライアントは個別のデスクトップアプリケーションとして完全に独立しつつ、オンライン状態では密接に連携し合って「プロジェクト単位のコラボレーションツール」として振る舞うことができるようになっています。

 ここからは、このColaboloのリアルタイムDB同期のアーキテクチャについて、もう少し詳しく見てみます。


  1/3 次のページへ

 Index
AIR+SQLiteで実現するGTDアプリ
→ Page1
Colaboloって?
「リアルタイムDB同期」がカギ
SQLiteプログラミングは意外と簡単!
SQLiteのパワーをいかに引き出すか
  Page2
リアルタイムDB同期のアーキテクチャ
バックグラウンドでDB同期処理を行う
いまのAIR+SQLiteがまだ出していない答え
クライアントアプリ組み込み型DB開発の負担を隠ぺいするには?
リアルタイムでのデータの相互同期をどう実現するか?
  Page3
RIA向けのフレームワークは群雄割拠



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間