Firefoxのシェアに影響する可能性も
マウスジェスチャーも可能、Chrome Extensionsを使ってみた
2009/11/26
米グーグルは11月23日、Webブラウザ「Google Chrome」向け機能拡張の登録受け付けを開始した。機能拡張ギャラリーに対してエクステンションをアップロードすることで、開発者は広くChromeユーザーに自作拡張機能を公開できる。グーグルは、向こう2〜3日のうちにフィードバックを目的としたテスト公開を行い、その後ベータ版として公開する予定という。
Chrome Extensionsの例。Gmailの新着メール数をアイコンで表示しており、クリックすると、それらのタイトルがポップアップで表示される。ブラウザ・アクションというインターフェイスを使った典型的な例だベータ版で多くのエクステンションが試せる
現在ベータ版となっているChrome 4.0には、すでにエクステンションの仕組みが取り入れられている。非公認のサイトながら「Chrome Extensions」には、いくつかサードパーティー製のエクステンションが公開されていて使うことができる。例えば、Gmailの新着メール数をアイコン上に表示する「Gmail Checker」、ソーシャルブックマークサイト「Delicious」にダイレクトにブックマークを追加できる「Delicious Chrome Extension」、Twitter向けの拡張でWebブラウザに小さなウィンドウを開いてタイムラインを眺めたり、つぶやきを投稿できる「Chrome Bird」などが公開されている。
URLのパターンマッチによって、HTMLをダイナミックに書き換えるGreasemonkeyに相当する機能も利用でき、Userscripts.orgで公開されているスクリプトもかなり動くようだ。私が試した限り、このジャンルで人気が高いAutoPagerizeは動いている。AutoPagerizeは、複数ページにわたるコンテンツの「次」に当たるページを、ユーザーに代わって自動的にページ下に付け加えて展開してくれるツールだ。
Greasemonkeyに相当するコンテンツ・スクリプトを使ったChrome Extensionの例。検索結果で表示されるHTMLを動的に書き換えて、検索結果の各アイテムの横にDelicious、はてなブックマークでのブックマーク数を表示しているChrome Extensions自体もそうだが、このWebサイトで公開されているエクステンションは、一部の例外をのぞいて“野良アプリ”というべき存在で、セキュリティについては「各自でソースコードを見て、おかしなコトをしていないか確認すること」といったところ。一方、グーグルが公開予定の機能拡張ギャラリーでは、自動レビューのほか、プラグインのNPAPIを使ったものや、ローカルファイルにアクセスするものは手動で安全性をチェックするという。
つまり、公式サイトが待ちきれないとか、自分でもエクステンションを作ってみたいという開発者でもない限り、グーグルによる公式サイトのオープンを待ったほうがいい、という段階だ。
基本は「HTML+JavaScript+CSS」で構成
Chromeのエクステンションは、バージョン番号などをJSONで記述したメタファイルやアイコン画像のほかは、「HTML+JavaScript+CSS」をアーカイブして電子署名を施したシンプルな構成だ。具体的には「.crx」という拡張子のファイルを、RubyスクリプトかChrome本体に実装されたパッケージ機能で作成する。JavaScriptの開発・デバッグにはWebKit組み込みのインスペクタやデバッガが利用できる。ここ最近、WebKitプロジェクトではインスペクタの大幅強化を行っており、FirefoxでFirebugを愛用する開発者にとっては気になるポイントかもしれない。
Chrome Extensionsの管理画面。作成した関連ファイルをアーカイブしてエクステンションへパックする機能や、パックされていないエクステンションを利用する機能もある
オプション画面はHTMLページなので、色を付けたり、動的に表示させたりなど、従来のダイアログとはひと味違った凝り方もできそうだエクステンションの利用者は、何らかの形で.crxファイルをPCにダウンロードする。ほとんどのケースではグーグルが運営するギャラリーからインストールボタンをクリックする形になりそうだ。ダウンロードを開始すると、すぐにインストールを確認するボタンが現れるので、後は「OK」ボタンを押すだけだ。Chrome本体同様に、開発者はエクステンションで自動アップデートの仕組みが利用できる。
Chrome Extensionsのインストール確認画面。利用するAPIによってはManifestoファイルに明示的に書く必要があり、インストール時にユーザーに注意を促す。この画面では、インストールしようとしているエクステンションがブラウザの閲覧履歴にアクセスしようとしているのが分かるChromeのエクステンションはJavaScriptベースなので、ある種のエクステンションは、ブックマークレットに似ている。例えばDelicious向けエクステンションのJavaScriptのソースコードを見てみれば分かるように、Webサービスと連携するタイプのエクステンションであれば、ブックマークレット並に簡単に作成できる。同様に閲覧中のWebページをTwitterでつぶやくようなエクステンションもブックマークレット的だ。
Chrome ExtensionsではChrome本体のAPIも使える。ブックマークの操作やマウスやキー、タブ、ウィンドウなどをオブジェクトとして扱えるほか、エクステンション間のメッセージAPIなども利用できる。APIでタブ操作をしたり、タブ操作関連のイベントをフックしたりできる。やや動作がモッサリしているが、すでにマウスジェスチャー機能を実現する「Chrome Mouse Stroke」といったものもあり、「下→右」とマウスでジェスチャーすることでタブを閉じるという操作が可能となっている。
ちなみにChrome ExtensionsではNPAPI経由でプラグインを呼び出すことも可能だが、セキュリティや安定性の理由から、ほかに手段がないときにだけ利用をとどめるべきだとドキュメントに大きく書かれている。
Webアプリケーションと異なり、Chrome Extensionsは当然Chromeをターゲットに開発するため、Canvasタグを使うような応用もありだ。というよりも、新着メール数をアイコンで表示するようなエクステンションでは、Canvasを使ってビットマップとフォントを合成するような実装が一般的なようだ。このほかにもHTML5関連のローカルストレージやV8エンジンのJSONの機能、WebKitの独自拡張なども利用できる。WebKitでは、CSSを使ったアニメーションなども独自に拡張しているし、.crxファイルにはjQueryを含めるようなこともできるので、かなり凝ったユーザーインターフェイスが作れそうだ。
3つに整理されたインターフェイス
エクステンションで利用できるユーザーインターフェイスは大きく3つある。「ブラウザ・アクション」「ページ・アクション」「コンテンツ・スクリプト」だ。
Chrome Extensionsで利用できる3種類のユーザーインターフェイスブラウザ・アクションはアドレスバーの横に小さなアイコンを表示するもの。このアイコンにはオーバーレイで最大4文字までテキストを表示するバッジや、マウスーオーバー時に表示するツールチップ、クリック時に表示するHTMLを指定するポップアップが利用できる。例えば新着メールチェッカーなら、未読メール数をバッジで表示し、タイトル一覧をポップアップとするといった形にできる。
ページ・アクションを使うと、特定のURL(HTMLページ)にひも付く形でアドレスバーにアイコンを表示できる。ブラウザ・アクションと異なり、特定のページに対して何かを行う場合に使う。RSSリーダーや、ページ内に含まれる画像をスライドショウにして表示するような機能を、ページ・アクションで実現するという。
コンテンツ・スクリプトはFirefoxなどでいうGreasemonkeyで、例えばアンカータグの入っていないURL文字列をリンクに変換したり、HTMLページに含まれるmicroformatsの情報を加工するといったことができる。
この3つのAPI群のほかにもChrome Extensionsでは、各エクステンションの設定管理を行う「オプション・ページ」と呼ぶユーザーインターフェイスや、バッグラウンド処理を行う「バックグラウンド・ページ」といったAPIが利用できる。バックグラウンド・ページは表示と結び付いておらず、アプリケーションのロジックを記述したり、状態を保持するために利用するという。ブラウザ・アクションのポップアップではビューを実装する。
まだ情報の少ないChrome Extensionsだが、日本語で読める解説として、gihyo.jpで太田昌吾氏が連載している「続・先取り! Google Chrome Extensions」が非常に詳しい。
今後はFirefoxのシェアに影響の可能性も
Firefoxが独自XMLの「XUL」(ズール)を使ってダイアログやウィザード、右クリックによるコンテキストメニューの書き換えなど、GUI関連のAPIを開放しているのに対して、Chrome Extensionsは、あくまでもWebブラウザ上の機能拡張のみ提供するといった印象だ。もともとMozillaファウンデーションでは、Firefox以外にもメールクライアントやHTMLオーサリングツール、IRCクライアントなど、一連のアプリケーション・スイートを提供することを目的に、OS非依存でXMLによるUI定義が可能なXULを設計したという背景がある。この仕組みは強力で、多くのアドオンを生んだほか、Flockのような派生プロジェクトを生み出す源泉ともなった。Webサービスの使い勝手を大きく改善する気の利いたアドオンの存在が、Firefoxの大きな魅力となってきた。
はるかに後発のChromeは、よりWebセントリックな拡張方法を採用したために、Firefoxほどの拡張性はない。レンダリングエンジンを切り替えたり、タブの動作自体を変えてしまうようなこと、あるいはダウンローダでローカルのファイルに書き出すようなことは、Chrome Extensionsではできない。ただ、ブラウザ・アクションのポップアップ機能を使ったTwitterクライアントなどを使ってみると分かるが、もはやHTML+JavaScriptだけでも、かなりのことが実現できるのも事実だ。Mozilla Firefoxでも現在、従来の独自XMLファイルを使った拡張機能の実装方法に加えて、JavaScriptによる機能拡張の方向性を「Jetpack」というプロジェクトで模索していて、「Webブラウザの拡張はWeb関連技術で」という流れができつつあるように思う。
さらにChrome OSの方向性を考えれば、重たい計算処理が必要なグラフィックライブラリやローカルストレージへのアクセスを行うAPIも、将来的にグーグルが提供してくる可能性が考えられる。Webアプリケーションの一種と考えると、特定のブラウザに依存したプラットフォームは非インターネット的だが、ブラウザの拡張という形なら、こうしたAPIの開放はあり得るのかもしれない。
いずれにしても、Chrome Extensionsを使えば、すでに実用的な拡張機能を提供できるのは間違いない。手放せないアドオンがあるという理由でFirefoxを利用しいてるユーザー層のかなりの部分を、Chromeが奪う可能性が出てきそうだ。
関連リンク
関連記事
情報をお寄せください:
- 画像を美しく魅せる効果を加えるjQueryプラグイン3選 (2010/3/17)
2つ重ねて比較するBefore/After、部分ごとに切り替えるpanelGallery、ズーム/カーテンなどができるcycle - 現場の無駄な流血を止めるための「プロトタイプ」とは (2010/3/12)
サイトやWebアプリ/RIAの設計やデザインを効率良く進めるには、プロジェクト関係者の想定を一致させていくことが大事だが… - Flashを閃光のごとく高速化するための基礎知識 (2010/3/9)
Flash高速化のための基礎知識や実践的テクニックを紹介する連載。初回は“処理負荷”を調べる具体的な方法を解説します - Windows 7でどんだけ“おばか”なアプリが作れるの? (2010/3/4)
おばかの発想の源やアプリの作り方などについて、おばかアプリ選手権の歴戦の受賞者や、マイクロソフトの代表者に話を伺った。アイデアのご参考に
|
|
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |









