‘未分類’ カテゴリーのアーカイブ

電書協ガイドEPUB用試し読みファイル生成スクリプト

2014/07/16

 電子書籍の制作時に、コンテンツファイルと同時に納品が求められるものに「試し読みファイル」があります。これは例えばAmazonであれば画面右側の「1-Clickで今すぐ買う」ボタンの下にある「今すぐ無料サンプルを送信」ボタンから各端末に配信することで読める「試し読み用コンテンツ」のことで、通常冒頭の10%程度を読むことができます。BookLiveなどでは現在ブラウザ画面内で試し読みが出来るようです。
 この「試し読みファイル」は、各配信ストアや電子取次がサービスとして作成することを行っている場合もあるようなのですが、まだ別途必要とするストアもあるようで、現状まだ納品が求められます。また、各配信ストアや電子取次の作った試し読みファイルは出版社に支給されるわけではないため、自社サイトでのプロモーション用途には別途ファイルを用意する必要がある、といった事情もあるのではないかと思います。
 このため、コンテンツファイル完成後に試し読みファイルを制作する必要があるのですが、単純な読み物的なコンテンツならまだしも、画像やリンクが多数含まれるようなリフロー型のEPUBコンテンツを加工して試し読みファイルを制作するのは、実は結構面倒な作業です。

 そこでこの部分を自動化すべくスクリプト化を図っていたのですが、完成し、私の所属する会社から公開の許可も得られましたので公開させていただきます。
 なお、このスクリプトは「電書協ガイド仕様のリフロー型EPUB」用として作っております。例えばでんでんコンバーターRomancerなどで生成した、仕様の異なるEPUBでは、処理後にEPUBソースの手直しが必要になると思われます(おそらく階層化した目次まわり)。あらかじめご了承ください。

使用方法

「++試し読みここまで++」をコメント文で記述あらかじめZIP展開したEPUBフォルダ内の文書XHTMLファイル内に「++Trial reading is so far++」もしくは「++試し読みここまで++」という表記をコメント文等で記述しておきます。その後ターミナル等で
perl makesampleepub.pl(このスクリプトのソースファイル) 展開したEPUBのフォルダのパス 「試し読みはここまで」などと記載されたXHTMLファイルのパス
と入力して実行すると、展開したEPUBのフォルダと同一の階層に試し読みファイルが生成されます。ファイルがデスクトップにあるなら

perl /Users/username/Desktop/makesampleepub.pl /Users/username/Desktop/testepubfile /Users/username/Desktop/試し読みはここまで.xhtml

のような感じです。usernameのところは環境に合わせて差し替えてください。また、XHTMLファイルはあらかじめ作成しておく必要があります。

処理内容の詳細

  1. EPUBコンテンツを先頭から読んでゆき、「++Trial reading is so far++」もしくは「++試し読みここまで++」という文が含まれる行が出てきたらそこでファイルを分割、以後のコンテンツを削除
  2. 必要のなくなったXHTML文書ファイル、画像ファイルを削除
  3. OPFファイル内の消去したXHTML文書ファイル、画像ファイル関連の記述を削除、書名に「【試し読み版】」の記述を追記
  4. 文書ファイル消去により無効になったコンテンツ内リンクの消去
  5. 文書ファイル消去により無効になったHTML目次項目のリンクの消去
  6. 文書ファイル消去により無効になった論理目次項目の消去
  7. 「試し読みはここまで」などと記載されたXHTMLファイルをコンテンツ末尾に挿入、OPFにファイル情報を追記
  8. 以上の処理を行い、試し読みEPUBファイルを生成

ソースファイル

ダウンロードはこちら↓

このスクリプトを利用したことによる損害等に関しまして、私としては一切責任を負いかねますので、あくまで自己責任にてご利用ください。
転載・改訂等はご随意に。なお、改訂して再配布される際には@JunTajimaまでご一報いただけると嬉しいです。といいますか誰かスゴい人、汎用EPUB用コードに直しちゃってください。

なお、先日KADOKAWAさんのTw-ePub発表直後にこんな記事が流れてきてましたので、記事のとおりBiB/iを使って、生成した試し読みファイルをTwitterに流してみました。


意外と簡単でしたし、何よりTwitter経由でのコンテンツとの偶然の出逢いはずっと電子書籍の課題として挙げられ続けてきた「ディスカバラビリティ」の補完策になります。ライトコンテンツのプロモーション用としては結構有効と思いますので、活用を検討されてみてはいかがでしょうか。

(2014.7.16)

