Kindle用電子書籍ファイルの作り方 (mobiファイル)

Kindle3はepub形式のファイルを今の頃読めませんので、独自フォーマットのmobiファイルを作る必要があります。このmobiを作るまでの手順をいくつか試行錯誤してみましたので、その結果をまとめてみました(もう周知のものばかりと思いますが、私の備忘録用ですのでご容赦を)

1.mobiファイル変換用ツールを入手

作成したファイルをmobiファイルに変換するためのツールを入手します。ツールは無償でアマゾンによって公開されています。

Kindle Publishing Programs - http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621

今回はMacで作業していますので、「KindleGen_Mac_i386_v1.2」をダウンロードしました。zipで圧縮されたファイルが入っていて、それを解凍しておきます。解凍して出来た「KindleGen_Mac_i386_v1.2」のフォルダに「kindlegen」というコマンドがは行っていますので、これが変換用のプログラムです(Win版は.exeが付いていると思います)。このファイルが確認できればOKです。

2.変換するためのファイル構成

電子書籍を作るための素材ファイルを作ります。素材ファイルは、以下の要素で構成されます。

  • 目次ファイル(index.html)
  • 目次定義ファイル( toc.ncx)
  • 書籍情報ファイル(書籍名.opf)
  • カバーファイル(jpgやgif等)
  • 本文(書籍名_XXX.html)

このファイルを作ると先ほどのコマンドにopfファイルを引数で渡すことにより変換が行われます。

$kindelgen 書籍名.opf => 書籍名.mobiが出力されます

この変換の時に、不足分があればerrorやwarningが表示されます。warningがあっても表示はできるようですが、kindleAmazonのメール経由で登録する場合にはwarningが1個でもあると正常では無いと認識されてはじかれるようです。

3.目次ファイルを作成
まずは目次ファイルを作成します。中身は単純なhtmlです。ファイル名も便宜上index.htmlにしていますがどんな名前でもかまいません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>書籍タイトル</title>
</head>
<body bgcolor="#FFFFFF">
<h2>-目次-</h2>
<a name="TOC"></a>
	<p><a href="書籍名_001.html">第1章</a></p>
	<p><a href="書籍名_002.html">第2章</a></p>
<mbp:pagebreak />
</body>
</html>

目次はhtmlリンクなので、ファイルを切り換えるだけでなくてhref="書籍名_001.html#sample"といったものも定義可能です。
amazonの独自タグで改ページが入ります。必要に応じて入れてください。目次ページのレイアウトでスタイルシートやテーブルタグを使う事もできます。

4.目次定義ファイルを作成
次に目次定義ファイルを作ります。こちらはxmlファイルです。ファイル名は何でもかまいませんが、ここではtoc.ncxとします(ファイルは書籍情報ファイルで設定します)。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN" "http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
<ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
   <docTitle><text>書籍名</text></docTitle>
   <navMap>
      <navPoint id="index" playOrder="0">
         <navLabel><text>目次</text></navLabel><content src="index.html"/>
      </navPoint>
      <navPoint id="item1" playOrder="1">
         <navLabel><text>第1章</text></navLabel><content src="書籍名_001.html"/>
      </navPoint>
      <navPoint id="item2" playOrder="2">
         <navLabel><text>第2章</text></navLabel><content src="書籍名_002.html"/>
      </navPoint>
   </navMap>
</ncx>

"navPoint"タグを章立ての分繰り返します。playOrderの順で表示されますので(改ページしてゆくと表示される順番)0を目次にしておいて、以後は1から指定しておきます。id部分は任意ですが、書籍情報ファイルでも使いますので分かりやすい連番が良いと思います。

5.書籍情報ファイル
書籍情報ファイルを作ります。これもxmlファイルです。書籍名.opfが分かりやすいと思います。

<?xml version="1.0" encoding="utf-8"?>
<package unique-identifier="uid">
  <metadata>
    <dc-metadata xmlns:dc="http://purl.org/metadata/dublin_core"
    xmlns:oebpackage="http://openebook.org/namespaces/oeb-package/1.0/">
      <dc:Title>書籍名</dc:Title>
      <dc:Language>en-us</dc:Language>
      <dc:Creator>著者名</dc:Creator>
      <dc:Description>書籍説明文</dc:Description>
      <dc:Date>dd/mm/yyyy</dc:Date>
    </dc-metadata>
    <x-metadata>
         <output encoding="utf-8" content-type="text/x-oeb1-document"></output>
	  <EmbeddedCover>表示画像(jpg等)</EmbeddedCover>
    </x-metadata>
  </metadata>
  <manifest>
    <item id="index" media-type="text/x-oeb1-document" href="index.html"></item>
    <item id="toc" media-type="application/x-dtbncx+xml" href="toc.ncx"></item>
    <item id="item1" media-type="text/x-oeb1-document" href="書籍名_001.html"></item>
    <item id="item2" media-type="text/x-oeb1-document" href="書籍名_002.html"></item>
  </manifest>
  <spine toc="toc">
    <itemref idref="item1" />
    <itemref idref="item2" />
  </spine>
  <tours></tours>
  <guide>
    <reference type="toc" title="Table of Contents" href="index.html"></reference>
    <reference type="start" title="Startup Page" href="書籍名_001.html"></reference>
  </guide>
</package>

注意点としては、のカバー設定は必須でした。 cover.jpg等のように何らかを必ず定義しないとWarningが出ます。gif又はjpgを指定した場合は、600x800 pixelsの画像でないと駄目なようです(小さすぎ等と行った警告がでます)。

言語の部分は今のところen-usで固定で良いようです(jaが定義できるように将来なれば定義したほうがいいのでしょう)。

には「目次ファイル」と「目次定義ファイル」を定義します。目次定義ファイルのidはtoc固定。目次ファイルは目次定義ファイルで指定したidに併せてください。それ以後は本文に応じてitemを増やしてください。idは目次定義ファイルで設定したidに併せて下さい。

spineには、本文をitemrefのタグで本文のidを追記しておきます。最後にguideタグ配下に目次ページと最初に表示すべきページを指定して終了です。

6.mobiファイルを作成する

コンソールを開いて作ったファイルを変換します

$kindelgen 書籍名.opf => 書籍名.mobiが出力されます

作成したファイルは、Kindle for Macなどで表示できます。

これをKindleにコピーしたり、メール経由で登録したりしてよんでみて下さい。間違いありましたら是非教えてください。

7.まとめ
ここまでのファイルを作る為に集めておくべき情報を最終的に整理しておきます。

  • 書籍名
  • 著者名
  • 書籍説明文
  • 作成日時
  • カバー画像
  • 目次構成
  • 本文となるHTMLファイル

この8項目を用意しておけば良いようです。ちなみに作成されるmobiファイルは英数字で構成されていても、Kindle上では、書籍名と著者名が日本語できちんと表示されます。

8.参考サイト

以下のサイトを参考にさせていただきました。ありがとうございます。