■後藤弘茂のWeekly海外ニュース■
Googleの「どこでもChrome」が完成しつつある。先週、米サンフランシスコで開催されたGoogleの技術カンファレンス「Google I/O」で、GoogleはiPhone/iPad向けのiOS版Chrome Webブラウザを発表した。また、先に発表していたAndroid版のChromeブラウザは、Google I/Oで発表されたGoogleのタブレット「Nexus 7」に標準搭載されることも明らかにされた。これで、Chromeブラウザは、Windows、Mac OS、Linux、Chrome OS、Android、iOSと、幅広いOSをサポートすることになる。
Chromeの広がりで最終的に実現されるのは、ハードウェアを横断するアプリケーションプラットフォームの構築だ。当然のことながら、WebアプリはWebブラウザ上で走るために、ハードウェアやOSに依存しない。そして、1種類のWebブラウザによって、均質なWebブラウジングの機能と性能が提供されるなら、よりリッチなWebアプリを作りやすくなる。エンドユーザーにとっては、どのハードウェア上でも、同じWeb技術と同じWebアプリが、同じ便利さで使えるようになる。デベロッパには、どのハードウェア上でも、同じWebアプリが走ることを期待できるようになる。また、エンドユーザーにとっては、Chromeがシームレスにデバイス間をつなげて、例えば、同じタブやパスワードを横断的に共有できるようになることも魅力だ。
Chromeが横に展開して行くことで、原理的にはプラットフォームの均質化の利点が生まれる。Googleは、HTML5プラスCSS3などのChromeのサポートする規格に沿ったWebアプリをChromeアプリと呼んでいる。最終的なゴールは、Chromeアプリが、どのハードの上でもChromeによって走ることができるようにすることだろう。
もっとも、Googleが目指すのはChrome上で走るクライアント側のアプリの世界の構築ではない。Googleは、全てのアプリがバックグラウンドのサーバー側と密接に連携するクラウドアプリになる世界を目指している。Googleのサーバー側のエンジン群(Google App Engine)などを利用したアプリケーションの世界を育てることにあるはずだ。Chromeは、その入り口として最適なブラウザとしての役割も担っている。
Chromeのアクティブユーザー数は3億1,000万に | Chromeアプリの進化 |
●進化するWeb技術がWebアプリをリッチにして行く
ネットワーク中心のアプリケーションのビジョンは、別に目新しいものではなく、これまでも何度ともなく唱えられてきた。Netscape Communicationsの時からWebブラウザをアプリケーションプラットフォームにと言われてきた。しかし、そうした試みは、これまではうまく行かなかった。今回状況が違うのは、業界全体の成熟度が上がって来たことで、構想が現実味を帯びている。
Web関連の技術の成熟は、GoogleのSundar Pichai(スンダー・ピチャイ)氏(Senior Vice President, Chrome & Apps, Google)が、Google I/Oのキーノートスピーチで示した下のチャートに集約されている。これは、Web技術とブラウザの進化のチャートで、「The Evolution of the Web」にインタラクティブ版が掲載されている。
Web技術とWebブラウザの進化のチャート | GoogleのSundar Pichai(スンダー・ピチャイ)氏(Senior Vice President, Chrome & Apps, Google) |
この図で印象的なことは、Webの個々の技術を示すヒモが右へ向かってどんどん増えて稠密になっていること。つまり、技術革新のペースが速まっている。図の左上の端にHTML1とMosaicブラウザがあり、右下にHTML5やさまざまな拡張APIや仕様群(CSS3、WebGL、WebRTCなど)とChromeブラウザの急発展が示されている。
このチャートはソースのクレジットを見ると、Google Chromeチームが作成に加わっていることがわかるため、Chromeにとって有利な図であるという見方もできるが、Web技術の進化に加速がついていることは確かだ。技術の成熟によって、Webブラウザ上でリッチなアプリケーションを作ることが可能になった。さらに、技術的な成熟度だけでなく、ソフトウェアエコシステムや通信インフラストラクチャや携帯デバイスのパフォーマンスなど、あらゆる面で成熟度が上がったために、Webブラウザがアプリケーションプラットフォームとして成り立ちつつある。
Webアプリが主流へと変化して行くと、Webブラウザの下のOS層の意味が薄れて行く。軽量なOSでコンピュータを作ることも可能になる。かつて、Oracleなどが主導したNetwork Computerはこうした構想のコンピュータであり、Googleも同じような構想でChrome OSをリリースした。昨年(2011年)のGoogle I/Oでは、GoogleはChrome OS戦略を具体化するChromebookを発表した。
Chromebookは常に新しいコンピュータ | Chromebookは全米電器店チェーンのBest Buyで販売へ |
そして、今年(2012年)のGoogle I/Oでは、iOS版のChromeを発表し、Android版のChromeがAndroid 4.1(Jelly Bean)のNexus 7では、標準搭載されることも明らかにした。モバイルデバイスへとChromeの浸透が広がり、ますますChromeのクロスプラットフォーム性が高まりつつある。
●AndroidのねじれがChromeで解消され始めるAndroid版のChromeについて言えば、Googleプラットフォームの“ねじれ”がようやく是正された感が強い。これまで、AndroidのWebブラウザはChromeではなく、特に公式の名前のつけられていないAndroid独自のブラウザだった。GoogleのOSであるにも関わらず、Chromeが提供されるまで時間がかかった。
実際にはAndroidのブラウザもChromeと同様にHTMLレンダリングエンジンはWebKitで、JavaScriptエンジンも途中から「V8」になった。しかし、ハードウェアをまたいだChromeの連携の輪には入っておらず、機能的な違いも少なくなかった。
これは、プログラミングモデル上での分断にも繋がっている。従来はGoogleの中で、クライアント側のプログラミングモデルは、2つに分裂していた。1つは、Chromeをベースとする、いわゆるWebプログラミングのスタイル。つまり、HTML5プラスCSS、JavaScriptと、さらにさまざまなHTML/JavaScriptの拡張をベースとしたプログラミングのスタイル。もう1つは、Androidでの「Dalvik」バーチャルマシン上でのプログラミングモデル。
実際には、このほかにもAndroidの「NDK(Native Development Kit)」やChromeの「Native Client」などネイティブコードのモデルもあり複雑だが、大きく分けるとChromeのWebアプリとAndroidのDalvikアプリの2系統に別れていた。そこへ、Android版Chromeの登場で、AndroidにもChromeのレベルの、共通したWebプログラミングの道が開け始めたことになる。
もっとも、現実的には、Android版Chromeは、PC版のChromeと完全に同等ではない(例えばWebGLは現状ではサポートされていない)ため、シームレスというわけにはいかない。いわゆるChromeアプリは、現状では、Android版Chromeではサポートされていない。実際には、同じChromeでも、Android版との間には境界があり、冒頭に述べたような理想上のChromeによる均質な環境は実現されていない。また、Android版Chromeは、Android 4.0(Ice Cream Sandwich)以降のサポートで、それ以前のAndroidは足切りされている。その意味でも、まだAndroidでのChromeの輪は完成していない。それは、この先の話となるだろう。
●ChromeであってChromeではないiOS版のChrome先週のGoogle I/OでのChrome関連の発表の目玉はiOS版Chromeだった。しかし、iOS版Chromeは、均質なChromeの体験からは、さらに離れる。iOS版のChromeは、JavaScriptの実行スピードも遅く、ある意味、Chromeであって、ChromeではないWebブラウザだ。その理由についてGoogleは、デベロッパ向けサイトにGoogle I/O期間中に公開したページの中で説明している。
それによると、Chromeは、必ずAppleのWeb表示用クラスライブラリである「UIWebView」を使わなければならないという。そのため、iOS上のWebブラウザのレンダリングエンジンとJavaScriptエンジンは、UIWebViewを通して提供されるiOSのエンジンを使わなければならない。レンダリングエンジンがWebKitベースである点は、UIWebViewもChromeと同じだ。しかし、GoogleはChrome独自の高速なJIT(Just-In-Time)タイプコンパイラのJavaScriptエンジンである「V8エンジン」を使うことはできない。AppleのWebブラウザ「Safari」は、高速なNitro JavaScriptエンジンを使っているが、それをChromeが使うこともできないとGoogleは説明している。そのため、どうしてもiOS版Chromeでは、JavaScriptの実行パフォーマンスなどで見劣りすることになる。
Googleのサイトでは「Chrome must use Apple's UIWebView」と表現していた。“must”と書いていることから、Appleのアプリ審査ガイドラインの制約であることが示唆されている。Googleにとっては、手出しできない部分だ。そのため、現状では、iOS版Chromeは、Googleが望んでいるようなChromeにはなりきれていない。
GoogleはWebアプリの発展のために、JavaScriptのスピードアップを第1に心がけてきた。ネイティブコードとJavaScriptの実行性能の差をできる限り埋めて行かなければ、Webアプリのより一層の浸透を実現できないからだ。しかし、iOS版のChromeではそこに壁がある。
このように、Chromeによるコンピューティングデバイスのカバーは広がりつつあるものの、モバイル版については、まだChromeの輪に完全には入っていない。とはいえ、エンドユーザーがGoogle IDに結びつけられたサービスで生活するなら、Chromeによる連携は非常に便利だ。今の段階でスタートしているのは、そうしたレベルのモバイルChrome体験だ。
しかし、ハードウェアをまたいで同じプログラミングモデルを提供することがChromeの目的であるなら、将来的にはChromeとモバイル版Chromeは融合して行くだろう。モバイルデバイス側のハードウェアの進化とともに、同等の機能がモバイル版Chromeでもサポートされ、同じChromeアプリが走ることが保証されるようになり、Chromeの輪は完成される。
現状では、モバイルデバイスは平均で2年でプロセッサやメモリの性能が2倍かそれ以上に伸びている。急激なハードウェアの進化は、ソフトウェア側の進化も促している。