epub制作に必須のArchive Zipのメモ

電子書籍作成ページの依頼があって久しぶりにスクリプトを眺めてみた。
(電子書籍の制作ではなくて、電子書籍を作成するページの作成)
エラーのないepubを作るのは手順の塊…というか手順だけなので面倒くさいんだけど難しいスクリプトでもない。
ユーザーの入力をどこまで自由にするのか、ページ移動はどうするのか、エラー処理は、ブラウザ対応は、などなどepub作成以外の部分で考えなきゃいけないことがいろいろあるのはwebだからしかたがないところ。
Archive::Zipのメモ1
てなことを考えながら見てたら、epubをパッケージするzipのモジュール、Archive::Zipでエラー。
他のスクリプトでは問題なく使えているモジュールで原因がわからないし、該当箇所を見てもよくわからない。
zipにファイルを追加していくところでエラーになってしまう。いろいろ試行錯誤。
結果。追加するファイルが見当たらない、pathが違ってたというだけのことだった。コンセントが抜けてますよレベルの話だった。
…でもなあ、このエラーメッセージじゃわからん。とほほ。
Archive::Zipのメモ2
前々からArchive::Zipで圧縮したらそれをファイルの書き出すのではなくて、標準出力にそのまま吐き出せればいいのにと思っていて、ついでなので調べてみたら、当たり前のように用意されていた。おのれの不勉強に愕然。そりゃそうだよなあ。
writeToFileHandleのファイルハンドルに標準出力を指定してやればOKだった。
これで正常なzipファイルを出力することができた。
久しぶりにこの手のことでグーグル様詣で。以前Archive::Zip について調べた時には見かけなかったepubがらみのQ&Aなんかが検索でひっかかってきてちょっとびっくり。
電子書籍を作る側は充実してきてるんだなあ、と変なところで実感した。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
EPUB3の小ネタ:1行中の一部に2行押し込む

kindleで翻訳モノを読んでいたら、訳注が出てきた。
文中の単語の直後にカッコで囲まれて、訳注が半分のフォントサイズで2行表示(いわゆる割り注)されていた。どうやってんだろうとちょっとパズルしてみたところ、使えるかもしれないのでメモ。
訳注表示はこんな感じ。kindle previewer HDX8.9
Pタグの中の訳注部分をspanタグでくるんで、
・display:inline-block;
・font-size:0.5em;
・height:26em;(文字数で2行になるようにテキトーに)
・width:1.5em(センター合わせのためには要調整)
・line-height:1;
・text-indent:0;
元の翻訳モノも同じだけど、文字サイズを大きくしたり小さくしたりすると改行されてしまったりする。
こんな感じ。前の単語と泣き別れする。kindle previewer HDX
kindle Paper Whiteのデフォルト文字サイズだとそれっぽく。センターがずれてるので調整が必要。
MacのiBooksでもなんとか見られる感じ。これもセンターがずれてるので調整が必要。
泣き別れに納得してもらえれば、ギリギリ使いものになるかもしれない、かなあ。
きれいな方法があったらぜひ教えてください。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
スマホで電子書籍を読む

先日、知人と電子書籍について雑談していて
「それってどうやって読むの?」「まだ普及してないでしょ」
という話も。
たぶん誰もがもっとも簡単でハードルが低いのは
「アプリをインストールすればスマホでも読めますよ」
ということだけど、いろいろあってわかりにくいので、スマホで電子書籍を読む方法について検索してみた(電子書籍のファイルはEPUB3ファイル。フリーなEPUBファイルを読む方法ということ) わたしのスマホ(iPhone)のホーム画面。電子書籍を読むためのアプリ(ストアアプリ)がごちゃっと入ってる。どれがどれやら確かにわかりにくいよなあ。
【Android系スマホの場合】
・「google play ブックス」アプリで読む
読むまでの手順は4つ。
0) gmailなどgoogleのアカウントが必要
1)スマホにアプリをインストールする
https://play.google.com/store/apps/details?id=com.google.android.apps.books
2)PCのブラウザで https://play.google.com/books を開く(「google play」→「書籍」→「マイブック」)
3)電子書籍ファイルをアップロードする
4) スマホでアプリを立ち上げてアップロードした電子書籍を読む
※ スマホで読むためにはPCのブラウザでgoogle playを開いてそこにファイルをアップロードする必要がある
【iPhoneの場合】
・ibooksで読む
読むまでの手順は2つ。
0) itunes storeのアカウントが必要
1) スマホにメールで電子書籍ファイルを添付する、またはダウンロードしてもらう
2) スマホのibooksで開いて電子書籍を読む
一年以上も前の自分の雑記を引用するのもアレな感じだけど。電子書籍、ダウンロード販売最大のポイントはココ↓
「Kindleストアで電子書籍は売れる?」
「ををっ!面白かったぜ」「この作家の他のも読みたいなあ」と読者は思ってくれました。でも、手元に本はないし、書店にいく手間は面倒、書店にいってもあるかどうかわからないし、amazonで頼むと明日に届くなあ、うーん、明日は朝から出てるし、まあ、いいか。
という機会損失を防げるのがダウンロード販売、電子書籍。
もちろん、なんだ電子書籍って、スマホなんかで読むのわからねえよ、ということも十分考えられるけど、少なくとも、ここでひとつ本を読者に届けるルートがあるんだから、kindleストアに電子書籍を並べておいて損はない。
ちなみに、kindle(Amazon)を外して「google play ブックス」と「ibooks」にしたのは。
面倒くさい事務手続き、登録作業なしに、自作EPUBファイルを手軽に無料頒布できるところをターゲットにしたから。まずはこのあたりから始めるのもいいかも知れない。
現状(今日時点)読者の手間を考えるとibooks一択。別途何かをインストールする必要もないしメールにファイル添付するだけ。Androidとiphoneでどっちがシェア取ってるのかはまた別の話、か(※ 想定している読者は未知の第三者ではなくて、既知の読者・友人知人)
「主なEPUBリーダー:電子書籍の情報をまとめてみる」
「EPUBファイルの開き方:電子書籍情報まとめノート」
↑こちらのサイトが網羅されていて一覧できる(参考にさせていただきました・感謝)
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
epubcheckがバージョンアップ

