Chrome拡張とHTML5の蜜月
Shogo Ohta, 2010-3-17今年に入ってからお休み中…
Chrome拡張について記事を書いたり、JavaScriptの記事を書いたりしています
2010/3/25に
Google Chrome OS 最新技術と戦略を完全ガイド: 小池良次, 中島聡, 伊藤千光, 太田昌吾, まえだひさこ, 向井領治が発売されます!
オープンソースなので、すべてのソースが読める。カスタムしてビルドを作れる。
オープンソースコミュニティのパワーで、日々開発が進んでいる。また、Chromiumのカスタム版が数多く存在する。
今すぐ開発に参加できる chromium - Project Hosting on Google Codeへ!
stable(安定版)、beta(テスト版)、dev(開発版)の3つのリリースがある
安定版は名前の通り、一般ユーザーが使用するリリース、(セキュリティフィックスを除いて)半年に1回程度のリリース
テスト版は、主に安定版のリリース前に、安定化のためにリリースされる、時期によってはまったくリリースされないが、1ヶ月に1回程度のリリース
開発版は、安定版のリリース後、次のバージョンに向けた新機能追加を主目的(そのため不安定になることも多々)にリリースされる、1週間に1回程度のリリース
※開発版もリリース前は安定する。修正が多く適用されている分だけテスト版より安定することも。
JavaScriptエンジンはV8というChromeのために開発したオープンソースのエンジンを搭載
レンダリングエンジンはWebKitのWebCoreを採用
WebCoreは、WebKitのレンダリング周りの実装(JavaScript部分はJavaScriptCore)
実は、V8とWebCoreを繋ぐ部分にバグが多い…(Safariでは正常なのに、Chromeだとなんかおかしくなるなぁという現象はここに起因することがほとんど)
最近はChromiumチームが積極的にWebKitにコミットするようになっていて、かなり改善しつつある
HTML/CSS/JavaScriptで作る、ブラウザをもっと便利にするモノ
とにかく作るのは簡単、でも制約は多い
実物を見てもらうのが一番
Google Mail Checker - Google Chrome 拡張機能ギャラリー
Chrome Stylist - Google Chrome 拡張機能ギャラリー
Hatena Bookmark GoogleChrome extension - Google Chrome 拡張機能ギャラリー
APIはまだまだ少ないが、バックグラウンド処理、クロスドメイン通信、データの永続化をベースに、可能性は無限
拡張コンテキスト、コンテントコンテキスト、ページコンテキストの3つのコンテキストが存在し、それぞれは完全に分かれているので、お互いが干渉してしまうことはない。さらに、拡張同士も独立したコンテキストで実行される。
拡張コンテキストはタブ操作やクロスドメイン通信などの特権を実行でき、コンテントコンテキストと通信したり、スクリプトを実行したりといったことができます。
コンテントコンテキスト(ContentScripts)は特権を持っていませんが、読み込んだページのDOMを操作することができ、拡張コンテキストと相互に通信できます。
ページコンテキストは通常のウェブページで実行されるコンテキストで、コンテントコンテキストとはDOM経由でしかやり取りできませんし、拡張コンテキストとは完全に分断されています
「悪意のあるページで拡張の特権を利用されてしまう」といったことが起こりにくい仕様になっているが、開発者から見ると面倒に感じる部分も…
拡張を定義するjsonファイル。名前、バージョンのほか、アイコンや拡張の持つ権限、ContentScriptsを実行するURLの定義など。
manifest.jsonで宣言していない機能は使用できない。
セキュリティを高めつつ、機械的にその拡張の権限を判断して、インストールするユーザーに警告を出すことができる。
最新の情報は、Web Platform Status (The Chromium Projects)にまとまっています
<p>第1パラグラフ <section>セクション</section> <p>第2パラグラフ
わざとらしい例ですが、パーサーがsectionに対応しているか否かで、下記のように解釈が変わります。
| Chrome | Firefox | |
| section要素未対応 | ![]() Chrome4 | ![]() Firefox3.6 |
| section要素対応 | ![]() Chrome5 | ![]() Firefox3.6(html5.enable) |
元々、Chrome拡張のAPIの仕様だったDesktop Notificationsが、2010年1月にW3C Editor's Draftとして(Web Notifications)公開されました。
このように、Chrome拡張は各種APIがHTML5をベースとしており、同時に、Chrome拡張からHTML5にフィードバックする、という相互作用の関係があります
HTML5を使いたい!という方は、是非Chrome拡張を!!
Twitterのハッシュタグなどの検索結果をNotifications APIで表示してみます
まず、manifest.jsonと各ファイルを用意します。
以上のファイルを1つのフォルダに置き、拡張機能ページで「デベロッパーモード」選択し、パッケージ化されてない拡張の読み込みを行います
追記(2010/03/18 18:43):Chrome5以降の方は、TweetNotifyから実際にインストールできるようにしました(まだ作りこみが甘いので、長時間使用しているとメモリを消費するのでご注意ください…)
また、2010年4月9日(金)にChrome Extension TechTalkを行います。Chrome Extension TechTalkのご案内、ライトニングトーク発表者の募集もしていますので、是非ご応募ください!
この資料自体がHTML5のサンプルとなるよう作ってあります。

This work is in the Public Domain.