recursal/MDN huggingface dataset:
Call stack (コールスタック)
====================

**コールスタック** (call stack) は、インタープリター (ウェブブラウザー内の JavaScript インタープリターなど) の仕組みの一つで、複数階層の関数を呼び出したスクリプト内の位置を追跡し続けることです。 — どの関数が現在実行されているのか、その関数の中でどの関数が呼び出されたか、などです。

* スクリプトが関数を呼び出すとき、インタープリターはそれをコールスタックに追加し、それから関数の実行を始めます。
* その関数から呼び出されたどの関数も、コールスタックのその上に追加され、呼び出し先を実行します。
* 現在の関数が終了すると、インタープリターはスタックからそれを外し、最後のコードがリストされている場所から実行を再開します。
* スタックが割り当てられている量よりも多くのスペースを使用した場合、 "stack overflow" エラーとなります。
例
-


```js
function greeting() {
  // [1] Some code here
  sayHi();
  // [2] Some code here
}
function sayHi() {
  return "Hi!";
}

// Invoke the `greeting` function
greeting();

// [3] Some code here
```


上記のコードは次のように実行されます。

1. `greeting()` 関数の呼び出しまで、すべての関数を無視する。
2. `greeting()` 関数をコールスタックリストに追加する。


**メモ:** コールスタックリスト:
 - greeting
3. `greeting()` 関数の中にあるコードのすべての行を実行する。
4. `sayHi()` 関数の呼び出しまで移動する。
5. コールスタックリストに `sayHi()` 関数を追加する。


**メモ:** コールスタックリスト:
 - greeting
 - sayHi
6. `sayHi()` 関数の中にあるコードのすべての行を、末尾に達するまで実行する。
7. 実行を `sayHi()` を呼び出した行に戻し、 `greeting()` 関数の残りの実行を続ける。
8. `sayHi()` 関数をコールスタックリストから削除する。


**メモ:** コールスタックリスト:
 - greeting
9. `greeting()` 関数の中のすべてを実行したら、これを呼び出した行に戻り、残りの JavaScript コードの実行を続ける。
10. `greeting()` 関数をコールスタックリストから削除する。


**メモ:** コールスタックリスト:
 空

空のコールスタックで始め、関数を呼び出す度に、自動的にそれがコールスタックに追加され、コードをすべて実行した後、自動的にコールスタックから削除されます。最後に、またからのスタックで終了します。

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

### 一般知識

* ウィキペディアのコールスタック

* MDN Web Docs 用語集
    + コールスタック
    + 関数
Type coercion (型強制)
===================

型強制 (Type coercion) は、あるデータ型から他のデータ型への値の自動的または暗黙の変換です (文字列から数値など)。*型変換*と*型強制*はよく似ており、どちらもある型から他の型へ値を変換しますが、一つ重要な違いがあります。*型強制*は暗黙的であるのに対し、*型変換*は暗黙的*または*明示的のどちらかです。

例
-


```js
const value1 = "5";
const value2 = 9;
let sum = value1 + value2;

console.log(sum);
```


上記の例では、 JavaScript は `9` を数値から文字列に*型強制*し、両者を結合するので、結果は文字列の `59` になります。 JavaScript は文字列と数値の何れかを選択する必要があり、文字列を使用するよう決定します。

コンパイラーは `5` を数値に強制して、合計値である `14` を返すこともできましたが、そうしませんでした。この結果を返すには、 `Number()` メソッドを用いて明示的に `5` を数値に変換することができます。


```js
sum = Number(value1) + value2;
```


1. 用語集
    1. 型
    2. 型変換
2. Wikipedia の記事
    1. 型変換
連続的メディア (Continuous Media)
==========================

連続的なメディアは、元と送り先の間にタイミングの関連があるデータです。最もよくある例は、オーディオやモーションビデオです。連続的なメディアは、元と送り先に「強い」タイミング関連があるリアルタイム (インタラクティブ)であったり、関連はそこまで厳しくないストリーミング (プレイバック)であったりします。

CSS は印刷媒体を含むさまざまなコンテンツに使われ、いくつかの CSS、とりわけレイアウトに使われるものでは、文脈に応じてさまざまに振る舞います。

このため、連続的なメディアは、コンテンツが途切れていなければ、文脈を見分けて、連続的に流れます。スクリーンに表示されるウェブのコンテンツは、話すコンテンツと同様の、連続したメディアです。
Node
====

**node** という用語は文脈によっていくつかの意味を持ちます。下記の用語を指しているかもしれません。

Node (DOM)
DOMとしての node は、node tree 内の 1 点を指しています。node はドキュメント自身であり、Element(要素)やテキスト、コメント等の色々なものがあります。
Node (networking)
ネットワークでは、 **node** はネットワーク内の接続ポイントです。物理ネットワークでは通常、コンピューターやルーターなどのデバイスです。

