KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

fxlepub3のJava版を作ってみる

 JavaScript版やブラウザ版があるが使っているとEPUB化に時間がかかりすぎる気がするし、設定が保存できないのがストレスになっている。なのでこれをJavaで作れないかなと試してみる。jsの時にjsonで設定ファイルを書いていたのでJavaでもjsonデータを読み込んで処理をさせたい。また、テンプレートエンジンはejsをvelocityに書き換える。jsonパーサーにJacksonを使うという説明が多いが、org.jsonで練習してみる。

必要なもの

  • velocity
  • uuid4 
  • ISO 8601 拡張形式の日時
  • MIMEタイプ
  • 画像サイズ
  • zip圧縮
  • jsonパーサー

 

var epub = require('fxlepub3'); 

var data={
"url":"C:/Users/user/Downloads/comic/testdata/",
"output":'C:/Users/user/Downloads/comic/fxlsample/out.epub',
"title": "タイトル",
"author1": "著者名1",
"author2": "著者名2",
"index": [
    ["cover.jpg", "表紙"],
    ["00001.jpg", "目次"],
    ["00005.jpg", "最終ページ"]
    ],
"page_direction": "rtl",
"panel_view": "horizontal-rl",
//"width": 800,
//"height": 1200,
"cover_file": {},
"files": []
}

epub.gen(data)

www.site24x7.com

入力するjsonデータを利用しようとすると、jsのコード量の10倍になっている。ほぼコードジェネレーターを使えばいいのだけど。このjsonで、入れ子クラスが必要でファイル数が増えた。ファイル数が増えることで全体が見通しにくくなった。

{
"url":"C:/Users/user/Downloads/comic/testdata/",
"output":"C:/Users/user/Downloads/comic/fxlsample/out.epub",
"title": "タイトル",
"author1": "著者名1",
"author2": "著者名2",
"index": [
   ['cover.jpg', '表紙'],
  ['i-003.jpg', '目次']
    ],
"page_direction": "rtl",
"panel_view": "horizontal-rl",
"width": 800,
"height": 1200,
"cover_file": {

file_id:"cover"
file_name:"cover.jpg"

},
"files": [

[{file_name:"i-003.jpg"}],[

{file_name"i-002.jpg"}],

]
}

多次元配列のjsonの場合はこの方法では無理っぽい。どうやらjacksonを使ったほうがよさそう。

適当に作ったオブジェクトに代入しようとすると、書き方が間違っていたらしく変換ができなかった。なのでオブジェクトを作ったうえでjson

data =mapper.readValue(jsonText, Data.class);

itsakura.com

stackoverflow.com

GSONとJacksonがあって、Jacksonのほうがいいらしい。

itsakura.com

 

qiita.com

//テンプレートファイルの読み込み
var containerXML = fs.readFileSync(__dirname + '/templete/container.xml', 'utf-8');
var css_style = fs.readFileSync(__dirname + '/templete/fixed-layout-jp.css', 'utf-8');
var pagetemplete = fs.readFileSync(__dirname + '/templete/page.ejs', 'utf-8');
var opftemplete = fs.readFileSync(__dirname + '/templete/opf.ejs', 'utf-8');
var navtemplete = fs.readFileSync(__dirname + '/templete/nav.ejs', 'utf-8');
var toctemplete = fs.readFileSync(__dirname + '/templete/tocncx.ejs', 'utf-8');
var covertemplete = fs.readFileSync(__dirname + '/templete/cover.ejs', 'utf-8');

Javaでリソースフォルダのテキストをどう読み込むか

 

stackoverflow.com

 

以前にnode.jsで固定レイアウトのEPUBが作れるfxlepub3というのを作ったが、利用者があまりいなかった。

github.com

 

 その後、ブラウザで固定レイアウトのEPUBが作れるようにするとある程度利用者ができた。

github.com

kyukyunyorituryo.github.io

改造版AozoraEpub3 1.1.1b15Qのリリースノート 脚注を利用したEPUBの作成

脚注を利用したEPUBの作成をしたいという要望があったので実際どうやればできるのかと。AozoraEpub3がaタグをaozoraepub3がどう処理しているのか。

github.com

 

アマゾンのKDPの脚注の例を青空文庫注記に置き換えた例、アマゾンのページでは脚注の文章がasideタグを利用している。

 