epub-type=”noteref”を使った脚注ポップアップ

2014/06/09

先日お手伝いさせていただいた本で、以前このブログでもちょっと紹介をした「epub-type=”noteref”」を使った脚注のポップアップを実際に使いました。これはリンク自体は巻末の脚注ページに貼り、脚注ポップアップに対応しているiBooksでは内容がポップアップ表示され、対応していないその他のビューアでは通常のリンクとして動作するというものです。これに関して解説を書いて欲しいというご要望をいただきましたので、簡単にまとめさせていただきます。

<aside>ではなく<div>要素に注釈部分を記述

以前のエントリではfootnote指定を<aside>タグの属性として記述していたのですが、この状態ですとiBooksでは注釈部分は表示されません。今回は通常のテキストとしても表示させたかったので、<div>要素の属性としてfootnote指定をしました。以下のような感じです。

呼び出しファイル側:

<p>本文テキスト入る本文テキスト入る本文テキスト入る本文テキスト入る本文テキスト入る<span class=super><a epub:type=”noteref” href=”#cyu001″>[★]</a></span>本文テキスト入る本文テキスト入る本文テキスト入る</p>

注釈ファイル側:

<div class=”start-1em”>
<div epub:type=”footnote” id=”cyu001″>
<p><span class=”gfont”>注釈タイトル</span></p>
<p>注釈テキスト入る注釈テキスト入る注釈テキスト入る注釈テキスト入る注釈テキスト入る</p>
</div>
</div>

なお今回は複数の段落ブロックを注として表示させるためにdiv要素に対してfootnote指定をしていますが、ブロック要素内の一部のテキストのみをポップアップ表示させたい場合は、span要素に対してfootnote指定をすることで実現できるようです。

リンクタグはネストの一番内側に記述する

以前のエントリーにも書いたのですが、リンクタグ(aタグ)はネストの一番内側に記述する必要があります。そうしないとiBooksでポップアップが動作しません。

本文テキスト入る<span class=super><a epub:type=”noteref” href=”#cyu001″>[★]</a></span>本文テキスト

ならOKですが、

本文テキスト入る<a epub:type=”noteref” href=”#cyu001″><span class=super>[★]</span></a>本文テキスト

ではダメです。

ポップアップウィンドウ内ではCSS指定は無視される

また、ポップアップウィンドウ内では一切のCSS指定が無視されます。このため、太字や書体指定など、CSS指定に依存する表現は使用しない方が良いと思われます。同様にルビも通常のテキストとして表示されてしまいます。ただ、こちらは<rp>タグを利用して「文字(ルビ)」のように表示させることで対処できそうです。今回はルビが無かったため試してはいませんが、ソース的にはこんな感じでしょうか。

<div class=”start-1em”>
<div epub:type=”footnote” id=”cyu001″>
<p><span class=”gfont”>注釈タイトル</span></p>
<p>注釈テキスト入る<ruby>注釈<rp>(</rp><rt>ちゅうしゃく</rt><rp>)</rp></ruby>テキスト入る注釈テキスト入る注釈テキスト入る注釈テキスト入る</p>
</div>
</div>

また、注釈部分に内部/外部問わずリンクを含めるのは、現状では避けた方が良いようです。内部リンクではタップした際にポップアップウィンドウの挙動がおかしなことになりますし、外部リンクではアプリケーションが落ちてしまうようです。

注釈部分のファイルサイズは30KB程度を目安に

正確な値は分からないのですが、どうやら呼び出す注釈部分のファイルサイズが大きすぎるとポップアップが動作しなくなるようです。おそらくiBooksのメモリ管理の関係かと思います。試してみた範囲では、XHTMLファイルのサイズを30KB以下程度に抑えることで回避できるようです。ただ、リンクの数に依存する可能性もありますので、正確なところはわかりません。

以前試したのは約1年前だったのですが、この部分に関する限り実装状況はほとんど変わっていないようです。正直今回もかなりの試行錯誤が必要でしたし、リンクタグの記述位置やファイルサイズ上限など、iBooks Assetguideに記述のないノウハウも必要になりました。

ただ、このepub-type=”noteref”要素を利用した脚注ポップアップは、Javascriptを使った手法などと異なり、電書協ガイドに沿って制作したコンテンツにそれほど大きく手を加えることなく、コンテンツのワンソース性を保ったまま対応ビューアでのインタラクティブ性を期待できるところは魅力です。また、現状ではポップアップ表示に対応しているのはiBooksのみですが、将来的に他社のビューアが対応してくれば、コンテンツ側には特に手を加えることなくポップアップ表示されるようになることも期待できます。

