Interchange File Format(IFF)とは
Interchange File Format(IFF)は、1985年に
エレクトロニック・アーツが開発した汎用
ファイルフォーマットです。主にコモドール社の
Amigaで、異なるアプリケーション間でのデータ交換を円滑に行うことを目的として設計されました。IFFには特定の
拡張子は存在しませんが、`.iff`という
拡張子のファイルは、画像フォーマットである
ILBMであることが多いです。しかし、IFF形式は
ILBMに限らず、多くのファイル形式で採用されています。
IFFの構造
IFFファイルは、チャンクと呼ばれる単位で構成されています。各チャンクは、以下の要素で構成されます。
1.
Type ID:チャンクの種類を示す識別子です。MacintoshではOSType、WindowsではFourCCとも呼ばれます。
2.
チャンクサイズ:チャンクのデータ部分のバイト数を示す32ビットの符号なし
整数です。IFFでは全ての
整数はビッグ
エンディアンで表されます。
3.
データ:チャンクの中身です。チャンクの種類によって、数値データ、テキスト、その他のデータなど、様々なデータが含まれます。
チャンクの長さが明示的に記述されているため、ファイル解析時に不要なチャンクをスキップすることができます。また、チャンクをグループ化する`FORM`、`LIST`、`CAT`といった特別なチャンクも存在します。
`FORM`チャンク:構造体のようなもので、複数のチャンクを入れ子にすることができます。
`LIST`チャンク:一連のプロパティチャンクと、そのプロパティが適用される入れ子になったチャンクグループで構成されます。
`CAT`チャンク:単純なチャンクの集合体です。
これらのグループチャンクはさらにネストさせることが可能で、柔軟なデータ構造を表現できます。グループチャンクにも長さが記述されているため、同様にスキップが可能です。
IFFファイルは全体として、一つのグループチャンクで構成されます。また、チャンクの先頭アドレスは必ず偶数でなければなりません。これは、IFFが元々MC68000向けに設計されたことに由来します。そのため、必要に応じてパディングが行われます。
IFFにおける標準チャンク
IFFファイルでは、いくつかの標準的なチャンクが定義されています。
`AUTH`:作者情報を示すテキストデータ。
`ANNO`:アノテーション(通常はファイルを作成したプログラム名)。
`NAME`:作品名などのテキスト。
`VERS`:ファイルバージョンを示すデータ。
`(c)`:コピーライト情報を示すテキストデータ。
`CMAP`:パレット情報(主に画像フォーマットで使用)。
`BODY`:
ILBMでは画像データ、8SVXでは音声データを格納。
同じチャンク名でも、
ファイルフォーマットによって意味が異なる場合があります。
IFF形式は、ファイルを作成するアプリケーションが独自のチャンクを追加しても、別のアプリケーションでそのファイルを読み込む際に問題が発生しないように設計されています。これは、IFFの大きな利点の一つです。
IFFとXML
入れ子構造を持ち、説明を追加できるという点で、IFFはXMLと類似していると言われることがあります。しかし、XMLがテキスト形式であるのに対し、IFFはバイナリデータ(チャンクの長さ)を含みます。IFFをXMLに機械的に変換することは可能ですが、XMLの方が機能的に拡張されているため、逆方向の変換は容易ではありません。
IFFは多くの
ファイルフォーマットの基盤となっています。以下はその代表例です。
16SV, 8SVX(音声フォーマット)
ACBM(画像フォーマット)
AIFF(音声フォーマット)
ANBM, ANIM(アニメーションフォーマット)
BIFF8(Microsoft Excelで使用されていた形式)
Alias/Wavefront
Mayaファイルフォーマット(画像およびシーン記述)
Word文書(Word 97までの形式)
DjVu(文書フォーマット)
DR2D(二次元ベクターフォーマット)
EMOD(モジュールフォーマット)
FNTR, FNTV(フォントフォーマット)
FPBM(画像フォーマット)
FTXT(テキストフォーマット)
GSCR, USCR(楽譜フォーマット)
IFRS, IFZS(インタラクティブフィクション用フォーマット)
ILBM(
ビットマップ画像フォーマット)
LWOB, LWO2(3次元オブジェクトフォーマット)
PDEF(ページ定義)
PICS(Macintosh QuickDrawの画像をカプセル化したもの)
PLBM(画像フォーマット)
SHRI(アーカイブ)
SMUS(音楽フォーマット)
TDDD(3次元オブジェクトフォーマット)
UVOX(音声フォーマット)
VDEO(動画フォーマット)
YAFA(アニメーションフォーマット)
IFFのクローンと派生フォーマット
IFFの考え方を受け継ぎ、独自に発展したフォーマットも多数存在します。
RIFF:マイクロソフトとIBMが開発したフォーマットで、先頭に"RIFF"という文字列があり、リトルエンディアンを採用しています。AVIやWAVなどが該当します。
TIFF:
アルダスが開発したフォーマットで、チャンク構造を持ちますが、画像形式は
ILBMではありません。
標準MIDIフォーマット:IFFの概念を取り入れていますが、IFFの規格には準拠していません。
PNG:IFF同様チャンクの概念を持ちますが、構造は異なります。
QuickTime (.mov) と MP4:チャンクをアトムと呼び、構造が異なります。4GBを超えるチャンクを扱えます。
3dstudio (.3ds):チャンク名に2バイトを使用する3次元シーンフォーマットです。
*
Nero Burning ROM:CDイメージファイルのフォーマットにチャンクの概念を利用していますが、用語が異なります。
まとめ
IFFは、柔軟な構造を持つ汎用的な
ファイルフォーマットであり、多くのファイル形式の基礎となっています。チャンク構造によるデータ管理と拡張性の高さが、その大きな特徴と言えるでしょう。