AIDEMOIRE

【アイデモワール】

GenymotionとKindleで快適読書環境

PCでKindle本が読める環境を整えました。その手順をメモっておきます。

その前に、はじめに恥ずかしい話を白状しておきましょう。私はAmazon.comの“Kindle”とは読書用端末、つまりハードウェア製品のことだと思ってました。新聞でもKindleの端末の出荷台数などの話が殆どで。Kindle端末をAmazon.comが出したとき、私はAmazon.comもハードウェアビジネスを始めるのかなと思い込んでいました(全く間違いではありませんが)。

一方で、本棚の本を自炊してどんどん電子化しているのに、新規に買う本は紙という矛盾がありました。Amzon.comで本を買う時も“Kindle用ダウンロードはこちら”というメッセージを羨ましく思っていました。そこで、いよいよKindle端末を買わねばなるまいぃ!と思ってどの端末にするか調べてみたら....、何とKindleとはクラウドサービスの名称だったのですね。Amazon.comKindle本を購入すれば、AndroidでもIOSでも複数の端末で同じ本を読むことができると言うサービスだったのですね。もっと早く知っていれば、余計な紙資源を無駄にしなくて済んだのにと思います。(Amazon.comで本を買うと、過剰包装によってさらに余計な紙資源を浪費しますし。)

さっそくAndroidのスマホにKindle Appをインストールして、無料本をダウンロードして見ました。嗚呼、快適。ところがです、やはりスマホの画面では小さいのです。本格的に使うのであればタブレットということになりますが、私は仕事柄、ノートPCを持ち歩いているので、スマホ+ノートPCに加えてタブレットまで持ち運ぶ気には到底なりません。ノートPC用のKindleアプリをダウンロードしようとしたのですが、PC用アプリが無いんですね。つまり、AndroidiOSではOKだけどPCでは使えないという、よく分からないマーケット戦略なのです。

さて、その程度で諦める私ではないので、何とかノートPCでKindle本を読む方法を考えてみました。そこで思い出したのがAndroid x86。昔、Android 1.3とかの頃、お遊びで動かしたことがあったのですが、あれにKindle Appをダウンロードすれば使えるハズ。そこで、最新版のAndrid x86をダウンロードしてVirtualboxで動かしたのですが、未だに仮想マシン上では実用のレベルには今一つ。(もともとはハードウェアで直接動かすことを目的としたプロジェクトなので仮想マシン上ので利用は余り考慮されていない感じです。仮想環境を使わずノートPCに直接Android x86をインストールするという方法もありますが、それではWindowsやLinuxのアプリが使えなくなってしまいますし。)
Android-x86 - Porting Android to x86


次に調べたのが BuleStackというフリーの製品。これも実績はあるようですが、Webで見た限りは評価が分かれています。結構、遅いという評価のようです。ということで、この製品は実際に試してみませんでした。もっとも、遅いという評価が理由ではなく、仮想環境で利用できないためです。Windowsアプリとして動くのでスナップショットなどの管理ができない点が私にとっては今一つでした。
Windowsで(スマホと同様に)Amazon Kindleの本を読む方法について


次に辿りついたのが、AndroVM。これはVirtualbox仮想マシンに特化したAndroidの実行環境です。ダウンロードして動かしてみると、Android x86とは違い、“そこそこ”サクサク動きます。これだったらなんとか実用になりそうでした。しかし、動作はそこそこなのですが、デスクトップのサイズが固定されているので、フルスクリーンで使えない、という点が残念。どこか設定を変えれば出来るのかもしれませんが、そこまで調べる時間も気力もなく。
Download | AndroVM blog


ところが、AndroVMのホームページを読んでいると、今年の6月にGenymobileというフランスの会社にプロジェクトが買収(?)されてGenymotionという製品としてリリースされてそうです。(フランスなので、英語のページは殆どガラガラです。:-p)
Genymotion
Genymobile
f:id:Tomoaki_Shimoyama:20131024202056p:plain

製品化はされましたが、フリーの製品も引き続き出すようですし、“製品”なので、それなりのクオリティと機能強化を目指すようです。ならば、ということで早速試してみました。

