ユーザーガイド

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

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

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

## 準備

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

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

- 映画のタイトル (Movie title)
- ジャンル (Genre)
- URL 例: IMdB への URL
- 監督/キャスト (Director/Cast)
- あらすじ (Plot)
- 1 から 10 までの点数 (Rating)
- 棚の座標 (例: A2, B3)、実生活でもこれによって DVD を探します :)
- もしそうならば、だれが DVD を借りたか…

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

Filetypes プレファレンスを立ち上げて、左の階層化リストの下にある、追加… (Add...) ボタンをクリックします。小さなダイアログが開くので、そこで新しいファイルタイプがどの 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)

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

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

### 拡張属性 (Extra Attributes)

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

- 属性の名前 (Attribute name) - たとえば、Tracker ウィンドウの列ヘッダーに表示されます。

- 内部名 (Internal name) - 属性のインデックス付けおよびクエリに使われます。

- タイプ (Type) - 属性が持つ値を定義します。それによって、どのようにクエリされるかが決まります
  - String 通常のテキスト用
  - Boolean バイナリデータ用: 0 または 1
  - Integer 異なる範囲の整数値用:
    - 8 bit: ± 255
    - 16 bit: ± 65,535
    - 32 bit: ± 4,294,967,295
    - 64 bit: ± 18,446,744,073,709,551,615
  - Float 単精度浮動小数値用
  - Double 倍精度浮動小数値用
  - Time 時間と日付のフォーマット用

- 表示する (Visible) - このチェックボックスは、Tracker ウィンドウで属性がそもそも表示できるかどうか決定します。Tracker は DVD データベースのインターフェースなので、これをチェックし、以下の項目で外観を定義します。
  - 表示形式 (Display as) - "Default" のままにしてください。将来、評価用のバーや星などのより多くのオプションが利用できるでしょう。
  - 編集可能 (Editable) - Tracker 上で属性が編集できるかどうか決定します。
  - 幅 (Width) - Tracker ウィンドウの属性行のデフォルト幅。
  - 配置 (Alignment) - 属性は左寄せ、中央寄せ、または右寄せで表示できます。

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

内部名 | 属性のタイプ | インデックス付け | 説明
--- | --- | --- | ---
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 ウィンドウの 属性 (Attributes) メニューから DVDdb の属性をすべて有効にし、好きなように Tracker の列を再構成します。

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

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

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

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

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

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

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

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