ツイートボタン

2013年3月25日月曜日

kindle本を作ってみた

Amazonで個人出版をサポートするKDPの日本語版がはじまりましたし、iBooksでも日本語ストアがオープンする今日このごろ。この機会にkindle本を作って見ることにしました。
題材が官能小説だったのでiBooksへの登録はまず無理。ということでターゲットはkindleとなりました。
※2013/3/26追記。なんかiBooksでもエロオッケーみたい?(iBookstore のランキング上位はアダルト小説ばかり

使ったのは以下のツールです
KDPツールとリソース
変換とプレビューに使いました。縦書のプレビューはこれがないと無理でした。
使用時はKindleGen V2.8、Kindleプレビューツールv2.8でした。kindlegenはほとんど使いませんでしたけど。

sigil
epub2対応のエディタ。使用した時点でのバージョンは0.71でした。
これがないと作るのは無理でしたね。出力はepub2とはいえ、とりあえずのひな形を作るのとCSSの確認に便利でした。

epubcheck 
epubのチェックをするツールです。使用時はversion3.0でした。
おまけで展開済みのepubをまとめてくれる機能が便利でした。epubはファイルを規定に従ってzip圧縮したものなので、当然編集するには展開して圧縮という手間がかかります。ツールで全部できればいいんでしょうけど作成時はsigilはepub2.0対応だったので、「展開してファイルを修正」という作業は必ず必要になっちゃいます。
epubcheckはepubファイルのチェックはもちろん、epubを展開した状態のディレクトリ指定でもチェックが行えます。なおかつその場合、指定したディレクトリからepubファイルを作ってくれるオプションもあるので、epubを展開したまま中のファイルの編集が行えて作業効率があがりました。

参考にしたサイト、資料
Kindleパブリッシング・ガイドライン(PDF) 
日本語サポート補足資料(PDF)
Amazonが用意した解説書類です。必要な情報は網羅されているんじゃないでしょうかね。web検索して「やっと見つけたっ!」と思ったらこれに書いてあった事だったりします。
ただあくまでkindle用の書類を作ることが目的なのでepub3と違ってることもあるようです。

EPUB日本語文書作成チュートリアル 
猫も茶を飲む Sigilでepubを作ろう(4) 縦書きとか右から左とか

縦書関係はこちらのサイトがとても参考になりました。

■まずは基準のepubファイルを作成

とりあえず書いた原稿をsigilに読み込ませてます。これで保存すればepubの出来上がりですが、使用した時点のsigilはepub2対応でepub3には対応してません。
試していくうちにわかったのは本の構成要素ごとにxhtmlを作っておくといいということ。最終的にブックブラウザーのTextフォルダ以下に表紙、扉、本文、奥付のファイルが出来てました。こうしておくとファイル毎にフォーマットを変更するのも楽でした。

EPUB日本語文書作成チュートリアルであるようにスタイルシートを作ります。そこにある縦書のものを参考にこんなふうになりました。縦書用のオプションは「猫も茶を飲む」にあったものを使ってます。これをvertical.cssとしました。
@charset "utf-8";

body {
font-size: 100%;
writing-mode: vertical-rl;
line-break: normal;

-epub-writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
-epub-line-break: normal;
-webkit-line-break: normal;
}


p {
font-size: 1em;
margin: 0; /* 段落の外側の余白を無くす */
padding: 0; /* 段落の内側の余白を無くす */
text-indent: 1em; /* 行頭を一字下げする */
line-height: 180%; /* 行の高さは文字サイズの180% */
}

p.dialog {
  text-indent: 0em; /* 会話文から始まる行は字下げしない */
}

ついでに横書き用のも作ってhorizontal.cssとしておきます。

@charset "utf-8";
body { font-size: 100%; }
p {
  font-size: 1em;
  margin: 0; /* 段落の外側の余白を無くす */
  padding: 0; /* 段落の内側の余白を無くす */
  text-indent: 1em; /* 行頭を一字下げする */
  line-height: 180%; /* 行の高さは文字サイズの180% */
}

p.dialog {
  text-indent: 0em; /* 会話文から始まる行は字下げしない */
}

各xhtmlでCSSを読み込ませました。
<head>
  <title></title>
  <link class="horizontal" href="../Styles/horizontal.css" rel="alternate stylesheet" title="横組" type="text/css" />
  <link class="vertical" href="../Styles/vertical.css" rel="stylesheet" title="縦組" type="text/css" />
</head>

本文には上記のように縦書と横書き両方のCSSを読み込ませて、縦書をデフォルトとして設定しておきました。縦書のCSSを指定したものはsigilでも縦書になりますが、文字もそのまま回転してしまっているので表示は変です。
CSSにあるように会話文から始まる行と通常の行では字下げを変えるため、sigilでコードビューに切り替えて、会話文の<p>タグにはclass="dialog"属性をつけていきました。これが地味に大変です。

今回作成した本は短編なので、特にsigilでは見出し、目次の作成はしませんでした(ただepub3にした際には代わりのナビゲーションファイルを作成することになりましたけど)。修正が終わったら保存しておきます。
おそらくこの時点のepubをAmazon Previewerに読み込ませてもそれなりに変換してはくれました。ただどうせならepub3対応にして見ようと思ったので、次はその変更です。

■epub3への変更

ここでもEPUB日本語文書作成チュートリアルを参考にしてepubの変更をして行きました。EPUB3.0への対応に説明されている点を順次直していきます。
保存されたepubファイルをzipとして展開します。念のためepubファイルをコピーし、そちらの拡張子をzipに変更して展開します。

epubcheckの適用
epubcheckを使うと、作成しているepubが仕様に即しているかどうかがわかります。epubcheckの使い方は

java -jar epubcheck-3.0.jar epubファイル

となります(epubcheck-3.0やepubファイルへのパスが通っていることが必要です)。
展開したフォルダに対しては

java -jar epubcheck-3.0.jar epubディレクトリ -mode exp

で行えます。更にこの際-saveオプションをつけて

java -jar epubcheck-3.0.jar epubディレクトリ -mode exp -save

とするとepubディレクトリから作成したepubファイルをカレントディレクトリに作成するようです。

■ファイルの修正

○xhtmlファイルの修正

展開されたフォルダ内、OEBPS/Textフォルダ以下のxhtmlファイルに対してDOCTYPEとhtmlの変更をしました。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
html5になったのでスッキリしてますね。

次にパッケージファイルの変更を行いますが、この辺りから解説サイトと違ってきた感じです(コピペミスっただけかもしれませんけど)。適時epubcheckを行なって出力されたエラーを参照に直して行きました。

OEBPS/content.opfファイルをテキストエディタで開いて編集します。
packageの内容でバージョンを3.0に変更します。

<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId" version="3.0" xml:lang="ja">

○メタデータの変更

EPUB日本語文書作成チュートリアルにあるようにdc:identifier、dc:titleを修正しました。ただprefer属性がepubcheckでエラーとなったので、それは省いてあります。
dc:creatorではopf:role="aut"という属性がepubcheckでエラーとなっていたので削除してあります。
また縦書にするため<meta name="primary-writing-mode" content="vertical-rl"/>を追加しました。
metadata自体に関してですが、xmlns:opf="http://www.idpf.org/2007/opf"という属性がepubcheckで怒られたので削除してあります。
  <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
    ……
    <dc:identifier id="BookId">urn:uuid:…</dc:identifier>
    <meta property="dcterms:identifier" id="UUID">urn:uuid:…</meta>
    <dc:title>タイトル</dc:title>
    <meta property="dcterms:title" id="dcterm-title">タイトル</meta>
    <dc:creator>著者</dc:creator>
    ……
    <meta name="primary-writing-mode" content="vertical-rl"/>
    ……
  </metadata>

○カバーの指定

今回作成した本では、sigilにてブックブラウザーのImagesに画像(cover.jpg)を読み込ませて、それを表紙用のxhtmlで画像を全画面表示するようにしています。これをepub3でもcoverとして指定してやりました。
content.opfのmanifestタグ以下にカバー用に指定した画像のノードができています。

<manifest>
 ……
 <item href="Images/cover.jpg" id="cover.jpg" media-type="image/jpeg" />
</manifest>

epub3ではmetadataにてカバーを指定してやる必要がありました。またそこkindleでは、metadataで指定したものと同じ文字列をitemのidに指定する必要があるようです。これはパブリッシングガイドライン3.2.2のメソッド2になります。
なんでメソッド1を使わなかったかは今となってはわかりません

<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
  ……
  <meta name="cover" content="cover.jpg"/>
  ……
</metadata>
<manifest>
  ……
  <item properties="cover-image" href="Images/cover.jpg" id="cover.jpg" media-type="image/jpeg" />
  ……
</manifest>

○ナビゲーションファイルを作る

sigilでは目次は作りませんでしたが、epubcheckで目次に当たるナビゲーションファイルがないとエラーになるので作成することにしました。
nav.xhtmlというファイルをOEBPS/Text以下に作成して目次を作成します。今回の本では短編1つ(Section0001.xhtml)しか含んでいないので、それへのリンクを作るだけです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"  xmlns:epub="http://www.idpf.org/2007/ops" lang="ja" xml:lang="ja">
    <head>
        <title>目次</title>
    </head>
 
    <body>
    <nav epub:type="toc" id="toc">
<ol>
     <li><a href="Section0001.xhtml">タイトル</a></li>
   </ol>
</nav>
</body>
</html>

<body>以下に<nav>ノードを作って、後はリスト表示すればいいみたいです。
作成したナビゲーションファイルをmanifestで指定してやります。

<manifest>
  ……
  <item media-type="application/xhtml+xml" id="toc" href="Text/nav.xhtml" properties="nav"/>
  ……
</manifest>

○spineタグの修正

spineタグでも本を開く方向を縦書のための右から左に設定しました。またepubcheckではspineにtoc属性があるとエラーだったのでこれをとりのぞいてます。

<spine page-progression-direction="rtl">

■作成したデータのチェックとepubへの変更

とりあえずここまでの作業でepub3になったはずですので、epubcheckをかけてみます。

java -jar epubcheck-3.0.jar epubディレクトリ -mode exp

エラーが無ければ無事epub3になったはずです。
実際にはちょっと変更するとエラーが大量に出て、それを直したりという作業が結構ありました。エラーメッセージに従って修正すればいいんですが、メッセージが意図していることや、代替の値がわからなかったりと手こずりました。ざっくり属性を削除してたりするのはそのせいです……。
トライ&エラーを繰り返しつつエラーが出なくなったところで、-save オプションをつけて実行してepub3ファイルを作成しました。

java -jar epubcheck-3.0.jar epubディレクトリ -mode exp -save

これでカレントディレクトリに指定したepubディレクトリ名.epubというファイルが出来ているはずです。

■Kindle用に変換する

epubファイルが出来たので、Kindle Previewerにてmobiファイルに変換して確認を行います。ただ現在では言語が日本語の場合、端末設定がPaperWhiteになってしまうようです。またKindle Previewerは.opfもサポートしていますので、ディレクトリ構成のまま変換することもできます。作業中はこっちのほうが楽かもしれません。
Kindle Previewerは結構構造が間違っていてもなんとか変換するようなので、epubcheckを通っていれば変換できるんじゃないかと思います。もっとも今回試したのは構造が単純ですので、複雑なepubとかだと、また違ってくるかもしれませんが。

・iBooksで見てみる

iPhoneのiBooksもepub3対応しているので、こちらでも見てみます。こちらは出来たepubをそのまま読みこませてみました。

ちゃんと縦書になってますねー、よかったよかった。

■KDPに登録する

ここまできたら後は登録して発売されるのを待つだけ。説明では48時間以内とありましたが、自分の場合は登録してから1日かからずに発売されたようです。




というわけで出来上がったのが上のアフィリンクにあるやつです。興味があれば御覧ください。


ただサンプルをiPhoneのkindleアプリで見ると著者名のレイアウトが崩れてました。Kindle Previwerではちゃんとしてたんですけどねー。というわけでちょっとそこを直してアップデートをかけてみました。こんどはちゃんとしてるといいんですが

0 件のコメント:

コメントを投稿