Google Chrome 5のリリースが刻一刻と迫ってきました。その注目の新機能と開発者向けの変更点に加え,Chrome 6を見据えた今後のスケジュールなどを詳細にお届けしたいと思います。
まず,Chrome 5の最大ニュースはなんといってもMac版,Linux版がそれぞれ正式にリリースされる予定という点です。これまで,Mac版とLinux版はベータ版と開発版が提供されていましたが,ついに安定版がリリースされる予定です。特にMac版はMac OS Xに馴染むようにかなりの改良が加えられているので,注目のリリースとなりそうです。
さて,これまでのリリースを簡単に振り返ってみます。シンプルで高速なブラウザとしてChromeがリリースされてから,Chrome 2では基本機能の充実と高速化,Chrome 3ではテーマのサポート,Chrome 4では拡張機能のサポートとブックマーク同期,Chrome 4.1は翻訳機能にCookieやJavaScriptなどの制御するプライバシー機能の充実などが目玉となってきました。
そして,今回のChrome 5では,HTML5とその関連APIのサポートの充実が図られています。ほかにも,CSS3やECMA-262 5th edition(通称ECMAScript 5)のサポートなど,主にウェブアプリケーションのための機能追加がメインとなっています。Chrome 5は開発者にとって注目のリリースです。
Chrome 5とHTML5
Geolocation APIのサポート
これまでGoogle Gearsの機能として提供されていた位置情報を取得するAPIを,Chrome 5ではネイティブにサポートするようになりました。
Geolocation API
navigator.geolocation.getCurrentPosition(function(geo){ console.log(geo); console.log(geo.coords.latitude); // 緯度 console.log(geo.coords.longitude); // 経度 });Application Cacheのサポート
こちらもやはりGearsの機能としてオフラインAPIが提供されていましたが,Chrome 5からHTML5の仕様に準拠したAPIが実装されました。なお,同じくGearsの機能であるDatabaseとWorkerもChrome 4で対応済みなので,Gearsが提供するAPIは基本的にChrome自体が持つようになりました(そういった事情をもって,Google Gearsは開発を終了しています)。
Web Workers内でWebSocketが可能に
Web Workers(JavaScriptをマルチスレッドで実行するAPI)からWebSocketを行うことが可能になりました。Web Workers,WebSocketどちらも最新仕様への対応やWebInspectorでのデバッグ対応など改良が引き続き進行中です。
ドラッグ&ドロップのサポート
ブラウザの外からファイルをドロップして受け渡すAPIが実装されました。
Gmailではメールにファイルを添付する際にローカルからブラウザにファイルをドラッグ&ドロップで添付することができるようになっています。
sessionStorageのサポート
Chrome 4ではlocalStorageのみをサポートしていましたが,Chrome 5でsessionStorageもサポートするようになりました。
Magic IFRAMEのサポート
フレーム(Window)間で内部のフレーム(Window)をリロードを発生させずに受け渡しできる機能です。
サンプルのように,インラインフレーム間で地図を表示したままフレームを移動できます。Gmailのような読み込みに時間がかかるアプリケーションをChrome拡張から利用するケースでの利用が想定されています。
history.pushState/history.replaceStateのサポート
JavaScriptからブラウザの履歴を追加,置き換えできるAPIです。(Gmailのような)ページ遷移を伴わないウェブアプリケーションにおいて,戻る・進むで操作のやり直しをする機能などを実装することができます。
Desktop notificationsの改良とサポート
ブラウザの外(デスクトップ)に通知用の小窓を表示するAPIです。Chrome 4でもサポートはしていましたが,インターフェースなどが改良されました。また拡張からはmanifest.jsonのpermissionsにnotificationsを指定することが可能になりました。
HTML Formsのサポート(一部)
フォーム要素について,新しいtypeやバリデーション機能などが追加されました。インターフェースを伴うものはChrome 6で実装される予定です。詳細はThe Chromium Projects の HTML5 Forms Statusで確認できます。
Sectioning要素のサポート
HTML5で新たに追加されたsectionやheader,footer,navなどの要素を正しく解釈できるようになりました。
このほか,HTML5やCSS3のサポート状況はWeb Designers' HTML5 & CSS3 Checklistや,The Chromium Projectsn の Web Platform Statusなどにまとまっています(WorkersからのDatabaseへのアクセスや,File API,XMLHttpRequestのFormData送信サポートなどはChrome 5での対応からChrome 6への対応に先送りされています)。
Chrome5がサポートする拡張API
History API
まず,大きな変更としてHistory APIが追加されました(http://code.google.com/chrome/extensions/beta/history.html)。履歴の検索などが可能なAPIが追加され,同時に chrome://history/ で表示されるページを拡張で置き換えることも可能になっています。
History APIを使った拡張として,History2などがあります。
ファビコンの取得
manifest.jsonのpermissionsに "chrome://favicon/" と加えることで拡張からChromeが内部に持っているファビコンを扱うことができるようになりました。
データベース容量の拡大
manifest.jsonのpermissionsに "unlimited_storage" と加えることで拡張から扱えるデータベース容量が無制限になります。この指定がない場合や通常のウェブページからでは1つのドメインあたり5MBに制限されています。
Popupのデバッグ
BrowserAction,PageActionのアイコンから表示されるポップアップをWebInspectorでデバッグできるようになりました。アイコンを右クリックして,メニュー一番下の「ポップアップを検証」でデバッグできます。拡張開発者には嬉しい機能です。
シークレットモードでの拡張
Chrome 4ではシークレットモードの際はすべての拡張が無効でしたが,Chrome 5では任意の拡張をシークレットモードでも有効にすることが可能になりました。
未パッケージ拡張の読み込み
パッケージされていない拡張の読み込みが再起動後も維持されるようになりました。こちらも開発者には嬉しい機能です。
その他
そのほか,細かい変更として,拡張の一覧ページのデザインの変更や,インストール時に表示される注意書きがわかりやすくなりました(パーミッションに複数のサイトを指定すると「いくつかのサイト」とまとめていたのが,個別のドメインを表示するようになったなど)。