Genymotionを使ってみる

Genymotionのダウンロードにはユーザ登録が必要ですが、聞かれるのはメールのアドレスだけです。Genymotionのトップページから“SIGN UP”をクリックしてログイン&サインアップ ページへ。登録にはユーザIDとパスワード、メールアドレスを入力して完了です。
Genymotion Site
f:id:Tomoaki_Shimoyama:20131024202153p:plain


早速、ログインしてダウンロードします。

f:id:Tomoaki_Shimoyama:20131024202657p:plain

幾つかのインストーラが用意されています。

Windows 32/64 bits (with VirtualBox) Virtualboxも含まれたWindows版
Windows 32/64 bits Virualbox無、Windows版
Mac OS X 64 bits Virualbox無、Mac版
Linux 32 bits (Ubuntu, Fedora, Redhat) Virualbox無、Linux i386
Linux 64 bits (Ubuntu, Fedora, Redhat) Virualbox無、Linux x86
Linux Debian 64 bits Virualbox無、Debian x86

Windows版だけはVirtualboxも含んだインストーラが用意されていて、これをダウンロードすれば、Genymotionをインストール時にVirtualboxもインストールされます。(と言っても、OracleVirtualboxのインストーラが起動するだけですが。)

それ以外はVirtualboxは含まれないので、事前にVirtualboxをインストールしておく必要があります。Virtualbox有り版のVirtualboxが最新のバージョンではなかったので、私はVirtualbox無しのWindows版にしました。

そこで先ずは、Oracle Virtualboxをインストールしておきます。
Downloads – Oracle VM VirtualBox
Virtualbox本体をインストールした後にエクステンション パックもダウンロード、インストールしておきます。(VirtualBoxについての説明はWebのあちこちにあるので省略します。)

VirtualBoxのインストールが完了したら、次にGenymotionをインストールします。インストーラ自身は他のアプリ同様に難しくはありません。基本的にはデフォルトのままで“Next”をクリックすればOKかと思います。
f:id:Tomoaki_Shimoyama:20131024203206p:plain f:id:Tomoaki_Shimoyama:20131024203234p:plain
f:id:Tomoaki_Shimoyama:20131024203328p:plain f:id:Tomoaki_Shimoyama:20131024203359p:plain
f:id:Tomoaki_Shimoyama:20131024203422p:plain f:id:Tomoaki_Shimoyama:20131024203446p:plain
f:id:Tomoaki_Shimoyama:20131024203516p:plain

インストールが終わると、Genymotionが立ち上がりますが、まだ“仮想デバイス”が登録されていないので、仮想デバイスの登録から始めます。最初に仮想デバイスを追加するか聞かれるので“Yes”をクリックします。次にクラウドに接続するか聞いてきます。クラウドに接続と言っても何かのサービスに接続されるわけでも無く、Virtualboxにインポートする仮想マシン パッケージ(=仮想デバイス)をダウンロードするだけです。ここではアカウント作成時に指定したユーザIDとパスワードを入力します。
f:id:Tomoaki_Shimoyama:20131024203655p:plain
f:id:Tomoaki_Shimoyama:20131024203711p:plain

すると、現在ダウンロード可能なOVAパッケージ(仮想マシン パッケージ)の一覧が出てきます。Galaxy NexusやXperiaの疑似環境をプリセットした仮想デバイスも用意されています。私は、特定のハードウェアの疑似環境ではなく、汎用の“WXGA 10.1"Tablet - 4.2.2 - with GoogleApps - API17 - 12800x800”を指定しました。ダウンロードしたいパッケージを指定して“Add”をクリックし、ダウンロードする仮想デバイスの詳細を確認して“Next”をクリックするとパッケージのダウンロートが始まります。
f:id:Tomoaki_Shimoyama:20131024204154p:plain
f:id:Tomoaki_Shimoyama:20131024204214p:plain

200MBちょっとありますので、ダウンロードには数分かかります。

f:id:Tomoaki_Shimoyama:20131024204614p:plain f:id:Tomoaki_Shimoyama:20131024204547p:plain

