オライリーのiOSアプリをePubファイルに変換する

先日、iOSアプリの『CSS Cookboook』を購入したのですが、どうも動作がおかしい。ページめくりが効かないことが多々ある。

ということで、アプリの販売元であるO’riley Mediaにメールをしてみました(最初はオライリー・ジャパンにメールしたのですが、アプリのことは知らないのでO’riley Mediaに問い合わせてくれ、と返事がきました)。

返ってきたメール:

Some of our iPhone apps don’t work well with IOS 5.  Here is a blog post
that shows you how to extract the ePub file from that app and use it in
iBooks on your phone –
http://zef.me/3246/convert-cheap-oreilly-iphone-app-books-to-epub

オライリーのiOSアプリにはiOS 5で上手く動かないものがあるから、アプリからデータを取り出してePubファイルにして読んでね、とのこと。

で、実際にやってみました。リンク先のブログ記事もスクリーンショットがあって十分わかりやすいのですが、一応手順を書いておきます。なお、操作はMac OS X Lionのものですが、Windows 7でもほとんど変わりません。

  1. iTunesでお目当てのアプリを見つけて右クリック > Finderで表示
  2. 出てきた.ipaファイルを複製
  3. 複製した.ipaファイルの拡張子を.zipに変更
  4. .zipファイルを解凍(ダブルクリック)
  5. 解答して出来たフォルダの中の、Payloadフォルダに.appという拡張子のファイルがあるので、右クリック > パッケージの内容を表示
  6. bookフォルダの中に、META-INFフォルダ、OEBPSフォルダ、mimetypeという名前のファイル、の3つがあるので、これらを選択して「3項目を圧縮」
  7. 圧縮して出来た.zipファイル(Macデフォルトだと「アーカイブ.zip」)の拡張子を.epubに変更

以上で、変換作業は終了。あとは、お好みのePubリーダーに放り込めばOK。iOS 5にデフォルトで入っているiBooksが手軽です(iTunesのブックライブラリに.epubファイルを入れて、同期するだけ)。

なお、CSS Cookbookは、インデックスの量が多すぎるのか、ePubリーダーでも快適に読めるとは限りません。私の試した範囲だと、iBooksはなんとか実用レベル、bREADERはダメダメ、って感じです。

ちなみに、ePubファイルの中身は、ただのhtmlです(OEBPSフォルダの中には大量の.htmlファイルが入っています)。したがって、htmlファイルを取り出して個別に読むこともできます。

Ubuntuを再セットアップした/たのしくなってきたRuby

今日、Macのダウンロードフォルダを整理したところ、誤ってUbuntuの仮想ハードディスクまで消してしまいました。Ubuntuの仮想ハードディスクをダウンロード後、ダウンロードフォルダに置いたままセットアップしていたのが原因です。

Ubuntuは開発環境(というか、学習環境)の構築と、多少のファイルの移動はしていたものの、本格的に開発に使っていたわけではなかったので、それほど痛手にはなりませんでした。が、一歩間違えたら恐ろしい事態になっていたことでしょう。ファイルの置き場には十分に気をつける必要があると再認識しました。

バックアップをとっていないため、復旧も無理そうなので再セットアップを行いました。そこで、以前LAMP環境を構築する記事で書いた内容と齟齬が生じました。Ubuntuに、PHPが入っていないのです。前回は気づいたら入っていたのですが、恐らくセットアップ初期の段階でインストールしていたのでしょう。

再セットアップの今回は、userフォルダの中に作ってあるtoolsフォルダに入れました。これで誤って消すことはないはず。TimeMachineによるバックアップのためにも、外付けHDDを早く買わねば。

『たのしいRuby』は第2部の基礎編を終え、第3部に入りました。第2分では変数、配列、制御構造、ループといった、「伝統的」なプログラミングの基礎が説かれています。とはいえ、メソッドあたりからは「Rubyらしい」話題になりますし、クラスを自分で定義する、といった話題は本書で初めて読みました。

