インデックス
準備
カスタムファイルタイプの作成
アイコン
ファイルの認識
説明
優先アプリケーション
拡張属性
インデックス付け
データを埋める
データベースにクエリを行う

ワークショップ: ファイルタイプ、属性、インデックス、およびクエリ

このワークショップは、属性 (Attribute)クエリ (Query)インデックス (Index)、およびカスタムファイルタイプ (Filetype) の使い方を説明します。例として、DVD ライブラリーを記録するデータベースを作成します。

index 準備

最初に、どのようなファイルタイプおよび属性が私たちのニーズを満たすか決定しましょう。元々、私は映画の IMdB ページへのリンクを備えたブックマークファイルを使用したかったが、当時 Haiku には BeOS の NetPositive のような「ブックマークを付けられる」ブラウザがありませんでした。それで、私はファイル自身を映画のカバーの JPEG イメージにすることを思いつきました。
WebPositiveによって、Haiku 再びブックマークを付けられるブラウザーを持ちました。それで、データベースファイルには、基本的なファイルタイプを備えたファイルの代わりに、ブックマークファイルも使えます。
どの場合でも、これらのファイルに 2、3 の属性を加えます。ここでは、後でそれをクエリするかどうか (次に、インデックスにそれを加えなければなりません) 決定しなければなりません。また、クエリをするなら、属性がどのような型であるべきかを決定しなければなりません。数 (整数、小数) は、テキストとは異なる評価をされます(例: </=/> 対 等しい/を含む/で始まる)。

以下は、DVD について見たい属性です:

index カスタムファイルタイプの作成

Filetypes プレファレンスを立ち上げて、左の階層化リストの下にある 追加… (Add...) ボタンをクリックします。小さなダイアログが開くので、そこで新しいファイルタイプがどの MINE グループに属するか決めます。また、まったく新しいグループを作成することもできます。では、ファイルタイプを "applications" のグループに入れて、"内部名 (Internal Name)" を DVDdb にしましょう。

filetypes-new-file-type.png

さて、新しい DVDdb ファイルタイプ用のダイアログが開きます。

filetypes-dvddb.png

index アイコン (Icon)

アイコン (Icon) をダブルクリックすると、Icon-O-Matic が立ち上がり、ユーザーのファイルタイプ用アイコンをデザインできます。また、別のタイプのアイコンウェルからアイコンをドラッグ&ドロップできます。これはたぶん、修正版のスタートポイントとなるでしょう。

index ファイルの認識 (File Recognition)

.txt、.jpg、.mp3 のような拡張子をつけて、ファイルを識別できます。MINE タイプ付けの無いシステムからのファイルを使用する時に便利です。今回の例では必要ありません。

index 説明 (Description)

index 優先アプリケーション (Preferred Application)

このポップアップメニューは、特定のファイルタイプを扱えるすべてのアプリケーションのリストを示します。ここから、この特定のファイルがダブルクリックされた時にどのプログラムで開くかを選択できます。

選択… (Select...) ファイルダイアログを開いて、そこからこのファイルタイプを開くためのアプリケーションを選択します。ここでは DVD のカバーを開くために、ShowImage を設定します。
このタイプと同様… (Same as...) ファイルダイアログを開いて、求める優先アプリケーションのセットを持ったファイルを選択します。

index 拡張属性 (Extra Attributes)

ここで、準備の所で決定したすべてのカスタム属性を入力します。追加… (Add...) ボタンをクリックするとパネルが開きます。

filetype-extra-attribute.png

では、属性の情報をすべて挿入しましょう。

内部名属性のタイプインデックス付け説明
DVDdb:title text はい 映画のタイトル (Movie title)
DVDdb:genre text はい ジャンル (Genre)
DVDdb:url text いいえ URL
DVDdb:cast text はい 監督/キャスト (Director/Cast)
DVDdb:plot text いいえ あらすじ (Plot)
DVDdb:rating int-32 はい 1 から 10 までの点数
DVDdb:coord text いいえ
DVDdb:lent text はい 貸し出し先

index インデックス付け

私たちの小さな DVD データベースにデータを入力する前に、一部の属性にインデックスを付けなければなりません。インデックスの付いた属性だけが、Haiku のすばやいクエリを使えます。
さて、今後何を検索するでしょうか?たぶん、「棚の B4 座標には何があるか?」や「映画の IMdB URL やあらすじに' pope-shenooda' と言う言葉を含むか?」は尋ねないでしょう。

次の属性が残ります。

内部名属性のタイプ
DVDdb:titletext
DVDdb:genretext
DVDdb:casttext
DVDdb:ratingint-32

これらにインデックスを付けるには、ターミナルを立ち上げて、次々に属性に追加していくだけです。

mkindex -t string DVDdb:title
mkindex -t string DVDdb:genre
mkindex -t string DVDdb:cast
mkindex -t int DVDdb:rating

-t オプションは属性の型を定義します。int (整数) である rating 以外は、"string (文字列)" となります。

index データを埋める

さて、すべてが設定されたので、データベースにデータを入れ始めることができます。
基本のファイルはカバーイメージなので、IMdB のようなオンラインリソースへ行き、最初の映画を探してカバーまたは映画のポスターを DVDdb のファイルを保持したい新規フォルダーに保存します。

フォルダーを開くと、JPEG ファイルが 1 つある標準的な Tracker ウィンドウが見えます。JPEG ファイルを右クリックして、Filetype アドオンを使って、ファイルタイプを application/DVDdb に変更します。ファイルタイプのドキュメントにこれについて詳しい情報があります。

さて、Tracker ウインドウの 属性 (Attributes) メニューから DVDdb の属性をすべて有効にし、好きなように Tracker の列を再構成します。

filetypes-dvddb-empty.png

まだ空の属性をクリックする (または ALT E を押す) ことで、編集モードに入り、それぞれの属性を満たします。TAB および SHIFT TAB によって、属性間を移動できます。

今回の例では、通常ダウンロードした JPEG カバーでスタートし、そのタイプを applications/DVDdb に変更します。動作するファイルを作成する、別のエレガントなやりかたがあります。私たちが定義したファイルタイプを持つ空のファイルを /boot/home/config/settings/Tracker/Tracker New Templates にコピーし、それを DVDdb にリネームします。

Tracker ウィンドウ中で右クリックすると、新規… (New...) メニューのデフォルトである、"新規フォルダー (New folder)" の下に新たな項目を見つけるでしょう。

index データベースにクエリを行う

数時間の単調な仕事の後、クエリによって、すべての Christina Ricci 映画で 7+ の点数があるものを見つけられる小さくすてきなデータベースがあります… :)

特定のファイルタイプのクエリ結果にふさわしい属性レイアウトを割り当てることができます。
DVDdb ファイルを含んでいるフォルダーを開き、クエリ結果をどのように示したいかに従い、属性を整えます。このレイアウトを、属性 | レイアウトをコピー (Attributes | Copy layout) でコピーします。

/boot/home/config/settings/Tracker/DefaultQueryTemplates を開いて、新規フォルダーを作成し、それを group/filetype にリネームします。ここで、/ はアンダースコアに置き換えます。今回の例では、"applications_DVDdb" となります。

新規フォルダーを開いて、レイアウトを属性 | レイアウトを貼り付ける (Attributes | Paste layout) で、中にペーストします。以下が結果です!

query-dvddb.png