recursal/MDN huggingface dataset:
Bézier curve (ベジェ曲線)
====================

**ベジェ曲線**は、コンピューターグラフィックスとアニメーションで使用される、数学的に記述された曲線です。ベクター画像では、無期限に拡大できる滑らかな曲線をモデル化するために使用されます。

ベジェ曲線は、最低 2 つの制御点のセットによって定義されます。ウェブ関連のグラフィックスとアニメーションは、4 つの制御点 P0, P1, P2, P3 を持つ曲線である 3 次ベジェ曲線を使用します。

曲線を描くために、P0 から P1 までと P1 から P2 までの 2 本の補助線が描かれます。3 本目の補助線は、1 本目の補助線上を徐々に移動する点を始点、2 本目の補助線上を徐々に移動する点を終点として描画されます。 この 3 本目の補助線上に、始点から終点まで徐々に移動する点が描かれます。 この点が描く曲線がベジェ曲線です。下記の図は、曲線の作成方法を示すアニメーションです。

![ベジェ曲線の描画](/ja/docs/Glossary/Bezier_curve/b%C3%A9zier_2_big.gif)

関連情報
----

* Wikipedia のベジェ曲線の記事
* CSS の三次元ベジェタイミング関数
* `keySplines (en-US)` SVG 属性
Tag (タグ)
========

HTML において、**タグ**は要素の作成に使われます。段落を表す `<p>` のように、HTML の要素の名前が山括弧の中に入ります。なお、終了タグは `</p>` のように、名前の前にスラッシュがつきます。そして空要素では終了タグは不要で、付けることもできません。属性が記述されていない場合は、それぞれ既定値が使われます。

詳細情報
----

### 一般知識

* Wikipedia 上の HTML要素
* WHATWG 上の HTML 要素の構文
### 技術リファレンス

* HTML 概論
Alpha (アルファチャンネル)
=================

コンピューター上では、色を数値の組であらわします。各数値は色のいずれかの構成要素の強さ、主に輝度を表します。それぞれの構成要素を**チャンネル**と呼びます。画像ファイルでは、ある色の色チャンネルによって、この色がどれくらいの強さの赤色・緑色・青色の光から構成されているかを表すのが一般的です。後ろ側が透けて見えるような色を表すために、4 番目に追加されるのが**アルファチャンネル**です。アルファチャンネルは、ある色が後ろ側にある色をどの程度覆い隠すかを表します。

具体例をみてみましょう。`#8921F2` (`rgb(137, 33, 242)` または `hsl(270, 89%, 54)` とも記述します) は紫色を表します。下の図では 2 個のボックスがテキストを含む段落の手前に描画されています。左上にあるボックスでは上で示した紫色を背景色に指定しています。右下のボックスは、*同じ* 背景色ですがアルファチャンネルの値を 0.5 に指定しています。これは、50% の不透明度とも表せます。

![色をあらわすアルファチャンネルの効果を示す画像](/ja/docs/Glossary/Alpha/alpha-channel-example.png)

このように、ボックスの背景色にアルファチャンネルを明示的に指定しなかった場合、後ろ側のテキストは完全に覆い隠されます。一方、アルファチャンネルを指定した場合、後ろ側のコンテンツが透けて見えます。

関連情報
----

* ウィキペディアの記事「アルファブレンド」
* ウィキペディアの記事「RGBA 色モデル」
* ウィキペディアの記事「Channel (digital image)」
* CSS 色
ITU (国際電気通信連合)
==============

ITU (International Telecommunication Union、国際電気通信連合) は、国際連合に認可された組織であり、電信、無線通信、電話、そしてインターネットなどの遠距離通信に関する標準やルールを制定します。

送信内容が必要な場所へ届くようにするためのルールの定義や、モールス信号で使用される「SOS」の警報信号の作成に始まり、テクノロジーを使用して情報や考えをやり取りする方法について、ITU は長い間重要な役割を果たしてきました。

インターネットの時代における ITU の役割は、ストリーミングやテレカンファレンスなどさまざまな目的で用いられる動画や音声のデータ形式の標準を制定することです。例えば、MPEG-2 (ITU H.262)、AVC (ITU H.264)、HEVC (ITU H.265) などのさまざまな MPEG の仕様の開発、公開、保守は、ITU と Moving Picture Experts Group (MPEG) が協力して行っています。

関連情報
----

* ITU のウェブサイト
* ITU の歴史ポータルサイト
Callback function (コールバック関数)
============================

コールバック関数とは、引数として他の関数に渡され、外側の関数の中で呼び出されて、何らかのルーチンやアクションを完了させる関数のことです。

簡単な例を以下に示します。


```js
function greeting(name) {
  alert(`Hello, ${name}`);
}

function processUserInput(callback) {
  const name = prompt("Please enter your name.");
  callback(name);
}

processUserInput(greeting);
```


上記の例はすぐに実行される同期型コールバックです。

