recursal/MDN huggingface dataset:
TextEncoderStream
=================

**`TextEncoderStream`** はエンコーディング API のインターフェイスで、文字列のストリームを UTF-8 エンコーディングのバイト列に変換します。これは `TextEncoder` と同等のストリームです。

コンストラクター
--------

`TextEncoderStream()`

新しい `TextEncoderStream` オブジェクトを作成します。

インスタンスプロパティ
-----------

`TextEncoderStream.encoding` 読取専用 

常に "`utf-8`" を返します。

`TextEncoderStream.readable` 読取専用 

このオブジェクトが制御する `ReadableStream` インスタンスを返します。

`TextEncoderStream.writable` 読取専用 

このオブジェクトが制御する `WritableStream` インスタンスを返します。

例
-

* 構造化データと HTML のストリーミングの例
* `TextEncoderStream` を使用してデータをアップロードするフェッチリクエストストリームの例.
仕様書
---

| Specification |
| --- |
| Encoding Standard # interface-textencoderstream |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `TextDecoderStream`
* ストリーム API の概念
* Experimenting with the Streams API
NetworkInformation
==================

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`NetworkInformation`** はネットワーク情報 API のインターフェイスで、端末がネットワークとの通信に使用している接続に関する情報を提供し、接続の種類が変更された場合にスクリプトに通知するための手段を提供します。
 `NetworkInformation` インターフェイスはインスタンスを生成できません。代わりに、`Navigator` インターフェイスの `connection` プロパティを通してアクセスします。

**注:** この機能は Web Worker 内で利用可能です

EventTarget

NetworkInformationインスタンスプロパティ
-----------

*このインターフェイスは、親である `EventTarget` のプロパティも継承しています。*

`NetworkInformation.downlink` 読取専用  
Experimental

実効帯域幅の推定値をメガビット毎秒で返します。 25 キロビット毎秒の最も近い倍数に丸められた値です。

`NetworkInformation.downlinkMax` 読取専用  
Experimental

基盤となる接続技術の下りの最大速度を、メガビット毎秒 (Mbps) 単位で返します。

`NetworkInformation.effectiveType` 読取専用  
Experimental

'slow-2g', '2g', '3g', '4g' のいずれかを意味する接続の有効な種類を返します。この値は、最近観測されたラウンドトリップ時間とダウンリンク値の組合せを使用して決定されます。

`NetworkInformation.rtt` 読取専用  
Experimental

推定有効ラウンドトリップ時間を、 25 ミリ秒の倍数に丸めた値で返します。

`NetworkInformation.saveData` 読取専用  
Experimental

ユーザーがユーザーエージェントにデータ使用量の削減オプションを設定している場合、 `true` を返します。

`NetworkInformation.type` 読取専用  
Experimental

端末がネットワーク通信に使用している接続の種類を返します。値は次のうちのいずれかです。

* `bluetooth`
* `cellular`
* `ethernet`
* `none`
* `wifi`
* `wimax`
* `other`
* `unknown`

インスタンスメソッド
----------

*このインターフェイスは、親である `EventTarget` のメソッドを継承しています。*

### イベント

`change` 
Experimental

接続情報が変更されたときに発行されるイベントです。

仕様書
---

| Specification |
| --- |
| Network Information API # networkinformation-interface |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連項目
----

* オンライン／オフラインイベント
Keyboard
========

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**安全なコンテキスト用:** この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

**`Keyboard`** はキーボード API のインターフェイスで、キーボードレイアウトマップを取得し、物理キーボードからのキー押下のキャプチャを切り替える関数を提供します。
 有効なコード値のリストは UI Events KeyboardEvent code Values 仕様にあります。

EventTarget

Keyboardインスタンスプロパティ
-----------

なし。

インスタンスメソッド
----------

`Keyboard.getLayoutMap()` 
Experimental

特定の物理キーに関連付けられた文字列を取得するための関数を持つ、マップ風のオブジェクトである `KeyboardLayoutMap` のインスタンスに解決するプロミス (`Promise`) を返します。

