AIR+SQLiteで実現するGTDアプリ
――「Colabolo」から見るRIAのこれから小林聡史
2009/1/6
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向けのフレームワークは群雄割拠 |
- Oracleライセンス「SE2」検証 CPUスレッド数制限はどんな仕組みで制御されるのか (2017/7/26)
データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は、Oracle SE2の「CPUスレッド数制限」がどんな仕組みで行われるのかを検証します - ドメイン参加後、SQL Serverが起動しなくなった (2017/7/24)
本連載では、「SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ドメイン参加後にSQL Serverが起動しなくなった場合の対処方法」を解説します - さらに高度なSQL実行計画の取得」のために理解しておくべきこと (2017/7/21)
日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。今回は「より高度なSQL実行計画を取得するために、理解しておいてほしいこと」を解説します - データベースセキュリティが「各種ガイドライン」に記載され始めている事実 (2017/7/20)
本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。今回は、「各種ガイドラインが示すコンプライアンス要件に、データベースのセキュリティはどのように記載されているのか」を解説します
|
|