コールバックは非同期操作が完了した後に続いてコードが実行されることがよくあります。これを非同期コールバックといいます。コールバック関数の良い例は、プロミスが履行されたり拒否されたりした後に連鎖される `.then()` ブロックの中で実行されるものです。この構造は `fetch()`のような最近の Web API で良く使われています。

関連情報
----

* Wikipedia のコールバック
Host (ホスト)
==========

ホストは、インターネット (またはローカルネットワーク) に接続する端末です。サーバーと呼ばれるホストは、ウェブページの提供や、ファイルやメールの保存のような付加サービスを提供します。

ホストはハードウェアのインスタンスである必要はありません。仮想マシンで生成することもできます。仮想マシンで生成されたホストは「仮想ホスト」と呼ばれています。

詳細
--

### 一般知識

* Wikipedia 上の記事「ホスト (ネットワーク)」
Identifier (識別子)
================

**識別子** (identifier) は 変数、関数、プロパティ などを識別するコード内の文字の並びです。

JavaScript においては、識別子は大文字小文字の区別があり、Unicode の文字、 `$`、 `_`、 数字 (0-9) を含めることができますが、数字で始めることはできません。

識別子は文字列とは異なり、文字列がデータであるのに対して、識別子はコードの一部です。 JavaScript において、識別子を文字列に変換する方法はありませんが、ときに文字列を識別子に解釈することは可能です。

詳細情報
----

### 基礎知識

* ウィキペディアの識別子の記事

1. 用語集
    1. 識別子
    2. スコープ
    3. 文字列
    4. Unicode
2. ウィキペディアの識別子の記事
Compile time (コンパイル時間)
======================

コンパイル時間は、プログラムが最初にロードされてからプログラムが解析されるまでの時間です。

より詳しく知る
-------

### 一般知識

* Wikipedia 上の Compile time（英語）
QUIC
====

**QUIC** は、UDP で実装された多重化トランスポートプロトコルです。HTTP/3 のトランスポート層として TCP の代わりに使用されます。

QUIC は、HTTP 接続のセットアップの迅速化と遅延の低減を提供するために設計されました。具体的には、以下の通りです。

* TCP では、最初の TCP ハンドシェイクにオプションで TLS ハンドシェイクが続きますが、これはデータを送信する前に完了する必要があります。TLS は今やほとんど普及しているので、QUIC は TLS ハンドシェイクを最初の QUIC ハンドシェイクに統合し、セットアップ時に交換しなければならないメッセージの数を縮小しています。
* HTTP/2 は多重化されたプロトコルであり、複数の HTTP トランザクションを同時に実行することができます。しかし、トランザクションは単一の TCP 接続上で多重化されるため、TCP 層でのパケットロスやその後の再送が起こると、すべてのトランザクションがブロックされてしまいます。QUIC はこれを避けるため、UDP 上で実行し、パケットロスの検出と再送信を各ストリームに対して別個に実装しています。
関連情報
----

* RFC 9000: the QUIC specification
* RFC 9114: the HTTP/3 specification
DoS攻撃
=====

DoS (Denial of Service) は、大量のリクエスト送信によりサーバーの適正なリソース使用を妨げるネットワーク攻撃手法です。

コンピューターは、計算能力やメモリーなどのリソースが限られています。リソースが使い尽くされると、プログラムはフリーズまたはクラッシュし使用できなくなります。DoS 攻撃にはサーバーのリソースを使い果たさせるための様々な手法があり、正当なユーザーにサーバーやネットワークを利用できないようにし、少なくともサーバーの処理速度を低下させます。

攻撃されるコンピューターの計算能力を妨害するために使用されるサーバーを多数にした、分散 DoS 攻撃 (DDoS) もあります。

### DoS 攻撃の手法

Dos 攻撃は、特定の種類の手法を指すというよりもカテゴリーです。下記は Dos 攻撃の手法の一部です。

* 帯域幅攻撃
* リクエストフラッド攻撃
* SYN フラッド攻撃
* ICMP フラッド攻撃
* ピア・ツー・ピアネットワークへの攻撃
* PDoS 攻撃
* アプリケーションレイヤー攻撃
詳細情報
----

* Wikipedia 上の DoS攻撃 のページ
* OWASP Denial-of-service のページ
* DDoS 攻撃
Global object (グローバルオブジェクト)
===========================

グローバルオブジェクトは、グローバルスコープ上に常時存在するオブジェクトです。

JavaScript では、グローバルオブジェクトが常に定義されています。ウェブブラウザー上でスクリプトがグローバル変数を生成する時、グローバルオブジェクトのメンバーとして作成されます。 (Node.js ではこの限りではありません。) グローバルオブジェクトが実装するインターフェイスは、どのようなコンテキストでスクリプトが実行されているかによって変化します。例えば、

* ウェブブラウザーでは、明示的にバックグランドタスクとして起動されるコードを除き、 `Window` がグローバルオブジェクトになります。ウェブにおける JavaScript コードのほとんどはこのケースに該当します。
* `Worker` 内で実行されるコードでは `WorkerGlobalScope` オブジェクトがグローバルオブジェクトになります。
* Node.js で実行されるスクリプトの場合、 `global` と呼ばれるオブジェクトがグローバルオブジェクトになります。
ブラウザー内の `window` オブジェクト
-----------------------

