InDesign(インデザイン)データをXMLでコントロールするIDML
InDesign(インデザイン)ドキュメントをまるごとXMLに書き出す
DTPでは長い間、原稿である文章データはプレーンなテキストというのが一般的でした。プレーンなテキストデータはどんな環境でも扱うことができるという点で汎用性が高いというのが大きなメリットですが、一方で、書体などの指定がなく、処理をレイアウトソフト上でしなければならないため効率が悪いというデメリットもあります。
InDesignタグなどソフトの独自機能を利用することで効率化を図ることもできますが、処理をした時点で汎用性はなくなり、たとえばそのデータをWebで使いたいという場合はまたプレーンなテキストにして処理をしていくことになります。
デジタル化が進み、データのマルチユース利用が求められるようになってくると、従来のやり方の非効率性が問題になってきます。特に昨今ではデータをXMLで管理するシステムも多く使われるようになってきており、DTPでもXMLの活用がテーマのひとつになりつつあります。
InDesignはバージョン2.0のころからXMLの読み書きをサポートしています。この機能を使うとプレーンテキストの代わりにXMLデータを読み込んでレイアウトしたり、InDesignドキュメントからXMLデータを書き出したりすることができます。これは、XMLタグとInDesignのスタイルをリンクさせることで相互変換を実現するもので、インラインの形で画像も扱うことができ、流し込みからレイアウトまで効率的な作業が可能です。
ただし、この機能はあくまでXMLデータをInDesignドキュメント上にテキストデータとして流し込むものであり、オブジェクトの自由な配置などは扱えず、たとえばカタログのように、細かく分かれた膨大なテキストフレームや画像を複雑なテンプレートパターンに従って組み合わせ、ブロック単位で配置していくというような仕事にはあまり向いていません。
また、ドキュメントのデータをXMLに書き出す場合でも、オブジェクトのサイズや位置といったレイアウトの情報は抽出できません。XMLを書き出す際にはスタイルからタグへの変換の設定をしなければならず、データを修正する際にもXMLタグの存在に気をつけなければならないなど、使い勝手の点では十分とは言えないものでした。
ところで、InDesignはCS3からINXファイル、さらにCS4からはIDMLというフォーマットをサポートしています。これらは上位バージョンで作ったデータを下位バージョンで開くための互換用フォーマットとされていますが、これらのフォーマットは実はInDesignのドキュメントをXMLで書き出したものです。
互換フォーマットとして利用できるだけあって、これらはInDesignのドキュメントを完全にサポートします。つまり、InDesignのユーザーインターフェイス上で用意されているXML機能と違い、InDesignドキュメントのすべてがXMLで書き出され、再現することが可能になっているわけです。
なお、IDMLはINXをより分かりやすくすることで、単なる互換フォーマットとしてよりもそれ自体でさまざまな処理を容易に行えるように作られています。具体的にはINXが画像も含めて1つのファイルとして書き出されるのに対して、IDMLはドキュメントの要素を分類し、それぞれ別のファイルとして書き出し、ZIPアーカイブとしてまとめられています。
IDMLによるレイアウト
IDMLはZIPで圧縮されたフォーマットであり、ZIPを扱えるソフトであれば解凍することができます。解凍すると、mimetype、designmap.xmlというファイルと、「MasterSpreads」「META-INF」「Resources」「Spreads」「Stories」「XML」といったフォルダが現われます。
designmap.xmlはIDMLに含まれるファイルがすべて書き込まれ、また、ページの順番など全体の情報が記述されています。InDesignはこの情報を参照してデータを読み込んでいくことになります。
MasterSpreadsにはマスターページ、Resourcesにはフォントやスタイル、色など各種の情報や設定が含まれるファイルが収められています。また、XMLフォルダにはInDesignに取り込んだXML、META-INFにはdesginmap.xmlの場所やXMPデータの情報などを記したデータが含まれます。
IDMLでは、ドキュメントはスプレッド単位で管理されます。見開きで作られたドキュメントであればスプレッドは見開き2ページですから、見開きごとに1つのファイルが作られます。このファイルを収めるのがSpreadsフォルダです。
Spreadsの中の各XMLファイルは、そのスプレッドに含まれるオブジェクトごとにその位置やサイズ、画像のリンク情報などを記述します。なお、オブジェクトの位置を表すために必要な座標ですが、その原点はスプレッドの中央になります。X座標は中央より左がマイナス、右がプラス、Y座標は中央より上がマイナス、下がプラスです。
テキストを含むオブジェクトの場合は、オブジェクトの情報のひとつとしてストーリーの名前が記述されます。複数のテキストフレームが連結されている場合は、前のフレーム、後のフレームの名前も書かれます。
ドキュメント上にあるあらゆるテキストは、Storiesフォルダに含まれるXMLに記述されます。ストーリーごとに1つのXMLに記述されるため、数十ページにまたがる本文データでも1つのXML、1文字のストーリーでも1つのXMLです。カタログなどでたくさんのテキストフレームを組み合わせてレイアウトしていく場合、1つの見開きだけで数百のフレームが使われたりしますが、そういった場合は数十ページで数千数万ものストーリーXMLになることもあります。
それぞれのストーリーでは、文字の属性や段落スタイル、文字スタイルがXMLのタグや属性で指定されます。
なお、IDMLで使われるXMLには数多くのタグや属性が用意されていますが、それをすべて把握しないと作業ができないわけではありません。多くの場合、デフォルトの指定があり、何も指定しなければデフォルト指定が使われることになっているため、必要最小限の指定だけでドキュメントを生成することができるのです。
IDMLの最大の特徴は、あらゆる情報がXMLで書かれているという点です。オブジェクトやストーリーが膨大になってくると、オブジェクトの位置やサイズ、テキストの指定を手作業でコントロールするのは大変です。XMLであれば、XSLTなどを使うことで原稿データを元にきちんと指定されたXMLを自動的に生成していくことも可能です。
また、XMLはEPUBなど電子書籍フォーマットとしても利用できます。たとえば、原稿をXMLで作ることで、EPUBの中身のXHTMLとIDMLの中身のXMLをそれぞれ自動で生成するといったことも可能になるわけです。
InDesignはこれまで印刷用のデータを作る用途に特化して使われてきました。これからも印刷データの作成がメインなのは変わらないでしょうが、電子書籍が普及してくると、今後は他のデータとの連携がより重要になっていくでしょう。それにしたがってIDMLの重要性も増していくはずです。
(田村 2012.7.17初出)
(田村 2016.6.3更新)