Chrome Web Store入門

21日の日曜日に開催されたChrome+HTML5 Conferenceで、Chrome Web Storeについて話をしました。

例によって私の発表は資料だけだとよく内容が分からないので、概要をざっと文章でまとめておきます。(面倒くさいので後半の課金APIの実装の話は省略します。必要な方はドキュメントをどうぞ)

資料1枚目から14枚目

Chrome Web Storeというと、例えばSafariのExtension GalleryFirefox add-onsOperaのExtension listなんかと同じもののChrome版だと考える人が多いと思いますが、実はそれらとは大きく異なる部分があります。それが次の二点です。

  • ウェブアプリを取り扱う
  • 単に検索してダウンロードできるだけではなく課金アイテムも扱える

今回はこの二点に絞ってChrome Web Storeがなんなのかを説明していこうと思います。

資料15枚目から18枚目

Chromeでのウェブアプリの話に進む前にまず一般的なウェブアプリについて考えてみましょう。

ウェブアプリと対比される単語としてウェブページという単語がありますが、実際これらはどういう関係でしょう。おそらく多くの人は「だいたい同じようなもの」とか「ちょっと凝った動きをするウェブページがウェブアプリ」という感覚を持っているのではないでしょうか。

  • ウェブアプリ ⊆ ウェブページ

しかしChromeの中での扱いを見てみるとそれとは少し違った捉え方がされているように感じます。

・・・

資料19枚目から24枚目

ここで少し視点を変えて少し電子ブックリーダーのことを考えてみることにします。遡ること今から3年前の4月、Amazon社からKindleが発売されました。

それから3年半が経ち今では次のようなことが実現可能になっています。

  • フルカラーディスプレイ
  • 高解像度ディスプレイ
  • マルチタッチスクリーン
  • ジャイロ・加速度センサ・コンパス

このまま進化を続けた場合に、将来のKindleがどのようになるかを想像してみましょう。


おそらくこのような感じになるでしょうか。しかも、この真Kindleはその溢れるCPUパワーを利用して物理エンジンを組み込みこんなことまでできたりします。実にすばらしい電子ブックリーダーです。

なにかがおかしいですよね?

私たちはすでにiPadが電子ブックリーダー以上のものであることを知っています。だからそのiPadiBooksやAlice for the iPadのような単なる電子ブックリーダーとしてしか使わないと聞くと「もったいない」と感じるはずです。もっと本格的なゲームやビジネスに利用できるはずなのに。

・・・

資料25枚目から37枚目

さてここで再びウェブの話に戻ります。

これは約20年前のウェブブラウザです。このころと比べるとウェブでできることも大幅に増えました。

  • 非同期通信
  • 2D・3Dグラフィックス
  • リアルタイム通信
  • マルチメディア
  • ジオロケーションや加速度センサの使用

では、さぞかし進んだ21世紀Alexa ranking No.1のウェブページを見てみましょう。

・・・正直、20年前と大差ないです。細かいところでいろいろ進化しているし別にそういうものだろう、という人も少し考えて欲しいのです。

「もし、現在のような高機能なウェブが初めから存在していたとしたら?*1

要するに今のウェブはiPadを電子ブックリーダーとしてしか見ていないのと同じ状態のように感じます。Googleはこれを本来有り得たかもしれない形、つまりウェブが単なる情報の集まりではなく、独自のUIを持つさまざまな目的を持ったツールの集合体にしようとしているのかもしれません。そのような世界が実現されたとすると、その時はウェブアプリこそがウェブの構成要素でウェブページはその一形態にすぎないと捉えるほうが自然でしょう。

  • ウェブアプリ ⊇ ウェブページ

そしてそういうウェブアプリで構成されるウェブを指してGoogleは「ウェブはアプリケーションプラットフォームである」と表現しているように思います。

資料38枚目から47枚目

ここからはそのGoogleが作る現実のウェブアプリ、Chrome Web Appについて説明します。さて、まずはじめにそもそもChrome Web Appとはなんでしょう。これは非常に簡単です。Chrome Web Appとは

  • Chromeインストール可能なウェブアプリ

のことです。Chromeにウェブアプリをインストールすると新しいタブにボタンが追加され、そのボタンをクリックすることでウェブアプリを起動できます。

これを「ボタンが大きいだけのただのブックマーク」と考える人もいるとは思いますが、表面的には同じように見えても本質的には全く違います。特に異なるのが次の2つです。

  • 見た目
  • メタ情報(manifest.json)を持つこと

「見た目」こそ表面的な違いの最たるものと思うかもしれません。しかし、インストールされたアプリをブックマークとは全く異なる見た目で全く別の場所に表示させることを決めたのは他ならぬGoogleです。つまりこの違いは単なる見た目の違いではなく、実際にはGoogleの「ウェブアプリとウェブページは別のものだ」という世界観と主張の表れと見るのが正解でしょう。

もう一つのメタ情報については後ほど述べます。

資料48枚目から58枚目

Chromeでウェブアプリというと実際には次の2つがあります。

  • Hosted App:サーバー上でホストされる普通のウェブアプリケーション
  • Packaged App:HTML、JS、CSSなどアプリケーションが使用するリソースを全て一つにまとめてダウンロードしておいてから利用するサーバー不要のアプリケーション
Hosted App Packaged App
普通のウェブアプリ + manifest.json HTMLなどリソース一式 + manifest.json
特殊なAPIほぼなし Chrome拡張APIが利用可能
ネットワーク接続必須 ネットワーク接続不要
サーバー必須 サーバー不要
任意のブラウザで動作 Chrome限定で動作
Chrome Web Storeの提供する方式で認可が可能 Chrome Web Storeの提供する方式では認可は不可*2
Chrome Web Storeの提供する方式で課金が可能 Chrome Web Storeの提供する方式では課金が不可*3

