全体概要

本セミナーは、2013年という転換期において「Webアプリとは何か」という問いを根本から問い直し、AndroidとChromeの統合という歴史的な出来事が開発者にとって何を意味するかを探求するものです。[p.1]

PCの時代が終わりを迎え、タブレットの出荷台数が倍増する中 [p.6]、インターネットとWebアプリの世界は「クラウドとクラウド・デバイス」の時代へと劇的に移行しました。[p.4] この変化を貫く核心的な問いは、「従来のサーバーサイドWebアプリという形式は、新しい時代に適合しているか」というものです。

GoogleのAndroid標準ブラウザーのHTML5対応の遅れ [p.120] と、Chromeチームの先進的な取り組み [p.126] という二つの現実の間で、Googleは明確な選択を迫られました。AndroidへのChrome標準ブラウザー搭載と、Packaged Web Appの導入という道です。[p.136] これは単なる技術的更新ではなく、サーバーとクライアントの役割を根本的に見直す「Rich Client / Thin Server Architecture」[p.111] という思想的転換を伴うものです。

2005年のAjaxの登場以来、クライアントに送られるJavaScriptのサイズはこの一年で倍増し [p.21]、サーバーは全処理の70%以上をHTMLデータの生成に費やすという非効率な構造が露わになっています。[p.63] Facebookが「ネイティブに対してHTML5に賭けすぎた」と認めたように [p.53]、単純なサーバーサイドWebアプリとHTML5の結合という期待は、そのままの形では実現されませんでした。

その解答として浮かび上がるのが「Packaged Web App」です。HTML5、CSS、JavaScriptというWeb技術を用いながら、Offline enabled by default [p.78]、Cloud enabled by default [p.78] という二つの原則を同時に実現し、デバイスのハードウェアリソースへのアクセスを可能とする新しいアプリ形態です。Chromeはすでにそのランタイム環境を具体化しており [p.152]、AndroidとChromeの統合は、このPackaged Web Appの最大のプラットフォームをAndroidが担う未来を予感させます。[p.136]

日本のAndroid開発者にとって、Google PlayでアメリカをしのいだNo.1の実績 [p.208] を活かしつつ、新しいスタイルの開発に備えることが急務であり、本セミナーはその羅針盤となることを目指しています。[p.219]

講義のロードマップ

ここでは、セミナーの講演資料がどのようなパートから構成されているかを示します。また、それぞれのパートのポイントを紹介します。

■ Part 1: クラウドとクラウド・デバイスとWeb

「インターネットとPC」の時代から「クラウドとクラウド・デバイス」の時代への移行という大きな歴史的文脈を整理し、Webとサーバーサイドのアプリケーション開発の現状と限界を明らかにします。PCの出荷台数が減少しタブレットが急増する現実 [p.6] を出発点に、なぜ今、Webアプリの見直しが不可避なのかを論じます。

■ Part 2: Webを取り巻く環境の変化

クラウド・デバイスの飛躍的拡大、マシン性能の向上、ネットワークトラフィックの増大、そしてWeb技術に接するユーザーの増大という四つの環境変化を論じます。特に、個人が携帯するデバイスが10年前のサーバー・マシンを凌駕する性能を持つに至った事実 [p.37] が、サーバーとクライアントの役割の見直しを促す根拠として提示されます。

■ Part 3: 「Webアプリ」の変化と三つの見直し

Webアプリがサーバーサイドからクライアントサイドへと分岐しつつあるという現象の背景にある、三つの根本的な見直し――Webプロトコル、サーバーとクライアントの役割、開発言語――を分析します。Thin Server Architectureという2008年に提唱されたコンセプトが今こそ照明を浴びている理由を明らかにします。

■ Part 4: Packaged Web Appの全体像

Application Cache、Widget、Packaged Web Appという三つのモバイルWeb技術を比較整理し、それぞれの特徴と位置づけを明確にします。Firefox OSのPackaged ApplicationとHosted Applicationの二形態 [p.101]、TizenのWidget実装 [p.91] といった具体的な先行実装を参照しながら、Packaged Web Appの本質的な特徴を規定します。

■ Part 5: AndroidとChromeの統合

AndroidのHTML5対応の遅れという現実と、ChromeのHTML5テストスコアでトップを走る先進性 [p.129] という二つの事実を対比させ、Googleが両プラットフォームを統合する必然性を論じます。2012年6月のChrome for Androidリリースから2013年のConsumer Preview展開まで [p.141]、統合の進捗を時系列で追います。

■ Part 6: Chrome Packaged Appの開発スタイル

Chrome Packaged Appの具体的な開発スタイルとして「Offline First」「Cloud enabled」「Contents Security Policy」の三原則を詳述します。`chrome.app.runtime`がJava VMやFlashのruntimeと同様にアプリ実行の核心であること [p.152]、そして`chrome.app.window`はWebブラウザーではないという根本的な設計思想を解説します。

■ Part 7: Contents Security PolicyとXSS対策

Webの脆弱性であるCode InjectionとCross Site Scripting(XSS)の原理を整理し、Packaged Web Appのセキュリティモデルの中核であるContents Security Policy(CSP)がなぜ「インライン・コードの全面禁止」という強硬な手段を取るのかを論じます。100以上の攻撃手法が存在するXSSの現実 [p.192, p.193] を前に、ブラウザー単独での判断の限界を認め、ポリシーによる構造的解決を採用した設計思想を評価します。

■ Part 8: AndroidとChromeの統合と開発者への提言

Androidのグローバルシェア68〜72%という圧倒的な事実 [p.205, p.206] と、Google Playの売り上げで日本がアメリカを抜いて世界一になった実績 [p.208] を踏まえ、日本のAndroid開発者が今取るべき行動を具体的に提言します。Native開発スキルの向上とPackaged Web App開発の準備を同時に進め、グローバル市場を狙うことが課題として示されます。