[この記事は John Mellor、Michael van Ouwerkerk と ‘appiest Software Engineers による Chromium Blog の記事 "Chrome 42 Beta: Push Notifications, Promoting Add to Home Screen and ES6 Classes" を元に、北村が翻訳・加筆したものです。詳しくは元記事をご覧ください。]

最新の Chrome ベータ版チャンネル リリースでは、ES6 クラスのサポートなど複数の新しい機能が含まれており、さらに迫力のあるウェブ アプリケーションの作成をサポートします。明記されていないかぎり、下記の変更は Android、Windows、Mac、Linux、Chrome OS、それぞれに対応する Chrome に適用されます。

プッシュ通知

この機能によって、ページが閉じられた後でもユーザーへの通知をプッシュできるようになります。もちろん、ユーザーが明示的に許可した場合にかぎります。新しい Push API では、Google Cloud Messaging を使ってデベロッパーがリモートで Service Worker を起動することができます。起動したら Service Worker は任意の JavaScript を実行することができます。ただしこのリリースでは、少なくともユーザーが見られる通知を表示する必要があります。


[ホーム画面に追加] のおすすめ

Chrome 32 から Android ユーザー向けに、新しいメニューアイテムを使ってお気に入りのウェブサイトのショートカットをホーム画面に追加する機能が導入されました。今回のリリースでは、高品質のウェブ アプリを頻繁に使用しているユーザーに対してバナーを表示し、タップ 1 回でそのサイトをホーム画面に追加できるようになります。


この新しい機能を活用するには、そのサイトがホーム画面から起動した際にユーザーに適切なエクスペリエンスを提供している必要があります。この基準は今後、デベロッパーやユーザーからのフィードバックに基づき随時更新されていきますが、現時点では、ウェブ アプリ マニフェストを用意すること、すべてのコンテンツで HTTPS が使用されること、Service Worker を使って少なくとも一部の機能がオフラインでも動作することが挙げられます。

ES6 Class

JavaScript の prototype ベースの継承に対応することは簡単ではありません。また、多くのライブラリでクラスをエミュレートする独自のパターンが導入されていますが、JavaScript 自体はネイティブでクラスを記述する方法を提供していません。
ES6 class では、JavaScript に標準化された class 構文を提供し、この問題を解決しています。新しい構文は Chrome 42 から、strict モードで書かれた JavaScript で使用可能になります。

'use strict';

class Polygon {
    constructor(height, width) {
        this.name = 'Polygon';
        this.height = height;
        this.width = width;
    }

    sayName() {
        log('Hi, I am a ', this.name + '.');
    }
}

let p = new Polygon(300, 400);

その他のアップデート

  • デベロッパー ツールで cubic bezier 関数を視覚的に編集できるようになり、簡単にアニメーションの動きを理解して変更できるようになります。
  • AJAX リクエストに、Promise ベースの新しい標準仕様を備えた Fetch API を、Window コンテキスト、Shared Worker、Dedicated Workers で使用できるようになりました。
  • OfflineAudioContext インスタンスの startRendering メソッドが、Promise を返すようになりました。これによって、オーディオのレンダリングが終了したときに Promise が resolve され、Web Audio API.を使って動作するウェブ アプリのデザインを、よりシンプルにすることができます。
  • AudioBufferSourceNode.buffer は 2 回以上セットできなくなりました。これにより、新しい source が始まる際に制御不能に陥る事態を避けることができます。
  • ChromeOS で screen.orientation がサポートされ、デバイスの傾きが大きく変化した際、DeviceOrientationEvent を発火するようになりました。
  • このリリースには、Encrypted Media Extensions のプレフィックスがつかない最新版の実装が含まれています。これでメディア サイトが著作権管理システムを探してやり取りすることができるようになります。
  • 新しいコンテンツ設定を利用することで、主要でないプラグインを電力消費を抑えるために自動的に停止できるようになります。デベロッパーはこの機能をオンにして、コンテンツに応じてどのように作用するかをテストできます。
いつものように chromestatus.com/features で Chrome のデベロッパー機能の概要を確認してください。また、さらに頻繁なアップデートが必要な場合は、+Google Chrome Developers のサークルをご確認ください。

Posted by Eiji Kitamura - Developer Relations Team