第3部からは各クラスごとのメソッドを掘り下げ、今までに身につけた内容をテストする練習問題も収録されています。第2部の感想は「まあまあたのしい(でもクラスの辺りはよくわからん)」、第3部は、まだ序盤ですが、ようやく「たのしい」感じになってきましたね。

練習問題にあった素数を判定するプログラムは、PHPを覚えたての頃(今年の3月)に書こうとして上手くいかなかったのですが、今回は書き下ろすことができました。

def prime?(num)
    count = 0
    i = 1

    while i <= num
        if num % i == 0
            count += 1
        end
    end

    if count == 2
        print num, ” is prime.n”
    end
end

3月の段階でも、FizzBuzzは書けていたので、当時でも書くことはできたはず。が、当時は、「2回割り切れたら素数、3回以上割り切れたら素数ではない」という発想ができませんでした。ちなみに、『たのしいRuby』のサポートページにはエレガントな解法が載っています。

viに乗り換えた/たのしい?Ruby

先週の記事では、terminal内で使用するエディタとしてはnanoを使ってるよ、と書きました。が、viに乗り換えました。

nanoは、確かに覚えるべきことが少なく(参考)、初心者にはわかりやすい。その反面、機能に乏しいのが弱点です。ちょっとした直し程度ならnanoでもいいのですが、ある程度の長さのテキストを編集するとなると、nanoでは限界があります。

そこで、やはり本格的なエディタに取り組もう、と選んだのがviです。参考にしたのは、エディタ特集をやっているSoftware Designの2012年7月号。単なるユーザーにとってはvi(vim)、自分でカスタマイズ(プログラム)するならemacsに軍配が上がる、という印象を受けました。

viの習熟度の現状は、モードの切り換えやhjklでの移動に慣れた程度です。挿入モードメインで普通のエディタみたいな使い方をしています。もう少しコマンドを覚えれば、コマンドモードの方が高効率になるんでしょうが…。

あと、初歩的なテキストファイルの編集に関してはMacのterminalでもUbuntuのterminalでも大差ないので、最近はMacのterminalで作業するほうが多いです。ApacheとMySQLはUbuntuにしか入れてないので、PHPを書くときはUbuntuです。

また、言語に関してはRubyを始めました。今月からRubyの勉強会に参加する予定なので、その準備です。参考書としては『たのしいRuby 第3版』を選びました。理由は、

(1) 3版目である(=間違いが混入している可能性が低い)
(2) まつもとゆきひろ氏の推薦文がある
(3) 2色刷りで紙面が見やすい
(4) 2010年刊と比較的新しい

といったところ。今日は第1部、約60ページを終えました。感想は、

(1) Rubyの構文はシンプル
(2) 基本的な部分が説明不足(オブジェクトって何?)
(3) あまりたのしくないかも…(比較対象は『Perl言語プログラミングレッスン』)

Rubyでまず驚いたのは、文末のセミコロン(;)やif文の{}を使わないこと。短いif文を私の知っている言語で書いてみると、以下のようになります。

PHP(if文の中身が1行だけなら波括弧は省略可):

$a = 10;
if ( $a >= 10) print “$a”;

Perl(波括弧省略不可):

$a = 10;
if ($a >= 10) {
    print “$a”;
}

ただし、Perlで実行部分が1行の場合は、

print “$a” if ($a >= 10);

という書き方もできる(if修飾子)。

Ruby(セミコロン不要、波括弧の代わりにthen~endという文字列を使う)

a = 10
if (a >= 10) then
    print a
end

なお、『たのしいRuby』の第1部の段階では触れていないが、RubyでもPerlと同様にif修飾子が使えるので、

print a if (a >= 10)

と書くこともできる。

また、『たのしいRuby』では、オブジェクト指向言語の用語に慣れさせるためか、「オブジェクト」「メソッド」等の用語を多用します。しかも、これらの用語に関する詳しい説明はありません。プログラミング初心者を対象としているにも関わらず!

オブジェクト指向は直感的な書き方ができるので、「習うより慣れろ」式でも良いのかもしれませんが、納得感が得られないのが気になります。

