先取り! Google Chrome Extensions

第1回 Google Chrome Extensionsとは

この記事を読むのに必要な時間:およそ 3 分

できること,できないこと

続いて,Extensionsで出来ること,出来ないことを見ていきたいと思います。

Extensions のプログラムは JavaScript で書くことになるので,必然的にJavaScriptで出来ないこと,苦手なことはExtensionsの弱点にもなりえます。HTML5,ECMAScript5のサポートが進む現在では JavaScript だけでも出来ることは増えていますが,例えばバイナリファイルの扱いなどは難があります。

FirefoxのAdd-on,Greasemonkeyとの違い

ここで多くの方にとって馴染みのあるFirefoxのAdd-on,Greasemonkeyと機能比較をしてみます。

Chrome ExtensionsFirefox Add-onFirefox Greasemonkey
クロスドメイン通信可能可能可能
ローカルファイルの読み書き現在は不可(APIが用意される予定)可能不可
データベース、Storagedev版(Chrome 4)ではWebDatabase,WebStorageが使用可能SQLiteを使用可能DOM Storage(WebStorage)と独自Storage(GM_getValue, GM_setValue)を使用可能
バックグラウンドタスク可能可能不可
ブックマークへのアクセスAPIを通して限定的に可能可能不可
タブ、ウィンドウ操作APIを通して限定的に可能可能JavaScriptで可能な範囲のみ
ネイティブコンテキストメニューの操作不可(APIが用意される可能性はあります)可能不可
メニューコマンド可能
Page Action
可能可能
GM_registerMenuCommand
自動更新可能(Chrome4 から)可能不可(ただし,wescriptなどの拡張で更新をサポートすることは出来ます)

FirefoxのAdd-onは大抵のことができてしまう拡張性の高さが魅力ですが,その自由さと比べてしまうとChromeの Extensions はやや拡張性に欠ける面があります。

Chromeでは本体側で様々なAPIを用意し,APIを通して様々な機能を実現します。安全性,保守性に優れる一方で,APIで用意されていないことは不可能ということになってしまいます。

ただし,Extensions の仕様は策定途中で,APIのアイデアは積極的に募集されています。Chromium Extensionsグループなどで要望を出してみれば,採用されるかもしれません。また,現在提案中のAPIはAPI Wish Listにまとめられています。

Extensions の得手不得手

Greasemonkey用スクリプトとして公開されているものを,ChromeのExtensionsで実現することは多くの場合で可能です。しかも,CSSやHTMLをより自由に扱えますので,多くの場合でGreasemonkeyよりも手軽に実装できると思われます。

また,バックグラウンドでタスクを実行することや,データベースの利用(Chrome 4以降)ができるので,Twitterクライアントのような,高機能なクライアントアプリケーションを実現できます。

対して,ブラウザの挙動を変えるようなAdd-onをChromeで実現するのは難しい面があります。例えば,タブを操作するAPIは用意されているので,タブの移動や切り替えなどは実現できますが,タブの表示方法を大きく変えるようなこと(TreeStyleTab のようなAdd-on)をChromeで実現することはできません。

また,マウスジェスチャーやショットカットキーを実現するExtensionsは現状でも実現可能ですが,ネイティブに割り当てられたキーを再割り当てするようなことはできません。この点は,やはりAPIが用意される予定となっていますが,詳細は未定です。

Chrome 3でサポートされる機能,Chrome 4でサポートされる機能

2009年8月末現在,stable版は2系,beta版は3系,dev版は4系となっています。近いうちにstableが3系統になる見込みで,Chrome 3の目玉機能は「テーマ」です。よって,4系統で実装されている(される予定の)機能は3系のstableには載らないということになります。

具体的には,WebDatabase,WebStorageのほか,ブックマークの同期機能などが該当しています。そのほかにも,ExtensionsのAutoUpdateなども4系から搭載される見込みです。

Extensions自体のリリース時期は明らかにされていませんが,起動オプションのenable-extensionをオプションのUIに組み込む案(つまり、Extensionsを動かす際に起動オプションが不要になる)がバージョン5の課題として挙がっていますので,残念ながら正式リリースまではまだ時間がかかるかもしれません。

【2009/9/17追記】Google Chrome ReleasesのAnthony氏は,⁠ExtensionsはChrome 4でのリリースを目標としている』とコメントされています。

まとめ

今回はChrome Extensionsの導入から概要を説明しました。次回からはExtensionsの仕様とサンプルを解説していきます。

著者プロフィール

太田昌吾(おおたしょうご,ハンドルネーム:os0x)

1983年生まれ。JavaScriptをメインに,HTML/CSSにFlashなどのクライアントサイドを得意とするウェブエンジニア。2009年12月より、Google Chrome ExtensionsのAPI Expertとして活動を開始。

URLhttp://d.hatena.ne.jp/os0x/