制作したコンテンツを実際に読んでみればわかりますが、注釈の多い本をiBooksのポップアップで参照しながら読んでみると、これは明らかに紙の本よりも読者にとっての利便性は上です。そういった本の電子化を考えられている出版社の方は、この手法を検討してみるのも悪くないのではないかと思います。

(2014.6.9)

注釈エリア内のリンク記述に関して説明を追記いたしました。香月さま。情報ありがとうございます。

(2014.6.9追記)

「電書ラボEPUB制作仕様」について

2014/05/13

 先日公開されたグループ「電書ラボ」のWebページにて、「電書ラボEPUB制作仕様」が公開されました。
 「電書ラボEPUB制作仕様」に関する基本的な概要は電書ラボサイトの紹介文を見ていただくとして、作成に関与した者として、ここではもう少し突っ込んでこの仕様の性格と狙いを書いておこうと思います。

電書協ガイドのサブセット

 まず、この仕様は電書協ガイドのサブセットとして作成したものです。「電書協EPUB 3 制作ガイド」(以下電書協ガイド)およびそのサブセットについての解説は、先日ITmediaに掲載された@lost_and_found氏の記事が参考になるでしょう。
 多少補足をしておくとすれば、電書協ガイドおよびそのサブセットは「量産ラインのためのもの」であるという点です。今後、出版社ベースの電子書籍の制作は大きく分けて「紙の書籍の内容をほぼそのまま電子化するもの」と、「デザイナーが関与して企画から作り起こすもの」に2分化されていくものと思いますが、電書協ガイドはこのうちの前者のためにあるものと思います。近い将来に期待される「新刊全点電子化」といった流れのためには、必然的にこうしたガイドラインが必要だったとも言えるでしょう。全点電子化の1点1点についてフルカスタマイズで丁寧に時間とコストをかける余裕はどんな出版社にもありませんから、こういった形で一定のルールを定め、効率よく電子化を行う必要があるのです。
 従って、「電書ラボEPUB制作仕様」もまた、基本的に「紙の書籍の内容をほぼそのまま電子化した電子書籍」を制作するためのものです。ただし、電書協ガイドや「KADOKAWA-EPUB制作仕様」などの先行するサブセットとは性格が異なる部分もあります。

出版社/制作会社のための制作ガイドライン

 電書協ガイドやそれに続く「KADOKAWA-EPUB制作仕様」などといった先行ガイドラインとこの「電書ラボEPUB制作仕様」の一番大きな性格の違いは、「電書ラボEPUB制作仕様」は、出版社や制作会社が直に使うことを想定したガイドラインだという点になると思います。
 電書協ガイドの最も大きな目的は、制作されるEPUBの形を固定し、各ビューア・ストアにその形式に準じて作られたコンテンツの適切な表示を要請することで、ワンソースで多くのストアに対応できるようにする事であるように思います。ストアごとにEPUBコンテンツの細部を作り分けなければならない状況が続いていてはとてもではないですが量産は望めませんから、これはとても大きな意義のあることです。
 ただし、それが第一義である以上、電書協ガイドは基本的には「ストアの方を見て作られたガイドライン」であるとも言え、制作者向けには基本的に「こうしたコードで作りなさい」としか示されていないため、出版社や制作会社の現場で使うためには、もうワンクッションが必要だったのではないかと思います。
 具体的には大きな出版社では、電子化の担当者が「電書協ガイドに沿ったコンテンツを制作するための社内ガイドライン」を作り、それをもとにコンテンツ制作を行ってきたのではないでしょうか。
 この状態ですと、社内に専任の電子化担当者を置くことが出来ない中小規模の出版社には依然として敷居が高く、コンテンツ電子化の格差が広がりかねない状況であるようにも思われます。

 「電書ラボEPUB制作仕様」は、この状況を鑑みて、中小出版社向けに「電書協ガイドに従って多くのストアにワンソースで供給できるEPUBコンテンツを制作するためのガイドライン」として使っていただくために提供するものです。同時に、制作会社と出版社との間で、「何をやり、何をやらないか」を事前にしっかり線引きをしておき、トラブルを防ぐためのツールとして活用していただければと思っています。