ブラウザー内では `window` オブジェクトがグローバルオブジェクトです。グローバル変数や関数はすべて、 `window` オブジェクトのプロパティとしてアクセスすることができます。

### グローバル変数へのアクセス


```js
var foo = "foobar";
foo === window.foo; // true を返す
```


グローバル変数 `foo` を定義した後、その値を `window` オブジェクトから、変数名である `foo` を使用し、グローバルオブジェクト `window.foo` のプロパティ名として直接アクセスすることができます。

#### 解説

グローバル変数 `foo` は `window` オブジェクト内に、次のように格納されます。


```js
foo: "foobar";
```

### グローバル関数へのアクセス


```js
function greeting() {
  console.log("Hi!");
}

window.greeting(); // ふつうに greeting(); を呼び出すのと同じ
```


上記の例では、グローバル関数が `window` オブジェクトの中に*プロパティ*としてどのように格納されるかを説明しています。 `greeting` というグローバル関数を作成し、 `window` オブジェクトを使用して呼び出します。

#### 解説

グローバル関数 `greeting` は `window` オブジェクトに次のように格納されています。


```js
greeting: function greeting() {
  console.log("Hi!");
}
```


* MDN 用語集
    + グローバルスコープ
    + オブジェクト
* `Window`
* `WorkerGlobalScope`
* `global`
Namespace (名前空間)
================

名前空間はプログラム内でコンテキストを識別する、論理的なグループの名前です。同じコンテキスト内かつ同じスコープの範囲内では、識別子は実態を一意に指定しなくてはなりません。

OS のディレクトリーは名前空間です。それぞれのファイルやサブディレクトリーは一意の名前を持たなくてはなりませんが、1 つのファイルが違うタイミングで同じ名前を使用することがあるかもしれません。

詳細情報
----

### 基礎知識

* Wikipedia 上の記事「名前空間」
Plaintext (平文)
==============

平文（ひらぶん）とは、暗号化 アルゴリズムへの入力として使用されている情報、または復号された暗号文のことです。

頻繁に使用される用語であるクリアテキストは、暗号化されておらず、追加の処理を行わずに人間やコンピュータが読むことができるテキスト文書、画像などの情報を意味します。
DOM
===

DOM (Document Object Model) とは、すべての HTML または XML 文書を表現・操作する API です。 DOM はブラウザーで文書構造をノードのツリーとして読み込み、それぞれのノードを文書の一部 (例えば要素、テキスト文字列、コメント) として表します。

DOM は文書内のすべてのノードにアクセスし操作するためにコードをブラウザー内で実行することができるので、ウェブ上で最も使用されいる API のひとつです。ノードの生成や移動、変更が可能です。イベントリスナーをノードに追加し、特定のイベントの発生時に実行させることもできます。

DOM は当初、仕様書がありませんでしたが、ブラウザがJavaScript の実装を始めた頃に追加されました。このレガシーな DOM は DOM0 と呼ばれることもあります。今日、 WHATWG が DOM Living Standard を保守しています。

1. Wikipedia 上の記事「The Document Object Model」
2. MDN 上の記事「DOM ドキュメント」
3. W3C の DOM 仕様
4. 用語集
    1. API
    2. HTML
    3. XML
    4. World Wide Web
Operator (演算子)
==============

記号や英数字によって構成された**予約語**で、内蔵の機能を実行します。例えば、 JavaScript では加算演算子（"+"）は複数の数値を加算したり文字列を結合したりします。「否定」演算子（"!"）は式を否定し、例えば、 `true` を表す式では `false` を返します。

詳細情報
----

### 一般的な知識

* Wikipedia のja:演算子の記事
### 技術リファレンス

* JavaScript の演算子
Prototype
=========

プロトタイプは、開発ライフサイクルの早い段階でアプリケーションや製品の外観と動作を表現する型です。

継承とプロトタイプチェーン をご覧ください。

理解を深める
------

### 基礎知識

* ウィキペディアの ソフトウェアプロトタイピング の記事
beacon (ビーコン)
=============

Web ビーコンは、マークアップに埋め込まれた 1 ピクセル gif などの小さなオブジェクトで、Web サーバーまたはサードパーティのサーバーに情報を戻すために使用されます。

ビーコンは通常、統計目的でユーザーに関する情報を提供するために含まれています。

多くの場合、ビーコンは、ユーザーデータ、パフォーマンスメトリック、およびエラーレポートを収集するためのサードパーティのスクリプトに含まれています。

W3C Draft Beacon Specification があり、パフォーマンスを低下させることなく、ページロード前にユーザーエージェントから Web サーバーに HTTP データを非同期的に転送するためのインターフェイスとしてビーコンを標準化しています。

関連情報
----

* Real User Monitoring (RUM)
Canvas
======