`Keyboard.lock()` 
Experimental

物理キーボード上の任意のキーまたはすべてのキーのキー押下のキャプチャを有効にした後、 `Promise` を返します。

`Keyboard.unlock()` 
Experimental

`lock()`メソッドでキャプチャしたすべてのキーのロックを解除し、同期的に返します。

例
-

次の例は、英語の QWERTY キーボードの 'W' キーに対応するキーに関連付けられた、場所またはレイアウト固有の文字列を取得する方法を示しています。


```js
if (navigator.keyboard) {
  const keyboard = navigator.keyboard;
  keyboard.getLayoutMap().then((keyboardLayoutMap) => {
    const upKey = keyboardLayoutMap.get("KeyW");
    window.alert(`Press ${upKey} to move up.`);
  });
} else {
  // Do something else.
}
```

仕様書
---

| Specification |
| --- |
| Keyboard Map # keyboard-interface |
| Keyboard Lock # keyboard-interface |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
XPathException
==============

**非推奨:** この機能は非推奨になりました。まだ対応しているブラウザーがあるかもしれませんが、すでに関連するウェブ標準から削除されているか、削除の手続き中であるか、互換性のためだけに残されている可能性があります。使用を避け、できれば既存のコードは更新してください。このページの下部にある互換性一覧表を見て判断してください。この機能は突然動作しなくなる可能性があることに注意してください。

DOM XPath API において、 **XPathException`** インターフェイスは XPath の演算処理中に遭遇する例外条件を表します。

インスタンスプロパティ
-----------

`XPathException.code` 読取専用 

エラーコード定数のうちのいずれかの入った `short` を返します。

定数
--

| 定数 | 値 | 説明 |
| --- | --- | --- |
| `INVALID_EXPRESSION_ERR` | `51` | 構文エラーがあるなど、特定の `XPathEvaluator` (en-US) の規則に従った正当な式でない場合、またはこの実装では対応していない特殊な拡張関数や変数を格納している場合。 |
| `TYPE_ERR` | `52` | 指定した型を返すように式を変換できない場合。 |

仕様書
---

#### No specification found

No specification data found for `api.XPathException`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Document.createExpression()`
* `XPathExpression`
MessagePort
===========

Channel Messaging API の **`MessagePort`** インターフェースは、`MessageChannel` の 2 つのポートの一方を表し、片方のポートから送信されるメッセージをもう片方のポートで受信待機できます。

**注:** この機能は Web Worker 内で利用可能です

メソッド
----

*親である `EventTarget` からのメソッドを継承します。*

`MessagePort.postMessage`

ポートからメッセージを送信します。また、任意でオブジェクトの所有権を他のブラウジングコンテキストへ転送します。

`MessagePort.start`

ポート上で順番待ちのメッセージの送信を開始します。(`EventTarget.addEventListener` を使用する場合のみ必要です。`MessagePort.onmessage` を使用する場合は暗黙に実行されます。)

`MessagePort.close`

ポートとの接続を切断し、このポートはアクティブではなくなります。

イベントハンドラ
--------

*親である `EventTarget` からのイベントハンドラを継承します。*

`MessagePort.onmessage`

これは、`message` 型の `MessageEvent` がポート上で発動した時に呼び出される `EventListener` です。つまり、ポートがメッセージを受信した時に呼び出されます。

`MessagePort.onmessageerror`

ポートで `messageerror` 型の `MessageEvent` が発火すると呼び出されます。つまり、デシリアライズできないメッセージを受け取ったときです。

例
-

次のコードブロックには、`MessageChannel.MessageChannel` コンストラクタで作成された新しいチャンネルがあります。

Iframe が読み込まれると、`MessageChannel.port1` に `onmessage` ハンドラーを登録し、メッセージと共に `window.postMessage` を使用して IFrame に `MessageChannel.port2` を送信します。