パッケージ(仮想デバイス)のダウンロードが終わると、次にパッケージをシステムに登録します。ダウンロードした直後の状態では、単にパッケージがダウンロードされファイルとして保存されているだけなので、それをGenemotionのシステムに仮想デバイスとして登録(=Virtualbox仮想マシンとしてインポート)します。まず、登録する仮想デバイスの名前を決めます。今回はデフォルトの名前をそのまま使いました。“Create”をクリックすると登録が始まります。

f:id:Tomoaki_Shimoyama:20131024204533p:plain
これは数秒で終わります。
f:id:Tomoaki_Shimoyama:20131024204515p:plain f:id:Tomoaki_Shimoyama:20131024204456p:plain

全てのインストールが終わると、Genymotionの画面の“Your virtual devices”というところに、今、ダウンロードしてインポートされた仮想デバイスがリストされています。
f:id:Tomoaki_Shimoyama:20131024205839p:plain

この時、VirtualBoxの画面でも仮想デバイス用の仮想マシンが登録されているのが確認できます。
f:id:Tomoaki_Shimoyama:20131024210239p:plain

仮想デバイスの起動の前に、Genymotionの画面から仮想デバイスの“スパナ”のアイコンをクリックして仮想デバイスの設定画面を確認してみましょう。ここでは特に変更は必要ありませんが、PCによっては仮想デバイスの画面がはみ出してしまうかも知れませんから、仮想デバイスの画面サイズを適当なものに変更しておきます。
f:id:Tomoaki_Shimoyama:20131024210434p:plain f:id:Tomoaki_Shimoyama:20131024210422p:plain

では“Play”をクリックして仮想デバイスを起動してみましょう。
f:id:Tomoaki_Shimoyama:20131024210644p:plain

しかし、初回の起動時には「Android SDKとの接続が未定義だ!」と怒られますから“Yes”をクリックしてSDKとの接続を設定しておきます。
f:id:Tomoaki_Shimoyama:20131024210820p:plain

とは言っても、Androidアプリを開発するわけでもありませんから、設定画面では一番上のチェックを外して“OK”をクリックするだけです。
f:id:Tomoaki_Shimoyama:20131024211027p:plain
f:id:Tomoaki_Shimoyama:20131024211411p:plain

さて、気を取り直してもう一度“Play”をクリックします。すると仮想デバイスが動き出します。この時、VirtualBox仮想マシンも自動的に起動され、VirtualBoxのコンソールにはAndoridのブートメッセージが出てきています。
f:id:Tomoaki_Shimoyama:20131024211639p:plain

暫くすると、Androidの初期化画面が表示され、直ぐにAndroidが使える様になります。
f:id:Tomoaki_Shimoyama:20131024211737p:plain
f:id:Tomoaki_Shimoyama:20131024211728p:plain

初回の起動時にはGoogleアカウントへのデバイスの登録などを行っておきます。最初に画面で日本語を選択して“開始”をクリックすれば日本語環境でAndroidを使えます。Googleアカウントとの関連付けですが、別に新規にGoogleアカウントを登録したり、既存のアカウントへのデバイスの登録がなくてもAndroidとしては使えますから、登録するかしないかはお好みで。ただし、KindleアプリをダウンロードするためにはPlayストアにログインしなければなりませんから、どっちみちGoogleアカウントは必要です。
f:id:Tomoaki_Shimoyama:20131024212410p:plainf:id:Tomoaki_Shimoyama:20131024212402p:plainf:id:Tomoaki_Shimoyama:20131024212342p:plainf:id:Tomoaki_Shimoyama:20131024212334p:plainf:id:Tomoaki_Shimoyama:20131024212328p:plainf:id:Tomoaki_Shimoyama:20131024212316p:plainf:id:Tomoaki_Shimoyama:20131024212307p:plainf:id:Tomoaki_Shimoyama:20131024212257p:plain

さて、デバイスの登録が終わるとAndroid端末として使えます。
f:id:Tomoaki_Shimoyama:20131024212540p:plain
f:id:Tomoaki_Shimoyama:20131024212554p:plain