**canvas 要素**は HTML5 の一部であり、 2D および 3D の形状やビットマップ画像をスクリプトで動的にレンダリングすることができます。これは、bitmapを更新する低レベルの手続き型モデルであり、組み込みのシーングラフを持っていません。これは、特定の JavaScript API が描画できる空のグラフィックゾーンを提供します (Canvas 2D や WebGL) など)。

詳細情報
----

### 基本知識

* Wikipedia 上の Canvas要素 のページ
### Canvas について詳しく学ぶ

* MDN 上の Canvas チュートリアル
### 技術情報

* MDN 上の HTML `<canvas>` 要素のページ
* MDN 上の Canvas の一般的なドキュメント
* `CanvasRenderingContext2D`: canvas 2D の描画 API
* w3c 上のページ: The Canvas 2D API specification
Favicon (ファビコン)
===============

ファビコン (お気に入りアイコン) はウェブサイトに含まれる小さなアイコンです。ブラウザのアドレスバー、ページタブ、ブックマークメニューなどに表示されます。ただし最新のブラウザのほとんどは、アドレスバーのファビコンをウェブサイトが HTTPS を使用しているかどうかを示す画像に置換しています。

通常、ファビコンは 16x16 ピクセルの GIF、 PNG、または ICO 形式で保存されます。

ファビコンはユーザエクスペリエンスを向上させ、ブランドの一貫性を保つために使用されます。例えば使い慣れたアイコンがブラウザのアドレスバーに表示されるのを見ることで、ユーザは自分が適切な場所 (*訳注:WEB ページなど*) にいることを理解します。

1. Wikipedia 上の Favicon
2. ツール
    1. Free favicon generator
    2. Favicon.ico and & app icon generator
Domain sharding (ドメインシャーディング)
=============================

ブラウザはアクティブな接続数をドメインごとに制限します。この制限を超えてアセットを同時ダウンロードできるようにするために、**ドメインシャーディング**はコンテンツを複数のサブドメインに分割します。複数のアセットを提供するために複数のドメインが使用されると、ブラウザはより多くのリソースを同時にダウンロードすることができるため、より速いページ読み込み時間とユーザ体験の向上をもたらします。

ドメインシャーディングの性能面での問題は各ドメインの DNS ルックアップの追加コストと各 TCP コネクション確立のオーバヘッドです。

HTTP からの初回レスポンスは通常、 JavaScript、 CSS、画像、その他ダウンロードの必要なメディアファイルが列挙された HTML ファイルです。ブラウザはドメインごとにアクティブな接続数を制限するため、 1 ドメインからの全ての必要リソースの提供は、アセットが順番にダウンロードされることになり、遅くなることがあります。ドメインシャーディングでは必要なダウンロードは 2 つ以上のドメインから提供され、ブラウザでの必要なリソースの同時ダウンロードを可能にします。しかし、複数のドメインを用いることは DNS ルックアップが初回ロード時間を遅くするため、アンチパターンと言えます。

HTTP2 は無制限の同時リクエストをサポートしているため、 HTTP/2 が有効な場合にはドメインシャーディングはもはや必要なくなります。

詳細情報
----

* Transport Layer Security (TLS)
* DNS
* HTTP/2
WebAssembly
===========

**WebAssembly** (*Wasm*) は、オープンバイナリプログラミング言語です。モダンウェブブラウザで動作します。パフォーマンスを高め、かつ/もしくは、ウェブページのための新しい機能を提供します。

1. 詳細
    1. WebAssembly on Wikipedia
    2. Official website
    3. WebAssembly on MDN
Reflow
======

インタラクティブサイトでの更新後など、 browser が Web ページの一部または全てを再度処理して描画する必要がある場合、**リフロー** が発生します。

関連項目
----

* Google article "Minimizing browser reflow"
Algorithm (アルゴリズム)
==================

アルゴリズムとは、ある機能を実行するための、独立した一連の命令です。

言い換えれば、アルゴリズムは問題の解決方法を記述する方法であり、人間または機械によって反復的に解決されます。コンピューター科学者は「アルゴリズムの複雑性」や "Big O" 記法の概念でアルゴリズムの効率性を比較します。

例としては、以下のようなものがあります。

* 料理レシピは、人間のための簡単なアルゴリズムです。
* 整列アルゴリズムは、機械がデータを並べ替える方法を説明するために、コンピュータープログラミングでよく使われます。

よくあるアルゴリズムとしては、巡回セールスマン問題などの経路探索アルゴリズム、ツリー探索アルゴリズムなどがあります。

線形回帰 (Linear Regression)、ロジスティック回帰 (Logistic Regression)、決定木 (Decision Tree)、ランダムフォレスト (Random Forest)、サポートベクターマシン (Support Vector Machine)、再起型ニューラルネットワーク (Recurrent Neural Network; RNN)、長短期記憶 (LSTM) ニューラルネットワーク、畳み込みニューラルネットワーク (Convolutional Neural Network; CNN)、ディープ畳み込みニューラルネットワーク (Deep Convolutional Neural Network) などの機械学習アルゴリズムもあります。

詳細情報
----

### 一般知識

* Wikipedia の アルゴリズム
### 技術リファレンス

