CSSによる本作りの未来を占う―HTMLBookとはどのようなものか? 果たして普及するだろうか? 

最近、HTMLとCSSによる書籍制作が話題になっている。この話題を整理するとともに、この動きが大きな潮流になるかどうかを検討してみたい。未来がどうなるかを予測するのはなかなか難しいところだが、できるだけ論理的に考えてみよう。

まず、O’Reilly Mediaが提唱するHTMLBookを見てみよう。

1.HTMLを利用した書籍形式:HTMLBook

HTMLBookの仕様は次に公開されている。

HTMLBook

トップに「Let’s write books in HTML!」というスローガンがあるので名前のとおりHTMLで本を書いてみようということらしい。HTMLBookについて次のことを検討してみよう。

(1) HTMLBookとはどのようなものか? どうやってオーサリングするのだろうか?
(2) HTMLBookとほかのXMLドキュメント仕様との関係は?
(3) HTMLBookはPDFやEPUBとはどのような関係になるだろうか?
(4) HTMLBookはどのような分野で、どのように使われるだろうか? HTMLBookは普及するか?

2.HTMLBookとはどのようなものか? どうやってオーサリングするのだろうか?

2.1 HTMLBookの仕様

HTMLBookの仕様は現時点では作業ドラフトとされている。最新版は2013年8月付けである。

(1) HTMLBookは、HTML5のサブセットである。
(2) 技術書と参考書に使われる複雑な内容を含め、書籍の構造をあらわすように作られている。

HTMLBookの仕様

2013年8月版では次の要素が説明されている。HTML5をベースとするが、本を構成する部品はsectionを単位とし、部品の種類をdata-type属性で規定するのが特徴である。

(1)本を構成する部品
・Book 本 <body data-type="book">
・Chapter 章 <section data-type="chapter">
・Appendix 付録 <section data-type="appendix"> ほかに"afterword"がある。
・Bibliography 文献 <section data-type="bibliography">
・Glossary 用語 <section data-type="glossary">
・Preface 前書き <section data-type="preface"> ほかに"foreword", "introduction"がある。
・Frontmatter 前付け <section data-type="titlepage"> ほかに、"halftitlepage", "copyright-page", "dedication"がある。
・Backmatter 後付け <section data-type="colophon"> ほかに"acknowledgments", "afterword", "conclusion"がある。
・Part 部 <div data-type="part"> (章の親)
・Table of Contents 目次 <nav data-type="toc"> EPUB3のナビゲーション文書に準拠する。
・Index 索引 <section data-type="index"> EPUBの索引仕様準拠を推奨する。
・Sections 節 <section data-type="sect1"> "sect2", "sect3", "sect4", "sect5" は順に階層構造をなす。

(2)ブロック要素
・Paragraph 段落 <p>
・Sidebar サイドバー <aside data-type="sidebar">
・Admonitions 警告<div data-type="note"> ほかに、"warning"がある。
・Tables 表 <table>-<caption>-<colgroup>-<thead><tbody><tfoot>-<tr>-<th><td>
・Figure 図 <figure>-<figcaption>-<img>
・Examples 例 <div data-type="example">
・Code listings コードリスト <pre data-type="programlisting">
・Ordered lists 番号付きリスト <ol>-<li>
・Itemized lists 番号なしリスト <ul>-<li>
・Definition lists 定義リスト <dl>-<dt>
・Blockquote ブロック引用 <blockquote data-type="epigraph">
・Headings 見出し <h1>, <h2>, <h3>, <h4>, <h5>, <h6>
・Equation 数式 <div data-type="equation"> (MathMLを埋め込むことができる)

(3)インライン要素
・Emphasis 強調 <em>
・Strong 強い強調 <strong>
・Literal リテラル(インラインの整形済み) <code>
・汎用範囲指定 <span>
・Footnote, endnote 脚注・後注 <span data-type="footnote">
・Cross-references 参照 <a data-type="xref" href="#html5">
・Index Term 索引語 data-type="indexterm"; data-primary, data-secondary, data-tertiary; data-see, data-seealso; data-primary-sortas, data-secondary-sortas, data-tertiary-sortas
・Superscripts 上付き <sup>
・Subscripts 下付き <sub>

