2011年6月8日水曜日

ePub 2.0 ことはじめ (5) 目次の作成

の続きです。

Makefile ができたので、XHTML ファイルを編集しても最少の手間で ePub ドキュメントを生成できるようになりました。本エントリーでは、「目次」の作成方法を解説します。

目次の作成

iBooks では目次がないと ePub ドキュメントとして不正に扱われます。そのため、簡単な目次の作成方法については「絳アト日記: ePub 2.0 ことはじめ (1) シンプルな ePub を作る」で解説しました。おさらいしてみましょう。

目次を作るには、まず content.opf ファイルに目次ファイル「toc.ncx」があることを認識させます。そして、toc.ncx ファイルで目次を作ります。

content.opf ファイルの変更点

content.opf ファイルにおける目次ファイルの変更部分は二か所です。

まず manifest 要素に toc.ncx が ncx (目次) ファイルであることを登録します。今回の場合、次のようになります:

<manifest>
  <item id="ncx" href="toc.ncx" media-type="text/xml" />
  ...
 </manifest>

id 属性値は ncx としておくのが無難でしょう。href 属性値は自由に決めて構いませんが、拡張子は ncx とします。今回は toc.ncx という名前を採用しました。media-type 属性値は text/xml です。

次に spine 要素に toc 属性を追加します。属性値は目次ファイルの ID です:

 <spine toc="ncx">
目次ファイル (toc.ncx) は次のようになります:
<?xml version="1.0" encoding="UTF-8"?>
<ncx xmlns="http://www.daisy.org/x3986/2005/ncx/" version="2005-1">
  <head>
    <meta name="dtb:uid" content="akaato.com20110418"/>
    <meta name="dtb:depth" content="1"/>
    <meta name="dtb:totalPageCount" content="0"/>
    <meta name="dtb:maxPageNumber" content="0"/>
  </head>
  <docTitle>
    <text>ePub 2.0 ことはじめ</text>
  </docTitle>
  <navMap>
    <navPoint id="chap1" playOrder="1">
      <navLabel>
        <text>第一章 ことはじめ</text>
      </navLabel>
      <content src="chap1.xhtml"/>
    </navPoint>
  </navMap>
</ncx>

dtb:uid

目次ファイルの例を見れば分かる通り、目次ファイルには一つの navMap 要素が入ります。navMap 要素の前はヘッダーと考えて構いません。navMap 要素の中身が目次となって表示されます。

navMap 要素の中に目を移す前に、目次ファイルのヘッダー部分へ注意を向けましょう。ここに meta 要素で name="dtb:uid" というコードがあります。この属性値には、content.opf ファイルで dc:identifier で設定した値から「urn:uuid」を除いたものを設定します。

今回の例では、content.opf の概当部分は次の様になっていますから

 <dc:identifier id="BookId">urn:uuid:akaato.com20110418</dc:identifier>

toc.ncx の概当部分は下記の様になります:

 <meta name="dtb:uid" content="akaato.com20110418"/>

navPoint

navMap 要素の中には複数の navPoint 要素を入れることができます。この navPoint が「目次」となります。

一般的な navPoint 要素は次の様になります。

<navPoint id="目次用のID" playOrder="目次の順番 (数字)">
 <navLabel><text>目次名</text></navLabel>
 <content src="URL"/>
</navPoint>

「目次用のID」は content.opf 内の ID とは無関係です。playOrder の順番に目次が並べられます。navPoint 要素は入れ子にすることも可能ですし、「#name」も利用可能です。

一例です。

<navMap>
  <navPoint id="chap1" playOrder="1">
    <navLabel>
      <text>第一章 ことはじめ</text>
    </navLabel>
    <content src="chap1.xhtml"/>

    <navPoint id="chap1" playOrder="2">
 <navLabel>
   <text>1.1 利用可能な要素</text>
 </navLabel>
 <content src="chap1.xhtml#elem"/>

 <navPoint id="structure" playOrder="2">
   <navLabel><text>1.1.1  構造要素</text></navLabel>
   <content src="chap1.xhtml#structure"/>
 </navPoint>

 <navPoint id="text" playOrder="3">
   <navLabel><text>1.1.2  テキスト</text></navLabel>
   <content src="chap1.xhtml#text"/>
 </navPoint>

 <navPoint id="link" playOrder="4">
   <navLabel><text>1.1.3  ハイパーリンク</text></navLabel>
   <content src="chap1.xhtml#link"/>
 </navPoint>

 <navPoint id="list" playOrder="5">
   <navLabel><text>1.1.4  リスト</text></navLabel>
   <content src="chap1.xhtml#list"/>
 </navPoint>

 <navPoint id="fix" playOrder="6">
   <navLabel><text>1.1.5  修正</text></navLabel>
   <content src="chap1.xhtml#fix"/>
 </navPoint>

 <navPoint id="table" playOrder="7">
   <navLabel><text>1.1.6  テーブル</text></navLabel>
   <content src="chap1.xhtml#table"/>
 </navPoint>
    </navPoint>
  </navPoint>
