笠原一輝のユビキタス情報局

Bay Trailが実現する、WindowsとAndroidが共存するタブレット

〜x86版Androidで互換性の問題が非常に少ない理由

 Intelは9月中旬に開催したIDFにおいて、開発コードネームBay Trail-T(ベイトレイルティー)で知られる「Atom Z3000」シリーズを発表した。前回の記事では、そのBay Trail-Tのパフォーマンスに関して、ベンチマークを利用してお伝えした。詳しくはそちらの記事を参照して頂きたいが、その結果から見えてきたことは、Bay Trailが従来のAtomにユーザーが持っていたイメージを大きく覆す製品であるということだ。特に、前世代となる「Atom Z2760」(Clover Trail)世代の弱点だったGPU性能が大きく改善されたことは、ユーザーにとって朗報と言えるだろう。

 Bay Trailの進化点はそうしたハードウェア面だけではない。Clover Trail世代ではWindowsのみとなっていたOSのサポートに、新しくAndroidが追加された。これにより、OEMメーカーは同じハードウェアを利用して、Windows版とAndroid版の製品を若干の手直しだけでリリース可能になるほか、x86プロセッサであるメリットを活かして、Windowsデスクトップ、Windowsストア、Androidの3種類のアプリケーションを走らせる製品が可能になる。

x86版のWindowsとAndroidに対応、64bitは2014年第1四半期に対応予定

 Atom Z3000シリーズのソフトウェア面での最大の特徴は、x86版のWindowsとAndroidという2つのOSが同じプラットフォームの上でサポートされていることだ。もちろん、ARMアーキテクチャのSoCは、ARM版のAndroidとWindows RTをすでにサポートしており、実際Tegraシリーズを搭載したタブレットを製造しているメーカーでは、すでに同じ基板を流用しながらWindows RTとAndroidのタブレットを製造することが可能になっている。

 x86で同じことができるようになった最大のメリットは、言うまでもなくx86版のWindowsが利用できることだ。Windows 8とWindows RTの最大の違いは、従来のWindowsアプリケーション(以下Windowsデスクトップアプリケーション)をそのまま実行できるか否かだ。x86なら、Microsoft Officeの以前のバージョン(Windows RTにはOffice 2013のARM版が標準搭載)や、AdobeのPhotoshopなど、代表的なWindowsデスクトップアプリケーションがそのまま実行できる。もちろん、従来のWindowsアプリケーションはタッチ操作には最適化されていないため、タブレットとして利用する場合には若干の制限が伴うのは事実。しかし、キーボードやマウスを接続すれば、クラムシェル型のノートPCと同様に扱えるのは、特にクリエイティブなユーザーには大きなメリットと言える。

 Atom Z3000シリーズでサポートされるWindowsは、基本的にWinodws 8(8.1を含む)となる。従来のAtom Z2760では、32bit版のWindows 8のみがサポートされていたが、Atom Z3000シリーズでは64bit版のWindows 8もサポートされることになる。

 ただし、発表の時点では64bit版のWindowsのサポートはまだ開始されていない。というのも、現時点ではInstant Go(かつてConnected Standbyの名称で呼ばれていた、スリープ時にも通信し続けるスタンバイモード)に対応した64bit版のデバイスドライバの開発が間に合っていないからだ。Instant GoをサポートするにはGPUやWi-Fi、Bluetoothなどさまざまなデバイスドライバが、Instant Goに対応している必要があり、その開発には膨大な時間がかかる。このため、Intelは、まずは32bit版の開発を優先させ、64bit版に関しては2014年の第1四半期以降でのサポートとしたのだ。

 ただし、ハードウェアプラットフォームとしては、Intel 64(いわゆるx64)に対応しているので、ドライバの準備が整えばOEMメーカーはOSを64bit版に切り替えて出荷可能になる。なお、Instant Goに対応するには、さまざまなソフトウェア上での調整が必要になるので、32bit版で出荷された製品を64bit版にユーザーレベルで置き換えるというのは事実上不可能で、そうしたアップグレードはどのOEMメーカーも提供しない可能性が高いので、その点は注意したい。ただ、現状多くのAtom Z3000シリーズを搭載した製品はメモリが2GBの製品が多く、コンシューマユーザーレベルでは実質的に64bit版を採用するメリットはないに等しく、特に理由がなければ64bit版を待つ必要は無いだろう。