IFrame からメッセージが返却されると。`onMessage` 関数でメッセージをパラグラフに出力します。
```

var channel = new MessageChannel();
var output = document.querySelector('.output');
var iframe = document.querySelector('iframe');

// Wait for the iframe to load
iframe.addEventListener("load", onLoad);

function onLoad() {
  // Listen for messages on port1
  channel.port1.onmessage = onMessage;

  // Transfer port2 to the iframe
  iframe.contentWindow.postMessage('Hello from the main page!', '*', [channel.port2]);
}

// Handle messages received on port1
function onMessage(e) {
  output.innerHTML = e.data;
}
```


完全に動作する例は、Github 上の channel messaging basic demo を参照してください (実際のデモも実行できます)。

仕様
--

| Specification |
| --- |
| HTML Standard # message-ports |

ブラウザの実装状況
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* Using channel messaging
CSSSkew
=======

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`CSSSkew`** は CSS 型付きオブジェクトモデルのインターフェイスで、 `CSSTransformValue` インターフェイスの一部です。これは CSS における個々の `transform` プロパティの `skew()` の値を表します。

CSSTransformComponent

CSSSkewコンストラクター
--------

`CSSSkew()` 
Experimental

新しい `CSSSkew` オブジェクトを作成します。

インスタンスプロパティ
-----------

`ax` 
Experimental

X 軸の値を返したり設定したりします。

`ay` 
Experimental

Y 軸の値を返したり設定したりします。

例
-

To Do

仕様書
---

| Specification |
| --- |
| CSS Typed OM Level 1 # cssskew |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
CSS
===

**`CSS`** インターフェイス は CSS に関連した便利なメソッドを持っています。このインターフェイスにはオブジェクトは実装されていません。静的メソッドのみがあり、実用的なインターフェイスになっています。

### 静的プロパティ

`CSS.highlights` 
Experimental

`HighlightRegistry` へのアクセスを提供します。これは任意のテキスト範囲を CSS Custom Highlight API (en-US) を使用してスタイル設定するために使用するものです。

`CSS.paintWorklet` 
Experimental
 安全なコンテキスト用

描画に関するすべてのクラスを担当するワークレットへのアクセスを提供します。

メソッド
----

*CSS インターフェイスはユーティリティインターフェイスです。この型のオブジェクトは作成できません。静的メソッドのみが定義されています。*

### 静的メソッド

*継承している静的メソッドはありません。*

`CSS.registerProperty()`

`カスタムプロパティ`を登録し、プロパティ型のチェック、既定値、値の継承の有無を指定します。

`CSS.supports()`

引数で与えられた*プロパティと値*の組や条件に対応しているかどうかを示す論理値を返します。

`CSS.escape()`

主に CSS セレクターの一部として使用するための文字列をエスケープするのに使用できます。

`CSS ファクトリー関数`

使用したファクトリー関数のメソッドの名前を単位としてパラメーターの数値の値を持つ新しい `CSSUnitValue` (en-US) を返すために使用できます。


```js
CSS.em(3); // CSSUnitValue {value: 3, unit: "em"}
```


インスタンスメソッド
----------

*CSS インターフェイスはユーティリティインターフェイスです。この型のオブジェクトは作成できません。静的プロパティのみが定義されています。*

仕様書
---

| Specification |
| --- |
| CSS Object Model (CSSOM) # namespacedef-css |
| CSS Properties and Values API Level 1  |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
WebSocket
=========

`WebSocket` オブジェクトは、サーバーへの WebSocket 接続の作成と管理、および接続上のデータの送受信に使用する API を提供します。

`WebSocket` を構築するには、 `WebSocket()` コンストラクターを使用してください。

**注:** この機能は Web Worker 内で利用可能です

EventTarget

WebSocketコンストラクター
--------

`WebSocket()`

新しく作成された `WebSocket` オブジェクトを返します。

インスタンスプロパティ
-----------

`WebSocket.binaryType`

接続で使用されるバイナリデータ型。

`WebSocket.bufferedAmount` 読取専用 

キューに入れられたデータのバイト数。

`WebSocket.extensions` 読取専用 