* Explanations of sorting algorithms
* Explanations of algorithmic complexity
PHP
===

PHP (再帰的な頭文字語で PHP: Hypertext Preprocessor) はオープンソースのサーバー側スクリプト言語で、 HTML に組み込んで、ウェブアプリや動的なウェブサイトを構築することができます。

例
-

### 基本的な文法


```php
  // start of PHP code
<?php
 // PHP code goes here
 ?>
// end of PHP code
```

### 画面にデータを出力する


```php
<?php
 echo "Hello World!";
?>
```

### PHP の変数


```php
<?php
 // variables
 $nome='Danilo';
 $sobrenome='Santos';
 $pais='Brasil';
 $email='danilocarsan@gmailcom';

 // printing the variables
 echo $nome;
 echo $sobrenome;
 echo $pais;
 echo $email;
?>
```


1. 公式ウェブサイト
2. Wikipedia 上の PHP
3. Wikibooks 上の PHP
4. MDN Web Docs 用語集
    1. Java
    2. JavaScript
    3. Python
    4. Ruby
Local variable (ローカル変数)
=======================

変数のうち、その値を指す名前がローカルスコープ内にのみあるものです。

例
-


```js
var global = 5; //is a global variable

function fun() {
  var local = 10; //is a local variable
}
```


1. 一般知識
    1. Wikipedia 上のローカル変数
Alignment container (配置コンテナー)
=============================

**配置コンテナー**は、中に配置対象物が配置される矩形です。これはレイアウトモードによって定義されます。通常は配置対象物を包含しているブロックのことを指します。ボックスの書字方向は外側のコンテナーによって決定されます。

関連情報
----

* CSS ボックス配置
SEO
===

**SEO** (Search Engine Optimization, 検索エンジン最適化)は、検索結果上であるウェブサイトをより目立たさせるための過程です。検索ランキングの改善とも言えます。

検索エンジンはページからページへリンクをたどりながらウェブをクロールし、見つけたコンテンツをインデックスに登録します。検索をしたときに、検索エンジンはインデックスに登録されたコンテンツを表示します。クローラーには従うルールがあります。ウェブサイトのために SEO をする時に、そのルールに近づければ、そのサイトに検索結果の上位に上げる機会を与えることが可能になり、トラフィックと（e コマースと広告の場合）収益が向上する可能性があります。

検索エンジンはよく SEO のためのガイドラインを提供しますが、大手の検索エンジンになると結果のランキングを営業秘密のままにしています。したがって、 SEO は公式のガイドライン、経験的知識、それに科学論文や特許による論理的知識を組み合わせたものです。

SEO の方法は大きく 3 つに分類されます:

技術的な方法

コンテンツをセマンティック HTML を使用してタグ付けすることです。ウェブサイトを探索するとき、クローラーはインデックスに登録させたいコンテンツのみを探してくれるでしょう。

文章の作成

サイトの訪問者の語彙を使ってコンテンツを書きましょう。クローラーが主題を理解できるように、画像だけでなくテキストも使用しましょう。

サイトの人気

他の有名なされたサイトがあなたのサイトにリンクしすると、多くのトラフィックを得ることができます。

詳細情報
----

### 一般知識

* ウィキペディアの検索エンジン最適化( SEO )の記事です
### SEO を学ぶ

* Google ウェブマスター学習リソース
Bounding Box (バウンディングボックス)
==========================

要素のバウンディングボックス（境界ボックスとも）は、要素とその子孫を完全に囲む可能な最小の矩形です（その要素のユーザー座標系の軸に揃えられます）。
Web performance (ウェブの性能)
========================

**ウェブパフォーマンス**とは、コンテンツのリクエストが行われてから、リクエストされたコンテンツがユーザーのブラウザーに表示されるまでの客観的な時間であり、客観的なレンダリング時間、読み込み時間と主観的な読み込み時間および実行時間の使い心地のことです。

客観的には、ウェブページやウェブアプリケーションがダウンロードされ、ユーザーのウェブブラウザーに表示され、レスポンシブかつ操作可能になるまでのミリ秒単位で測定可能な時間です。これは、秒あたりのフレーム数と、メインスレッドがユーザーのインタラクションに利用できない時間のことです。主観的には、ユーザーがコンテンツを要求してから、要求されたコンテンツが利用可能で使用可能だとユーザーが感じるまでの時間が遅いと感じるか、速いと感じるかについてのユーザーの*感覚*です。

関連情報
----

* ウェブの性能について知る
* 知覚パフォーマンス
WebP
====

**WebP** は Google の開発した画像圧縮フォーマットです。可逆圧縮と不可逆圧縮の両方に対応しています。

関連項目
----

### 一般知識

* ウィキペディアにある「WebP」の記事
Accessibility tree (アクセシビリティツリー)
================================

**アクセシビリティツリー**、または**アクセシビリティオブジェクトモデル** (**AOM**) は、多くの HTML 要素におけるアクセシビリティに関する情報を含んでいます。