各項目を「やらないこと」を含めてホワイトリストとして提示

 「電書ラボEPUB制作仕様」の基本的な制作方針として、従来の出版の要素に即して各項目を書き出し、「やらないこと」まで含めてリストアップを行いました。同時に、「やることはできるが、工数がかかる項目」をLV2「一部のビューアが対応しておらず、一部のストア専用のコンテンツとして制作せざるを得なくなる項目」をLV3とし、それぞれオプション設定要素としました。もちろん各出版社・制作会社が実コンテンツを制作してゆく中で、リストから外れた要素が出てくることも当然考えられるのですが、そういった部分は積極的にフィードバックしていただいてリストに加えてゆき、同時に各ストアビューアの進化を継続的に追いかけて各リスト内容を変更してゆく必要があるように思っています。

マークアップ指針自体は電書協ガイドやKADOKAWA-EPUB制作仕様に準ずる

 「電書ラボEPUB制作仕様」は以上のような性格のものですので、マークアップ指針自体にはほとんど独自性はありません。いずれサンプルも公開する予定ですが、KADOKAWA-EPUB制作仕様をベースにKADOKAWAの独自項目(OPF内のKADOKAWA表記など)を改変した程度のものになると思っています。KADOKAWA-EPUB制作仕様の大きな特長であるFixed-Layoutのハイブリッド仕様も「電書ラボEPUB制作仕様」でも使用できるようにするつもりでおります。

JISX0213「外」の文字の使用を考慮

 電書協ガイドや先行する各サブセットと比較して、一点だけ大きく踏み込んでいる点があります。それは、「使用できる文字の幅」です。電書協ガイドでは、文字はJISX0213:2004内のものだけを使用するように定められていました。これは現行最新の日本語の文字集合規格ですので、安全な範囲設定と言えます。ただ、実際に各社のビューアで使用されているフォントはJISX0213:2004ではなくAdobe-Japan 1の規格に即して作られており、JISX0213:2004外の文字も含んでいます。このため、「フォントには入っており、実態としては使用できるにも関わらず、厳密に電書協ガイドに準じた場合には外字画像にせざるを得ない文字」というものが存在していました。
 例を挙げますと、U+9AD9の「髙」※1や、U+2474〜U+2487の「⑴」「⒇」などはこれに相当し、DTPのデータなどでもそれなりに使用されている文字であるにも関わらず、EPUB制作時には外字画像にせざるを得ない状況でした。外字画像は一部のビューアでユーザが背景色を黒に設定した場合に背景に溶け込んで視認できなくなるなるなどのデメリットが依然として存在し、可能な限り減らした方が良いにも関わらず、こうした状況が続いていたわけです。
 ただ、こうした文字に使用の保証を与えるには、JISX0213:2004に代わる何らかの基準が必要になります。そこで、「電書ラボEPUB制作仕様」では、あらかじめ各ビューアでの文字の表示状況を調査し、使用できる文字をホワイトリストの形で提示するとともに、将来的にはコンテンツ内の使用文字チェッカーを提供することでこれに応えることとしました。リスト・チェッカー共にまだ未提供ですが、そちらはもうしばらくお待ちいただければと思います。

 「電書ラボEPUB制作仕様」は、立ち上がったばかりであり、まだまだ多くの方のフィードバックを必要としています。また、こういった性格の仕様は、ビューアの実装を常に追いかけ、それに応じて恒常的に改訂していく必要があるものと思っています。フィードバックはこちらの「電書ラボ・意見交換グループ」にお寄せいただければと思います。また、近い将来、「電書ラボEPUB制作仕様」の公開仕様検討会を開催する予定です。ご意見をお持ちの方にぜひご参加いただければと思っております。

※1 U+9AD8「高」の異体字で、業界では「はしごだか」と呼ばれる。JISX0213では「高」に包摂されたために独自の符号位置を与えられなかったが、Unicodeの策定時に台湾から申請があったために結果的に使えるようになったらしく、実際に日本語の文書でも多用されている文字。

(2014.5.13)

プロフィール
Jun Tajima

こちらにて、電子書籍&Web制作を担当しています。
このブログは、EPUB3をはじめとした電子書籍制作担当オペレータからの、「電子書籍の制作時にたとえばこんな問題が出てきていますよ」的な「現地レポート」です。少しでも早い段階で快適な電子書籍閲覧・制作環境が整うことを願って、現場からの声を発信していこうと目論んでおります。

当ブログ内の記事・資料は、私の所属しております組織の許諾を得て掲載していますが、内容は私個人の見解に基づくものであり、所属する組織の見解を代表するものではありません。また、本ブログの情報・ツールを利用したことにより、直接的あるいは間接的に損害や債務が発生した場合でも、私および私の所属する組織は一切の責任を負いかねます。