サーバーによって選択された拡張機能。

`WebSocket.protocol` 読取専用 

サーバーによって選択されたサブプロトコル。

`WebSocket.readyState` 読取専用 

接続の現在の状態。

`WebSocket.url` 読取専用 

WebSocket の絶対 URL。

インスタンスメソッド
----------

`WebSocket.close()`

接続を閉じます。

`WebSocket.send()`

送信するデータをキューに入れます。

イベント
----

これらのイベントを待ち受けするには、 `addEventListener()` を使用するか、イベントリスナーをこのインターフェイスの `onイベント名` プロパティへ代入するかします。

`close`

`WebSocket` による接続が閉じられたときに発生します。
 `onclose` プロパティからも利用できます。


`error`

`WebSocket` による接続が、データの一部が送信できなかったなどのエラーのために閉じた時に発生します。
 `onerror` プロパティからも利用できます。


`message`

`WebSocket` を通じてデータを受信したときに発生します。
 `onmessage` プロパティからも利用できます。


`open`

`WebSocket` による接続が開いたときに発生します。
 `onopen` プロパティからも利用できます。


例
-


```js
// WebSocket 接続を作成
const socket = new WebSocket("ws://localhost:8080");

// 接続が開いたときのイベント
socket.addEventListener("open", (event) => {
  socket.send("Hello Server!");
});

// メッセージの待ち受け
socket.addEventListener("message", (event) => {
  console.log("Message from server ", event.data);
});
```

仕様書
---

| Specification |
| --- |
| WebSockets Standard # the-websocket-interface |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* WebSocket クライアントアプリケーションを書く
BarProp
=======

**`BarProp`** は `Document Object Model` のインターフェイスで、ウェブページ内のスクリプトに公開されるウェブブラウザーのユーザーインターフェイス要素を表します。以下のインターフェイス要素はそれぞれ `BarProp` オブジェクトで表します。

`Window.locationbar`

ブラウザーのロケーションバーです。

`Window.menubar`

ブラウザーのメニューバーです。

`Window.personalbar`

ブラウザーの個人バーです

`Window.scrollbars`

ブラウザーのスクロールバーです。

`Window.statusbar`

ブラウザーのステータスバーです。

`Window.toolbar`

ブラウザーのツールバーです。

`BarProp` インターフェイスは直接アクセスするのではなく、これらの要素のいずれかを介してアクセスします。

インスタンスプロパティ
-----------

`BarProp.visible` 読取専用 

`Boolean` で、用いるインターフェイス要素で表すバーが可視であれば真になります。

例
-

次の例は、ロケーションバーを表す `BarProp` オブジェクトをコンソールに出力します。


```js
console.log(window.locationbar);
```

仕様書
---

| Specification |
| --- |
| HTML Standard # barprop |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
NavigatorUAData
===============

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`NavigatorUAData`** はユーザーエージェントクライアントヒント API のインターフェイスで、ユーザーのブラウザーとオペレーティングシステムに関する情報を返します。

このオブジェクトのインスタンスは `Navigator.userAgentData` を呼び出すことによって返されます。そのため、このインターフェイスにはコンストラクターはありません。

**メモ:** 「高エントロピー」と「低エントロピー」という用語は、これらの値がブラウザーについて明らかにする情報の量を参照しています。プロパティとして返される値は、低エントロピーであり、ユーザーを特定する可能性が低いと判断されます。 `NavigatorUAData.getHighEntropyValues()` によって返される値は、より多くの情報を明らかにする可能性があります。そのため、これらの値は `Promise` によって取得され、ブラウザーがユーザーの許可を要求したり、他のチェックを行ったりするための時間を確保することができます。

インスタンスプロパティ
-----------

`NavigatorUAData.brands` 読取専用  
Experimental

ブラウザー名とバージョンを格納したブランド情報の配列を返します。

`NavigatorUAData.mobile` 読取専用  
Experimental

ユーザーエージェントがモバイル端末で動作している場合は `true` を返します。