ブラウザーはマークアップを *DOM ツリー* と呼ばれる内部表現に変換します。 DOM ツリーはすべてのマークアップの要素、属性、テキストノードを含んでいます。ブラウザーはそれから、 DOM ツリーに基づいてアクセシビリティツリーを生成します。これは、読み上げソフトなどの支援技術のために、プラットフォームに特有のアクセシビリティ API から使用されます。

アクセシビリティツリーオブジェクトの中には 4 つのものがあります。

**name**

このものをどのように参照することができるか。例えば、 'Read more' というテキストを持ったリンクは 'Read more' という名前を持つでしょう (名前がどのように計算されるかの詳細については Accessible Name and Description Computation spec にあります)。

**description**

名前に何かを追加したいとすれば、この要素をどのように説明するか。表の説明は、その表が提供する情報の種類が何かで説明することができます。

**role**

どのような種類のものなのか。例えば、ボタンなのか、ナビゲーションバーなのか、アイテムのリストなのか。

**state**

状態があるかどうか。チェックボックスではチェック済み／未チェック、 `<summary>` 要素では折り畳み状態か展開状態か、などを想像してください。

加えて、アクセシビリティツリーは要素によって何が行われるのかについての情報を持つことがよくあります。リンクは *followed*、テキスト入力は *typed into*、などです。

1. 用語集
    1. アクセシビリティ
    2. ARIA
Cryptographic hash function (暗号学的ハッシュ関数)
========================================

暗号学的ハッシュ関数は、*ダイジェスト関数*とも呼ばれますが、任意のサイズのメッセージをダイジェストと呼ばれる固定サイズのメッセージに変換する暗号学的プリミティブです。暗号学的ハッシュ関数は、認証、デジタル署名、およびメッセージ認証コードに使用されます。

暗号学に使用するためには、ハッシュ関数は以下の性質を持っていなければなりません。

* 計算が速い (頻繁に生成されるため)
* 可逆ではない (各ダイジェストは非常に多数のメッセージに由来する可能性があり、所与のダイジェストにつながるメッセージを生成できるのは総当たりのみである)
* 改ざん防止 (メッセージの変更によって異なるダイジェストがもたらされる)
* 衝突耐性 (同じダイジェストを生成する 2 つの異なるメッセージを見つけることは不可能であるべきです)

MD5 や SHA-1 などの暗号化ハッシュ関数は、衝突耐性を大幅に低下させる攻撃が見つかったため、破損しているとみなされています。

* Wikipedia 上の 暗号学的ハッシュ関数
* MDN Web Docs 用語集
    + 共通鍵暗号
WebExtensions
=============

WebExtensions は Firefox でブラウザー拡張機能を開発するためのクロスブラウザーシステムです。このシステムには API が提供され、これはかなりにわたって様々なブラウザー、例えば Mozilla Firefox, Google Chrome, Opera Browser, Microsoft Edge をサポートします。

関連項目
----

### 技術リファレンス

* MDN のブラウザー拡張機能
Primitive (プリミティブ)
==================

JavaScript において、**プリミティブ** (primitive、プリミティブ値、プリミティブデータ型) はオブジェクトでなく、メソッドを持たないデータのことです。 7 種類のプリミティブデータ型があります。

* 文字列
* 数値
* 長整数
* 論理値
* undefined
* シンボル
* null

多くの場合、プリミティブ値は、その言語実装の最下層にて直接的に表現されます。

すべてのプリミティブ値は、**イミュータブル** (immutable) 、つまり変更できません。変数には新しい値を再割り当てすることができますが、既存の値については、オブジェクト、配列、関数が変更できるのに対して、プリミティブ値は変更することができません。この言語では、プリミティブな値を変更するユーティリティは提供されていません。

プリミティブにはメソッドがありませんが、あたかもメソッドがあるかのように振る舞います。プリミティブのプロパティにアクセスするとき、JavaScript で自動ボックス値をラッパーオブジェクトに格納し、代わりにそのオブジェクトのプロパティにアクセスします。例えば、 `"foo".includes("f")` は暗黙のうちに `String` ラッパーオブジェクトを作成して、そのオブジェクトに対して `String.prototype.includes()` を呼び出します。この自動ボックス化の動作は JavaScript コードでは監視できませんが、様々な動作の良いメンタルモデルになります。例えば、プリミティブの「変更」ができない理由（`str.foo = 1` は `str` 自身のプロパティ `foo` に割り当てられるのではなく、一時的なラッパーオブジェクトに割り当てられるため）などが分かります。

関連情報
----

* JavaScript のデータ型
* Wikipedia の プリミティブ型 の記事
* 用語集
    + JavaScript
    + 文字列
    + number
    + bigint
    + boolean
    + null
    + undefined
    + symbol
ECMAScript
==========

**ECMAScript** は JavaScript のベースとなっているスクリプト言語仕様です。Ecma International が ECMAScript の標準化を担当しています。

詳細情報
----

### 基礎知識

* Wikipedia 上の記事「ECMAScript」
### 技術リファレンス

* ECMAScript
Site (サイト)
==========

非公式には、 *サイト* はウェブサイト、すなわちウェブページの集合であり、同じドメインから提供されるもので、単一の組織によって管理されているものです。