この用語は Node.js について話すときにも使われます。
Alignment subject (配置対象物)
=========================

CSS ボックス配置では、**配置対象物**はそのプロパティによって配置されるものを指します。

`justify-self` や `align-self` が設定されている場合、配置対象物はこれらのプロパティが設定されているボックスのマージンボックスです。そのボックスの書字方向を使用します。

`justify-content` や `align-content` の場合は、ボックスの書字方向も使用されます。配置対象物の定義は、使用されているレイアウトモードによります。

ブロックコンテナー (テーブルセルを含む)

単一のユニットとしてのブロックの内容物全体です。

段組みコンテナー

段ボックスです。段ボックスの間に挿入されたスペースが、関連する段間に追加されます。

フレックスコンテナー

`justify-content` の場合は、それぞれのフレックス行の中のフレックスアイテムです。
 `align-content` の場合は、フレックス行です。ただし、複数行のフレックスコンテナーにだけ効果を発揮します。


グリッドコンテナー

適切な軸のグリッドトラックです。トラック間にスペースを挿入すると、関連する溝に追加されます。溝が折り畳まれている場合は、スペースを挿入する唯一の機会として扱われます。

関連情報
----

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

**Application-Layer Protocol Negotiation** (**ALPN**) は、 TLS 拡張であり、追加のラウンドトリップを必要とせずに、暗号化された接続をネゴシエートするアプリケーションレイヤープロトコルを示します。

| プロトコル | 識別シーケンス |
| --- | --- |
| HTTP/1.1 | `0x68 0x74 0x74 0x70 0x2F 0x31 0x2E 0x31` ("http/1.1") |
| HTTP/2 | `0x68 0x32` ("h2") |
| HTTP/2 over cleartext TCP | `0x68 0x32 0x63` ("h2c") |

関連情報
----

* IANA 登録 ALPN 識別子
Boolean
=======

コンピューター科学において、**boolean**（論理型、真偽値型）は `true`（真）か `false`（偽）の値のみを取れる論理データ型です。たとえば、 JavaScript では boolean による条件がコードの部分を実行するか（if 文の中など）や繰り返し（for ループなど）を決定します。


```js
/\* JavaScript if 文 \*/
if (boolean 条件) {
   // 条件が true の場合に実行するコード
}

if (boolean 条件) {
  console.log("boolean 条件が true になった");
} else {
  console.log("boolean 条件が false になった");
}

/\* JavaScript for ループ \*/
for (制御変数; boolean 条件; カウンター) {
  // 条件が true の場合に繰り返し実行されるコード
}

for (var i=0; i < 4; i++) {
  console.log("boolean 条件が true の場合のみ表示");
}
```

関連情報
----

### 基礎知識

* ウィキペディアの「ブーリアン型」の記事
### 技術リファレンス

* JavaScript のグローバルオブジェクト: `Boolean`
* JavaScript のデータ構造
Pixel (ピクセル)
============

ピクセルは、コンピュータ画面のようなグラフィカルな表示の最小構成要素です。

画面解像度は、ピクセル単位で表されます。 例: "800 x 600" ピクセル解像度とは、幅 800 ピクセル、高さ 600 ピクセルを表示できることを意味します。

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

### 技術文書

* Wikipedia 上の ピクセル
TLD (トップレベルドメイン)
================

TLD (トップレベルドメイン)は、インターネットの階層的な DNS (ドメインネームシステム) で最も一般的な domain です。TLD は domain name の最後の要素です。例えば、`developer.mozilla.org` の "org" です。

ICANN (Internet Corporation for Assigned Names and Numbers) designates organizations to manage each TLD. Depending on how strict an administrating organization might be, TLD often serves as a clue to the purpose, ownership, or nationality of a website.

 Consider an example Internet address: `https://developer.mozilla.org`
 Here org is the TLD; mozilla.org is the second-level domain name; and developer is a subdomain name. All together, these constitute a fully-qualified domain name; the addition of https:// makes this a complete URL.

IANA today distinguishes the following groups of top-level domains:

country-code top-level domains (ccTLD)

Two-character domains established for countries or territories. Example: *.us* for United States.

internationalized country code top-level domains (IDN ccTLD)

ccTLDs in non-Latin character sets (e.g., Arabic or Chinese).

generic top-level domains (gTLD)

Top-level domains with three or more characters.

unsponsored top-level domains

Domains that operate directly under policies established by ICANN processes for the global Internet community, for example "com" and "edu".

sponsored top-level domains (sTLD)

These domains are proposed and sponsored by private organizations that decide whether an applicant is eligible to use the TLD, based on community theme concepts.

infrastructure top-level domain

This group consists of one domain, the Address and Routing Parameter Area (ARPA).

Learn more
----------

### General knowledge

* トップレベルドメイン (Wikipedia)
* List of top-level domains
WebRTC
======

