インデックス |
準備 カスタムファイルタイプの作成 アイコン ファイルの認識 説明 優先アプリケーション 拡張属性 インデックス付け データを埋める データベースにクエリを行う |
ワークショップ: ファイルタイプ、属性、インデックス、およびクエリ
このワークショップは、属性 (Attribute)、クエリ (Query)、インデックス (Index)、およびカスタムファイルタイプ (Filetype) の使い方を説明します。例として、DVD ライブラリーを記録するデータベースを作成します。
準備
最初に、どのようなファイルタイプおよび属性が私たちのニーズを満たすか決定しましょう。元々、私は映画の IMdB ページへのリンクを備えたブックマークファイルを使用したかったが、当時 Haiku には BeOS の NetPositive のような「ブックマークを付けられる」ブラウザがありませんでした。それで、私はファイル自身を映画のカバーの JPEG イメージにすることを思いつきました。
そのファイルに 2、3 の属性を加えます。後でそれをクエリするかどうか (次に、インデックスにそれを加えなければなりません) 決定しなければなりません。また、クエリをするなら、属性がどのような型であるべきかを決定しなければなりません。数 (整数、小数) は、テキストとは異なる評価をされます(例: </=/> 対 等しい/を含む/で始まる)。
以下は、DVD について見たい属性です:
- 映画のタイトル (Movie title)
- ジャンル (Genre)
- URL 例: IMdB への URL
- 監督/キャスト (Director/Cast)
- あらすじ (Plot)
- 1 から 10 までの点数 (Rating)
- 棚の座標 (例: A2, B3)、実生活でもこれによって DVD を探します :)
- もしそうならば、だれが DVD を借りたか…
カスタムファイルタイプの作成
Filetypes プレファレンスを立ち上げて、左の階層化リストの下にある ボタンをクリックします。小さなダイアログが開くので、そこで新しいファイルタイプがどの MINE グループに属するか決めます。また、まったく新しいグループを作成することもできます。では、ファイルタイプを "applications" のグループに入れて、"内部名 (Internal Name)" を DVDdb にしましょう。

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