早速、PlayストアからKindleアプリをインストールします。
f:id:Tomoaki_Shimoyama:20131024212856p:plain
f:id:Tomoaki_Shimoyama:20131024212849p:plain
f:id:Tomoaki_Shimoyama:20131024212840p:plain

アプリのインストールが終了したら、Kindleアプリを起動します。
f:id:Tomoaki_Shimoyama:20131024213011p:plain

初回の起動時にはAmazonアカウントへの“サインイン”が促されますので、“サインイン”をクリックして、普段、買い物に使っているメールアドレスとパスワードを入力します。
f:id:Tomoaki_Shimoyama:20131024213050p:plain

以上で、PCでKindle本を読む環境は整いました。
f:id:Tomoaki_Shimoyama:20131024213130p:plain

さて、仮想デバイスのシャットダウンですが、仮想デバイス画面も右下にある“電源”アイコンを“長押し”するとAndoridの電源オフ ダイアログが出てきますので、それで電源オフした後、Andoridが停止した時点で仮想デバイスの画面を閉じます。
f:id:Tomoaki_Shimoyama:20131024213335p:plain
f:id:Tomoaki_Shimoyama:20131024213323p:plain



では、次にPCのフルスクリーンで起動してみましょう。まず、Genymotionの設定画面で、仮想デバイスの“スパナ”アイコンをクリックして設定ウィンドウを表示します。設定画面の中程に“Run virtual device in full screen mode”という項目があるので、これをチェックして“OK"をクリックします。
f:id:Tomoaki_Shimoyama:20131024213502p:plain

次に“Play”をクリックして仮想デバイスを起動します。仮想マシンが動きだして暫くすると、PCの画面全体がAndroidの画面となります。なんかPC自身がAndroid端末になった感じで嬉しいですね。スマートフォンなどで使っている組込み用のCPUではなくPCのパワフルなCPUで動かいしてるので動作も早いです。
f:id:Tomoaki_Shimoyama:20131024213922p:plain
f:id:Tomoaki_Shimoyama:20131024213912p:plain
f:id:Tomoaki_Shimoyama:20131024213856p:plain

もう、すっかり立派なKindleデバイスです。
f:id:Tomoaki_Shimoyama:20131024214004p:plain

さて、このフルスクリーンモードではGenymotionのナビゲータ バーが使えません。では、どうやってAndroidの“電源ボタン”を押せば良いのでしょうか? 私も最初焦ったのですが、色々とキーボードをたたいている内に“End”キーが電源ボタンになっていることが分かりました。Endキーを長押しすると、Androidの電源ダイアログが出てきます。

ちなみに、“戻る”は“Esc”キーにマッピングされています。“ホーム”画面の表示は“Home”キーにマッピングされています。

それから、仮想デバイスが完全に“シャットダウン”しても、Genymotionのデスクトップは自動的に閉じてくれません。シャットダウンが完了してAndroidの画面が固まったら、“Alt-F4”を押してGenymotionの画面を閉じる必要があります。(仮想デバイスがシャットダウンしたらGenymotionの画面も自動的に閉じるように設定できれば良いのですが。1.3.0では、まだ、そこまで練られていないようです。)

Genymobileを使う上でのTIPs

Genymobileを使う上での気づいた事などをメモしておきます。

  • なぜGenymotionはサクサク動くのか

Android x86やAndroVMがトロイのにGenymotionはサクサク動きます。なぜでしょう。スマホやタブレットに使われている組込みCPUより性能が高いCPUを使っていのですから、サクサク動いて当たり前のような気がします。Genymotionを使ってみて気づいたのですが、秘密は表示デバイスの分離にあるようです。Android x86やAndroVMは“液晶デバイス”も仮想エンジンでシミュレーションしています。仮想マシンにとってのアプリケーション(この場合はJava VM)はx86マシン語で直接動きますから速いですが、デバイスのシミュレーションは物凄くオーバーヘッドが掛かっている筈です。Genymotionはアプリケーション本体(この場合はJava VM)はVirtualBoxをエンジンとして使っていますが、表示デバイスはWindowsアプリケーションとしてOpenGL 2.0を使って実際の物理デバイスに直接表示しています。そのために他のx86Androidよりもサクサク動くのかと推測できます。(GenymobileはOpenGL 2.0をサポートしていないPC環境では動きません。)

