SigilのEPUB2をEPUB3に仮変換してみた

EPUB2をEPUB3に変換するネタ。
去年から地味に「Sigil EPUB3」とか「EPUB2をEPUB3」とかで検索されていて、去年暮れぐらいからさらに検索ボリュームが上がった感じ(ぼーっとアクセスログを眺めて目についた、という程度だけど)
epub2をepub3に変換したい、というリクエストが増えてんだろうなあ。
EPUB2のファイルをEPUB3のファイルに変換するより、元原稿からEPUB3ファイルを作り直した方が早いと思う。
とはいえ、呆け防止のパズルに途中放置していたepub2からepub3への変換スクリプトをいじってみた。
・epub2ファイルを解凍する。
→ unzip EPUB2ファイル
・解凍したフォルダで、ターミナルあるいはコマンドプロンプトを開いてスクリプトを走らせる。
→ perl sigil2epub3.pl
・epubcheckでエラーのないepub3ファイルができる(_temp.epubという名前のepubファイル)
※WINDOWSの場合はactive perl(http://www.activestate.com/activeperl/downloads)とコマンドラインで使えるzipが別途必要(https://github.com/bmatzelle/gow)
やってることは。
・content.opfを書き換える。
・新規にナビゲーション文書を作る。
・各XHTMLのヘッダを書き換える。
・epub3のチェックでエラーになるタグなど除去。
ちなみに、epub3でエラーになるタグを除去するので、レイアウトデザインは保持しない。
元のOEBPSフォルダはOEBPS.origという名前で保存するので、epub3にコンバートされたOEBPSと比較して調整&対応。
やっつけ仕事というか、かなりテキトーなシロモノで、コンバート後にepubcheckのエラーになんなきゃいいや、ぐらい。
サンプルに使わせてもらったepub2のファイルは素直でシンプル。ちょっと複雑なモノだとエラーを吐かないとも限らない。
また、決め打ちしてるところもあって使い回しがきかないだろうと思う。
てな感じのスクリプトはこちら→https://t2aki.doncha.net/tmp/sigil2epub3.zip
(※ 一発芸ネタは直リンクできないようになっておりますので、このリンクからご入場ください)
ぐちゃぐちゃで汚いのは素人芸ということでご勘弁くだされ。
…うーん、やっぱこりゃ、時間の無駄だわ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
Android標準ブラウザでダウンロードできない現象

Android標準(?)のブラウザでPDFやzip、epubファイルのダウンロードができなくて吐血。
PCのブラウザやiphone(iOS)、AndroidでもChrome、Firefoxなどのブラウザだと意図通り問題なくダウンロードできるのに、Android標準(?)のブラウザだとダウンロードできない。というか、なぜか、ページのHTMLをダウンロードしてしまう。
謎な挙動のスマホ標準ブラウザに対応する必要があるのかという、そもそものところはまた別として。
調べてみたら、検索のしかたが悪いのか情報が錯綜していて正解が見えてこない。
スクリプトが吐くヘッダは定型。
このヘッダに続いて、epubファイルが標準出力に吐き出される。ほかのいろんなスクリプトで使っているやりかたで、Androidスマホ以外では問題なく意図通りダウンロードできている。
老眼血眼、しこたま検索しまくって、こちらのサイト
「コンピュータの日々 Android付属ブラウザのファイルダウンロードの動作」
AndroidのブラウザがPOSTメソッドでサーバにリクエストして、サーバからContent-Disposition:attachmentなヘッダを受け取ると、再びGETメソッドで同じURLにリクエストを送信するとのことです。
へ? と思ってアクセスログを見るとAndroidスマホのブラウザ(docomoのスマホ L-05E 、mobile safari)は、確かにPOSTでアクセスしてきた後、なぜかGETでアクセスしている。
ページのHTMLを取得してるので、最初はブラウザのキャッシュを疑ったんだけど、どうやら真相はこいつ。attachmentで渡してるはずのepubファイルではなくて、次のGETでページのHTMLをダウンロードしているご様子だ。
なんでやねん。
以上は、とりあえずのメモ。
これじゃ、スクリプトで吐き出させたんじゃダウンロードしてくれない、ということになる。
ダウンロードしてもらう方法としては、一度サーバーにファイルを書き出して、静的リンクをクリックしてもらうしかない…うーん、ほんまかいな。
スクリプトで直接ダウンロードする方法をもうちょっと調べてみる。たぶん、わたしのスキル不足だと思う(詠み人知らず)
[12/20 21:30:21] 追記。
現状、スマホ標準のブラウザは .epub ファイルにリンクしても、ブラウザが epub ファイルを開いて表示しやがる。
バイナリを文字化けした文字にしてブラウザにダアアアアッと表示する。なんじゃそりゃ状態。
なもんで、.htaccess で(httpd.confでもいいけど) MIME TYPE を指示(指定)してやる必要がある(epubという拡張子のファイルにアクセスされたらどうするのかの設定)
addType application/octet-stream .epub
…て、epub自体が最近なので、Android標準ブラウザに適切な対応を求めるのは可哀想、というか無理かもしれん。もう意味不明なブラウザを使うのではなくて、Firefoxなり、PCでも使われるブラウザとその挙動を標準にすべきだろう。
[2016/01/03 10:47:38] 追記。
どうやら現状のAndroidの「ダウンロード」(ダウンローダー)はSSLのページや認証が必要なページからはダウンロードできない困った仕様っぽい。
・ブラウザで閲覧→PDFやzipをタップ→ダウンローダーが起動してzipやPDFをダウンロード
という流れだとダウンロードできない。
・ブラウザで閲覧→PDFやzipをタップ→ブラウザがPDFやzipをダウンロード
だとダウンロードができる。Firefoxなどだとダウンロードができる、ということ。
スマホって、なんでまた「ダウンローダー」なんてのを噛ませることになったんだろう。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
KDPとRKWLから悲しいお知らせ

その1.楽天KWL
楽天KoboWritingLifeが昨日公開されて盛り上がりを見せる観測範囲だ。
わたしもとっとと参加しようと思ったのに、肝心の登録ページに行けない。正しくは。カナダのKoboWritingLifeの管理ページへと強制的に飛ばされてしまう。
RKWL(楽天KoboWritingLife)とKWL(KoboWritingLife)は別モノなのに、KWLに登録があるとRKWLに登録できないらしい。なんとかならんか、と楽天のページから問い合わせてみた。
お問い合わせの件につきまして、カナダなど日本国外のKoboにご登録いただいている場合は、
日本国内向けの楽天Koboライティングライフにアクセスしていただくことができません。
たいへん恐れ入りますが、新しいメールアドレスにてあらためて楽天アカウントを作成していただき、
新規の楽天アカウントにて、楽天Koboライティングライフにご登録いただきますよう、お願い申し上げます。
おいおい。楽天にもうひとつメールアドレスを渡せってか。メルマガが飛んでくるからひとつでも嫌だったっつーのに。
うーん。ちょっと考える。
楽天koboでやるのに、KDPやibookstoreで必須のアメリカの税金処理がいらないのは、かなりポイントが高い。
この税金の事務処理があるからという理由でKDPで出さない・出せないひとが、わたしの観測範囲の同人誌界隈でかなりいる。アマゾンもKDPで出版する方法なんてのをコミティアでやるなら、税金関係をなんとかすべき。
楽天で出す魅力として、なんだかんだ言いつつもポイントの威力がある。
以前の仕事でちょっと楽天と絡んでいた時に聞いたのが。ハンパな残りポイントの使い道として、1本100〜300円ぐらいの動画ダウンロードがあった。
いろいろ買い物していたらポイントがあったので「ついでに、ちょうどいいのないかしら」だ。
そこに低価格電子書籍はハマリそう。
うーん。でもなあ、ふたつも楽天にメアドを渡したらどうなるか。やっぱちょっと考える。
その2.KDP
MacOSをYosemiteにしたらKindle Previewerが立ちあがらなくなった。
検索してみるとJavaのバージョンの問題らしいとのことで、バージョンを1.7ではなく、1.6を指定したらうんうん唸りながらどうにか立ち上がったものの。Deviceをe-Inkに切り替えたら落ちる。さすがに問い合わせてみたらば。
申し訳ございませんが、現在はKindleプレビューアと、Yosemiteには互換性がなく、YosemiteではKindleプレビューアが正常に作動しておりません。
現在対応策を調査中ですので、詳細が分かり次第ご連絡させていただきます。
がちょーん。Javaのバージョンをごまかしてどーのこーの以前にYosemiteでは正しく動作しない、ということ。
Windowsがあるからそっちで作業してるけど…DELLのWINDOWSより、mac miniの方が格段に早いんだよなあ…とほほ。
KWLもKDPもちょっと停滞。
ちっ。でも、Ingressでlv9が見えてきたから良しとする、か。
[2015/01/03 00:23:23] 追記
正月2日にKDPサポートからYosemite対応についてメールが来て吃驚。
1. 以下のリンクより、Java SE 6 ランタイム(Java for OS X 2014-001)をダウンロードしてください。
http://support.apple.com/kb/DL1572
2. 以下のリンクより、X11をインストールしてください。
http://xquartz.macosforge.org.
※既にX11をインストール済みのお客様で、問題が解消されない場合は、一度X11をアンインストールし、再度X11のインストールをお試し下さい。再起動の後、Kindleプレビューアが正常に作動するかご確認ください。
ということで、
インストール済みだったJava SE 6のランタイムを改めてインストール。
インストール済みだったX11を改めてインストール。
念のためkindle previewerも改めてインストール。
結果。
Kindle Previewerのアイコンをダブルクリックしても起動しかけてすぐ終了する(今までと同じ)
コンソールで
export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
とjavaのversionを1.6にすると以前と違って起動が若干早い。
DeviceメニューでE-Inkを選択してもエラーで落ちることはなくなった。フォントが馬鹿デカくなってしまう…。
(今さら気づいたんだけど、E-Inkの選択にPaperwhiteがなくなったんだな)
E-Inkにしてエラーで落ちてたのはJAVAではなくてX11の問題っぽいような気がする。
ダブルクリックで起動やPaper whiteについてリクエストして返事ももらった正月2日。ありがたいんだけど、まさに今スグ解決しなきゃいけない致命的な問題でもないし、三が日ぐらい休みましょう!
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
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」