GoogleはChrome 51をローンチした。Intersection Observer,Credential Management APIなどによるアップグレードの他,多数のセキュリティ修正が含まれる。
51安定版リリースの新機能であるIntersection Observer APIについて,同社ソフトウェアエンジニアのAlexander Surma氏は,簡単に言うと”IntersectionObserver
が,オブザーバエレメントがブラウザのビューポートに入るか,あるいは出たことを知らせてくれるもの”だ,と説明している。
開発者にとってこれは,エレメント追跡が必要な場合の問題点の解決策となるものだ,従来型のアプローチであるgetBoundingClientRect
の呼び出しでは,Surma氏の言葉を借りれば,動作が”痛々しいほど遅かった”。
氏は次のような例をあげている。
var io = new IntersectionObserver(
entries => {
console.log(entries);
},
{
/* Using default options. Details below */
}
);
// Start observing an element
io.observe(element);
// Stop observing an element
// io.unobserve(element);
// Disable entire IntersectionObserver
// io.disconnect();
“IntersectionObserver
のデフォルトオプションを使えば,要素の一部がビューに入った時とビューポートから完全に出た時の両方で,コールバックがコールされます”,と氏は説明している。
しかし,これでは必ずしも十分ではない,とSurma氏はいう。そのため,intersectionRatio
しきい値を定義するthreshold
オプションが用意されている。IntersectionObserver
に関する詳細については,https://developers.google.com/web/updates/2016/04/intersectionobserverを参照されたい。
最新の安定版リリースの,もうひとつの新機能がCrendetrial Management APIだ。このAPIでは,パスワード資格情報の格納,取得,連結という3つの機能を提供する。
navigator.credentials.get()
– ユーザの資格情報を取得し,サインイン操作を開始する。navigator.credentials.store()
– 資格証明マネージャに資格情報を保存する。navigator.credentials.requireUserMediation()
– 自動サインインを無効にする。
デベロッパアドボケートのEiji Kitamura氏は,“Streamlining the Sign-in Flow Using Credential Management API”と題したブログ記事でこのAPIを取り上げて,ワンタップでのサインイン,ユーザが使用したフェデレーションアカウントの記録,セッション期限が切れた場合の復帰が可能になる,と説明している。
Chromeの実装では,資格情報はChromeのパスワードマネージャに保管されます。ユーザがChromeにサインインすれば,デバイス間でのパスワード同期が可能になります。このようにして同期されたパスワードは,AndroidのSmartLock for Password APIに統合されたAndroidアプリでも利用可能なので,シームレスなクロスプラットフォーム・エクスペリエンスが実現されます。
Kitamura氏は,Credential Management APIのWebサイトでの使用方法はそのアーキテクチャによって異なるため,すべてのユースケースをひとつのブログ記事で紹介するのは不可能に近い,と前置きした上で,典型的な単一ページアプリについて説明している。APIのデモがこちらに, APIの完全な詳細は https://developers.google.com/web/updates/2016/04/credential-management-apiに,それぞれ提供されている。
Kitamura氏はさらに,資格情報管理に関するFAQにも回答している。
Webサイト上のJavaScriptで生のパスワードを取得することは可能ですか?
いいえ,パスワードはPasswordCredential
の一部としてのみ取得が可能です。その内容を確認する手段はありません。Credential Management APIで使用するIDとして,3桁の数字を格納することは可能ですか?
現時点ではできません。仕様に対するフィードバックに感謝します。Iframe内でCredential Management APIを使用できますか?
APIの利用はトップレベルのコンテキストに制限されています。iframe内で.get()
あるいは.store()
をコールすれば,影響を与えることなく問題をすぐに解決できます。独自のパスワード管理用ChromeエクステンションをCredential Management APIに統合することは可能ですか?
navigator.credentials
をオーバーライドすれば,自身のChromeエクステンションで資格情報のget()
あるいはstore()
を行なうことができます。
GoogleのQAエンジニアであるKrishna Govind氏が”Stable Channel Update”に記したところによれば,Chrome 51リリースでは“多数の修正や改善も行なわれている”。42件の独立したセキュリティフィックス中,クロスオリジンのバイパスに関連する問題(CVE-2016-1672からCVE-2016-1676まで)を含む9件が“高”として記載されている。
GoogleデベロッパアドボケートのPete LePage氏によるリリースの概要紹介がこちらにある – https://youtu.be/LXbtIeHIQJA。
この記事を評価
- 編集者評
- 編集長アクション