API のサポート終了と削除(Chrome 57)

ジョー・メドレー
Joe Medley

Chrome のほぼすべてのバージョンで、プロダクト、パフォーマンス、ウェブ プラットフォームの機能に関して、多数の更新と改善が行われています。この記事では、Chrome 57(2 月上旬の時点でベータ版)のサポート終了と削除について説明します。このリストは随時変更される可能性があります。

BluetoothDevice.uuids 属性を削除

現在の仕様に Web Bluetooth API を準拠させるため、BluetoothDevice.uuids 属性は削除されます。許可されたすべての GATT サービスを取得するには、device.getPrimaryServices() を呼び出します。

Chromium のバグ

鍵生成要素を削除

Chrome 49 以降、<keygen> のデフォルトの動作では、このページに権限が付与されていない限り、空の文字列が返されます。IE/Edge は <keygen> をサポートしておらず、<keygen> をサポートするパブリック シグナルも示していません。Firefox はすでにユーザー操作の背後で <keygen> を制限していますが、削除を公に支援しています。Safari は <keygen> を出荷しており、サポートの継続に関する公表は公開されていません。Chrome 57 では、この要素は削除されます。

削除の目的 | Chromestatus Tracker | Chromium のバグ

プレフィックス付きのリソース時間バッファ管理 API を削除

webkitClearResourceTimings()webkitSetResourceTimingBufferSize()onwebkitresourcetimingbufferfull の 2 つのメソッドとイベント ハンドラは廃止され、ベンダー固有です。これらの API の標準バージョンは Chrome 46 以降でサポートされており、プレフィックス付きの関数もこのバージョンで非推奨になりました。これらの機能は元々 WebKit に実装されていましたが、Safari では有効になっていません。Firefox、IE 10 以降、Edge では、プレフィックスのないバージョンの API しかありません。そのため、Webkit バージョンは削除されます。

削除の目的 | Chromestatus Tracker | Chromium のバグ

ServiceWorkerMessageEvent を削除し、MessageEvent の使用を優先

HTML 仕様では MessageEvent を拡張し、ServiceWorkersource 属性のタイプとして使用できるようにしています。client.postMessage() とカスタム メッセージ イベントの作成は、ServiceWorkerMessageEvent ではなく MessageEvent を使用するように変更されます。ServiceWorkerMessageEvent が削除されました。

削除の目的 | Chromestatus Tracker | Chromium のバグ

webkit で始まる IndexedDB グローバル エイリアスを削除する

IndexedDB エントリ ポイントとグローバル コンストラクタは、Chrome 11 前後に webkit プレフィックスを付けて公開されていました。プレフィックスなしバージョンは Chrome 24 で追加され、プレフィックス付きバージョンは Chrome 38 でサポートが終了しました。影響を受けるインターフェースは次のとおりです。

  • webkitIndexedDB(メインのエントリ ポイント)
  • webkitIDBKeyRange(非呼び出し可能グローバル コンストラクタ。ただし、便利な静的メソッドがあります)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction(非呼び出し可能グローバル コンストラクタ)

削除の目的 | Chromestatus Tracker | Chromium のバグ

WebAudio: 接頭辞 AudioContext と OfflineAudioContext を削除

Chrome では、2011 年半ばから AudioContext を含め、WebAudio をサポートしています。OfflineAudioContext は翌年に追加されました。標準インターフェースのサポート期間と、プレフィックス付きの機能を削除するという Google の長期的な目標を考慮し、これらのインターフェースのプレフィックス付きのバージョンは 2014 年後半に非推奨となり、現在削除されています。

削除の目的 | Chromestatus Tracker | Chromium のバグ

webkitCancelRequestAnimationFrame のサポート終了と削除

webkitCancelRequestAnimationFrame() メソッドはベンダー固有の古い API であり、標準の cancelAnimationFrame() は Chromium で以前からサポートされてきました。そのため、Webkit バージョンは削除されます。

削除の目的 | Chromestatus Tracker | Chromium のバグ

usemap 属性で大文字と小文字を区別しない一致を非推奨にしました

usemap 属性は、以前は(大文字と小文字を区別しない)と定義されていました。残念ながら、これを実装する方法は複雑であるため、どのブラウザでも正しく実装することができませんでした。調査によると、このような複雑なアルゴリズムは不要で、ASCII の大文字と小文字を区別しない一致も不要です。

そのため、大文字と小文字を区別する一致が適用されるように仕様が更新されました。Chrome 57 で以前の動作のサポートが終了し、Chrome 58 で削除される予定です。

削除の目的 | Chromestatus Tracker | Chromium のバグ

Service Worker での FileReaderSync のサポート終了

Service Worker の仕様では、Service Worker のブロックを回避するため、「Service Worker 内でどのタイプの同期リクエストも開始してはならない」という記述が(非規範的)なものとなっていました。Service Worker をブロックすると、制御対象ページからのすべてのネットワーク リクエストがブロックされます。残念ながら、FileReaderSync API は Service Worker では以前から利用されていました。

現在、Service Worker で FileReaderSync を公開するのは Firefox と Chrome のみです。仕様に関するディスカッションにおいて、Firefox からは修正が必要であるという合意があります。Chrome 59 で削除される予定です。

削除の目的 | Chromestatus Tracker | Chromium のバグ

HTMLEmbedElement と HTMLObjectElement の以前の呼び出し元のサポート終了

以前の呼び出し元があるインターフェースは、インスタンスを関数として呼び出すことができます。現在、この機能は HTMLEmbedElementHTMLObjectElement がサポートしています。Chrome 57 では、この機能のサポートは終了しています。削除後(Chrome 58 で想定される動作)、呼び出しは例外をスローします。

この変更により、Chrome は最近の仕様変更に合わせることができます。従来の動作は Edge と Safari ではサポートされていないため、Firefox では削除される予定です。

削除の目的 | Chromestatus Tracker | Chromium のバグ

「 trade」の RTCRtcpMuxPolicy のサポートを終了

rtcpMuxPolicy は、Chrome が RTP/RTCP 多重化の使用に関する優先ポリシーを指定するために使用します。Chrome 57 では、次の理由から、デフォルトの rtcpMuxPolicy が「require」に変更され、「agency」が非推奨になりました。

  • 多重化されていない RTCP は追加のネットワーク リソースを使用します。
  • 「discuss」を削除すると、「RtpSender」/「RtpReceiver」は 1 つのトランスポートしか持たなくなるため、API サーフェスがシンプルになります。

Chrome 57 では、「交渉」は非推奨となりました。ユーザーにサポート終了に関するメッセージが表示され、RTCPeerConnection は引き続き作成できるため、これは互換性を破る変更ではないと考えられます。削除は Chrome 63 で行われます。

サポート終了の予告 | Chromium のバグ

サブリソース リクエストへの埋め込み認証情報のサポート終了

認証情報をサブリソース リクエストにハードコードすると、ハッカーが過去に認証情報をブルート フォースに乗っ取った場合があるため、セキュリティの観点から問題があります。これらの危険は、内部 IP 範囲(ルーターなど)に到達する認証済みのサブリソース リクエストに対して悪化します。使用頻度が少ないことを考慮すると、この(小さな)セキュリティ ホールを閉鎖することは非常に合理的です。

デベロッパーは、Cookie やその他のセッション管理メカニズムを使用して、基本認証/ダイジェスト認証を必要としないリソースを埋め込むことができます。

削除の目的 | Chromestatus Tracker | Chromium のバグ