IntelのリファレンスプラットフォームのBay Trail搭載タブレット(左)。2,560×1,440ドットと超高解像度になっているのが特徴
IDFのIntelの記者説明会で公開されたLenovoの8型液晶搭載Windowsタブレット
IDFのIntelの記者説明会で公開されたDellの8型液晶搭載Windowsタブレット
IDFと同じタイミングで発表されたASUSのTransformer Book T100(別記事参照)

ARM版とのタイムラグがほとんど無くなってきたx86版のAndroid

IDFで公開されたAcerの7型液晶搭載のAndroidタブレット。価格は未公表だったが、Acerの担当者はかなり低価格で提供することを示唆していた。Intelが199ドルからという価格帯を提示しているところを見ると、この製品が199ドルで提供されるという可能性は高い

 そして、Atom Z3000シリーズでサポートされている2つ目のOSがAndroidだ。前世代となるAtom Z2760(Clover Trail)世代では、Windows 8のみがサポートされており、Androidはサポートされていなかった。Androidは、その後に登場したAtom Z2500(Clover Trail+)でサポートされており、OEMメーカーはWindowsタブレットを製造したい場合にはAtom Z2760を、Androidタブレットを製造したい場合にはAtom Z2500と、それぞれ別の基板を用意する必要があった。しかし、Atom Z3000シリーズでは、Windows 8とAndroidの両方がサポートされているので、若干の手直し(ファームウェアの調整など)は必要になるが、同じ基板でWindows 8とAndroidを搭載したしたタブレットを製造できる。

 Androidは、一般的なスマートフォンやタブレットに採用されているARM版は利用できず、x86版を利用する必要がある。よく知られているようにAndroidの開発は、オープンソースと呼ばれる、インターネット上の開発者コミュニティで協力して行なう方式がとられており、その開発の第1のターゲットとなっているISA(命令セットアーキテクチャ)がARMなのだ。このため、Androidの新しいバージョンが出ると、まずARM版が作られ、その後x86、MIPS、PowerPCなどの他のISAへの移植が行なわれていく。現在Androidの市場において最大のシェアを誇るISAがARMであることもあり、以前はほかのISAへの移植はかなり時間が経ってから、ということが多かった。

 だが、この状況は2011年ぐらいから劇的に改善された。IntelがGoogleとの協業をしていくことを発表し、その開発に力を入れ始めたこともあって、現在は最新のARM版が出てから、早ければ1カ月程度で、遅くとも数カ月でx86版が登場するようになっているのだ(他のISAの最新バージョンはx86版よりさらに遅いことが通例だ)。

 こうした状況に変化した背景には、IntelがGoogleと協力して取り組むようになってきていることに加え、Intel自身も社内にAndroidを開発する専任のチームを置き、x86版の開発を促しているからだ。Intelのソフトウェア部門を統括するIntel 副社長兼ソフトウェアサービス事業本部長 ダグ・フィッシャー氏によれば「IntelのAndroidを開発しているエンジニアは、Googleのそれを上回る規模で、世界最大だ」とのことで、Intel自身が開発リソースをつぎ込んでいる状況もあり、ARMに次いで2番目という地位を獲得したというのが現状だ。

