MIME 型のデータベースについて
MIME 型のデータベースは、次に示すデータを持った、いろいろな種類のファイルから構成されています:
- MIME 型の種類
- ファイルの MIME 型を決定するメソッド
- MIME 型に関するメタ情報 (例えば MIME 型を説明する可読な情報など)
- 5.2.1. データの保管場所
- 5.2.2. データの内容
- 5.2.3. MIME 型データベースを更新する
5.2.1. データの保管場所
システム管理者が MIME 型を使ったシステムを理解する上で最も重要でかつ基本的なことは、このシステムを構成しているファイルがどこに保管されているかということを知るということです。「XDG Shared MIME Info の仕様」がXのデスクトップ・グループによって起草されたことに起因して、「XDG ベース・ディレクトリの仕様」も同時に適用されます。システム管理者としてメニューを編集するといった作業も重要ですが、その一環として MIME 型の仕様を理解することも強くお薦めします。MIME 型の仕様に関するフォルダの構成についてその概要はこれ以降で説明します。
MIME 型のデータベースは $XDG_DATA_HOME/mime と $XDG_DATA_DIRS/mime のフォルダに格納されている複数のファイルの集合から構成されています。これらの環境変数が共にセットされていない場合、それぞれデフォルト値の ~/.local/share と /usr/local/share:/usr/share を使用します。$XDG_DATA_DIRS のデフォルト値を見てもわかるように、環境変数はそれぞれコロン (:) を区切り文字として複数のフォルダのからなるリストになっています。$XDG_DATA_HOME/mime にあるユーザ専用のデータベースは $XDG_DATA_DIRS/mime にあるシステム規模のデータベースよりも優先順位が高いです。XDG Shared Mime Info の仕様と同様に、これ以降はこれらのフォルダを <MIME> として参照することにします (置き換えて説明することにします)。
例えば環境変数のためのデフォルトのパスを想定し、「<MIME>/text/plain.xml を読み込みます」といった場合は次に示すファイルを読み込むという意味になります:
- ~/.local/share/mime/text/plain.xml
- /usr/local/share/mime/text/plain.xml
- /usr/share/mime/text/plain.xml
5.2.2. データの内容
次の一覧は MIME 型のデータベースを構成しているフォルダとファイル、そしてその概要を説明したものです:
- <MIME>/packages/
-
このフォルダにはたくさんの XML ファイルが格納されており、それぞれのファイルには複数の MIME 型の説明が記述されています。デフォルトでは、freedesktop.org.xml というファイルがシステム規模の /usr/share/mime/packages というフォルダにインストールされているはずです。このファイルには一般的に広く使われ認知されているデフォルトの MIME 型がすべて含まれています。
新しい MIME 型に関するデータを提供するアプリケーションは、このフォルダに1個の新しい ソース XML ファイルをインストールします。アプリケーションがインストールされる場所の接頭子に応じて、環境変数の $XDG_DATA_HOME:$XDG_DATA_DIRS で示されたいずれかのフォルダの /mime/package サブフォルダの中にファイルを生成します。例えば /usr/bin にインストールされるアプリケーションは /usr/share/mime/packages フォルダに新しいソース XML のファイルをインストールしなければなりません。packages フォルダの中にあるソース XML のファイルについて詳細は「セクション 5.3 - ソース XML ファイル」をご覧ください。
- <MIME>/メディアの種類/詳細な形式.xml
-
これらのフォルダとそこに格納されているファイルは、update-mime-database というコマンドを使って、<MIME>/packages/ サブフォルダの中にあるソース XML ファイルの集合から自動的に生成されます。例えば、mime-type という要素が /usr/share/mime/packages/freedesktop.org.xml ファイルの中にありますが、この要素毎に MIME 型のメディアの種類に対応したフォルダが /usr/share/mime/ の中にサブフォルダとして生成されます。同様にソース XML ファイルは MIME 型の詳細な形式を表す識別子に対応したサブフォルダの中に生成されます。生成した XML ファイルの中身はコメント (と、それをさまざまな言語に翻訳したもの)、詳細な形式の識別子と別名が含まれています。
例 5-1 例: /usr/share/mime/text/plain.xml ファイルこのファイルは、update-mime-database というコマンドがデフォルトのソース XML ファイルである freedesktop.org.xml を読み込んで自動的に生成されます。<?xml version='1.0' encoding='utf-8'?> <mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/plain"> <!--update-mime-database コマンドで自動的に生成されます (** 編集しないこと! **)--> <comment>plain text document</comment> <!-- (いろいろな言語で翻訳したコメントが続く) --> <comment xml:lang="fr">document plein texte</comment> <comment xml:lang="hu">egyszerű szöveg</comment> <comment xml:lang="it">Documento in testo semplice</comment> <comment xml:lang="ja">平文テキストドキュメント</comment> <!-- (いろいろな言語で翻訳したコメントが続く) --> </mime-type>
- <MIME>/globs
-
このファイルには、1行につき1つの MIME 型と1つの グロブ・パターンが記述されています (区切り文字はコロン “:”)。この グロブ・パターンにマッチしたファイルが最終的にコロンの前で定義された MIME 型に関連付けられます。ここで、ファイル名が グロブ・パターンにマッチさせる特別なルールがいくつかあります。これらのルールについて詳細は「XDG shared mime specification」をご覧ください。
このファイルも update-mime-database というコマンドがデフォルトのソース XML ファイルである freedesktop.org.xml を読み込んで自動的に生成されます。
- <MIME>/magic
-
これは、ファイルの中身の「においをかぐ」(Sniffing する) ことで MIME 型を解決する方法を格納したバイナリ・ファイルです。これは一般的に、「ファイルの中身の先頭バイトが %PDF- という文字列で始まっているかどうかチェックする; もしそうならば MIME 型として application/pdf を関連付ける」といったルールが1個以上記述されています。
このファイルも update-mime-database コマンドを使って生成されます。
- <MIME>/XMLnamespaces
-
このファイルには XML の名前空間を MIME 型にマッピングする情報が記述されています。1行につき名前空間と localName と MIME 型の三つの情報が記述され、区切り文字はスペース “ ” です。もし localName が空ならば、名前空間と MIME 型の間には2つのスペースが並ぶことになります。
このファイルも update-mime-database コマンドを使って生成されます。
- <MIME>/aliases
-
このファイルには MIME 型の別名が一覧で記述されています。別名とはまれに MIME 型が別の型として扱われることを意味します。一行ごとに2つのデータを記述します: 先頭が別名で、最後が MIME 型です (区切り文字はスペース “ ” です)。
このファイルも update-mime-database コマンドを使って生成されます。
- <MIME>/subclasses
-
このファイルにはサブクラス化した MIME 型とそれらの「親」に相当する MIME 型が一覧で記述されています。「XDG Shared MIME Info の仕様」によれば:
このファイルは <MIME>/aliases と書式が似ています。一行ごとに二つのデータを記述します。 先頭がサブクラス化した MIME 型で最後が親の MIME 型です (区切り文字はスペース “ ” です)。最初の型のいずれかのインスタンスが最後の型のインスタンスの一つになるのであれば、その型は別の型のサブクラスといいます。例えば、image/svg 型のファイルは全て text/xml でかつ text/plain でかつ application/octet-stream なファイルといえます。実際は、データの種類ではなくファイルの形式でサブクラスに分類しています (例えば、すべてのスプレッドシートが継承する「汎用的なスプレッドシート」なんてものは存在しませんから)。
このファイルも update-mime-database コマンドを使って生成されます。
5.2.3. MIME 型データベースを更新する
新しい MIME 型をシステムに追加するとか、MIME 型の情報を変更するといった作業を行うシステム管理者にとって、MIME 型のデータベースを更新する方法を理解しておくことは重要なことです。ここでは update-mime-database というコマンドが既にインストールされているものとして説明します。
例えば、アプリケーションが新しい MIME 型の情報を /usr/share/mime/packages/diff.xml にインストールしたら、その後に必ず update-mime-database というコマンドを /usr/share/mime という引数を指定して呼び出してください。
# update-mime-database /usr/share/mime *** * Updating MIME database in /usr/share/mime... ***
すると、<MIME>/packages のフォルダにあるすべてのソース XML ファイルを解析して、MIME 型のデータベースを更新します。