`NavigatorUAData.platform` 読取専用  
Experimental

ユーザーエージェントが動作しているプラットフォームのブランドを返します。

インスタンスメソッド
----------

`NavigatorUAData.getHighEntropyValues()` 
Experimental

ユーザーエージェントが返す高エントロピー値を格納した辞書オブジェクトで解決する `Promise` を返します。

`NavigatorUAData.toJSON()` 
Experimental

`NavigatorUAData` オブジェクトの低エントロピープロパティの JSON 表現を返すシリアライザーです。

例
-

### ブランド名の取得

以下の例は、 `NavigatorUAData.brands` の値をコンソールに表示するものです。


```js
console.log(navigator.userAgentData.brands);
```

### 高エントロピー値の返却

以下の値では、 `NavigatorUAData.getHighEntropyValues()` メソッドを使用して、多くのヒントをリクエストしています。プロミスが解決すると、この情報がコンソールに表示されます。


```js
navigator.userAgentData
  .getHighEntropyValues([
    "architecture",
    "model",
    "platform",
    "platformVersion",
    "fullVersionList",
  ])
  .then((ua) => {
    console.log(ua);
  });
```

仕様書
---

| Specification |
| --- |
| User-Agent Client Hints # navigatoruadata |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* Improving user privacy and developer experience with User-Agent Client Hints
SharedWorker
============

**`SharedWorker`** インターフェイスは、ウィンドウ、iframe、ワーカーなど複数の閲覧コンテキストからアクセスできる、特定の種類のワーカーを表します。これらは専用ワーカーとは異なるインターフェイスを実装しており、異なるグローバルコンテキストである `SharedWorkerGlobalScope` を持ちます。

**メモ:** SharedWorkerが複数の閲覧コンテキストからアクセスできる場合、それらの閲覧コンテキストはすべて、まったく同じオリジン（同じプロトコル、ホスト、ポート）を共有している必要があります。

EventTarget

SharedWorkerコンストラクター
--------

`SharedWorker()`

指定された URL のスクリプトを実行する共有ウェブワーカーを作成します。

インスタンスプロパティ
-----------

*`EventTarget` のプロパティを継承しています。*

`SharedWorker.port` 読取専用 

共有ワーカーとの通信および制御に使用される `MessagePort` オブジェクトを返します。

イベント
----

`error`

共有ワーカーでエラーが発生したときに発行されます。

メソッド
----

*`EventTarget` のメソッドを継承しています。*

例
-

基本的な共有ワーカーの例（共有ワーカーを実行）には 2 つの HTML ページがあり、それぞれでは JavaScript で単純な計算を行っています。異なるスクリプトが同じワーカーファイルを使用して計算を行っているため、ページが異なるウィンドウで実行されていても、どちらもアクセスすることができます。

以下のコードでは `SharedWorker` オブジェクトを、 `SharedWorker()` コンストラクターを使用して生成しています。どちらのスクリプトもこれを格納します。


```js
const myWorker = new SharedWorker("worker.js");
```


どちらのスクリプトも、`SharedWorker.port` プロパティを使用して作成された `MessagePort` オブジェクトを通してワーカーにアクセスします。addEventListener を使用して onmessage イベントが関連づけられている場合、ポートはその `start()` メソッドを使用して手動で開始されます。


```js
myWorker.port.start();
```


ポートが開始されると、どちらのスクリプトも `port.postMessage()` と `port.onmessage` を使用して、それぞれワーカーにメッセージを投稿し、ワーカーから送られたメッセージを処理します。


```js
first.onchange = () => {
  myWorker.port.postMessage([first.value, second.value]);
  console.log("Message posted to worker");
};

second.onchange = () => {
  myWorker.port.postMessage([first.value, second.value]);
  console.log("Message posted to worker");
};

myWorker.port.onmessage = (e) => {
  result1.textContent = e.data;
  console.log("Message received from worker");
};
```