</navMap>

結果です。iPhone の iBooks で表示させました。

2011年5月30日月曜日

「電子書籍 らくらくPACK」下書き — 第 5 回配信

5/9、「電子書籍 らくらくPACK」下書きの第五回が配信されました。同書については、過去記事をお読み下さい。

第五回の内容は、副題「EPUBテンプレート対応版」にあるテンプレートの紹介です。

EPUB の中身は (既に紹介した通り) XHTML です。つまり、ウェブ・ページと同じと言っても過言ではありません。ウェブ・ページは、「文章構造」を XHTML に、スタイル (見た目) をスタイル・シートに書く様になっています。このメリットは、スタイル・シートを差し替えるだけで、文章に手を加えることなく見た目を大きく変更できることです (実践されているページは少ないですが...)。

EPUB も同じ構造ですから、スタイル・シートを切り替えるだけで見た目を変更できます。しかし、EPUB 用のスタイル・シートのノウハウはまだ少ないです。そこで、ある程度整えた文章構造と CSS を「テンプレート」として提供しようというが、本書のウリです。

第五回では、提供しているテンプレートの実例が紹介されています。本書で用意しているテンプレートは以下の通りです。

  • 基本テンプレート*
  • エッセイ、小説用
  • 日記用*
  • 写真集用*
  • 招待状用*
  • レシピカード用*
  • 自分史用
  • カタログ用

第五回ではこのうち * の付いたテンプレートをサンプルとして読むことができます。残るテンプレートについては、本を購入下さいということですね。

発売

「電子書籍 らくらくPACK」は、下書きを一部公開するという変わったマーケティング手法を取ってきました。

私の話をすれば、本屋で本を立ち読みすることが少なくなったので、中身も分からず技術書を買うことが多くなりました。今回の様に、本の中身が一部でも先取りで分かると購入の判断がしやすくなってとても良いですね。また、発売日前から公開している点が気に入りました。この記事シリーズの頭でも書きましたが、読者のフィードバックを本に入れることができる可能性があるからです。これは本を出版した後には出来ないことですよね。Amazon の中身を見る機能では対応できないことです。

本書は 6/1 に発売とのことです。気に入ったら、購入してみてはいかがでしょうか?

2011年5月26日木曜日

EPUB3 仕様を確定

2011 年 5 月 23 日、EPUB の仕様を策定してる IDPF がついに EPUB 3 仕様を確定しました。

EPUB 3 の仕様が確定したということは、仕様にそって EPUB 3 のドキュメントを安心して作れるということです。また、現在 EPUB 3 用のリーダー・アプリは登場していませんが、仕様が確定したことで開発が進むことが期待されます。EPUB 3 には、日本語縦書きの仕様も盛り込まれていますから、とても楽しみですね。

JavaScript

EPUB 3 で一番気になっていたのは JavaScript が使えるかどうかでした。仕様によると、一応 JavaScript はサポートされました。良かったです :)

ただし、リーダー・アプリにおける JavaScript サポートはオプショナルなので、EPUB 3 で JavaScript を入れる場合は JavaScript が動かなくても文意が通じるようにしなければいけません。おそらく Apple の eBooks や Android の ePub リーダー・アプリは JavaScript 対応してくるでしょうが、Amazon の Kindle の様な商品は JavaScript サポートがない (か遅れる) でしょう。書き手は、その点を考えて JavaScript を使わないといけませんね。

2011年5月25日水曜日

EPUB3 コンテストの〆切が 6 月末まで延期

EPUB3 を盛り上げるイベントの一つに EPUB3 コンテストがあります。

このコンテストの応募〆切が延長されました。最初、5 月末日だったものが 6 月末日に変わっています。5/10 の情報です。5 月に入って絶賛体調不良なので、告知を見落としていました。なお、イベント開催者側は延期の理由を次の様に書いています。

5月下旬から6月にかけて、IDPF Digital Book 2011Apple WWDC 2011などのイベントで、多くのEPUB3関連の発表があるので、それを待って、6月末日終了としました。

EPUB3 コンテスト 第1回 * - epubcafé より引用

なるほど。イベント目白押しですね。

私としては体が動かず、EPUB3 ドキュメントの作成も遅れに遅れていたので、今回の延長は棚からぼたもちです ;)