DalvikとNDKの2種類があるAndroidアプリケーション、ISAが違うとNDKで問題

 こうしたx86版のAndroidを推進するIntelだが、ARM向けのWindows RTが、x86 ISA向けに作られたアプリケーションソフトウェア(Windowsデスクトップアプリケーションと一部のWindowsストアアプリケーション)が動かず、ユーザーにイマイチ浸透していないのと同じ問題が発生する可能性があると当初は考えられていた。つまり、ARM向けに開発されたAndroidアプリケーションが、x86版Androidで動作しないという可能性だ。

 だが、蓋を開けてみると、ユーザーからは「このアプリケーションが動かない」などのクレームはさほど多くなかった。というより、多くのユーザーはそうした問題があることすら気がついていないだろう。つまり、実質的にはユーザーが気がつかない程度でしか互換性の問題が発生していないということだ(ゼロとは言わない、それがなぜか、具体例は後述する)。

 互換性の問題を理解するためには、Androidのアプリケーションがどのような構造になっているのかを理解していく必要があるだろう。何度かこの連載でも触れているが、Androidのアプリケーションには、大きくいうと「Dalvik」(ダルビック)と「NDK」という2つの仕組みに分類できる。Android標準の仕組みが、Dalvikを利用するタイプのアプリケーションで、Dalvik VMという仮想マシン上でアプリケーションが動くようになっている(Javaが動作する仕組みに近いと考えればわかりやすいだろう)。この仮想マシンは、OSが利用しているISAから独立して動くため、ARM版Androidだろうが、x86版Androidだろうが、同じアプリケーションが動作するようになっている。従って、このDalvikの仕組みを利用して書かれているAndroidアプリケーションに関しては、互換性の問題は発生しない。

 ただし、このDalvikは仮想マシン上で動く仕組みなので、ハードウェアを直接叩くようなアプリケーションは作れないし、どうしても処理のオーバーヘッドが発生してしまうため、性能が要求されるようなアプリケーションにはあまり向いていない。そこで、Androidで用意されているのがNDK(Native Development Kit)と呼ばれる開発キットだ。これを利用してアプリケーションを作ると、ハードウェアに直接アクセスするような処理や、Dalvikのようなオーバーヘッドなくアプリケーションを作ることができる。ただし、このNDKを利用した場合には、Windowsのバイナリと同じようにARM版、x86版とそれぞれISA別に用意しておく必要があるのだ。

 つまり、ISAが異なるAndroid間で、アプリケーションを共有するには、このNDKを利用して開発したソフトウェアへの対応が必須ということになる。これまでAndroidはほとんどがARMのみであったため、開発者もARM版さえ用意すればカバーできると考えがちで、結構多くのアプリケーションでARM版しか用意されていないということが多く、実は今でも少なくないのだ。

 それなのに、ユーザーレベルではx86版のAndroidでアレが動かない、コレが動かないというクレームはほとんどない。では、なぜ互換性の問題はあまり発生していないだろうか?

x86版Androidに標準で搭載されているHoudini Binary Translator

 その秘密は、x86版のAndroidに標準で搭載され、Intelの内部コードネームで「Houdini Binary Translator」と呼ばれるバイナリ変換ソフトウェアが、NDKで作られたARMバイナリをx86に変換しながら実行していく。このため、仮にARM版のバイナリしか持っていないアプリケーションが実行されたとしても、x86版のAndroidで実行できるのだ。Intelによれば、このバイナリ変換を利用することで、ARM版NDKで書かれたソフトウェアの90%をx86版Androidで実行できるという。

 実際、4月に日本でも販売が開始されたAtom Z2420(Medfieldコア)搭載のASUS「Fonepad」で動作しているアプリケーションをを見てみると、面白いことがわかる。よく知られているように、Androidのアプリケーションはapkという配布形式になっており、開発者がそれを取り出すと中身を確認することが容易になっている(ここでは本論とは関係ないのでどのようにするかは触れない)。apkファイルは実体としてはzip形式で圧縮しているだけなので、Windows PC上で拡張子を.zipに変更すると、中身を確認できる。中を見ていくと、「lib」というフォルダがあり、ここに実行に必要なファイルが格納されているのだが、ARMなら「armeabi」というサブフォルダがあり、x86なら「x86」というサブフォルダが表示される。

 だが、Fonepadで利用されているアプリケーションを見ていくと、x86がなくarmeabiないしは「armeabi-v7」のみというアプリケーションがいくつもあるのだ。つまり、そうしたアプリケーションは、Houdini Binary Translatorにより実行されているということになる。筆者が個人的に利用しているFonepadにインストールされているアプリケーションのいくつかを調べてみたところ、以下のようになっていた。

FonepadインストールアプリのlibフォルダのISA対応
  ARM x86