ブラウザーは時として、異なるサイト同士を正確に区別する必要があります。例えば、ブラウザーは SameSite (en-US) クッキーを、それを設定した同じサイトにしか送信してはなりません。

このより正確な定義では、サイトはドメイン名の登録可能なドメイン部分によって決定されます。登録可能なドメインは、公開接尾辞リストの項目と、その直前のドメイン名の部分から構成されます。つまり、たとえば、`theguardian.co.uk`、`sussex.ac.uk`、`bookshop.org` はすべて登録可能なドメインということになります。

この定義に従えば、`support.mozilla.org` と `developer.mozilla.org` は同じサイトの一部です。 `mozilla.org` が登録可能なドメインだからです。

文脈によっては、サイトを区別するときにスキームを考慮することもあります。この場合、`http://vpl.ca` と `https://vpl.ca` は異なるサイトとなります。スキームを含めると、安全でない (HTTP) サイトが安全な (HTTPS) サイトと同じサイトとして扱われるのを防ぐことができます。スキームを考慮した定義は、 *schemeful same-site* と呼ばれることもあります。このより厳しい定義は、 SameSite (en-US) クッキーの処理に関するルールで適用されています。

例
-

これらは、登録可能なドメインが `mozilla.org` であることから、同じサイトであると考えられます。

* `https://developer.mozilla.org/ja/docs/`
* `https://support.mozilla.org/ja/`

これらは、ポートは関係ないので、同じサイトです。

* `https://example.com:8080`
* `https://example.com`

これらは、 2 つの URL の登録可能なドメインが異なるため、同じサイトではありません。

* `https://developer.mozilla.org/ja/docs/`
* `https://example.com`

これらは、同じサイトであったり、スキームが考慮されれば異なるサイトであったりします。

* `http://example.com`
* `https://example.com`
関連情報
----

* URL とは何か
* Origin
* 同一オリジンポリシー
Information architecture (情報アーキテクチャ)
====================================

ウェブのデザインと開発に適用される情報アーキテクチャは、ウェブサイトの情報/コンテンツ/機能を整理し、情報とサービスを簡単に使用可能で見つけ出すことができる最高のユーザーエクスペリエンスを提供することです。

より詳しく知る
-------

### 一般知識

* Wikipedia 上の 情報アーキテクチャ
Responsive web design (レスポンシブウェブデザイン)
=====================================

*レスポンシブウェブデザイン* (**RWD**) とはサイトの見た目と挙動を、デスクトップからモバイルまで全てのパーソナルコンピューティングデバイスにとって、最適化することに焦点を当てたウェブ開発の概念です。

詳細情報
----

### 一般知識

* 要約とリソース (en-US)
* レスポンシブにするメリットとデメリット
* レスポンシブウェブデザイン(英 MSDN)
General header (一般ヘッダー)
=======================

**一般ヘッダー**は、リクエスト及びレスポンスメッセージの両方で使用できるものの、内容物そのものには適用されない HTTP ヘッダーです。使用されている文脈に応じて、一般ヘッダーはレスポンスヘッダー又はリクエストヘッダーのどちらかになります。しかし、エンティティヘッダーではありません。

最も一般的な一般的なヘッダーは、 `Date`, `Cache-Control`, `Connection` です。
Code point (コードポイント)
====================

**コードポイント**は、 (Unicode などの) テキストを表現するシステムにおいて、抽象文字を表現するために割り当てられた番号のことです。 Unicode では、コードポイントは、 "U+1234" という形式で表現されます。ここで「1234」が割り当てられた番号です。例えば、 "A" という文字には、 U+0041 というコードポイントが割り当てられています。

UTF-8 や UTF-16 などの文字エンコーディング形式では、 Unicode のコードポイントをバイト列としてどのように符号化するべきかを決めています。エンコーディング形式が異なると、同じコードポイントが異なるバイト列に符号化される場合もあります。例えば、コードポイントが U+0424 であるキリル文字 "Ф" は、 UTF-8 では `0xd0a4` として符号化され、 UTF-16 では `0x0424` として符号化されます。

関連情報
----

* The Unicode Standard: Code Points and Characters
Brotli
======

**Brotli** は、汎用の可逆圧縮アルゴリズムです。

LZ77 アルゴリズムのモダンバリアント、ハフマン符号、2 次コンテキストモデリングの組み合わせを使用してデータを圧縮し、現在利用可能な最良の汎用圧縮方法に匹敵する圧縮率を提供します。Brotli は gzip よりも優れた圧縮率を提供し、展開速度は同等ですが、 brotli 圧縮は Gzip 圧縮よりも処理が遅いため、キャッシュできないコンテンツの圧縮には gzip の方が適している場合があります。

Brotli は最新のほとんどのブラウザーと互換性がありますが、フォールバックを検討することをお勧めします。

関連項目
----

* brotli.org
* Brotli GitHub リポジトリー
* Wikipedia の Brotli
* Brotli on Caniuse
Speculative parsing (投機的解析)
===========================