ワーカー内部では `onconnect` ハンドラーを使用して、前述と同じポートに接続します。そのワーカーに関連するポートは `connect` イベントの `ports` プロパティでアクセスできます。それから `MessagePort` を使用して、ワーカーを開始します。ポートを始めるには `start()` メソッドを、メインスレッドから送られるメッセージを処理するには `onmessage` ハンドラーを使用します。


```js
onconnect = (e) => {
  const port = e.ports[0];

  port.addEventListener("message", (e) => {
    const workerResult = `Result: ${e.data[0] \* e.data[1]}`;
    port.postMessage(workerResult);
  });

  port.start(); // Required when using addEventListener. Otherwise called implicitly by onmessage setter.
};
```

仕様書
---

| Specification |
| --- |
| HTML Standard # shared-workers-and-the-sharedworker-interface |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `Worker`
PromiseRejectionEvent
=====================

**`PromiseRejectionEvent`** インターフェイスは、 JavaScript の `Promise` が拒否されたときにグローバルスクリプトコンテキストに送信されるイベントを表します。これらのイベントは、測定やデバッグ目的に使用すると特に有益です。

プロミス拒否イベントについての詳細は、プロミスの拒否イベントを参照してください。

Event

PromiseRejectionEventコンストラクター
--------

`PromiseRejectionEvent()`

`PromiseRejectionEvent` イベントを、指定されたイベントの種類（`unhandledrejection` または `rejectionhandled`）およびその他の詳細を指定して作成します。

インスタンスプロパティ
-----------

*親である `Event` のプロパティも継承しています。*

`PromiseRejectionEvent.promise` 読取専用 

拒否された JavaScript の `Promise` です。

`PromiseRejectionEvent.reason` 読取専用 

値、または `Object` で、 `Promise.reject()` に渡されたプロミスが拒否された理由を示します。

インスタンスメソッド
----------

*このインターフェイスには固有のメソッドはありません。親である `Event` からメソッドを継承しています。*

イベント
----

`rejectionhandled`

JavaScript の `Promise` が拒否され、そのプロミスの拒否ハンドラーのコードが実行された後に発生します。

`unhandledrejection`

JavaScript の `Promise` が拒否されが、その拒否を処理する拒否ハンドラーがない場合に発生します。

例
-

この単純な例は、処理されなかったプロミスの拒否を捕捉し、デバッグのためにログ出力します。


```js
window.onunhandledrejection = (e) => {
  console.log(e.reason);
};
```

仕様書
---

| Specification |
| --- |
| HTML Standard # the-promiserejectionevent-interface |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* プロミスの使用
* `Promise`
* `rejectionhandled`
* `unhandledrejection`
FileReaderSync
==============

`FileReaderSync` インターフェイスにより、`File` または `Blob` オブジェクトを同期的に読み込むことができます。

**注:** この機能は Web Worker 内で利用可能です

**警告:** このインターフェイスは、ブロックが発生する可能性がある同期 I/O を使用するため、ワーカー**でのみ**利用できます。

コンストラクター
--------

`FileReaderSync()`

新しい `FileReaderSync` オブジェクトを返します。

インスタンスプロパティ
-----------

このインターフェイスにはプロパティはありません。

インスタンスメソッド
----------

`FileReaderSync.readAsArrayBuffer()`

このメソッドは、指定された `Blob` または `File` を、入力データをバイナリー文字列として表す `ArrayBuffer` に変換します。

`FileReaderSync.readAsBinaryString()` 
非推奨

このメソッドは、指定された `Blob` または `File` を、入力データをバイナリー文字列として表す文字列に変換します。このメソッドは非推奨であり、代わりに `readAsArrayBuffer()` を使用することを検討してください。

`FileReaderSync.readAsText()`

このメソッドは、指定された `Blob` または `File` を、入力データをテキスト文字列として表す文字列に変換します。オプションの **`encoding`** 引数は、使用するエンコーディングを示します（iso-8859-1 や UTF-8 など）。これがない場合、このメソッドはエンコーディングの検出アルゴリズムを適用します。

`FileReaderSync.readAsDataURL()`