アイコン (Icon)
アイコン (Icon) をダブルクリックすると、Icon-O-Matic が立ち上がり、ユーザーのファイルタイプ用アイコンをデザインできます。また、別のタイプのアイコンウェルからアイコンをドラッグ&ドロップできます。これはたぶん、修正版のスタートポイントとなるでしょう。
ファイルの認識 (File Recognition)
.txt、.jpg、.mp3 のような拡張子をつけて、ファイルを識別できます。MINE タイプ付けの無いシステムからのファイルを使用する時に便利です。今回の例では必要ありません。
説明 (Description)
- タイプ名 (Type name) - 例として、Tracker ウインドウの 属性 (Attribute) メニューおよび、ファイルの "種類 (Kind)" 属性に現れます。
- 説明 (Description) - さらに詳しい説明。
優先アプリケーション (Preferred Application)
このポップアップメニューは、特定のファイルタイプを扱えるすべてのアプリケーションのリストを示します。ここから、この特定のファイルがダブルクリックされた時にどのプログラムで開くかを選択できます。
ファイルダイアログを開いて、そこからこのファイルタイプを開くためのアプリケーションを選択します。ここでは DVD のカバーを開くために、ShowImage を設定します。 | ||
ファイルダイアログを開いて、求める優先アプリケーションのセットを持ったファイルを選択します。 |
拡張属性 (Extra Attributes)
ここで、準備の所で決定したすべてのカスタム属性を入力します。
ボタンをクリックするとパネルが開きます。
属性の名前 (Attribute name) - たとえば、Tracker ウィンドウの列ヘッダに表示されます。
内部名 (Internal name) - 属性のインデックス付け、およびクエリに使われます。
- タイプ (Type) - 属性が持つ値を定義します。それによって、どのようにクエリされるかが決まります
- 通常のテキスト用
- バイナリデータ用: 0 または 1
- : ± 255
- : ± 65,535
- : ± 4,294,967,295
- : ± 18,446,744,073,709,551,615
異なる範囲の整数値用:
- 単精度浮動小数値用
- 倍精度浮動小数値用
- 時間と日付のフォーマット用
- 表示する (Visible) - このチェックボックスは、属性が Tracker ウィンドウでそもそも表示できるかどうか決定します。Tracker は DVD データベースのインターフェースなので、これをチェックし、以下の項目で外観を定義します。
- - "Default" のままにしてください。将来、採点用のバーや星などのより多くのオプションが利用できるでしょう。
- - Tracker 上で属性が編集できるかどうか決定します。
- - Tracker ウィンドウの属性行のデフォルト幅。
- - 属性は左寄せ、中央寄せ、または右寄せで表示できます。
では、属性の情報をすべて挿入しましょう。
内部名 | 属性のタイプ | インデックス付け | 説明 |
---|---|---|---|
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 | はい | 貸し出し先 |
インデックス付け
私たちの小さな DVD データベースにデータを入力する前に、一部の属性にインデックスを付けなければなりません。インデックスの付いた属性だけが、Haiku のすばやいクエリを使えます。
さて、今後何を検索するでしょうか?たぶん、「棚の B4 座標には何があるか?」や「映画の IMdB URL やあらすじに' pope-shenooda' と言う言葉を含むか?」は尋ねないでしょう。
次の属性が残ります。
内部名 | 属性のタイプ |
---|---|
DVDdb:title | text |
DVDdb:genre | text |
DVDdb:cast | text |
DVDdb:rating | int-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 (文字列)" となります。
データを埋める
さて、すべてが設定されたので、データベースにデータを入れ始めることができます。
基本のファイルはカバーイメージなので、IMdB のようなオンラインリソースへ行き、最初の映画を探してカバーまたは映画のポスターを DVDdb のファイルを保持したい新規フォルダーに保存します。
フォルダーを開くと、JPEG ファイルが 1 つある標準的な Tracker ウィンドウが見えます。JPEG ファイルを右クリックして、Filetype アドオンを使って、ファイルタイプを application/DVDdb に変更します。ファイルタイプのドキュメントにこれについて詳しい情報があります。
さて、Tracker ウインドウの
メニューから DVDdb の属性をすべて有効にし、好きなように Tracker の列を再構成します。
まだ空の属性をクリックする (または ALT E を押す) ことで、編集モードに入り、それぞれの属性を満たします。TAB および SHIFT TAB によって、属性間を移動できます。
今回の例では、通常ダウンロードした JPEG カバーでスタートし、そのタイプを applications/DVDdb に変更します。動作するファイルを作成する、別のエレガントなやりかたがあります。私たちが定義したファイルタイプを持つ空のファイルを /boot/home/config/settings/Tracker/Tracker New Templates にコピーし、それを DVDdb にリネームします。
Tracker ウィンドウ中で右クリックすると、
メニューのデフォルトである、"新規フォルダー (New folder)" の下に新たな項目を見つけるでしょう。
データベースにクエリを行う
数時間の単調な仕事の後、クエリによって、すべての Christina Ricci 映画で 7+ の点数があるものを見つけられる小さくすてきなデータベースがあります… :)
特定のファイルタイプのクエリ結果にふさわしい属性レイアウトを割り当てることができます。
DVDdb ファイルを含んでいるフォルダーを開き、クエリ結果をどのように示したいかに従い、属性を整えます。このレイアウトを、 でコピーします。
/boot/home/config/settings/Tracker/DefaultQueryTemplates を開いて、新規フォルダーを作成し、それを group/filetype にリネームします。ここで、/ はアンダースコアに置き換えます。今回の例では、"applications_DVDdb" となります。
新規フォルダーを開いて、レイアウトを
で、中にペーストします。以下が結果です!