Interchange File Format

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ベースの主なファイルフォーマット



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は、柔軟な構造を持つ汎用的なファイルフォーマットであり、多くのファイル形式の基礎となっています。チャンク構造によるデータ管理と拡張性の高さが、その大きな特徴と言えるでしょう。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。