指定された `Blob` または `File` を、入力データをデータ URL として表す文字列に変換します。

仕様書
---

| Specification |
| --- |
| File API # FileReaderSync |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* `FileReader`
* `Blob`
* `File`
通知 API
======

**注:** この機能は Web Worker 内で利用可能です

**安全なコンテキスト用:** この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

通知 API を使えば、ウェブページがエンドユーザーに表示するシステム通知を制御できるようになります。これらのシステムは、最上位の閲覧コンテキストのビューポートの外にあるため、ユーザーがタブを切り替えたり、別のアプリに移動していても表示されます。また、この API は既存の通知システムと互換性を持つように設計されているので、異なるプラットフォームでも動作します。

概要と使い方
------

対応済みのプラットフォームでは、システム通知を表示するには、一般的に 2 つのことが必要です。まず、ユーザーが現在のオリジンに対してシステム通知を表示する許可を与える必要があります。これは一般的にアプリやサイトが初期化されたとき、 `Notification.requestPermission()` を使用して行われます。これは、例えばボタンをクリックするなど、ユーザーの操作に反応して行う必要があります。


```js
btn.addEventListener("click", function () {
  let promise = Notification.requestPermission();
  // wait for permission
});
```


これはベストプラクティスで、ユーザーが同意していない通知でユーザーに迷惑をかけるべきではありません。しかし、今後ブラウザーはユーザーの操作から起動されていない通知を明示的に拒否するようになるでしょう。例えば、 Firefox はバージョン 72 からすでにこれを行っています。

これは以下のようにリクエストダイアログを起動します。

![](/ja/docs/Web/API/Notifications_API/screen_shot_2019-12-11_at_9.59.14_am.png)

ここでは、ユーザーはこのオリジンからの通知を許可するかどうかを選択できます。一度決定がなされると、現在のセッションの間はその設定が保存されます。

**メモ:** Firefox 44 からは、通知とプッシュ通知の許可が統合されました。通知に許可が与えられれば、プッシュ通知も同時に有効になります。

つぎに、新しい通知は `Notification()` コンストラクターを使って作られます。このコンストラクターには、必須の title 引数と、オプションを指定する引数として options オブジェクトを与えることができます。オプションには、テキストの方向、本文テキスト、表示アイコン、通知サウンドなどが指定可能です。

さらに、通知 API の仕様には、いくつかのサービスワーカー API が定義されており、サービスワーカーが通知を発行できるようになっています。

**メモ:** 自分のアプリでの通知の詳しい使い方については、通知 API の使用を参照してください。

通知インターフェイス
----------

`Notification`

通知オブジェクトを定義します。

### サービスワーカーの追加要素

`ServiceWorkerRegistration`

`ServiceWorkerRegistration.showNotification()` および `ServiceWorkerRegistration.getNotifications()` メソッドが含まれており、通知の表示の制御に使用できます。

`ServiceWorkerGlobalScope`

`onnotificationclick` ハンドラーが含まれており、通知がクリックされた時にカスタム関数を実行させることができるようになります。

`NotificationEvent`

`ExtendableEvent` を基本とした、特定の型ののイベントオブジェクトです。すでに実行された通知を表現します。

仕様書
---

| Specification |
| --- |
| Notifications API Standard  |

ブラウザーの互換性
---------

### api.Notification

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.ServiceWorkerRegistration.showNotification

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

### api.ServiceWorkerRegistration.getNotifications

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* 通知 API の使用
NDEFRecord
==========

**安全なコンテキスト用:** この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

**Experimental:** **これは実験的な機能です。**  
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

**`NDEFRecord`** はウェブ NFC API のインターフェイスで、 NDEF に対応する NFC タグなど、互換性のある NFC 機器から読み取ったり、書き込んだりできるデータを提供します。

コンストラクター
--------

`NDEFRecord()` 
Experimental

新しい `NDEFRecord` を返します。

インスタンスプロパティ
-----------

`NDEFRecord.recordType` 
Experimental
 読取専用 

