SigilでePub体験してみる(その4:ファイル構成編)
さて、ここまでのところでePubの実体は、基本的にはXHTMLドキュメントと、CSSファイルで構成され、必要な画像とフォントファイルを含んで、アーカイブ化(ひとまとめ)にしたものだということが、なんとなくわかってきました。
CSSで指定されたフォントをプラットフォーム側のフォントを使って表示するかどうか、一緒に保存したフォントファイルを使って表示するかどうかというのは、ビューワーに依存しePub側で制御する問題ではないようです。
で、このアーカイブ化(ひとまとめ)する方法ですが、簡単に言えば必要なファイルをZip圧縮したものの、拡張子を.epubにすればePubドキュメントになるということのようですが、単純にZip圧縮すればよいというものではなく、仕様書で定められた必須ファイルがあることや、圧縮したときに先頭に配置されることが指定されているファイルがあり、そのファイルだけは無圧縮で含んでいないといけないというようなルールがあるようです。
要するにSigilで保存をするときには、ePubとして必須のファイルを書き加え、条件にあったZipファイルができるように圧縮し、拡張子を.epubにして保存をかけているわけです。
本当はもっと厳密なルールがあるわけですが、それを具体的に知りたい方は、ぜひEPUBの仕様書を読んでみてください。日本語訳されたものが下記にあります。正式にはEPUBの仕様書ではなく「Open Packaging Format」というフォーマットについての仕様書となります。
●OPF 2.0 v1.0 日本語訳 [Open Packaging Format (OPF) 2.0 v1.0]
http://lost_and_found.lv9.org/opf/opf_2.0_final_spec_ja.html
逆にいったんePub化したものは、実はZip圧縮されたファイルなので、拡張子を.zipに変更してしまえば、普通にZipアーカイバソフトで解凍ができてしまいます。
では実際にSigilで作ったePubファイルの拡張子を.zipに変えて解凍をしてみます。私が作ったあるePubファイルを解凍すると下記のようなフォルダとファイル構成になっていました。
ここで「Text」「Styles」「Images」「Fonts」のフォルダと、そこに含まれるファイルは、Sigil上でも見えていたフォルダとファイルですので、これはそのまま圧縮されただけです。
他に少し見たことのないフォルダとファイルが追加されています。これがSigilが保存時に書き加えたフォルダとファイルになります。
上から順番に見てゆきましょう。
mimetype
拡張子もなにもないファイルですが、テキストエディタで開くと「application/epub+zip」という1行だけがかかれています。これは仕様書の中にも規定がないようなのですが(私がわかってないだけかも)、要するにこのパッケージのMIMEタイプは何かということを記述しているファイルのようです。
toc.ncx
宣言型目次ファイルというらしいです。これは必須のファイルで、NCXについても仕様が定められています。実際に開いてみると、目次の見出しのテキストと、それがXHTML文書のどこにあるかを、XHTML内のidの名前で示しているXML文書になっています。
これをビューワー側で見出しとして認識し、そこがクリックやタップされると該当の箇所にジャンプするという仕掛けのようです。
SigilのTool→TOC Editor…で表示される画面は、このtoc.ncxファイルを編集するためのもののようです。ここで保存された内容を保存時にtoc.ncxファイルとして書き出しているということなのでしょう。
content.opf
ePubのキモといえるファイルがこれです。OPFパッケージドキュメントと呼ばれるこのファイルは、ePubとしてパッケージされたもの名前や、著作者、言語、含まれているファイルの名前と場所の一覧をXML形式で記述しています。要するにこのePubドキュメントのメタファイルということになります。
仕様上、このファイルは必須のファイルで唯一.opfという拡張子を使ってよいファイルだと定義されています。.opfの拡張子が複数あると、どれが基準になるのかわからないので、そういうことになってるんだと思います。
SigilでTool→Meta Editor…で開く画面で、Title、Author、Languageが編集できるようになっていますが、それは、このファイルの冒頭部分に反映されるようです。
このファイルには、Title、Author、Language以外の要素も指定できます。先のTool→Meta Editor…で開く画面でも、右側の「More」というボタンを押すと、他の要素を追加できるようになります。「Add Basic」と「Add Adv.」というボタンがありますので、基本的な要素と拡張的な要素を選んで指定できるようです。
例えば「Photographer」という要素を追加すれば、 撮影された写真について責任を持つ人物や組織についてのメタ情報を加えることができます。
どんな情報が付与できるかは、はやり前述の仕様書をにあるので、くわしくはそちらをご覧ください。
container.xml
ePubはOEBPS Container Format(OCF)という仕様によってアーカイブされ、ひとまとめにされています。最初の方で述べた圧縮するときのルールとは、まさしくここで規定されているわけです。
で、このOCFに従ってアーカイブされた場合「すべての有効なOCFコンテナは、コンテナファイルシステムのルートレベルにある"META_INF"内に"container.xml"というファイルを持たなければならない」と決められており、それに従って生成されているファイルのようです。このファイルは出版物のOEBPS形式のルートファイル、およびコンテナに含まれる表示形式のMIMEタイプおよびパスを明示するというのが必須のようです。
OEBPS Container Format (OCF) の仕様の日本語訳は下記で見られるようになっています。
●OEBPS Container Format (OCF) 1.0 日本語版
http://naoki.sato.name/ocf/ocf_1_0_spec_ja.html
仕様の読み込みが足りないので、不正確な理解や表現があったらごめんなさいです。


コメントをどうぞ