伝統的なブラウザーの HTML パーサーはメインスレッドで動作し、 `</script>` タグの後はスクリプトがネットワークから取得されて実行が完了するまでブロックされます。一部の HTML パーサー、たとえば Firefox 4 以降では、メインスレッドから分離された投機的解析に対応しています。これは、スクリプトがダウンロードされて実行されている間、先に解析を進めます。 HTML パーサーは、ストリーム内で先に見つかるスクリプト、スタイルシート、画像の投機的な読み込みを開始し、 HTML ツリー構築アルゴリズムを投機的に実行します。この利点は、投機が成功したときに、スクリプト、スタイルシート、画像のスキャンが完了した受信ファイルの一部を再解析する必要がないことです。欠点は、投機が失敗した場合により多くの作業が失われることです。

このドキュメントは、投機が失敗してページの読み込みが遅くなるようなことを避けるのに役立ちます。

リンクされたスクリプト、スタイルシート、画像の投機的な読み込みを成功させるためには、 `document.write` を避けてください。ページのベース URI を上書きするために `<base>`要素を使用する場合は、その要素を文書のスクリプト外においてください。これを `document.write()` や `document.createElement` で追加しないでください。

ツリービルダーの出力の喪失の防止
----------------

投機的なツリー構築に失敗するのは、 `document.write()` によって挿入された内容がすべて解析されたときに、 `</script>` タグの後の投機的な状態を破棄しなければならなくなる形で、 `document.write()` によってツリービルダーの状態が変更されたときです。しかし、問題を起こすのは `document.write()` の異常な使い方だけです。避けるべきことは以下のようなものです。

* バランスの取れないツリーを出力しないでください。 `<script>document.write("<div>");</script>` は悪い例です。 `<script>document.write("<div></div>");</script>` は良い例です。
* 不完全なトークンを出力しないでください。 `<script>document.write("<div></div");</script>` は悪い例です。
* 出力をキャリッジリターン文字で終わらせないでください。 `<script>document.write("Hello World!\r");</script>` は悪い例です。 `<script>document.write("Hello World!\n");</script>` は良い例です。
* バランスの取れたタグを書いても、他のタグが推測され、バランスの悪い書き込みになってしまうことがあるので注意してください。例えば `<script>document.write("<div></div>");</script>` を `head` 要素の中で実行すると、 `<script>document.write("</head><body><div></div>");</script>` となりバランスが取れなくなります。
* 表の一部を書き込まないでください。 `<table><script>document.write("<tr><td>Hello World!</td></tr>");</script></table>` は悪い例です。
Secure Context (安全なコンテキスト)
==========================

**安全なコンテキスト**とは、認証と機密性の一定の最低基準を満たした `Window` や `Worker` のことです。多くの Web API や機能は、安全なコンテキストでのみアクセス可能です。これにより、悪意のあるコードによって悪用される可能性を減らすことができます。

詳細については、開発者向けのウェブ技術 > ウェブセキュリティ> 安全なコンテキストを参照してください。
ページ読み込み時間
=========

**ページ読み込み時間**とはページの読み込みにかかる時間のことであり、ナビゲーション開始時 (en-US)からロードイベント開始時 (en-US)までをもって測定されます。


```js
let time = performance.timing;

let pageloadtime = time.loadEventStart - time.navigationStart;
```


ページ読み込み時間は完璧なウェブパフォーマンス測定基準に聞こえますが、そうではありません。読み込み時間はユーザーのデバイス性能やネットワーク状態、そして程度は低いもののサーバーからの距離によって大きく変化します。ページ読み込み時間が測定される開発環境は最適化された環境である場合が多くユーザーの実態体験を反映しません。さらにウェブパフォーマンスはロードイベント発生時間だけではありません。それは体感速度、応答性、ジャンク（Jank)、そしてジッター(Jitter)でもあります。

関連情報
----

* Navigation and resource timing
* `PerformanceNavigationTiming`
* `PerformanceResourceTiming`,
Ligature (合字)
=============

**合字**は、2 つの文字を 1 つの形に結合したものです。 たとえば、フランス語では "œ" は "oe" の合字です。

`font-variant-ligatures` を使用してウェブページで合字を実装できます。

1. Wikipedia 上の 合字
パンくずリスト
=======

**パンくずリスト** (*breadcrumb*, *breadcrumb trail*) は、ウェブサイトの各ページのヘッダーと本文の間に置かれることが多い構成要素です。パンくずリストを通じて、たとえばトップページからみて現在のページがどの階層に位置するかや、ユーザーが現在のページに至るまでどの順番でどのリンクをたどってきたのかを知ることができます。

サイト内での位置をあらわすパンくずリストは、この記事なら概ね次のようなかたちになるでしょう。

MDN > 用語集 > パンくずリスト

パンくずリストが適切に機能していれば、ユーザーはウェブサイト内での現在位置を確かめ、どのように今のページに到着したのかを知ることができます。そのおかげで、ユーザーはすでに見たページに簡単に戻ることができますし、余計なクリックをせずに上の階層のページに移動することができます。