Google Chrome 5の新機能とChrome 6の計画

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

ブックマークマネージャー

ブックマークマネージャーがタブで開くようになり,内部的に拡張機能として(つまり,HTMLベースで)実装されました。機能的にはエクスポートが可能になった以外に大きな変更はありません。一部(インポート・エクスポートなど)に先行実装APIを使用していますが,それ以外は通常の拡張として作られているので拡張のサンプルにもなります。

同期機能の強化

Chrome 4で追加されたブックマーク同期が強化され,Chrome 5ではテーマ,フォーム自動入力ルール,URL入力履歴についても同期できるようになりました。さらに,Chrome 6では拡張の同期,タブの同期,パスワードなども同期できるようになる予定です。

プラグイン

GoogleやMozillaを中心として,ブラウザの内蔵プラグインをより安全に拡張しようというプロジェクトが進行中で,その成果としてPepperと呼ばれるプラットフォームが登場しました。

Flashを内蔵

PepperをベースとしてFlashプラグインをChrome内部に持つようになりました。Chromeがアップデートされれば,同時にFlash Playerも更新されるのでユーザーがFlash Playerのアップデートする必要はなくなり,同時にFlashの安全性が向上しました※1⁠。

※1

Chrome 5では内蔵されたFlashはデフォルトでは無効になりました。起動オプションで --enable-internal-flash と指定することで有効になります。

プラグインの選択

about:plugins を開くとChromeが認識しているプラグインが表示されますが,ここで任意のプラグインを無効化することが可能になりました。例えば,デバッグ版のFlash Playerを使いたいといった場合は,内蔵のFlash Playerを無効化する,といったことが可能です。

ECMAScript 5サポート

ChromeのJavaScriptエンジンであるV8はECMAScript 5を積極的に実装しています。以下,Chrome 5で新たにサポートするECMAScript APIを紹介します。

Object.getPrototypeOf

引数に渡したオブジェクトのprototypeを取得する。一部のブラウザ(といっても実質IE以外)で実装されている __proto__ に相当します。

Object.getOwnPropertyNames

Object.keysと似ていますが,getOwnPropertyNamesは本来なら列挙されないプロパティ(配列のlengthなど)も取得できます。

Object.create

prototypeを指定して新しいオブジェクトを作るメソッドです。

ECMAScript 5ではオブジェクトのプロパティに対して,writable,enumerable,configurableという属性が追加されました。

writableはそのプロパティの値を書き換え可能であるか,enumerableはそのプロパティがfor inループで列挙されるかどうか,configurableはこれらの属性を書き換え可能であるかをそれぞれ真偽値で設定します。また,value,writableの代わりにget,setのAccessorを定義することも可能です。

Object.create

var nullObject = Object.create(null);
console.log(Object.getPrototypeOf(nullObject));
// null

prototypeにnullを指定することでtoStringすら持たないオブジェクトを作ることができます。

Object.createと属性

object = Object.create(Object.prototype,{
  a:{
    value:1,
    writable:false,
    enumerable:false,
    configurable:false
  }
});
object.a = 10;
object.b = 10;
// aへの書き込みは許可されていない
console.log(object.a); // 1
console.log(Object.keys(object));// ["b"]
// bのみ列挙される
console.log(Object.getOwnPropertyNames(object));
// ["b","a"]
Object.defineProperty,Object.defineProperties

既に存在しているオブジェクトに属性付きプロパティを定義できるメソッドです。prototypeを(比較的)安全に拡張することができます。

Object.defineProperty

if(Object.defineProperty&&!NodeList.prototype.map){
  Object.defineProperty(NodeList.prototype, 'map',{
    value : (function(map){
      return function(func,that){
        return map.call(this, func, that);
    }})(Array.prototype.map),
    writable : true,
    enumerable : false,
    configurable : false
  });
}
document.querySelectorAll('a[rel="next"]').map(
function(a){
  return a.host;
}); // ["gihyo.jp", "gihyo.jp"]

Chrome 6の計画

いつリリースになるかは明らかではありませんが,既に実装が進んでいる機能も多数あります。特に実装が進んでいて試すことができるものを中心にいくつか見ていきたいと思います。

なお,Chrome 6を(自己責任の元で)試すには,開発版のGoogle Chromeをインストールするか,最新のChromiumをインストールする必要があります。またChromeは実験的な機能などを起動オプションを指定することで利用可能にするという方法を取っています。Windowsの場合,ショートカットのプロパティを編集して起動オプションを指定する方法が比較的手軽です。

Aero Peek

Aero PeekはWindows 7の機能であり,タスクバーのアイコンにフォーカスした際にタブのサムネイルを表示します。

図1 Aero Peek

図1 Aero Peek

当初はもっと早い段階でリリースされる予定でしたが,タブをいくつも開いていた場合の表示などに問題があるため,この機能のリリースが延期されました。現在はいくつかのタブをまとめるなど表示方法を検討中です。こちらは起動オプションで --enable-aero-peek-tabs を指定することで実際に試すことができます。

アプリケーションランチャー

こちらはChrome OSを見据えた機能の一つと思われるもので,Chromeの新規タブページにアプリケーションへのショートカットを表示します。また,新規タブページ自体もタブというよりもポップアップに近い形で表示することも可能です。

図2 App Launcher

図2 App Launcher

このApp Launcherを試すには以下の起動オプションを指定します。最近の変更でオプションが変更されているのでご注意ください。

App Launcherの起動オプション

# Revision 47104以前
 --app-launcher-new-tab --enable-extension-apps
# Revision 47104以降
 --apps-panel --enable-apps --apps-debug

このアプリの登録方法は拡張機能とほぼ同じです。Chromeのインストールフォルダ内にサンプルが用意されており,そこから読み込むことができます。

サンプルのパス(Windows7の場合)

C:\Users\shogo\AppData\Local\Google\Chrome\Application\6.0.401.1\Resources\gmail_app

図3 App Panel, App Tab, App Windowの表示

図3 App Panel, App Tab, App Windowの表示

このように,起動したアプリはOmniboxが省略され,よりシンプルなインターフェースになっています(注:現時点での実装がこうなっているだけで,この仕様で確定しているわけではありません⁠⁠。

現在はアプリの登録に数手間かかってしまいますが,将来的には簡単に登録できるようになると思われます。

拡張用Experimental API

Chrome拡張の実験的な新機能として,experimental APIが提供されています。

こちらは起動オプションで --enable-experimental-extension-apis と指定することで利用可能になります。APIを利用する拡張を使うユーザーが個々にこの指定をしなければいけないので,Experimental APIを使った拡張を配布することは現実的ではありませんが,コンテキストメニュークリップボードのAPIなど魅力的な機能が提供されています。

まとめ

今回紹介したもの以外にも,縦置きタブや,Cookie API,ダウンロードAPIなどなど,様々な機能が着々と実装されてきています。この機会に最新のChromeをお試しいただいて,Chromium Projectへフィードバックされてみてはいかがでしょうか?

著者プロフィール

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

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

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

バックナンバー

01

  • Google Chrome 5の新機能とChrome 6の計画