■後藤弘茂のWeekly海外ニュース■
プログラミングの世界で、ここ数年、最大の関心事となっているのは「Webプログラミングで行くべきか、ネイティブプログラミングで行くべきか」という選択の問題だ。これが、ハムレットの命題のように、プログラマーにとって究極の選択となっている。Webプログラミングならアプリをポータブルにできるが、ネイティブコードでないとパフォーマンスを出すことができない。
Webアプリのポータビリティ |
Webかネイティブかという命題の根本的な背景には、HTML5、CSS(Cascading Style Sheets)3、JavaScriptなどをベースとしたWeb技術の進歩で、高度なアプリを作ることが可能になったという技術的な事情がある。ボトルネックだったJavaScriptのパフォーマンスも(十分ではないという声も多いが)ある程度上がった。何より、Webブラウザが走るデバイスなら、ある程度共通してアプリが走るという、ポータビリティが大きな強味だ。ポータビリティの魅力は、AndroidのようなWindowsと互換性のないOSベースのデバイスが成長するにつれて、ますます強まって行くだろう(現状ではモバイルデバイス側が、まだPCのWeb技術の全ては備えていないが)。
そして、プログラミングの潮流で見ると、ネイティブからWebプログラミングへと、どんどん流れているように見える。日本では、ややフェイズが遅れているが、米国などでは、Webプログラミングへの傾斜が急速に進んできた。象徴的なことは、Adobeがモバイル版のFlash Playerを終了させ、HTML5に注力すると昨年(2011年)11月に発表したことだ。
こうした状況で、ネイティブコードで書いてきたソフトウェア開発者が、Webプログラミングへと移行するべきかどうか悩む、という構図が発生している。そこには、ネイティブアプリの多くが、やがてWebアプリに置き換えられてしまうのでは、という恐れが潜んでいる。Webプログラミングの強力な推進者であるGoogleは、この点について、どう考えているのだろう。
GoogleのSundar Pichai(スンダー・ピチャイ)氏(Senior Vice President, Chrome & Apps, Google) |
GoogleでChromeを統括するSundar Pichai(スンダー・ピチャイ)氏(Senior Vice President, Chrome & Apps, Google)は次のように答える。
「私の見方は、Webアプリがネイティブアプリを置き換えるといったものではない。アプリの将来は非常に明瞭で、クラウドアプリに向かう。全てのアプリは、クラウドアプリになるだろう。こちら側のアプリがWebかネイティブかではなく、クラウド側にこそ焦点がある。
そして、各デバイスにまたがる、クラウドアプリのクライアント側のソフトウェアをどう書くかについて、プログラマーには選択肢がある。開発者によっては、クラウドアプリケーションを書くのに、Web技術とネイティブ技術を組み合わせるだろう。
例えば、ある開発者は、クラウドアプリをWebアプリとして書いて、全てのデバイスで同じように走るようにするだろう。ブラウザが走るデバイスからなら、クラウドアプリに同じようにアクセスできる。一方で、ある開発者は、クラウドアプリをブラウザ上だけなく、ネイティブアプリでも書くだろう。スマートフォンやタブレットで走らせる版だけネイティブアプリにするといった選択だ。
Gmailがいい例だ。GmailはAndroidではネイティブアプリだが、ブラウザ上でWebアプリとしても走る。しかし、ユーザーにとっては、どちらも同じGmailだ。我々が推進しているのは、優れたクラウドアプリを作ることにある。その点を忘れてはいけない。Webアプリ対ネイティブアプリ的な対立の見方は、間違えたアプローチだと思う。全てがクラウドへ向かう方向は非常に明瞭で、この変化は、今後数年で顕著になって行くだろう」。
Googleの見解は、クリアだ。重要な部分は、バックグラウンドのサーバー側のエンジン(GoogleならApp Engineなど)にあり、クライアント側にはない。そして、クライアント側のプログラミングでは、Googleは選択肢を提供する。
●プログラミングモデルの選択肢を広げる
実際、Googleのプログラミングモデルは、Webプログラミングに統一されているわけではなく、AndroidではDalvik VMモデルが標準となっている。さらに、ネイティブプログラミングモデルも、Androidで「NDK(Native Development Kit)」、Chromeで「Native Client」が提供されている。選択肢がある。
「開発者は常に選択肢を求める。Androidでも、DalvikとNDK(Native Development Kit)がある。我々は、プログラミングモデルでは、より多くの選択肢を提供することが重要だと考えている。なぜなら、開発者が1つのプログラミングモデルしか必要としないとは思えないからだ。「ワンサイズフィッツオール(1種類で全てをカバーする:one size fits all)」はあり得ない。1種類のクルマで全ての人のニーズに応えることができないのと同様に、1種類のプログラミングモデルでは応えることができない」(Pichai氏)。
プログラマーに選択肢を与えるというGoogleのコンセプトは明快だが、それでも、アプリ開発者にとって、Googleのプログラミングモデルの分断はやっかいだ。特に、ChromeでのWebプログラミングモデルと、AndroidのDalvikモデルの違いは大きい。クラウドサービスはいいが、現状のクライアント側で走るアプリの場合は全く異なるモデルとなる。
「確かに、アプリケーションモデルは2種類となっている。例えば、AndroidのGoogle Playの中で、クラウドのPlay Music(音楽サービス)、Play Movies(映像配信サービス)そしてPlay Books(電子書籍)は、いずれもChromeでも提供されている。Chrome上でのバージョンで、Androidと同じように使うことができる。しかし、AndroidアプリケーションであるPlay Appsは異なっている。Chromeには、Chromeアプリがある。
現状では、2つの異なるアプリケーションモデルになっている。しかし、当社はユーザーセントリックなので、2つのモデルをそれぞれ融合させて行くことは、理にかなっている。今は、ChromeをAndroidにようやく提供した段階だ。全ては今後の話だろう」(Pichai氏)。
これまでは、Webプログラミングモデルを完全な形で持って来れるだけの機能をモバイルデバイス側が備えていなかった。今は、その問題が解消されつつあり、実際にChromeもAndroidとiOSに移植された。AndroidへのChromeアプリの乗り入れが、この先に可能になれば、アプリケーションモデルの融合化が実現することになる。
●モバイルがクラウドアーキテクチャを加速するもっとも、iOS上でのChromeブラウザについては、Appleの設けた制約のために簡単には行かない。Pichai氏も困難があることを認める。
「iOS版Chromeは非常に高速なブラウザだが、確かに制約がある。我々は、Chromeの機能を実現するために、iOSのWeb表示用クラスライブラリである「UIWebView」に頼らなければならない。我々は、Chromeの全てをiOSにもたらすことはできない。そこには制約があるのは確かだ。
しかし、我々は、その制約の中で最上のアプリケーションを作った。ユーザーからのフィードバックもいい。これは、まだ始まりに過ぎない。それ以上のことは、AppleとのNDAにあるため、コメントはできない」。
iOS版Chromeでは、例えば、GoogleはChrome独自の高速なJIT(Just-In-Time)タイプコンパイラのJavaScriptエンジンである「V8エンジン」を使うことはできない。しかし、そうした制約の中でできる限りのことはしている。そして、iOS版Chromeは、まだ始まったばかりで、何らかの展開がありうることをPichai氏は示唆する。
Googleは、クラウドへの流れは、まだ始まったばかりで、本格化するのは今後だと見ている。そして、クラウドへと牽引するのはモバイルデバイスの興隆だと見ている。特に、これからは企業システムへとクラウドが浸透するフェイズにあると考えている。
家庭とビジネスにおける利用 | Webブラウザの遷移 |
「ハイレベルなビューで言うと、企業はクラウドに関心を持っているが、まだ非常に初期の段階にある。初歩的な使い方しかしていないのが実情だ。しかし、変化は水面下で進んでいる。なぜなら、モバイルが興隆して来ているからだ。
私は、モバイルがクラウドへの切り替えを加速すると考えている。“プレモバイル時代”には、PCアーキテクチャが支配的で、アプリケーションはWin32 APIに縛られていた。しかし、モバイル時代には、人々はAndroidスマートフォンやタブレット、iPhoneやiPadなどWindows以外のデバイスを使っている。そして、クラウドを活用するスタイルへと切り替わりつつある。真にクラウドアーキテクチャに移行してしまうと、重厚長大なWindowsマシンは、企業にとって、単なる選択肢の1つに過ぎなくなってしまうだろう。
クラウド革命は、進行しており、モバイルによって加速されている。そして、Googleはその流れの中で、重要な位置を占めている。なぜなら、初めからクラウドを前提としてアプリを開発しているからだ。レガシーの(クラウドでない)ソフトウェアアーキテクチャを、クラウドアーキテクチャへと組み替えることは、かなり難しいだろう。その点で、我々は、非常に有利な立場に立っている」(Pichai氏)。