(4)対話
・Video ビデオ <video>
・Audio オーディオ <audio>
・Canvas キャンバス <canvas>

(5)メタデータ
・Metadata points メタデータ項目 <meta>: name, content

2.2 HTMLBookはAsciidocで記述できる

HTMLBookはどのようにオーサリングするのだろうか? HTMLBookはXSDスキーマが公開されているのでスキーマをサポートするXMLエディタを使えば、オーサリングは可能だろう。しかし、XMLエディタは一般の著者にはハードルが高い。

O’ReillyはAtlasという書籍編集制作サービスを運用している。Atlasでは当初Asciidocというテキスト形式で書籍をオーサリングするようになっていた。AsciidocとHTMLBookは一体どのような関係なのか?

Asciidocでは、コンテンツをテキストで執筆する。Asciidocはプレーンテキストに加えて、Wiki記法に似た簡易テキストマークアップ記法を使って、コンテンツにマークアップができる。画像やマルチメディアの埋め込みもできる。

Asciidocで1冊の本を執筆するときは、章などの単位でファイルを分けておき、ビルド用のファイル(book.asciidocなど)にinclude::[]マクロを記述することで1冊に統合する。

AscciidocをHTMLBookに変換するためのスクリプトが提供されている。こうしてみると、オーサリングは、Asciidocで行い、そこから変換することによってHTMLBookを生成するという想定のようだ。

asciidoctor-htmlbook

3.HTMLBookとほかのXMLドキュメント仕様の関係は?

3.1 DocBookをHTMLBookに変換できる

O’Reillyは、DocBookのサポートで有名であり、同社の書籍の多くはDocBookを利用して作成されていたようだ。GitHubには、DocBookをHTMLBookに変換するツールが公開されている。DocBookを使ってソースを編集した場合には、それをHTMLBookに変換することができる。

docbook2htmlbook

4.HTMLBookとPDF, EPUB, HTMLの関係は?

・HTMLBookのためのCSSテーマとして、“atlas_tech1c_theme” 、“atlas_trade_theme”が提供されている。CSSテーマは、EPUB、HTML、mobi、PDFの4種類がセットになっている。HTMLBookを、4つの媒体でできるだけ同じような見栄えで表示できるようなCSSが作成されている。

5.HTMLBookはどのような分野で使われるだろうか? 普及するだろうか?

以上から、HTMLBookは、本を直接オーサリングするというよりもむしろEPUB、mobi、HTML、PDFの形式で配布するための一種のハブ形式になっていると言ってよいだろう。原稿自体は、DocBookやAsciidocで記述して、それをHTMLBookを経由して配布形式にするという使い方が多いのではないだろうか。

・O’Reillyの説明にもあるとおり、HTMLBookは技術的な参考書を表現することをかなり意識している。しかし、書籍にはさまざまな種類がある。その中でどの程度の種類コンテンツを記述できるかは未知数である。このあたりは実際に使ってみないとわからないだろう。

・一般に、XMLなどのマークアップ言語を使ってドキュメントを執筆すると必ず出てくるのが、自分が書きたい・表現したいコンテンツをうまく表現できないということである。どうしても満足できない場合は、スキーマを独自拡張することになる。独自拡張はあまり望ましくないが、現実の問題としては、普及すればかならず独自拡張のニーズが生まれるものだ。HTMLBookが広く普及するには拡張を行なうための手続きやメカニズムが提供されている必要があるだろう。そしてユーザーによる拡張を標準に取り込むプロセスも欲しいところだ。

・HTMLBookが普及するかどうかは、周辺のツールやテーマの種類が増えるかどうか。また、それを利用する人たちのコミュニティが形成されるかどうか、が鍵になるだろう。まずは、O’Reilly以外に、これを採用するユーザーが出現するかどうか、に注目したい。