『たのしいRuby』を、並行して進めている『Perl言語プログラミングレッスン』と比べると、構成もかなり違います。

『Perl言語プログラミングレッスン』は、数と文字列、変数、配列とハッシュ、条件判断とループ、といった具合で、基礎的な概念から順番に説明していく「伝統的」なスタイルです。これに対し、『たのしいRuby』は、最初にその本で紹介するトピックを概説し、その後各トピックを深く掘り下げるスタイル。

目次だけ見ると、『たのしいRuby』の方が見通しが良いように感じるのですが、実際にやってみると、『Perl言語プログラミングレッスン』の方が、「たのしい」。一歩ずつ前進していく(各項目をきっちり理解していく)感覚が心地よいのです。

『たのしいRuby』は、今日読み終えた第1部の段階では、地図をじっくり眺めただけ。一歩も進んでない。2部以降は各論に入っていくので、この先が楽しめるといいな、と思います。

Perlを少しかじってnanoを触るなどした

UbuntuにはPerl処理系もデフォルトで入ってるし、コマンドラインが使いやすい環境なので、今日はPerlを少しやってみました。ホントに初歩の初歩、四則演算や文字列の連結等。

1. 端末で gedit ~/test.pl
2. geditでプログラムを書く
3. 端末に戻って、Control + c で gedit を終了させる
4. perl ~/test.pl  でプログラムを実行

というのが一連の作業の流れです。

やってるうち、geditと端末を行き来するのが面倒に感じられてきました。そこで調べてみたところ、コマンドラインの内部で起動できるエディタとしては、viとemacsが著名ですが、nanoというエディタも初心者にはわかりやすい、とありました。

実際、viやemacsは操作がさっぱり分かりませんでしたが、nanoはGUI上で使うエディタに近い感覚で操作できるので、初めてでも編集→保存→終了を行うことができました。下段に操作のマニュアルが常時表示されているのも親切ですね(とはいえ、^XがControl + xのことだとは分かりませんでした…)。

nanoを使うことで、全ての作業を端末内で完了できるので、気持よく作業を進めることができるようになりました。

Perlの学習はあまり進みませんでしたが、Perlに限らず通用する、コマンドライン環境での学習体制を作ることはできたので良かったです。

MacBook Airを買ってからやったこと

1. 11インチと13インチ

6/15(金)に、MacBook Air 13インチモデルを買いました。SSD 128GB、メモリは4GBの、13インチモデルとしては標準的な構成です。11インチモデルと迷ったのですが、11インチモデルは

  • 標準のSSD容量が64GB(オプションで128GBにもできます)
  • バッテリーの持ちが悪い(11インチは4時間、13インチは7時間)
  • 画面が小さい

といった弱点があることを考慮して、13インチモデルにしました。

ただ、13インチモデルは「でかい」。重量こそ200gしか変わらないものの、1回り大きいため、取り回しで劣る点は否めないでしょう。私はメイン機として考えていたので13インチモデルを選びましたが、MacBook Airの魅力である「軽さ」を最大限に味わうなら、11インチモデルを選ぶべきですね。


2. Apple Store 渋谷店

購入したのはApple Store渋谷店。新製品発売直後なので、かなり混んでました。また、渋谷の街でふだん見かける以上に、多くの外国人客がいました。店員も多国籍で、日本語だけでなく、様々な言語が通じるようです。

Apple Storeにした理由は、USキーボードにしようと考えていたから。キーボードのカスタマイズは、Apple Storeでしか出来ません。渋谷の実店舗で購入したのは、通販よりも早かったから。


3. MacBook用のスリーブ

渋谷店でMacBook Air用のスリーブも探したのですが、価格が高め(3980円~)な割にピンと来るものがなかったので、オンラインのApple Storeで販売しているThe North Faceのスリーブ(セールで2000円)を買いました。

4. Firefox

購入して最初にやったのは、Firefoxのインストール。インストール後は、Firefox Syncを利用して、自宅のWindows PCとブックマークやパスワード、アドオンを同期します。

5. Google日本語入力