**WebRTC** (*Web Real-Time Communication*)はビデオチャット、音声通話、P2P ファイル共有を行うウェブアプリで使われる API です。

WebRTC は主に以下の要素で構成されています:

`getUserMedia()`

端末のカメラとマイクのアクセスを許可し、シグナルと RTC 接続を繋ぎます。

`RTCPeerConnection`

ビデオチャットまたは音声通話を構成するインターフェイスです。

`RTCDataChannel`

ブラウザー間のP2P のデータ経路を構成するメソッド。

詳細情報
----

* Wikipedia 上の記事「WebRTC」
* MDN 上の WebRTC の解説
* WebRTC のブラウザーサポート状況
gzip compression (gzip 圧縮)
==========================

gzip はファイルの圧縮および展開に使われるファイル形式です。これは Deflate アルゴリズムに基づいており、ファイルをより小さくすることができ、より高速なネットワーク転送を可能にします。gzip はウェブサーバーや最近のブラウザーが広く対応しており、サーバーは送信前に自動的にファイルを圧縮し、ブラウザーは受信時に展開することができます。

関連情報
----

* The gzip home page (英語)
* ウィキペディアの gzip
SVN
===

Apache Subversion (**SVN**) は無償のソースコードマネジメント (SCM) システムです。 開発者はテキストファイルやソースコードの変更履歴を記録できます。SVN はバイナリファイルにも対応していますが、推奨はしていません。

詳細情報
----

### 一般知識

* Wikipedia 上の「Apache Subversion」の記事
* 公式ウェブサイト
### 技術リファレンス

* MDN 翻訳者向け SVN ガイド
VoIP
====

VoIP (Voice over Internet Protocol) は、IP (Internet Protocol) ネットワーク上で音声情報の伝送に使用される技術です。一般的な VoIP パッケージには、Skype、MSN Messenger、Yahoo 、その他多くのものが含まれます。VoIP ではすべてデジタルで伝送されます。それらは IP テレフォニーやブロードバンドテレフォニーとしても知られています。VoIP 技術を利用する主な理由は費用です。

VoIP は、コンピューターから特定の VoIP 電話機や、特定のアダプターを接続した一般的な電話機から直接電話をかけることを可能にします。VoIP は高速インターネット接続が必要です。通常、インターネットを通じて電話をかける場合、インターネットを通じて個々の E メールを送る度に料金を支払わないのと同じように、利用者がインターネットアクセスに支払う料金とは別に追加料金はかかりません。

関連項目
----

### 一般知識

* Wikipedia の VoIP
Stacking context (重ね合わせコンテキスト)
==============================

**重ね合わせコンテキスト** (Stacking context) は、ウェブページ上の要素が他の要素の上にどのように配置されるかを表すもので、ちょうど机の上のインデックスカードを横に並べたり重ねたりするようなものです。

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

### 一般知識

* 詳しい説明と例
Cacheable (キャッシュ可能)
===================

**キャッシュ可能**なレスポンス (応答) とは、キャッシュすることが可能な HTTP レスポンスで、後で取り出して使用するために格納され、サーバーへの新しいリクエスト (要求) を節約します。 すべての HTTP レスポンスがキャッシュされるわけではなく、キャッシュされる HTTP レスポンスには次の制約があります。