このレコードのレコード型を返します。レコードは標準のよく知られた型名を持つ必要があります。例えば `"empty"`, `"text"`, `"url"`, `"smart-poster"`, `"absolute-url"`, `"mime"`, `"unknown"` またはそれ以外に、ドメイン名で構成された外部型名や、コロン (":") で区切られたカスタム型名です。

`NDEFRecord.mediaType` 
Experimental
 読取専用 

このレコードの MIME タイプです。この値は `recordType` が `"mime"` と等しくない場合は `null` になります。

`NDEFRecord.id` 
Experimental
 読取専用 

レコード識別子、レコードを識別するために使用される絶対または相対 URL を返します。

**メモ:** 識別子の一意性は、レコードの生成者によってのみ強制されます。

`NDEFRecord.data` 
Experimental
 読取専用 

このレコードのペイロードの生のバイト列が入った `DataView` を返します。

`NDEFRecord.encoding` 
Experimental
 読取専用 

テキストペイロードのエンコーディングを返します。それ以外の場合は `null` です。

`NDEFRecord.lang` 
Experimental
 読取専用 

テキストペイロードの言語を返します。提供されていない場合は `null` です。

インスタンスメソッド
----------

`NDEFRecord.toRecords()` 
Experimental

`NDEFRecord.data` をレコードの並びに変換します。これにより、スマートポスターや外部型レコードなど、ネストしたレコードを含む可能性のあるレコードタイプのペイロードを解釈することができます。

仕様書
---

| Specification |
| --- |
| Web NFC API # dom-ndefrecord |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
ConvolverNode
=============

`ConvolverNode` は `AudioNode` の一種で、与えられた `AudioBuffer` を用いて線形畳み込みを行います。リバーブの実装によく用いられます。 `ConvolverNode` は常に 1 つの入力と、1 つの出力を持ちます。

**メモ:** 線形畳み込みの理論的な側面については、Wikipedia の「畳み込み」を参照してください。

EventTarget

AudioNode

ConvolverNode

|  |  |
| --- | --- |
| 入力数 | `1` |
| 出力数 | `1` |
| チャンネルカウントモード | `"clamped-max"` |
| チャンネル数 | `1`, `2`, `4` |
| チャンネルの解釈 | `"speakers"` |

コンストラクター
--------

`ConvolverNode()` (en-US)

`ConvolverNode` オブジェクトの新しいインスタンスを生成します。

プロパティ
-----

*親である `AudioNode` からプロパティを継承しています*。

`ConvolverNode.buffer` (en-US)

モノラル、ステレオ、 4 チャンネルの *`AudioBuffer`* で、 `ConvolververNode` がリバーブ効果を生成するために使用する（おそらくマルチチャンネルの）インパルス応答を含みます。

`ConvolverNode.normalize` (en-US)

論理値で、 `buffer` 属性が設定されているときに、バッファーからのインパルス応答を等力正規化でスケーリングするかどうかを制御します。

メソッド
----

*固有のメソッドはありません。親である `AudioNode` からメソッドを継承しています*。

ConvolverNode の例
----------------

次の例は、コンボルバーノードを作成するための AudioContext の基本的な使い方を示しています。

**メモ:** 以下の例を完成させるために、インパルス応答を求める必要があります。応用例はこちらの Codepen をご覧ください。


```js
let audioCtx = new window.AudioContext();

async function createReverb() {
    let convolver = audioCtx.createConvolver();

    // load impulse response from file
    let response     = await fetch("path/to/impulse-response.wav");
    let arraybuffer  = await response.arrayBuffer();
    convolver.buffer = await audioCtx.decodeAudioData(arraybuffer);

    return convolver;
}

...

let reverb = await createReverb();

// someOtherAudioNode -> reverb -> destination
someOtherAudioNode.connect(reverb);
reverb.connect(audioCtx.destination);
```

仕様書
---

| Specification |
| --- |
| Web Audio API # ConvolverNode |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* ウェブオーディオ API の使用