« Zaurusで日本語音声合成 MBROLA+muDaTTS | Main | ruby-mswince再始動? »

2007.02.18

Zaurus Ruby/Qteとruby-sqlite3で簡単データベースアプリ

SHIMI.INFOさんのWikiにあるsqlite3とSQLite3/Rubyが気になったので使ってみました。
以前からRuby + データベースというのものに興味があったのです。

sqlite3はファイル指向のデータベースで、MySQLやPostgreSQLなどと違ってサーバを立てたりする必要が無く、扱いがとっても簡単です。
データベースは、主立った処理系には付いてきます。ほとんどのアプリケーションに必要なデータ処理を代行してくれるからですね。

SQL文を書くだけでデータの格納、取り出し、検索、削除、ソート等ができるので、一度データベースを使ったことがある人なら、ファイルの読み書きによるデータ保存/復帰、配列やハッシュベースのデータ管理などやりたくなくなるはずです。

Rubyにsqlite3とSQLite3/Rubyを追加すると、Rubyからsqlite3データベースが操作できるようになります。

ちょっとしたテストと覚え書きにある、 ruby-sqlite3-1.1.0と、sqlite3_3.2.1-2_arm.ipk(ipkのある階層をリンクしていいものか分からなかったので直リンにしてみました)をダウンロード、これをインストールします。

Rubyは、FocVさんからダウンロードしたものを使っています。

ただ、SHIMI.INFOさんのRubyとFocVさんのRubyではディレクトリ構成がちょっと違うので、SHIMI.INFOさんのruby-sqlite3-1.1.0をFocVさんのRubyで使う場合、ファイルの移動が必要でした。FocVさんのRuby向けの構成にパッケージし直したものを置いておきます。

「ruby-sqlite3_1.1.0-1_arm.ipk.bin」をダウンロード

インストールしたら、やはりここはRuby/QteでGUI表示などしてみて感じをつかむに限るでしょう。
新規データベース作成、データベースのテーブル定義、レコード挿入、それをQListViewに表示してみます。

試しに書いてみたソースコード。utf-8で保存します。
(ruby-modeでシンタックスカラーリングしたものをhtmlize.elでhtml化しました。maruさんEmacsメンテナンスありがとうございます)

Scrn001_1

サンプルはテーブルにプライマリーキーを設定していませんが、プライマリーキーを定義しておけば特定レコードの削除、編集、アップデートなどが簡単です。プライマリーキーには大抵重複の無い連番を入れておきます。よくサンプル見たらプライマリーキー設定してた(w

登録画面、1件表示画面、リスト表示画面、それに検索、削除、ソート関係の機能を作れば、すぐ実用アプリができるでしょう。大量のレコードがある場合、limit節を使ったページング等の処理、それにともなうUIの工夫が必要になるかと思いますが。

Ruby + Ruby/Qte + SQLite3/Ruby + sqlite3ってZaurusコンフォータブルだと思います。
機会があったら何か作ってみたいと思います。

ある処理系からデータベースを使う場合、バックエンドとなるデータベースが別のエンジンに差し変わってもソースの修正が最小限に押さえられるよう、抽象化するDBIを間に入れるのが普通です。ruby-dbiがそれですが、sqliteにも対応してますね。ちょっと牛刀な感じがしなくもありませんが。

|

« Zaurusで日本語音声合成 MBROLA+muDaTTS | Main | ruby-mswince再始動? »