このPackaged Appの方の特徴を見て何か気がつかないでしょうか。実はPackaged Appはウェブアプリというよりも画面付きのChrome Extensionと捉えたほうがよいような代物です。今回はウェブアプリに集中することにしているため、Packaged Appについてはこれ以上は触れません。

Hosted Appで重要なのはmanifest.jsonと、1つだけある特殊なAPIです。(課金についてはChrome Web Storeの項で説明します)manifest.jsonChrome Web Storeに登録されるアイテムには必須の、次のような内容を持つテキストファイルです。

{
    "name": "Google Mail",
    "description": "Read your gmail",
    "version": "1",
    "app": {
        "urls": [ "*://mail.google.com/mail/",  ... ],  
        "launch": {
            "web_url": "http://mail.google.com/mail/" 
        }
    },  
    "icons": {
        "128": "icon_128.png" 
    },
    "permissions": [ "unlimitedStorage", "notifications" ]
}

manifest.jsonはなぜ重要なのでしょうか。まず一つ目の理由は、このmanifest.jsonの存在によってウェブページとウェブアプリがブラウザから区別ができるようになることです。現在はウェブアプリとウェブページは人間がみてなんとなく区別することができても、ブラウザにとっては全く同じものとしか見えません。もしmanifest.jsonが標準化され、さらにサーバー上においたままでブラウザが確認できるようになれば、ウェブアプリとウェブページを機械的に判定できるようになります*4

さらにmanifest.jsonにはウェブアプリのメタ情報が記述されていますから、その情報を利用してユーザーが求める機能を持つウェブアプリを簡単に検索できるようになる可能性があります。この「検索可能」という点の重要性については後ほどまた触れます。

さてHosted Appは特別はAPIはほとんどないと先ほど書きましたが、実は1つだけ特別な機能があります。本項の最後にそれを紹介しておきましょう。次のようなmanifest.jsonを用意して下さい。

{
    "name": "App Name",
    ...
    "permissions": ["background"],
    "background_page":"https://path/background.html#0",
    ...
}

こうすることでメインのUIウィンドウとは別に非表示のウィンドウ内でbackground.htmlが動作します。仮にbackground.htmlの内容が次のようなものだとすると、UIを一切ロックせずに裏側でサーバーにポーリングして何か変化があったらすぐにUIウィンドウに通知を投げることができます。

<html><script>
  function pollSomething() {
    if (checkSomething()) {
      window.opener.notify('何かが起きました。');
    }
    setInterval(pollSomething, 1000);
  }
  pollSomething();
</script></html>

資料59枚目から78枚目

これまでで「ウェブはアプリケーションプラットフォームになりうる」ということは理解して頂けたかと思います。しかしそうなりえるからといって、実際にそうなれるかというとそれは別の話です。プラットフォームとして先進的で優れているからといって、それが広く受け入れられるわけではないということを、ちょうど一年ほど前にGoogle(と私)は学びました

プラットフォームだけではなにかが足りないとすると、その足りないものは一体なんでしょう?それは「マーケット」ではないかと私は思います。i-modeであれ、ゲーム機であれ、App Storeであれ、プラットフォームと呼ばれるものには必ずマーケットが付随しています。より正確に言えば、マーケットを形成できなかったプラットフォームは生き残れなかったと言っていいでしょう。有り体に言えば、お金の匂いのしないプラットフォームに人は集まってこないのです。

ではそのマーケットとは具体的にはどういうものでしょう。私は次の2つがマーケットには不可欠だと考えます。
1. 買い手が必要なものを見つけることができる
2. 売り手と買い手が金銭のやりとりをできる
さてここでChrome Web Storeを取り巻く環境を考えると、1番目に関してはウェブアプリのメタ情報(manifest.json)をGoogle得意の検索にかけることで実現できます。2番目に関してもChrome Web Storeは2種類の課金APIを利用して、3種類の課金方法を選ぶことができます。

つまりChrome Web Storeは「ウェブアプリのマーケット」なのです。

とはいえ、マーケットといってもピンきりです。Chrome Web Storeのマーケット規模はどのくらいなのでしょう。2011年5月時点での情報は次のとおりです。

  • Chromeユーザーは一億六千万人
  • 登録アプリ数は一億五千万アプリ
  • 41ヶ国語対応

どうでしょう。なかなかの規模だと思いませんか?

資料59枚目から78枚目

これまでの話から

  • ウェブはアプリケーションプラットフォームになりうる
  • Chrome Web Storeはウェブ上に巨大なアプリケーションマーケットを創出しうる

ということが分かりました。

これらを総合すると、未来のウェブは現在のような画一的なウェブページから成るのではなく、様々な目的・UIを持つウェブアプリからなり、さらにその上で直接経済活動が行われるような場になるのかもしれません。少なくともGoogleはその方向を目指しているように私には思われます。

今回は説明しませんでしたが、Chrome Web Storeにアイテムを登録するのはmanifest.jsonと説明用の画像をアーカイブするだけでよく非常に簡単です。未来のウェブの片鱗を味わうためにも、是非なにかChrome Web Appを作成して、Chrome Web Storeに出品してみてはいかがでしょうか。

*1:以前も書きましたが、この「過去のシガラミを捨て、純粋に今あるもので何ができるかを考える」というのはGoogleの基本的なやり方だと思います

*2:実際には利用は可能ですがセキュリティを担保できません

*3:実際には利用は可能ですがセキュリティを担保できません

*4:といったようなことをしゃべりましたが、実際にはChromeはすでにサーバー上のmanifest.jsonを読むことができるようです。予想があたったといえばそうだけど・・・