この脚注の例では、epub:type 属性および双方向ハイパーリンクを伴う aside 要素を使用しています。[#上付き小文字]<a id="source" href="#ft-1-1" epub:type="noteref">1</a>[#上付き小文字終わり]

[#ここから1字下げ][#ここから脚注]

<a epub:type="noteref" href="#source" id="ft-1-1">1.</a>  これは脚注テキストで、章または本の末尾に配置する必要があります。

[#ここで脚注終わり]

[#ここで終わり]

 

 

 

AozoraEpub3がリンクがhttpで始まっていないとリンクとして扱わない。#も追加して内部リンクにも対象にした。ただ、<a id="source" href="#ft-1-1" epub:type="noteref"></a>や<a epub:type="noteref" href="#source" id="ft-1-1">1.</a>  を自分で入力しなければならないのは上級者向けすぎる気もする。利用者が増えればもう少し簡単に注記でどうにかするのもありかな。

 

href.startsWith("http")||href.startsWith("#")

 

 脚注がつかえるEPUB作成ツールとしてはでんでんコンバーターがある。でんでんマークダウンという記法によりEPUBを作成できる。EPUBで脚注を追加するには直接XHTMLをsigilなどで編集する場合もある。そうするとEPUB生成と編集作業を別で行う必要があり、元データの数が増えてしまう。それはそれとして、青空文庫EPUBに変換するツールを作っているので脚注機能を追加してみよう。青空文庫では脚注以外にも割注があり割注を使った本を書いていた。青空文庫形式に脚注がなかったので、代用としてそっちを使う場合もあった。結局要望としてあったので追加してみることにした。脚注の青空文庫注記としては、[#ここから脚注][#ここで脚注終わり]と仮にそうしておくが後で変えるかもしれない。というのも後でもう少し合理的な方法が見つかればそっちを採用したいからというのがある。

 AozoraEpub3ではリンクにはaタグを採用している。ただし、aタグはhttpで始まるリンクしか表示されない仕様であった。脚注では#で始まる内部リンクを利用するので#ではじまるリンクを許可することで、脚注を可能にしている。HTMLと同じように内部リンクはidを指定する必要がある。ただし、脚注では相互リンクを前提にした作りになっている。例えば呼び出す側のidを"source"として、呼び出される側を"ft-1-1"となっている。href="#ft-1-1"とhref="#source"で相互にリンクを張っている。

<a id="source" href="#ft-1-1" epub:type="noteref">

<a epub:type="noteref" href="#source" id="ft-1-1">

epub:type="noteref"はEPUBリーダーによって脚注と認識されタップすると小窓で脚注を表示してくれる。

Kindle Previewerでは脚注は初めの1行しか表示されないので、表示したい部分を1行にまとめる必要がある。また、例では呼び出し側の全体をリンクをつけているが初めの数文字をリンクをつけるだけでも1行が表示される。

 

 

でんでんコンバーターはアップロードされたテキスト等を電子書籍の標準フォーマットEPUB 3に変換して出力するウェブサービスです。

https://conv.denshochan.com/about

Sigilは、EPUBフォーマットを使って優れた電子書籍を簡単に作成できるように設計されています。

https://sigil-ebook.com/

AozoraEpub3

青空文庫の注記入りテキストファイルをePub3ファイルに変換するツールです。ライセンスはGPL v3で改変した場合にソースコードを開示する義務がある。ソースコードの流用、改変、再配布を行った場合もGPL v3が適用されます。

https://github.com/hmdev/AozoraEpub3

EPUB脚注

 

改造版AozoraEpub3のEPUBの脚注について

改造版AozoraEpub3では電書協EPUBベースのEPUBを生成している。そのために基本的には電書協CSSを利用する。それに加えて各電子書籍ビュワーでの表示の問題を減らすために、KADOKAWA EPUB、KDPガイド、Apple Books アセットガイドも参考にしながら修正している。

 


 脚注の問題になるのが、同一HTMLの最後にリンクを貼るのか、べつのHTMLにまとめてそこにリンクを貼るのかという問題。1つ目はページ分割した場合にページ分割することを事前にしる必要がある。EPUBのページ分割破壊ページを挟むとそこで分割される。

[https://twitter.com/imagawatatsuya/status/1633696669756964864:embed#KDP脚注テスト■本文赤い小紙幣1■脚注部分(章末/巻末)

 

電書協から抜粋

ebpaj.jp

 

→「■注釈」
【変更前】
CSS class】
class="cyu" : 文字色は青、傍線つきがデフォルト
class="key" : inline-block 要素、文字サイズのデフォルトは「smaller」 電書協 EPUB 3 制作ガイド
| 107
class="ref" : inline-block 要素、文字サイズのデフォルトは「smaller」
※「ref」は「reference(リファレンス、参照)」の略
【HTML elements】
<a class="cyu" href="ファイル名#ref-001">項目<span class="key" id="key-001">*</span></a>
: 注釈記号側
<p id="ref-001"><a class="cyu" href="ファイル名#key-001">項目</a>□テキスト。</p>
: 注釈の受け側
<a class="cyu" href="ファイル名#ref-001">項目1<span class="key" id="key-001">*</span></a>
<a class="cyu" href="ファイル名#key-001">項目2<span class="ref" id="ref-001">*</span></a>
: 注釈の相互リンク(<p>で指定した文が数行に渡るなど、どうしても必要な場合に利用)
例)
---------------------------------[sample code]---------------------------------
<a class="cyu" href="cyushaku.xhtml#ref-001">蜘蛛の糸<span class="key" id="key-001">*</span></a>
<p id="ref-001"><a class="cyu" href="p-001.xhtml#key-001">*蜘蛛の糸</a> ドストエフスキイ「カラマゾ
フ兄弟」第七篇第三「一本の葱」に取材。</p>
-------------------------------------------------------------------------------
【変更後】
CSS class】
class="noteref" : 文字色は青、傍線つきがデフォルト
class="note" : 文字色は青、傍線つきがデフォルト
class="footnote": 特に指定なし(「footnote」は「脚注」の意)
class="super" : 上付文字指定(「上付文字、下付文字」の項を参照)
※ここでは注釈記号用として利用
【HTML elements】
<p><a class="noteref" id="noteref-001" href="ファイル名#note-001">項目<span class="super">*
</span></a></p>
: 注釈参照側 (注釈記号の部分は、class 含め、作品にあわせて自由に指定して構いません)
<p><a class="note" id="note-001" href="ファイル名#noteref-001">*項目</a>□テキスト</p>
: 注釈内容側
<div class="footnote" id="note-001">
<p><a class="note" href="ファイル名#noteref-001">*項目</a>□テキスト</p>
<p>□テキスト</p>
</div>
: 注釈内容側を <div> で指定したい場合の一例
例)
---------------------------------[sample code]---------------------------------
<p><a class="noteref" id="noteref-001" href="p-002.xhtml#note-001">蜘蛛の糸<span class="super">*</span></a></p>
<p><a class="note" id="note-001" href="p-001.xhtml#noteref-001">*蜘蛛の糸</a>□ドストエフスキイ「カラマゾフ兄弟」第七篇第三「一本の葱」に取材。</p>
------------------------------------------------------------------------------- 電書協 EPUB 3 制作ガイド
| 108
【参考情報】
注釈を表す「epub:type」を挿入することで、RS がその情報を利用することも可能になります。
RS がどのような利用をするかは EPUB の仕様では定められておらず、その利用方法を指定することもでき
ないため、事前に RS の挙動を確認し、版元とよくご相談の上ご利用ください。

 

・注釈
【備考】
指でタップする際の利便性などを考慮して、注釈記号だけでなく、注釈が指定された単語そのものにリンク指定するようにします。単語の範囲が注釈の受け側を見てもわからない場合は、適切と思われる範囲に指定してください。
CSS class】
class="noteref" : 文字色は青、傍線つきがデフォルト
class="note" : 文字色は青、傍線つきがデフォルト
class="footnote": 特に指定なし(「footnote」は「脚注」の意)
class="super" : 上付文字指定(「上付文字、下付文字」の項を参照)
※ここでは注釈記号用として利用
【HTML elements】
<p><a class="noteref" id="noteref-001" href="ファイル名#note-001">項目<span class="super">*</span></a></p>
: 注釈参照側 (注釈記号の部分は、class 含め、作品にあわせて自由に指定して構いません)
<p><a class="note" id="note-001" href="ファイル名#noteref-001">*項目</a>□テキスト</p>
: 注釈内容側
<div class="footnote" id="note-001">
<p><a class="note" href="ファイル名#noteref-001">*項目</a>□テキスト</p>
<p>□テキスト</p>
</div>
: 注釈内容側を <div> で指定したい場合の一例
例)
---------------------------------[sample code]---------------------------------
<p><a class="noteref" id="noteref-001" href="p-002.xhtml#note-001">蜘蛛の糸<span class="super">*</span></a></p>
<p><a class="note" id="note-001" href="p-001.xhtml#noteref-001">*蜘蛛の糸</a>□ドストエフスキイ「カラマゾフ兄弟」第七篇第三「一本の葱」に取材。</p>
-------------------------------------------------------------------------------
【参考情報】
注釈を表す「epub:type」を挿入することで、RS がその情報を利用することも可能になります。
RS がどのような利用をするかは EPUB の仕様では定められておらず、その利用方法を指定することもできないため、事前に RS の挙動を確認し、版元とよくご相談の上ご利用ください。

 

 

help.apple.com

densyodamasii.com

kdp.amazon.co.jp

WordからEPUBに変換するWordToEPUBを試してみた

WordToEPUBを試す

 ワード文書からEPUBに変換したい人が多いようである。それでどうやって変換するかについて調べてみた。ここで言うEPUBキンドルやその他で出版できるEPUBであって、拡張子がepubになっていたらいいというわけではない。

 

DAISYが作ったWordをEPUBに変換するツールを使ってみた。使い方はインストールしたあと、Wordのファイルを右クリックして「Convert withWordToEPUB」をクリックするだけ。そうすると変換時に詳細設定ができて、表紙画像の設定の項目などが出てくる。言語がちゃんと日本語になっているようだ。

 

 

daisy.org

pandocをインストールしていることから中身はpandocなのだろう。縦書変換がなかったので横書き用なのだろうか。

EPUBの中身を見ているとBlitzのスタイルシートを使っているようだ。EPUBの中身をみているとEPUB3でEPUBチェックも通るので横書きならこれでもいいかも。

 This stylesheet is based on:
  Blitz — CSS framework for reflowable eBooks
  Version 1.5.2 by Jiminy Panoz
  Codename: Cool Under Heat
  License: MIT (https://opensource.org/licenses/MIT)
*/

github.com

太字や斜体、下線、上付き文字、下付き文字を試したが、えらく中身がグチャッとしていた。表示は問題ないはず。

<p><b><span
              xml:lang="en-us"
              lang="en-us">太字</span></b><span
            xml:lang="en-us"
            lang="en-us">、</span><i><span
              xml:lang="en-us"
              lang="en-us">斜体</span></i><span
            xml:lang="en-us"
            lang="en-us">、</span><u><u><span
                xml:lang="en-us"
                lang="en-us">下線</span></u></u><span
            xml:lang="en-us"
            lang="en-us">、</span></p>
<p><del>取り消し線</del>、上付き文字 x<sup><span
              xml:lang="en-us"
              lang="en-us">2</span></sup>、下付き文字CO<sub><span
              xml:lang="en-us"
              lang="en-us">2</span></sub><span
            xml:lang="en-us"
            lang="en-us">。</span></p>

 

Wordからでんでんコンバーターに変換

 

 

その他WordをEPUBに変換するツール

romancer.voyager.co.jp

leme.style

アメリカアマゾンでキンドル本を出してみた、写真集のEPUBを作るときのいろいろ

 カメラを買い替えたかったので、アメリカアマゾンの方で写真集を出して、儲かったらいいなと思ったので、出してみた。写真が売れたら写真を取るためのカメラを買える日は来るのだろうか。

 KDPのページで本の言語を英語にすると主な販売ページでamazon.comを選べる。その結果amazon.comをメインにすると売上は増えるのかどうかを確認したかった。そもそも販売できるのかを試した結果、販売はできた。そこで気になるのが、日本語の本を出しても

 今回作ったEPUBはFixedEpub3JSで作ったものを、sigilで手動で修正している。もっと写真集に向いたEPUBを作るアプリを作れれば需要があるのかもしれない。だけど、写真に向いたEPUBの設定が固まっていないので作れるかはわからない。

 

 言語設定を英語にしたEPUBも下記サイトから作れます。

kyukyunyorituryo.github.io

日本以外で売る場合は、税に関する情報を書かないと税金が取られるとかなんとか。

 

 写真集に向いたEPUBの形式はKADOKAWA-EPUBをベースに設定を詰めて、キンドルで出せた。ただ、画像が再圧縮されてファイルサイズが5分の1ほどになった。

 

 キンドルで本を売るのが増えてきた感じがしている。それだけではなく、グラビアアイドルが自分でキンドルで販売するのも目にしている。今までだとただjpgなどをzipで圧縮したものをboothなどで販売しているのをみた。キンドルで写真集を作るときにキンドルコミッククリエイターを使っているのが少し気になる。

 一時期、キンドルランキングで一位だった、今見ると上位を維持している。今のキンドルランキングで上位だと何冊売れているのだろうか。一日大体1000冊以上は売れていると思うのだけど。グラビア写真を自分で撮って売ればかなり収益が出るのではと思っていたのだが。

 

 

 使い方の本を書いたので人のことは言えないのだけど。キンドルコミッククリエイターはだんだん現在の仕様に合わなくなっている気がする。

 

メリットは

  • 公式ツールで無料なこと。

デメリットは

  • 画像が再圧縮されるので画質が悪くなる。
  • キンドル以外では売れない。
  • バグが放置されていること。

 

 EPUBで写真集を作るときの問題点は、マニュアルが整備されていないので、どこでも売れるEPUBを作れるかがわからない。マンガ向けのEPUBの作り方はかなり事細かく書かれているので作れたが。