最近、Database Events を利用する状況が出てきたので、少し調べてみました。Mac OS X 10.4 を導入したときにも少し触れたことがあるのですが、今度は利用を前提にどれぐらい使えるものかを。
まず、基本的なことから。Database Events は、SQLite を AppleScript から操作できるバックグラウンドアプリケーションです(SQLite だと思う。どうも、情報が少なくて)。SQLite 自体は、C 言語のライブラリです。C 言語から利用できますし、Terminal からコマンドを使うことでデータベースを操作することもできます。SQLite は、SQL をベースに開発されています。SQL よりも処理が高速だったりします。SQL との違いは、ファイル単位でデータベースを構築することです。
ファイル単位というのがよく分からないと思いますが、MySQL のようにサーバーで利用する(のでも可能ですが)、巨大なデータベースを構築するというより、アプリケーションが利用するデータを保持しておく簡易データベースとして利用することができます。
Database Events で作成したファイルは、他のアプリケーションでも利用可能な汎用的なものになります。誤解を招く表現ですが、こういうことです。Mac OS X 10.4 では、CoreData が導入されています。CoreData を利用するアプリケーションは、SQLite のファイル形式でファイルを保存することができます。こういったファイルは Database Events で利用可能ですし、逆も同様です。
Database Events は、このようなことから最初にデータベースファイルを作成する必要があります。基本的な流れとしては、
- データベースファイルを作成
- レコードを追加する
- フィールドを作りデータを放り込んでいく
という形になります。
では、実際に使ってみます。Database Events は、/System/Library/CoreServices にあります。System Events や Image Events と同じですね。用語辞書を開いてみると...、データベースを利用するための最低限の属性しか定義されていません。database と record と field...。ソートや範囲を決めてのデータの取り出や検索や、そういったデータベースを操作するための命令のようなものはありません。これは、すべて AppleScript で処理をしろということなのでしょうか?
もう少し、使い勝手がよくてもいいような。まず、最初にデータベースを作成します。
tell application "Database Events"
make new database
end tell
database クラスの属性には name と location があります。name は、データベースの名前(通常データベースファイルの名前になります)、location は、データベースファイルの保管場所です。これらは、データベースを作成するときに指定しておくと効率的です。
tell application "Database Events"
make new database with properties {name:"MyDatabase"}
end tell
location を指定していませんが、Database Events はデータベースの保存場所をデフォルトで持っています。Documents フォルダ内に「データベース」(日本語環境です)というフォルダを作成し、その中に自動的に保存していきます。しかし、ここで注意しないといけないのは save 命令を使ってきちんと保存しないといくらファイルを作成しても利用できないようになることです。
tell application "Database Events"
make new database with properties {name:"MyDatabase"}
save database "MyDatabase"
end tell
このように save を行うと ~/Documents/データベース/MyDatabase.dbev というファイルが作成されます。location を指定しない場合は、全てこのフォルダに保存されます。保存を行っておくと Database Events を終了した後でも次のようにすることでデータベースを再度利用することができます。
set databaseFile to (path to documents folder as Unicode text) & "データベース:MyDatabase.dbev"
tell application "Database Events"
tell database (POSIX path of databaseFile)
properties
end tell
end tell
save を行わなかった場合、いくらファイルが作成されていたとしてもそのファイルにアクセスすることはできません。この保存は、record を追加しても field を追加しても、その都度保存しないといけません。
0 件のコメント :
コメントを投稿