次に、Google日本語入力をインストールします。固有名詞に強いという特長がありますが、クロスプラットフォームで使えるのが最大の魅力かも。環境設定>キー設定 で「MS-IME」にしておきます。また、メールアドレス等のよく使う語句を単語登録しておくと便利です。

6. キーボード設定(KeyRemap4MacBook)

慣れないキー操作を改善するため、KeyRemap4MacBookをインストールします。KeyRemap4MacBookは、キーの配置を変更することができるソフトです。私は以下のように設定しました。

1.commandキー単独クリックで英数キー:

 USキーボードの場合、IMEのオンオフ操作はデフォルトでは「ctrl + space」ですが、macのJISキーボードではスペースバーの左右に「英数キー/かなキー」があります。この「英数/かなキー」をUSキーボードでも使えるようにする設定です。

2.右shiftキーでreturn:

 USキーボードはreturnキーが小さい! これは英語の入力事情を反映しているのでしょうが、私はJISキーボードの大きなreturnキーに慣れてしまっているため、returnキーのつもりで右shiftを押してしまうことが頻繁にあります。そこで、だったら右shiftもreturnにすればいいじゃん、という設定です。私の場合、ふだんshiftは左しか使わないので、この設定でも不都合はありません。

3.バッククォートキーで「半角/全角」:

 1.の英数/かなキーでも同じ操作ができるのですが、IMEオンオフ動作は完全に習慣化されてしまっているため、簡単には変えられません。将来的には左右のcommandキーで切り替える動作に慣れていきたいですが、今のところはバッククォートキーでも切り替えられるようにしています。

また、キーリピートも少し速くしています(initial wait 400ms, wait 30ms)。カーソル移動の快適化のためです。

システム環境設定>キーボード>キーボード からは、「F1, F2等すべてのキーを標準のファンクションキーとして使用」を選択。輝度、音量調節等の便利機能はfn + ファンクションキーで呼び出せるようにして、デフォルトでは通常のファンクションキーとして動作させるようにします。

システム環境設定>キーボード>キーボードショートカット>Mission Control で、F12にバインドされている「Dashboardの表示」のチェックを外します。Firebugを呼び出す際にF12を多用するので、このキーが使えないのは困ります。

7. トラックパッド設定

マルチタッチトラックパッドはおおむね快適ですが、「中クリック(マウスホイールクリック)」ができないのが不満です。そこで、MiddleClickをインストールし、3本指タップで中クリックできるようにしておきます。

システム環境設定>トラックパッド>軌跡の速さ で、カーソルの移動速度も上げておきます。

8. エディタ

テキストエディタはCotEditorを入れておきます。

9. 開発環境・VirtualBox・Ubuntu

Eclipse等の開発環境は、VirtualBoxでUbuntuを使用し、Eclipse等は全てUbuntuに入れてしまおうと考えました。Ubuntuの方が慣れているから、というのが理由です。また、UbuntuはLinuxであり、デフォルトでApache HTTP ServerとPerl, Pyhon, PHPがインストールされているため、MySQLを追加でインストールしてやるだけで、手軽にLAMP環境を構築することができます。

VirtualBoxをインストールしたあと、Ubuntu 12.04 日本語仮想ハードディスクをセットし、起動します。メモリは1024MB確保し、他はデフォルトで。

起動したら、Virtual Boxのメニューから「デバイス>Guest Additionsのインストール」を選択し、UbuntuにCD-ROMをマウントします。マウントしたCDから「Guest Additions for Linux」を起動してインストールすることで、フルスクリーン化できるようになります。

あとは、sudo apt-get installで、MySQL等をインストールしていきます。Ubuntuでの開発環境のインストールは極楽。

10. 音楽ファイル管理ツール

MacBook AirはiPhoneの母艦としても考えているので、音楽ファイルの管理ツールも必要。アートワーク取得ツールiGCover、MP3タグの管理ツールTagrをインストールします。

11. 音楽ファイルとiOSアプリ

音楽ファイル等の移行に関しては
、Windows PCとMacBook Air