今日気がついた。
5月31日にepubcheckのver4.0.0がプレ公開されていた(今日時点の正式リリースは3.0.1)4.0.0というメジャーバージョン番号がひとつ上がるということは大幅な機能追加のバージョンアップだろうと思うんだけど、よくわからなかった。メッセージを詳細にするというぐらいなら3.0.2でいいような気がする…素人のわたしにはわからない部分で大幅な機能追加がされたんだろうか。
https://github.com/IDPF/epubcheck/releases
素人のわたしは身体で覚えるタイプなので、とりあえず今までの3.0.1と今度の4.0.0で同じファイルをチェックしてみた。
3.0.1だとエラーも警告もなかった。
4.0.0だとナビゲーション文書のHTMLにインラインでスタイルを指定したところが警告となっていた。
残念なことに最近仕事でEPUBファイル制作はご無沙汰なんだけど(お仕事お待ちしております=切望)スクリプトの該当部分を修正しておいた。
ということは、今まで作ってすでに販売されているファイルは新たなepubcheckでは警告が出ることになる(こういうところも電子書籍ならでは、というヤツだなあ)
「こうあるべき」というのはその通りだ。
でも現実的には。お客さんにしてみれば、EPUBCHECK?ナニソレ?んなことより早くkindleに並べてよibookstoreはどうなってるの、あの本じゃやってるじゃないどうしてできないの、だろうしなあ。
EPUBCHECKでエラーはもちろん警告も出ないことが最低条件・必須条件なんです、と言ってもエラーや警告が出てるものが現実に店頭に並んでいたりするし、ibookstoreの公式サンプルはEPUBCHECKにかけるとエラーまみれだったような…。
だいたい。EPUBCHECKでエラーや警告がなくてもストアごとのレギュレーションに引っかかるケースがある。
電子書籍に限った話じゃなくて。正論・べき論vs現実・現物合わせは悩ましいところだ。
商売になるのは現物合わせの方なのでそちらに流れるんだけど、正論・べき論でモノ作りをしていった方が関わるみんながラクできて幸せになれるような気がする。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
メールアドレス埋め込みを機能追加