Genymobileから仮想デバイスを起動すると、VitrualBoxの仮想マシンの画面は単なる“キャラクタ端末”となっています。しかし、Genymotionを介さずに直接Virtualboxから仮想マシンを起動すると、Virtualboxのコンソールがデスクトップ画面として動きます。しかし、その場合はAndorid x86と同様、トロイ動作となってしまいます。

  • PCによっては使えない場合があります

上で紹介した例はノートPC(Acer V5-171)の環境で実行した例です。動かしてみると中々宜しいので、気を良くしてデスクトップPCにもインストールしてみました。ところがデスクトップPCでは動かないのです。Virtualbox仮想マシンとしては動作するのですが、Genymotionの仮想デバイスのデスクトップ画面が出ません。Genymobileのplay.exeというソフトが“ntdll.dll”を呼び出したところで、STATUS_HEAP_CORRUPTIONというイベントを発生して強制終了します。このデスクトップPCには特段、特殊なソフトもインストールしていないのでGenymotionのバグかと思われます。(これについてはGenymobile社にレポートしたのですが、「Windowsのグラフィックドライバの問題」という回答が来ました。う~ん、エラーの性質から違うと思うのですが....。)

この2台はIntelIvy Bridge世代のアーキテクチャでコアとなる構成はほとんど同じです。(CPUの性能差や若干のチップセットの違いはありますが、グラフィック エンジンは同じHD 4000ですし。)大きな違いといえば、ノートPCのOSはWindows 8 64bit(から8.1へアップデート)、デスクトップPCのOSはWindows 7 SP1 64bitです。世の中で広く使われているIntel HD 4000やWindows 7で動かないというのはちょっと困りものですが。(でも、私はノートPCさえ動けばよいので、それ以上の突込みは入れていません。)

  • VirtualBoxのスナップショットを活用しましょう

Genymotionの仮想デバイスの本体はVirtualBox仮想マシンですから、VirtualBoxのスナップショット機能が使えます。スナップショットを取っておけば、Androidの設定などで動作がおかしくなった場合に、直ぐに元の状態に戻せます。せっかく仮想マシン環境で使っているのですからスナップショットを活用しましょう。お勧めは、一通り初期設定が終わったとことでスナップショットを取って、その状態を保存しておくことです。

Genymotionの仮想デバイス パッケージをインストールした状態では、仮想マシンは1仮想CPU、512MBメモリの設定になっています。Kindleアプリを動作させるだけであれば、これでも十分ですが、リソース余裕があれば複数仮想CPUを割り当てたり、メインメモリを増やすこともできます。Core i7 CPU 8コアで動くAndroidも作れちゃいます。仮想CPU数を増やして仮想デバイスを起動し、Androidの端末ソフトから /proc/cpuinfo を見ると(Android OSから見て)ちゃんと複数のCPUが確認できます。

Genymotionの感想

良いソフトだと思います。今までのPCで動くAndroid環境とは違ってサクサク動くのが一番うれしいです。一部のPCで動作しなかったり、細かい設定がまだ出来ないところはありますが、今後の改良に期待したいです。

ただ、PCでAndroidを動かして何かうれしいのか?という基本的な疑問はあります。今回はPCでは動作しないアプリをPC上で動作させるために大活躍しましたが、今後、Amazon.comがPC用のKindleアプリを出して来たら必要なくなっちゃいます。GenymotionのメインのターゲットはAndroidアプリの開発者かと思います。Androidアプリの開発環境をサクサク動かしてより良い開発環境を提供することかと思います。私もAndroidアプリを作ったことがあります(マーケットにアップしてあります!)が、Googleが提供するQemuベースの環境は遅くて、ストレスが溜まります。それがサクサク動く環境でアプリを開発できるとなると、大変うれしいです。

今後の発展に期待します。