* リクエストで使用されるメソッドは、それ自体が*キャッシュ可能*です (`GET` メソッドまたは `HEAD` メソッド)。 フレッシュネス (新鮮さ) が示され、`Content-Location` ヘッダーが設定されている場合は、`POST` または `PATCH` リクエストへのレスポンスもキャッシュできますが、これはほとんど実装されていません。 (例えば、 Firefox は https://bugzilla.mozilla.org/show\_bug.cgi?id=109553 により、それをサポートしていません。) `PUT` や `DELETE` のような他のメソッドはキャッシュ可能ではなく、その結果をキャッシュすることはできません。
* レスポンスのステータスコードはアプリケーション キャッシュによって*認識*され、*キャッシュ可能*と見なされます。キャッシュ可能なステータスコードは、 `200`, `203`, `204`, `206`, `300`, `301`, `404`, `405`, `410`, `414`, `501` です。
* レスポンスには、*具体的なヘッダー*があり、たとえば `Cache-Control` はキャッシュを抑止します。

特定の URI に対するキャッシュ不可能なリクエスト/レスポンスの中には、同じ URI で以前にキャッシュされたレスポンスを無効にするものがあることに注意してください。たとえば、pageX.html への `PUT` は、同じ URI に対して、キャッシュされたすべての `GET` リクエストまたは `HEAD` リクエストを無効化します。

リクエストのメソッドとレスポンスのステータスの両方がキャッシュ可能な場合、リクエストに対するレスポンスをキャッシュすることができます。
```

GET /pageX.html HTTP/1.1
(…)

200 OK
(…)
```


`PUT` リクエストはキャッシュできません。 さらに、`HEAD` または `GET` を介して行われた同じ URI へのリクエストに対して、キャッシュされたデータを無効にします。
```

PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)
```


レスポンス内の特定の `Cache-Control` ヘッダーは、キャッシュすることを防止できます。
```

GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)
```


1. 一般知識
    1. HTTP 仕様書の cacheable の定義
2. 技術的な知識
    1. 一般的なキャッシュ可能なメソッドの説明: `GET`, `HEAD`
    2. 一般的なキャッシュ不可能なメソッドの説明: `PUT`, `DELETE`, often `POST`
Server Timing
=============

Server Timing specification は、サーバーがリクエストとレスポンスのサイクルからユーザーエージェントにパフォーマンス指標を伝達することを可能にします。また、アプリケーションの配信を最適化するために、JavaScript のインターフェイスを利用して、アプリケーションがこれらの指標を収集・処理・動作することを可能にします。

関連情報
----

* https://www.w3.org/TR/server-timing/
* Resource Timing
Search engine (検索エンジン)
======================

検索エンジンは World Wide Web から情報を集めて、特定の情報を探しているユーザーに表示するソフトウェアです。

検索エンジンは下記のプロセスを実行します:

* **ウェブクローリング:** ウェブページのサイト内、サイト外両方への ハイパーリンク を伝ってウェブサイトを検索します。ウェブサイトのオーナーは検索エンジンの*ウェブクローラー* (またはスパイダー) からサイトのエリアにアクセスされるのを除外できて、その方法は "ロポット排除" 情報を `robots.txt` というファイル名で定義します。
* **インデックス作成:** クロール済みの特定のウェブページを、キーワードとその他の情報とで関連付けます。これでユーザーが関連するページを可能な限り速く見つけられます。
* **検索:** 検索エンジンに与えられたキーワードとその他のコマンドでできたクエリに基づいて関連するウェブページを探します。検索エンジンはクエリにマッチしたページの URLs を見つけると、関連性を元にランク付けします。そしてランキングの順番でユーザーに結果を表示します。

最も人気の検索エンジンは Google です。その他の主な検索エンジンには Yahoo!, Bing, Baidu, AOL があります。

詳細情報
----

* Wikipedia の Web search engine
* Webopedia の Search engine
* How Stuff Works の "How Internet search engines work"
Scroll container (スクロールコンテナー)
=============================

**スクロールコンテナー** (scroll container) は、コンテナーに `overflow: scroll` を適用するか、 `overflow: auto` であふれるほどの量のコンテンツがあるときに生成されます。

スクロールコンテナーによって、ユーザーは領域をあふれて表示から切り取られ非表示になる部分をスクロールさせることができます。スクロールコンテナーの見える部分は、スクロールポートと呼ばれます。

* MDN Web Docs 用語集:
    + スクロールコンテナー
    + スクロールポート
* 関連 CSS プロパティ:
    + `overflow`
Origin (オリジン)
=============

ウェブコンテンツの**オリジン** (Origin) は、ウェブコンテンツにアクセスするために使われる URL の *スキーム* （プロトコル）、 *ホスト* （ドメイン）、 *ポート番号* によって定義されます。スキーム、ホスト、ポート番号がすべて一致した場合のみ、 2 つのオブジェクトは同じオリジンであると言えます。

操作によっては同じオリジンのコンテンツに限定されており、この制約は CORS を使用して緩和することができます。

例
-

これらはスキーム (`http`) とホスト名 (`example.com`) が同じなので同一オリジンであり、ファイルパスが異なるのは関係がありません。

* `http://example.com/app1/index.html`
* `http://example.com/app2/index.html`

サーバーは HTTP コンテンツを配信するのに既定で 80 番ポートを使うため、これらは同一オリジンです。

* `http://example.com:80`
* `http://example.com`

これらは、異なるスキームを使用しているため、同じオリジンではありません。

* `http://example.com/app1`
* `https://example.com/app2`

これらは、異なるホスト名を使用しているため、同一オリジンではありません。

* `http://example.com`
* `http://www.example.com`
* `http://myapp.example.com`

これらは異なるポートを使用するため、同一オリジンではありません。

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

* 同一オリジンポリシー
* Site
* HTML 仕様書: origin（英語）
Ciphertext (暗号文)
================

暗号学では、暗号文は情報を伝達するスクランブルされたメッセージですが、正しいサイファー と正しい秘密（通常は鍵）で復号して元の平文を再現しない限り判読できません。 暗号文の安全性、ひいては含まれる情報の安全性は、安全なサイファーを使用し、鍵の秘密を保つことに依存します。

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

### 一般知識

* Wikipedia 上の 暗号文
privileged code
===============

**Privileged code** - 拡張機能の Javascript コード。例えば、コンテンツスクリプトのコード。

**Non-privileged** - Web ページ上の Javascript 。
Immutable (イミュータブル)
===================

 イミュータブル（不変）オブジェクトとは、内容を変更できないオブジェクトのことです。
 オブジェクトは、さまざまな理由でイミュータブルである可能性があります。

例えば次のような理由です。

* パフォーマンス向上のため（オブジェクトの将来の変更を計画しない）
* メモリ使用量を減らすため（オブジェクト全体を複製するのではなくオブジェクト参照 を行う）
* スレッドセーフにするため（複数のスレッドは互いに干渉することなく同じオブジェクトを参照できます）
より詳しく知る
-------

### 一般知識

* Wikipedia 上の イミュータブル
* ミュータブル
XPath
=====

**XPath** とはXML ドキュメント内のセクションやコンテンツにアクセスできる問い合わせ言語です。

関連項目
----

### 技術リファレンス

* MDN の XPath 文書
* XPath specification
### 一般知識

* Official website
* Wikipedia の XPath
TOFU
====

**Trust On First Use** **(TOFU**) とは、クライアントが未知のサーバーとの信頼関係（trust relationship）を築く必要がある場合における、セキュリティ・モデルです。それを行うために、クライアントは識別子（例：公開鍵）がローカルに保存されているか探します。もし識別子が見つかれば、クライアントは接続を確立できます。もし識別子が見つからなければ、クライアントが識別子を信頼すべきか、ユーザーに決定を促します。

TOFU は SSH プロトコルの中で使われており、サーバーによって返される最初の公開鍵をブラウザが受け入れる HTTP Public Key Pinning (HPKP) と、ブラウザがリダイレクトルールに従う場面での `Strict-Transport-Security` (HSTS) が該当します。

関連項目
----

* HTTP Public Key Pinning (HPKP)
* `Public-Key-Pins` (en-US)
* Wikipedia: TOFU
Microsoft Internet Explorer
===========================

Internet Explorer (IE) は、レガシーエンタープライズ向けに Microsoft が管理している無料のグラフィカルブラウザーです。Microsoft Edge が現在、デフォルトの Windows ブラウザーです。

Microsoft は、1995 年に「Microsoft Plus!」と呼ばれるパッケージの一部として IE を Windows に初めて同梱しました。2002 年頃までに、Internet Explorer は世界で最も使用されていたブラウザーになりましたが、その後 Chrome、Firefox、Edge、Safari に押されています。

IE は多くのリリースを行っており、現在、バージョン 11.0.12 で、デスクトップ、モバイル、および Xbox コンソールのバージョンが利用可能です。以前は Mac と UNIX で利用できましたが、Microsoft は 2003 年と 2001 年にこれらのバージョンをそれぞれ廃止しました。

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

### 一般知識

* Wikipedia 上の Internet Explorer
* Wikipedia 上の Internet Explorer の歴史 (英語)
* Wikipedia 上の Internet Explorer のバージョン (英語)
### Internet Explorer について学ぶ

* http://windows.microsoft.com/en-us/internet-explorer/download-ie
* http://windows.microsoft.com/en-us/windows7/getting-started-with-internet-explorer-9
* http://windows.microsoft.com/en-us/internet-explorer/internet-explorer-help
* http://windows.microsoft.com/en-us/internet-explorer/make-ie-default-browser#ie=ie-11
### 技術文書

* http://windows.microsoft.com/en-us/internet-explorer/products/ie-8/system-requirements
* http://windows.microsoft.com/en-us/internet-explorer/products/ie-9/system-requirements
* http://support.microsoft.com/kb/969393
Color wheel (色相環)
=================

**色相環** (color wheel)は、色のパレットを円の中に表します。色相環は、原点（円の中心）からの角度と距離の 2 つの極座標によって識別される色を表示することができます。

色相環は `hsl()`, `hwb()`, `lch()` のように極座標や円柱座標で表現された色を比較するのに便利です。

このような場合、「補色」はたいてい同じ直径上の反対側にあります。同様に、「単色」 - 同じ「色調」あるが、「濃淡」が異なる色 - も同じ半径上にありますし、「三元色」 - 色相環の周囲に等間隔に配置された 3 つの色で、互いにうまく作用する色 - も見つけやすいです。

色相環は、異なる色合いを選びたいときに、実生活で使用します。例えば、壁のペンキや家具の色を選択するときなどです。

 デジタルの世界では、色相環はカラーピッカーで使用されます。 macOS の既定のものは次のものです。
 ![The default color picker on macOS Monterey](/ja/docs/Glossary/Color_wheel/color_wheel_macos.png)

関連情報
----

* *Color theory and the color wheel*
* *How to Use the Color Wheel to Pick Your Perfect Color Palette* in *Better Homes & Gardens*
* 色相環（ウィキペディア）
* `<color>`（CSS 色の型）
Conditional (条件式)
=================

**条件** とは、条件式が満たされるか否かによって、通常のコード実行を強制停止したり、変更したりする、一連のルールです。

特定の条件が満たされる場合、1 つの命令または一連の命令が実行されます。それ以外では、他の命令が実行されます。1 つの命令または一連の命令の実行を、条件がまだ満たされない間に繰り返すこともできます。

詳細情報
----

### 一般知識

* Condition (Wikipedia)
* 制御フロー (MDN)
### 学習教材

* MDN での 制御フローとエラー処理
WCAG
====

*Web Content Accessibility Guidelines* (**WCAG**) は W3C の Web Accessibility Initiative が発行している勧告です。まずは障害のある人や、そのほか携帯電話のように端末に制限のあるユーザーのために、コンテンツをアクセシブルにする基準を示したガイドライン集を定めています。

2008 年 12 月 11 日に WCAG 1.0 の次となる WCAG 2.0 が W3C から勧告されました。アクセシビリティの 4 つの原則 (知覚可能、操作可能、理解可能、および堅牢性) に基づき、12 のガイドラインがあり、各ガイドラインには検証可能な達成基準が設けられています。

WCAG には 3 つの適合レベルが定義されています :

* 優先度 1: 満たさなければ 1 つ以上のグループがウェブコンテンツにアクセスできなくなる、ウェブ開発者が**満たさなければならない**要件。この適合レベルが A とされています。
* 優先度 2: 満たさなければいくつかのグループがウェブコンテンツにアクセスしづらくなる、ウェブ開発者が**満たすべき**要件。この適合レベルが AA またはダブル A とされています。
* 優先度 3: いくつかのグループがウェブコンテンツにアクセスしやすくするための、ウェブ開発者が**満たしてもよい**要件。この適合レベルが AAA もしくはトリプル A とされています。
関連項目
----

### 一般知識

* Wikipedia の WCAG
### Technical knowledge

* MDN でのアクセシビリティ情報 (en-US)
* The WCAG 2.0 recommendation at the W3C
Smoke Test (スモークテスト)
====================

スモークテストは、ソフトウェアの中核機能の機能テストと単体テストから構成され、より詳細なテストの前に実施されます。

スモークテストは次のような疑問に答えてくれます。

* プログラムが正しく起動するか
* メインコントロールボタンは機能するか
* 単純なブランクのテストユーザーアカウントを新規に保存できるか

これらの基本的な機能のテストに失敗する場合、この段階で、より詳細な品質作業に時間を費やす意味がないことは明らかです。

関連情報
----

### 一般知識

* Wikipedia 上の Smoke testing (software) (英語)
Grid Line (グリッド線)
=================

**グリッド線**は CSS グリッドレイアウトを用いて明示的グリッドにトラックを定義すると作成されます。

例
-

次の例は 3 列のトラックと 2 行のトラックを含むグリッドです。この例では 4 列の線と 3 行の線が作られます。
```

\* {
  box-sizing: border-box;
}

.wrapper {
  border: 2px solid #f76707;
  border-radius: 5px;
  background-color: #fff4e6;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(3, 100px);
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
```



```html
<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
```



```css
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: 100px 100px;
}
```


線は線番号で指定できます。英語や日本語のように左から右方向に、列の線 1 がグリッドの左端、行の線 1 が上端となります。線番号は文書の書字方向を考慮するため、右書きの言語においては例えば列の線 1 はグリッドの右端となります。下の画像では左書きの言語でのグリッドにおける線番号を図示しています。

![行番号でグリッドを示す図。](/ja/docs/Glossary/Grid_Lines/1_diagram_numbered_grid_lines.png)

明示的グリッド外にコンテンツを保持するため暗黙的トラックが作成されると暗黙的グリッド上にも線は作成されますが、それらの線は番号で指定することはできません。

線番号でグリッド上のアイテムの配置を指定する
----------------------

グリッドを作成すると、線番号を使ってアイテムをグリッド上に配置できます。次の例では、列の線 1 から列の線 3 、行の線 1 から行の線 3 の間にアイテムを配置しています。
```

\* {
  box-sizing: border-box;
}

.wrapper {
  border: 2px solid #f76707;
  border-radius: 5px;
  background-color: #fff4e6;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(3, 100px);
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
```



```html
<div class="wrapper">
  <div class="item">Item</div>
</div>
```



```css
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: 100px 100px;
}
.item {
  grid-column-start: 1;
  grid-column-end: 3;
  grid-row-start: 1;
  grid-row-end: 3;
}
```

名前付き線
-----

明示的グリッドで生成される線には、トラックサイズの情報の前後に角括弧で囲んだ名前書くことで、名前を付けられます。次に示すように、線番号の代わりにこれらの名前を使ってアイテムを配置できます。
```

\* {
  box-sizing: border-box;
}

.wrapper {
  border: 2px solid #f76707;
  border-radius: 5px;
  background-color: #fff4e6;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(3, 100px);
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
```



```html
<div class="wrapper">
  <div class="item">Item</div>
</div>
```



```css
.wrapper {
  display: grid;
  grid-template-columns: [col1-start] 1fr [col2-start] 1fr [col3-start] 1fr [cols-end];
  grid-template-rows: [row1-start] 100px [row2-start] 100px [rows-end];
}
.item {
  grid-column-start: col1-start;
  grid-column-end: col3-start;
  grid-row-start: row1-start;
  grid-row-end: rows-end;
}
```

関連情報
----

### プロパティリファレンス

* `grid-template-columns`
* `grid-template-rows`
* `grid-column-start`
* `grid-column-end`
* `grid-column`
* `grid-row-start`
* `grid-row-end`
* `grid-row`
### 参考資料

* CSS グリッドレイアウトガイド:
    + グリッドレイアウトの基本概念
    + 線に基づく配置を使用したグリッドレイアウト
    + 名前付きグリッド線を使用したレイアウト
    + グリッド、論理的な値、書字方向
    + CSS グリッドレイアウト仕様におけるグリッド線の定義
HTTP/2
======

**HTTP/2** は HTTP ネットワークプロトコルの改訂版です。 HTTP/2 の主な目的は、リクエストとレスポンス全体を全二重化できるようにすることで、レイテンシーを縮小し、 HTTP ヘッダーフィールドを効率的に圧縮することでプロトコルのオーバーヘッドを最小化し、リクエストの優先度やサーバーからのプッシュ通知に対応することです。

HTTP/2 は HTTP のアプリケーション的な意味を何も変更していません。 HTTP 1.1 にあった主要な概念、たとえば HTTP メソッド、ステータスコード、 URI、ヘッダーフィールドなどはすべてそのまま残っています。その代わり、 HTTP/2 はデータを書式化 (フレーム化) するしてクライアントとサーバー間で転送する方法を、プロセス全体の管理と、新しいフレーム化レイヤーの中の複雑さをアプリケーションから隠蔽することの両面で変更しました。結果として、既存のすべてのアプリケーションが変更なしに配信することができます。

1. 一般知識
    1. HTTP on MDN
    2. Wikipedia の HTTP/2
2. 用語集
    1. HTTP
    2. Latency
First contentful paint
======================

**First Contentful Paint** (FCP) は、ブラウザーが DOM からコンテンツの最初のビットをレンダリングし、ページが実際読み込み中というユーザーへの最初のフィードバックがなされる時間です。FCP が終わった時に「起こっているのか」という質問は「はい」です。

FCP タイムスタンプは、ブラウザーがテキスト、画像(背景画像を含む)、白以外の canvas や SVG を描画した時です。これには iframe は含まず、ただ仮の webfont でのテキストは含んでいます。これはユーザーがページコンテンツを消費する最初の時間です。

参照
--

* First Meaningful Paint
* Paint Timing specification
Firefox OS
==========

Firefox OS は、Linux と Firefox の強力な Gecko レンダリングエンジンをベースにした Mozilla のモバイル OS です。Firefox OS は主に、Gaia、 Gecko、Gonk から構成されています。

関連項目
----

### 一般知識

* Wikipedia 上の Firefox OS
### 技術リファレンス

* MDN の Firefox OS Zone で Firefox OS について更に調べましょう!
The Khronos Group (クロノス・グループ)
=============================

**クロノス・グループ**は、業界トップレベルの企業 150 社以上が参加する、オープンかつ非営利のコンソーシアムです。3D グラフィックス、 拡張現実、バーチャルリアリティ、並列プログラミング、ビジョンアクセラレーション、機械学習のための高度かつロイヤリティフリーの標準規格を策定することを目的としています。

クロノス・グループは、OpenGL や `WebGL API` などの標準を管理しています。

関連情報
----

* クロノス・グループ (ウィキペディア)
* クロノス・グループのウェブサイト
Node.js
=======

Node.js は、クロスプラットフォームの JavaScript 実行環境であり、サーバー側アプリケーションやネットワークアプリケーションを JavaScript で構築することができます。

詳細情報
----

### 一般知識

* Wikipedia 上のNode.js
* Node.js のウェブサイト
### 技術的情報

* API 文書
* チュートリアル
IPv6
====

**IPv6** は、インターネット の基礎をなす現在のバージョンの通信 プロトコル です。IPv6 はより多くの IP アドレス を使えるなどの理由により、ゆっくりと IPv4 を置き換えています。

関連項目
----

### 一般知識

* Wikipedia の IPv6 の記事
Cross-site scripting (クロスサイトスクリプティング)
=====================================

クロスサイトスクリプティング (XSS) とは、悪意あるクライアントサイドのコードをウェブサイトに挿入するセキュリティ攻撃です。挿入されたコードは被害者のブラウザー上で実行され、アクセス制限の回避やユーザーへのなりすましなどにつながります。Open Web Application Security Project の調べによると、XSS は 2017 年において 7 番目に多いウェブアプリの脆弱性でした。

この攻撃が成功してしまうのは、ウェブアプリにバリデーションとエンコーディングが十分に実装されていない場合です。ユーザーのブラウザーは、悪意あるスクリプトを信頼できないものとして検知できません。そのため、任意の Cookie やセッショントークン、ウェブサイト固有の機密情報などにアクセスされたり、悪意あるスクリプトによって HTML のコンテンツが書き換えられてしまったりします。

関連情報
----

* クロスサイトスクリプティング (Wikipedia)
* Cross-site scripting (OWASP)
* クロスサイトスクリプティングに関する別の記事
* XSS Attack – Exploit & Protection
Cryptanalysis (暗号解読)
====================

暗号解読は、コードと暗号システムを破る方法を研究する暗号学の分野です。暗号解読は、特に力まかせ探索よりも効率的な方法によって、暗号を破る技術を作り出す。頻度分析や偶然性の指標などの従来の方法に加えて、解読法には線形解読法や差分解読法などの最新の方法があり、より高度な暗号を破ることができます。

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

### 一般知識

* Wikipedia 上の 暗号解読
Cookie
======

Cookie は、ウェブサイトによってウェブブラウザーを通じて訪問者のコンピューター上に残される小さな情報です。

Cookie はウェブサイトのウェブ体験を個人化するために使用されます。ウェブサイトにアクセスする際のユーザーの設定や入力を含む場合もあります。ユーザーはウェブブラウザーを設定して Cookie の受け入れや拒否、削除を行うことができます。

サーバーレベルでは HTTP の `Set-Cookie` ヘッダーを用いることで、または、JavaScript の `document.cookie` を用いることで、Cookie を設定したり修正したりすることができます。

関連項目
----

### 一般知識

* Wikipedia 上の HTTP cookie
Type (型)
========

**型** (または*データ型*) とは、どのような種類のデータや構造を格納できるかに影響を与える値の特性のことです。例えば、論理型 (boolean) のデータ型は常に `true` または `false` の値しか保持しませんが、 文字列型 (string) はテキスト文字列を保持し、数値型 (number) はあらゆる種類の数値を保持します。

値のデータ型は、その値に対してどの演算が有効であるかにも影響します。例えば、数値型の値は他の数値を乗算することができますが、文字列を乗算することは、その文字列に "2" など数値*しか*入っていなかった場合であってもできません。

型は異なる値の比較においても有用な知識です。構造化型同士の比較は必ずしも簡単に仮定できるものではありません。前のデータ構造が同じであっても、プロトタイプチェーンの中に継承された構造がある可能性があるからです。

値の型が分からない場合は、 `typeof` 演算子で知ることができます。

1. 用語集
    1. JavaScript
    2. 文字列
    3. number
    4. bigint
    5. boolean
    6. null
    7. undefined
    8. symbol
2. Wikipedia の データ型
3. JavaScript のデータ型
Preflight request (プリフライトリクエスト)
===============================

CORS のプリフライトリクエストは CORS のリクエストの一つであり、サーバーが CORS プロトコルを理解していて準備がされていることを、特定のメソッドとヘッダーを使用してチェックします。

これは `OPTIONS` リクエストであり、 `Access-Control-Request-Method`,`Access-Control-Request-Headers`, `Origin` の 3 つの HTTP リクエストヘッダー使用します。

プリフライトリクエストはブラウザーが自動的に発行するものであり、通常は、フロントエンドの開発者が自分でそのようなリクエストを作成する必要はありません。これはリクエストが"to be preflighted"と修飾されている場合に現れ、単純リクエストの場合は省略されます。

例えば、クライアントはプリフライトリクエストを使用して、 `DELETE` リクエストを送信する前に、 `DELETE` リクエストを許可するかどうかをサーバーに尋ねるかもしれません。
```

OPTIONS /resource/foo
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://foo.bar.org
```


サーバーが許可している場合は、プリフライトリクエストへのレスポンスで、 `Access-Control-Allow-Methods` レスポンスヘッダーに `DELETE` を含めます。
```

HTTP/1.1 204 No Content
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400
```


プリフライトレスポンスは、上記の例のように `Access-Control-Max-Age` ヘッダを使用して同じ URL で作成されたリクエストに対して、オプションでキャッシュすることができます。

関連情報
----

* CORS
* `OPTIONS`
Copyleft (コピーレフト)
=================

コピーレフトは、一般的にライセンス（使用許諾）を示す用語です。当該作品を再配布する際に、オリジナルと同じライセンスを適用することが求められるような作品のライセンスを表します。コピーレフトライセンスの例として GNU GPL （ソフトウェア向け）や Creative Commons SA（Share Alike）（アート作品向け）があります。

関連項目
----

### 一般知識

* ウィキペディアのコピーレフトの記事です。