しょせん素人、個人レベルのネタだけど、EPUB3ファイルにメールアドレスを埋め込めるようにした。
「かんたんEPUB3作成easy_epub」https://t2aki.doncha.net/easy_epub
なんでこんなことやってんのか。
ヤマダ電機じゃないけど、電子書籍のストアがサービス停止になったりそもそも倒産したりすると、そのストアで買った本は読めなくなる(これはDRMで管理しているどのストアでも同じこと・念のため)読者・ユーザーとしてはなんじゃそりゃの話。
ただ、最近の動きとしては。
読者救済のために、潰れてしまったストアの読者の購入履歴を引き継いでくれるストアもある。
また、版元がストアが潰れたらファイルを提供するというケースも出てきた。
かなり健全。あるべき姿に近づいてるということだろう。
まったく違う文脈だけど「読書権」読書をする権利という言葉もある。
本を読みたいと思った時、手に入らないとかなくなってるというのはどうなのということでもある(というか、これの本来の意味は、本を読む権利は万人に開かれているべきであるという趣旨。誰もがアクセスできるべきであるということだったように思う)
とはいえ。前から言ってるようになりすましにパクリが横行する電波が問題。
読者が不便を感じないである程度コピー流出の抑止に繋がるであろうというところで「購入者・所有者のメールアドレス埋め込み」という選択(DRMもしょうがないと思ってんだけど、ここではその話はなし)
タイトルと奥付に購入者・所有者のメールアドレスを埋め込む…の他にちょっと細工があるんだけど内緒にしておかないと意味がない。ソースでわかるひとは読んでみてください(大したことはしてないけど、分かりにくい感じになってると思う)
想定している使い方としては。
・読者からどこぞのストアが潰れて読めなくなったんだけどなんとかならんか。
・同人誌イベントの販促物や献本の一環として使えないか。
の二点。
てことで、メールアドレスの管理は必要になるとして。
まずはメールアドレスを埋め込みたいEPUB3電子書籍ファイルを作成する。
その状態で、メールアドレスを埋め込むためにエクセルから別名保存したファイルを使って、各々メールアドレスを埋め込んだ電子書籍ファイルを作る、という手順。
パソコンを買えばほぼオプションとしてついてくる、誰もが使わざるをえないエクセルで管理。
emailのところ以外は見てないのであとはテキトー。
これを「別名で保存」→「テキスト(タブ区切り)」にする。文字コードはshiftjis。
この、メールアドレスをつけたファイルを作ったら
・perl easy_epub.pl email-regist EPUBFILE EMAILFILE
コマンドラインで「email-regist」というキーワードに続けてメールアドレスを埋め込みたいEPUBファイルとEMAILアドレスを書いたファイルを指定する。
メールアドレスのついたEPUB3ファイルができればOK。
EPUBファイルの整合性チェックは
・perl easy_epub.pl email-check EPUBFILE EMAILFILE
で、エクセルに書かれているemailアドレスとepubに書かれているemailをチェック。
「email-check」というキーワードの後ろにチェックしたいepubファイルと上記のメールアドレスを書いたエクセルからのテキストファイルを指定する。
なぜか出回っている電子書籍を開くとメールアドレスがタイトルと奥付に記載されているので、それを見れば出処はわかる。また、追跡用に暗号化したものも書き込んでるのでそれもチェックしていて、上記のコマンドラインですべて「ok」なら問題はないけどひとつでも「ng」が出たら改竄されている可能性がある、ということぐらいはわかる、かな。
法的な実効力はともかく。
とりあえず、少しぐらいはコピー流出の歯止めになるかな、と思う。
なんかよく分からん説明になったけど。
メールアドレスを書いたタブ区切りのファイルを用意するだけでそれっぽいものを作ります。
- 『おかえりください』サウンドノベルWINDOWS版
- 『おかえりください』本編を加筆修正、6つのバッドエンド分岐シナリオを追加してサウンドノベル化!
音と映像が、血まみれのこっくりさんの惨劇を蘇らせる。 - 【無料体験版】はこちら
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
EPUB3固定レイアウトにテキスト絶対値配置

漫画や写真集など画像一枚がページ一枚というシンプルな固定レイアウトのEPUB3ファイルは、画像がすべてで、画像さえしっかりしたものを作ればクオリティの高いものができる。
画像とテキストを組み合わせた固定レイアウトを作りたい場合どうすんの?と思っていたので少し調べてみた。
結論としては、テキストを絶対配置(position:absolute) で置いて行けばOKのようだ。
リフロー型EPUB3の場合、たとえば1ページいっぱいに挿絵など画像を置いても上下左右にマージン(余白)ができてしまう。画像をディスプレイいっぱいに表示したい場合は固定レイアウトのEPUB3で作る以外に方法が(今のところ)ない。
(そのうちハイブリッド型がリーダーで実装されれば問題は解決するんだけど)
絵や画像を見せたいコンテンツの場合(画像で勝負するものの場合)無用な余白は作品を損なうこともあるので、固定レイアウトはここが最大の魅力、かな。
ただ、ibookstoreの場合、固定レイアウトでテキストがあるものは検索可能でないと審査ではねられるらしい(漫画のネームはいいのにねえ)
ということは「レイアウトデザイン重視で紙の本・雑誌を忠実に再現する必要がある」などの場合、底本のPDFデータをそのまま画像化するしかないんだけど、それだとibookstoreでは通らない。
一から作り直しとなる。これはかなり面倒な作業。1ページずつ絶対配置でテキストを置いてレイアウトを確認してさらに位置調整デザイン調整。当然そこに画像位置も絡んでくる。
テキスト絡みの固定レイアウトを作るのはすべて手作業ということになるなあ。こいつを仕事としてやるにはページ1万円でも安いかもしれん。
iBooksもkindleも同じEPUB3ファイルで試した。表示は同じに見える。リフローより端末やアプリ間での差は少ないのかな…。
Mac iBooks
Kindle Previewer
iBooksで検索ができることを確認。
Mac iBooks
ページのXHTML
インラインSVGで画像を指定。
テキストは絶対値で位置を指定。
スタイルシート
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」