Amazon Kindle 4.2.0.34 -
ASUSスタジオ 3.0.20130411 -
Chrome 29.0.1547.72 -
Earth 7.1.2.2011 -
Facebook 3.7 -
Google Play ムービー 2.6.9 -
Google+ 4.1.2.51968121 -
Facebook Messenger 2.7.1 -
AVG AntiVirus Pro 3.3
Twitter 4.1.7 -

 この表を見て分かる通り、x86に最初から対応しているのは、主にGoogle純正のアプリケーションで、それ以外で対応していたのは、AVGのアンチウイルスソフトぐらいだった。Facebookも、Twitterも、KindleもいずれもARMのみ対応になっている。おそらく普通にFonepadを使っているユーザーは、この事に気付かないだろう。つまり、それだけバイナリ変換の速度が必要かつ十分で、ユーザーが不満を持っていないということだ。逆に言えば、仮にそれらのアプリケーションをx86ネイティブで書いてもらえば、もっと高速に実行できるということでもある。

 IntelはこのHoudini Binary Translatorについて、あまり大々的には説明していない。その理由としては、OSの内部に標準で組み込まれており、ユーザーはそれを意識することなく利用できているので説明する必要が無いからだ。ただ、90%が変換可能ということは、10%は変換できないということになるので、残り10%のアプリケーションを作っている開発者に向けては、x86版の開発を促していく必要がある。Intelは、NDKを利用してAndroidアプリケーションを開発しているユーザーにx86版のバイナリを含めることの働きかけを強めており、各種の開発ツールなどを無償ないしは有償で配布している。

 その中には、C/C++コンパイラ、デバッグツール、ソフトウェア最適化ツール、Windows上の仮想環境(Intel HAXM)などを含むIntel System Studio for Android(有償)、ARMとx86両方に対応したAndroidアプリケーションの開発を容易にするBeacon Mountain(無償)などが用意されている。Intelとしては、Androidでは追いかける側となるので、開発環境を充実させることで、対応を促す狙いがあるものと考えられる。

 実際、筆者が利用しているFonepadでも、発売当初は株式会社イーブック イニシアティブ ジャパンが運営する電子書籍ストア「eBookJapan」のAndroidアプリケーションは動作しなかった。しかし、その後x86版がリリースされ、現在は問題なく利用できている。こうした対応が現在進んでおり、ユーザーがx86版Androidデバイスを購入したとしても、互換性の問題が発生する可能性は小さくなっている。

x86版Androidの仕組み。標準でNDKアプリケーションのバイナリトランスレーションが入っており、90%以上のARM版NDKアプリケーションがそのまま利用できる
Fonepadに導入されているアプリケーションのapkの中身をチェックしてみると、ネイティブにはARMにしか対応しているアプリケーションが動いていることがわかる。このアプリはASUSが標準状態でFonepadにインストールしているASUSスタジオ。

デュアルOSソリューションで3種類のアプリケーションが1つのハードウェアで

 このように、Intelはx86版Android版の普及に向けてかなり力を入れており、少なくともタブレットに関してはWindowsと同列に扱おうとしている。つまり、OEMメーカーが、最終的な製品でWindowsを採用するのか、Androidを採用するのかはOEMメーカーに任せ、Intelとしては地道にソリューションを提供するというプラットフォームベンダーとして王道を歩むということだ。

 OEMメーカーによっては、デュアルOSといった第3の道を検討しているベンダーもある。仮にWindowsとAndroidが共存できれば、Windowsデスクトップアプリケーション、Windowsストアアプリケーション、Androidアプリケーションの3種類が1つのハードウェア上で利用できることになる。こうしたアプローチは過去にはデュアルOSや仮想OSなどのアプローチで、実装が試みられてきたため、これまでもなかったわけではない。例えば、仮想OSであれば、BlueStacksが有名で、WindowsやMac OS上にインストールすると、AndroidアプリケーションをWindowsやMac OS上で利用可能だ。

 IDFの展示会場でInsyde Softwareが展示していたのは、新しいデュアルOSの手法だ。同社が作成したUEFI BIOSを利用することで、2つのOSを1つのハードウェア上に共存できる。具体的には一方のOSが起動している時には、もう1つのOSはACPIのS3(メモリサスペンド)状態で待機状態にさせられる仕組みになっている。Windowsは標準でACPIに対応しているが、AndroidはACPIに対応していないため、同社が独自にACPI S3に対応させている。この状態で、Googleの認証も取得しており、Google Playマーケットなども利用できるという。会場のデモでは、LenovoとAcerのノートPCにインストールして、Windows 8とAndroidを切り替える様子を見せていた。

 このように、Bay Trail世代で、WindowsとAndroidが同時にサポートされたことで、x86プロセッサを採用したデバイスは、ハードウェアという意味での2-in-1だけでなく、ソフトウェア面でも2-in-1が実現していくことになる。こうした新しい魅力を利用して、PCベンダーがどのような製品を用意して来るのか、それが今から楽しみだ。

Insyde SoftwareのデュアルOSソリューションは、OSのリブートを必要としないタイプのデュアルOS。反対側のOSはACPIのS3サスペンド状態になり待機状態に入る。Androidには独自にS3に対応させている

(笠原 一輝)