Experts.jp日本に、もっとエキスパートを。ブラウザエバンジェリスト達とWebの未来を語ろう」を聴講したレポートです。前提として、インターネットを利用する際に私たちがクレジットカードを利用するようになってから、それなりに時間が経過しましたね。現在転換期が訪れているといっていいのではないかと思います。これまでのように、フォームにクレジットカードの情報を生で入れて送信するというので、本当にいいのだろうか。他のサードパーティ製アプリに遷移して戻ってくるなどのUIを通じて、決済に必要な情報を、スムーズにユーザーに対して問い合わせることができます。10上ではすでに利用可能です。はい、時期はまだ言えないのですが、サポートするのは確定しています。Chromeは現在Android版のみ対応していて、デスクトップ版は開発中です。APIに対応していません。APIは使えないのですが、実はこれを無理やり使えるようにしてしまおうという計画がありまして。実現するかというと、ChromeからWebViewに対して機能を注入してしまうんですね。APIを使えるようにしてしまう。Cordovaとかでは以前から普通に行われていたことです。これまではiOSのWebViewに対してJavaScriptをインジェクトして、新しいAPIを使えるようにするということはしてきませんでした。iOS版のChromeにとっては大きな方針転換でもあります。このように、各種のプラットフォームでサポートがすでに始まっていますので、今年中か、もしくは来年の初めくらいには、一般的に使えるAPIになってそうですね。個人的には、(Mozillaの前身である)Netscapeが切り開いた商用インターネットの世界が、ようやくここまで来たか...と感慨深いものがあります。次はWebVRについてお聞きしていきましょう。Updateから、1.1のAPIをサポートしはじめました。Babylon.jsやA-Frameといったライブラリを使うと、WebVRを簡単に扱うことができると。A-Frameは、Web上で簡単にVRを扱えるようにすることを目指すライブラリです。HTMLタグを一つぽんと置くだけで360度画像を表示できるようにするとか。Unityだとアセットストアがあって、アセットを購入したりすることができるのですが、それと同じようなエコシステムがコミュニティ主導で進められているのも特徴です。非常に簡単に3Dコンテンツを作れて、売り買いしながら作っていけるエコシステムができていくだろうと期待しています。コンテンツで思い出したんですが、意外とWeb上で3Dを扱うような仕事ってまだ少ないらしいんですよね。WebGLがモダンブラウザ全部でサポートされるようになってから結構経つのに、WebGLってどこかゲーム用途のイメージも強いみたいで。WebGLって、本来ゲーム以外の用途もたくさんあるはずなんです。Grimoire.jsっていうライブラリがあるんですが、これは様々な3Dコンテンツを、簡単にWeb上で扱えるようにすることを目的としていて、こういう動きが盛り上がると、WebGLってもっと活用されるんじゃないかと思う。その点VRは、コンテンツを中心とした盛り上がりも活発で、結構未来があるんじゃないかな、と思いますね。いうとHoloJSっていうのもあって、HoloLens用のアプリを作ることもできます...すごく大変なんですけどね(笑)。ところでChromeも、WebVRには対応済みですよね。VR/AR空間内でChromeを立ち上げられるように、ということだと思われる。(TechCrunch))。次は、WebAssemblyのお話を聞かせてください。Mozillaの浅井さんにお聞きしようかと。はい、WebAssemblyの元になったのはasm.jsという技術です。JavaScriptは動的な言語なので、パフォーマンスの向上にも限界がある。そこで、JavaScriptのサブセットとしてasm.jsが提案されたんです。変数の型が厳密に定義されており、さらに実行に先立ってコンパイルが可能なので、相当に速かった。WebAssemblyは、さらにそれをコンパイル済みのバイナリとして配布できるようにする技術です。そのバイナリフォーマットに関する仕様がWebAssemblyです。実行速度は相当なもので、現在でもC言語の速度まであと20%というところまで迫っています。FirefoxやChromeではすでに対応済みなんですよね。Edgeでも、フラグをONにすると使えるようになります。はい、そうだと思います。WebAssemblyに出力するのも、基本的にはC/C++やRust言語で書かれたものになりますし。EmscriptenとBinaryenというツールを組み合わせて、C/C++のコードをWebAssemblyに変換する...というのが一般的ですね。基本的には、LLVMの中間言語が出力できれば、そこからEmscriptenを使ってasm.jsに変換でき、更にBinaryenでWebAssembly化できます。Appsって、ご存じの方どれくらいいます?...思ったより浸透してないですね。Appsっていうのは、一言で言うとモバイルウェブの新しい形です。Chromeで開いてみるというのが一番わかりやすいと思います。Liteと呼ばれていて、動作も素早いし、モバイルアプリと使い勝手はほとんど変わりません。PWAは、アプリに比べてデータ通信量も抑えめになるそうです。Liteではアプリに比べて70%データが削減できるとか。ブラジル、インド、インドネシアといった、ネットワークインフラの整っていない新興国では、アプリよりもユーザのコンバージョン率が高く、採用も広まっているようです。モバイルといえばネイティブアプリ、という印象はいまだに根強いですが、モバイルサイトも同時に構築できてしまうので、環境が整って利点が正しく理解されさえすれば、一気に広まりそうですよね。PWA対応していないブラウザでアクセスしたとしても、通常のWebアプリとして使えますし。ちなみにEdgeでは、今年の夏頃から開発者向けのビルドでPWAを試せるようになります。年末ぐらいまでには、メジャーブラウザでは全体的にPWAが使えるようになりそうですね。Storeに並べてしまうようになるというのを最近知って、すごい荒業だけどこれは面白いなと思いました。PWAって捉えどころがないふわっとした用語ではありますが、実際には個々の技術それぞれにもすごく価値があります。オフラインやプッシュ通知がWebアプリで行えるというのは、Ajax以来の技術的な革命じゃないかと思いますね。お時間も迫ってまいりましたので、最後のトピックです。Componentsっていうのは、一言で言うと、自分でHTMLタグを作れるという技術です。自作したタグ(コンポーネント)を配布できる。Componentsは、最近だとSafariに搭載されたのが大きいですね。iOSを含め、割とどこでも使えるメジャーな技術になりました。Componentsを使っています。Componentsはすごい勢いで広まっていると言っていいんじゃないかと思います。Componentsっていうのは、W3Cで標準化が進められている技術なんです。具体的には4つの技術から構成されています。Elementは、先程申し上げたように独自のタグを作ることのできる技術です。DOMは、DOMのカプセル化を行えるようにする技術。Elementっていうのは、「テンプレートである」という意味合い以外持たないHTML要素です。Importというのは、JSやCSSのように、HTMLもインポート可能にするという技術です。Componentsの上に構築されたライブラリです。Components標準はそれほど高いレベルのAPIを提供しません。実際にコンポーネントを作ろうとすると、実装の重複が多くなります。その重複を排除して、最小限のコードでコンポーネントを作れるようにするのがPolymerです。Componentsについては長いこと意識しているようですが、まだ詳細は未定です。はい、PolymerはPolyfill(対応していないブラウザ上でAPIのエミュレーションを行うライブラリ)も含んでいますので、動作しますね。ComponentsベースのHTMLに全て書き換えられているんです。コードを見てみると面白いと思いますよ。あと、Polymerはライブラリだけじゃなくてコンポーネントも提供しているんです。見てみると、すでにいろんなコンポーネントが利用できるのを確認できると思います。はい、モバイル時代は長らくネイティブアプリが中心でしたが、ここに来てWebの力が盛り返してきているのを感じています。ネイティブアプリと遜色ない機能を提供できるだけではなく、ユーザーにリーチするのも、アプリストアよりもWebのほうがハードルが低い。リンクを送るだけでプロモーションできますしね。いう点で、PWAには期待しています。PWAについては、ぼくも同じく期待しています。Liteを触ってみてほしいですね。あとWebの今後という点で思いついたのですが、企業の枠組みを超えた合意形成の方法としては、Webはかなり進んでいるんじゃないかと思います。ディスカッションの場作りとか、標準化を行う上で蓄積されたノウハウはかなり貴重で、他の場面や業界にも活かされていくんじゃないかな...と考えています。お時間ですので、本セッションを終わりとしたいと思います。みなさま、本日は大変興味深いお話を、どうもありがとうございました。