FROM THE OLD SITE

旧WordPressで公開していた記事を、当時の内容を尊重して再掲載しています。

PAST ARTICLE · Apple

O'Reilly の iPhone アプリから EPUB を抜いて iPad で読む

iPad
iPad

iPad を買おうか迷っていて、drikin.tv さんのところで iPad のレビューをされているのを観て買うことにした。Retina ディスプレイになって見開きでも本が読めると仰っていたのが決定的だった。早速、3月20日に Apple のオンラインストアで注文して、3月29日に手に入った。

もう一つの理由は、O'Reilly から iPhone / iPod touch 向けに電子書籍アプリがたくさん出ていて、価格が数百円と安いから!ただ、iPhone / iPod touch 向けなので EPUB だけ抜き出す必要がある。

O'Reilly の電子書籍アプリ
O'Reilly の電子書籍アプリ

早速、Version Control with Git を購入して試してみた。iTunes で購入すると下記ディレクトリに保存される。

$ ls ~/Music/iTunes/iTunes\ Media/Mobile\ Applications/ | grep 'Git'
VCwGit 1.0.ipa

EPUB を作る主な流れは、

※OS X Lion の zip コマンドだと cpgz 形式になるので、ditto コマンドで zip 形式にしています。

  • *.ipa は、zip 形式で圧縮されているので解凍する。
  • iBooks の辞書で日本語が使えるように言語を変更する。
  • EPUB を作る。
  • iTunes に登録する。

まとめると、下記のスクリプトになる。

$ less ipa2epub.sh
#!/bin/sh

TMP=/tmp/
SRC=$1
PAYLOAD=${TMP}Payload/
MIMETYPE=mimetype
METAINF=META-INF/
OEBPS=OEBPS/
CONTENT="${OEBPS}"content.opf
ITUNES=/Applications/iTunes.app
BOOKS="${HOME}"/Music/iTunes/iTunes\ Media/

checkFileOrDirectory()
{
        if [ ! -e "$1" ];
        then
                echo "$1" ': No such file or directory'
                deleteFileOrDirectory "$2"
                exit
        fi
}

deleteFileOrDirectory()
{
        if [ -f "$1" -o -d "$1" ];
        then
                rm -rf "$1"
        fi
}

checkFileOrDirectory "$SRC"
DST=`basename "${SRC}" | sed -e "s/ipa$/epub/"`
unzip -oq "${SRC}" -d "${TMP}"
checkFileOrDirectory "${PAYLOAD}"
BOOK="${PAYLOAD}"`ls "${PAYLOAD}"`/book/
checkFileOrDirectory "${BOOK}" "${PAYLOAD}"
cd "${BOOK}"
cp "${CONTENT}" "${CONTENT}".tmp
sed -e "s/\(<\(dc\):\(language\)[^>]*>\)[^<]*\(<\/\2:\3>\)/\1ja\4/" "${CONTENT}".tmp > "${CONTENT}"
deleteFileOrDirectory "${CONTENT}".tmp
ditto -ck "${BOOK}" "${BOOKS}""${DST}"
checkFileOrDirectory "${BOOKS}""${DST}" "${PAYLOAD}"
open -a "${ITUNES}" "${BOOKS}""${DST}"
cd
deleteFileOrDirectory "${PAYLOAD}"
exit

EPUB 生成のときは、*.ipa のパスを渡してあげれば自動でおkです。

$ chmod 755 ipa2epub.sh
$ ./ipa2epub.sh Music/iTunes/iTunes\ Media/Mobile\ Applications/VCwGit\ 1.0.ipa

iTunes で iPad と同期すると、iPad の iBooks に表示されます。

iBooks に表示した電子書籍
iBooks に表示した電子書籍

辞書も引けるので、わからない単語はハイライトを付けて後で見直すことも可能です。

iBooks の辞書表示
iBooks の辞書表示

iBooks だとフォントのサイズがあまり小さくできないので残念・・・次はi文庫HDで観れるようにしてみようかと思います。

【追記5/12】github にソース追加しましたので、必要な方はどうぞ〜

https://github.com/Sugitaku/ipa2epub