2011年5月17日火曜日

「電子書籍 らくらくPACK」予約受付中

本ブログで (ドラフト原稿を) 紹介している「電子書籍 らくらくPACK」が、Amazon で予約受付中になっています。

作者は林拓也さん。出版社は技術評論社。大型本で 144 ページ。2011 年 5 月 26 日発売予定。価格は 2,079 円です。

まずは下書きを読んで、納得の内容だったら予約してみてはいかがでしょうか?

2011年5月16日月曜日

「電子書籍 らくらくPACK」下書き — 第 4 回配信

5/9、「電子書籍 らくらくPACK」下書きの第四回が配信されました。同書については、過去記事をお読み下さい。

第四回の内容は「Sigil の概要説明」です。第 3 回にて、ePub における基本情報を提示しました。第四回はその事実を踏まえて、本格的に Sigil を使った ePub 作成方法について解説をします。

各節のタイトルを挙げておきましょう。

  • 4-1 Sigil の概要を知ろう
  • 4-2 文章を貼り付けよう
  • 4-3 文章を構造化しよう
  • 4-4 画像を配置しよう
  • 4-5 スタイルを設定しよう (※)
  • 4-6 目次 (TOC) を設定しよう (※)
  • 4-7 表紙画像とメタ情報を設定しよう (※)

今回のお試し配布版では、※のついた 4-5, 4-6, 4-7 節の内容が省略されています。

4-2, 4-3, 4-4 についてコメントを添えて紹介に変えたいと思います。

4-2 文章を貼り付けよう

本書では、Sigil で直接ドキュメントを作成することはしません。テキスト・エディターで原稿を作成し、Sigil で成型して ePub 化する手順を取っています。そのため、Sigil にテキストを貼り付ける作業が一番最初に説明されています。

Sigil をブックビュー・モードにして、テキストを貼り付けるのがコツです。すると、テキストに応じた HTML ファイルが Sigil によって作成されます。

何故、このような手間を取る必要があるのか? その説明がありません。ただ、その様にすると書いてあるだけです。コラムでも良いですから、説明があると良いと思いました。私が愚考するに

  • Sigil は大量の日本語ドキュメントを扱うと落ちる
  • 下書きは、テキスト・エディターを使う方が書きやすい

ということを考慮しているのではないかと思います。

XHTML ファイルの容量

同名のコラムがあり、ePub リーダーによっては XHTML ファイルのデータ容量の上限が 300 KB になっていることを指摘しています。これは ePub リーダー側の都合であって、ePub の規格にあることではありません。ですが、より多くの人に読んでもらう場合、この事実は頭の隅に置いておく方が良さそうです。

4-3 文章を構造化しよう

Sigil のテキストを貼り付けただけでは、正しい構造化がされていません。例えば、Sigil はどの行が「見出し」かを知ることが出来ません。そこでユーザーは手で HTML ファイルを構造化する必要があります。4-3 では、具体的に以下の構造化について説明しています。

  • 見出しの作成
  • 箇条書きリストの作成
  • 不要な空白の削除
段落について

Sigil はテキストをコピーした時、改行を段落として認識します。つまり、改行があるごとに p 要素でタグ付けします。

しかし、本書では、p 要素を br 要素に置き換えるよう勧めています。どうやら、p 要素を入れることで「空白行」ができることを嫌っているようです。

私は p 要素で空白行を入れるのは「文章構造」ではなく「スタイル」の問題だと思います。空白行が入るのが嫌であれば、p 要素のスタイルを変更すべきで、「段落」という文章構造を重視し残すべきだと考えます。

4-4 画像を配置しよう

特にコメントはありません。

おわりに

本書の様に、原稿と文章成型の工程を分ける場合メリットとデメリットがあります。

メリットは原稿作成時に「テキスト」だけを書けば良いことです。作者は文章作成以外に集中しなくて済みます。

デメリットは、原稿を Sigil で成型後、修正を入れるのが大変なことです。変更量が大きければ、テキスト・エディターで文章修正後、もう一度文章構造形成や画像配置を行なわなくてはなりません。変更量が小さい場合は、オリジナルの原稿と Sigil 側のドキュメント両方に修正を入れることになるでしょう。

現状、本書が示す方法が最良に近いと思いますが、メリット・デメリットがあることを具体的に書いてあると親切だと思いました。

体調を崩しています

ゴールデン・ウィーク明けから、体調を崩しています。今日、五月に入って初めて PC を起動しました。

少々不定期になるかもしれませんが、4/28 以来更新が止まっていたブログを再開します。どうぞ、よろしく。