recursal/MDN huggingface dataset:
Navigation directive (ナビゲーションディレクティブ)
=====================================

**CSP のナビゲーションディレクティブ**は `Content-Security-Policy` ヘッダーで使用され、たとえば、ユーザーがどの場所に移動したり、フォームを送信したりすることができるかを管理します。

ナビゲーションディレクティブは `default-src` ディレクティブで代替されません。

完全な一覧はナビゲーションディレクティブを参照してください。

関連項目
----

* https://www.w3.org/TR/CSP/#directives-navigation
* 他の種類のディレクティブ:
    + フェッチディレクティブ
    + 文書ディレクティブ
    + 報告ディレクティブ
    + `block-all-mixed-content`
    + `upgrade-insecure-requests`
    + `require-sri-for`
    + `trusted-types`
* `Content-Security-Policy`

1. 用語集
    1. CSP
    2. フェッチディレクティブ
    3. 文書ディレクティブ
    4. 報告ディレクティブ
IDE (統合開発環境)
============

統合開発環境（Integrated Development Environment、**IDE**）または、対話型開発環境（Interactive Development environment）は、ソフトウェア開発のためにコンピュータープログラマーに包括的な機能を提供するソフトウェアアプリケーションです。 IDE は、通常、ソースコードエディター、ビルド自動化ツール、デバッガーで構成されています。

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

### 一般知識

* Wikipedia 上の 統合開発環境
Shadow tree
===========

**Shadow ツリー** は DOM nodes のツリーで、最上位のノードは **Shadow ルート** ( **Shadow DOM** 内にある最上位のノード) です。Shadow ツリーは標準的な DOM から隠されたツリーで、標準的な DOM ノードがホストになります。 隠されたノードは通常の DOM の機能では直接確認できませんが、特殊な Shadow DOM API を使うとアクセスすることができます。

Shadow ツリー内のノードは Shadow ツリーの外部の影響を一切受けません。逆に Shadow ツリーの外部は Shadow ツリー内の影響を一切受けません。これにより細かい実装をカプセル化することができ、特に custom elements や他の先進的なデザインパラダイムの実装に便利です。

関連項目
----

### 一般知識

* Using shadow DOM
### 技術情報

* `Element.shadowRoot` と `Element.attachShadow()`
* `ShadowRoot`
* `<slot>`
Crawler (クローラー)
===============

ウェブクローラーは、よく bot や robot と呼ばれ、ウェブページからデータを収集するために自動的にウェブを閲覧するものです。一般的に、 (Google や Bing などの) 検索エンジンは、クローラーを用いてインデックスを構築します。

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

* Wikipedia の クローラ

1. MDN Web Docs 用語集
    1. 検索エンジン
IANA
====

**IANA** (Internet Assigned Numbers Authority) は、インターネットプロトコルで使用されるドメイン名、IP アドレス、その他の名前と番号の記録および/または割り当てを担当する ICANN の下部組織です。

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

### 一般知識

* 公式ウェブサイト
* Wikipedia 上の IANA
Google Chrome
=============

Google Chrome は Google が開発した無償のブラウザーです。オープンソースプロジェクトである Chromium がベースとなっています。重要な違いについては Chromium wiki で説明されています。 Chrome は独自のレイアウトエンジンである Blink に対応しています。なお、 iOS 版の Chrome は Blink ではなくプラットフォームの WebView を使用しています。

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

### General knowledge

* Wikipedia 上の Google Chrome 記事
### Chrome の利用者へ

日常的に Chrome を利用している方は、いずれかを選んでください。

* Android 版
* iOS 版
* デスクトップ版
### Web 開発者へ

もし Chrome の最新機能が必要な場合は安定版より先にリリースされるものをインストールしてください。 Google は頻繁にアップデートをし、安定版とは別に動作するよう設計しています。最新情報については Chrome Release Blog でご確認ください。

* Android 版 Chrome Dev
* デスクトップ版 Chrome Canary
First Meaningful Paint
======================

**First Meaningful Paint** (FMP) は、スクロールせずに見える最大のレイアウト変更が行われ、ウェブフォントが読み込まれた後のペイントです。 "お役に立ちましたか?" 最初に意味のあるペイントが完了すると "はい" になります。

関連項目
----

* First contentful paint
Forbidden response header name (禁止レスンポンスヘッダー名)
==============================================

禁止レスポンスヘッダー名は、プログラムから変更することができない HTTP ヘッダーの名前 (`Set-Cookie`) です。

関連情報
----

* Fetch specification: forbidden response-header name
* 禁止ヘッダー名 （用語集）
Static method (静的メソッド)
======================

静的メソッド (または *静的関数*) とは、メソッドのうちオブジェクトのメンバーとして定義されているものの、コンストラクターで生成されたオブジェクトインスタンスからではなく、API のオブジェクトコンストラクターから直接アクセスできるものです。

Web API では、静的メソッドはインターフェイスで定義されているものの、先にその型のオブジェクトのインスタンス化をせずに呼び出すことができます。

オブジェクトインスタンスに対して呼び出されるメソッドは、*インスタンスメソッド*と呼ばれます。

例
-

Notifications API では、`Notification.requestPermission()` メソッドは実際は `Notification` コンストラクター自身に対して呼び出されます。— これが静的メソッドです。


```js
let promise = Notification.requestPermission();
```


一方で、`Notification.close()` メソッドはインスタンスメソッドです。— これは特定の通知オブジェクトインスタンスに対して呼び出され、これが表現するシステム通知を閉じます。


```js
let myNotification = new Notification("This is my notification");

myNotification.close();
```


1. 一般知識
    1. Techopedia の Static Method
2. JavaScript リファレンス
    1. static
3. MDN Web Docs 用語集
    1. オブジェクト
    2. メソッド
RGB
===

RGB は、赤、緑、青という 3 つの基本要素（またはチャネル）を混ぜ合わせることで表現されるカラーモデルです。各色は、最終的な色を決定する際、赤、緑、青それぞれの強度を示す 3 つの数字のシーケンス (通常は 0.0〜1.0、または 0〜255) で表されます。

There are many ways to describe the RGB components of a color. In CSS they can be represented as a single 24-bit integer in hexadecimal notation (for example, `#add8e6` is light blue), or in functional notation as three separate 8-bit integers (for example, rgb(46, 139, 87) is sea green). In OpenGL, WebGL, and GLSL the red-green-blue components are fractions (floating-point numbers between 0.0 and 1.0), although in the actual color buffer they are typically stored as 8-bit integers. Graphically, a color can be represented as a point in a three-dimensional grid or cube, where each dimension (or axis) corresponds to a different channel.

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

### General knowledge

* RGB color model on Wikipedia
### Learn about it

* CSS data type: <color>
STUN
====

**STUN** (Session Traversal Utilities for NAT) は、NAT (Network Address Translator) を介してデータを転送する際の補助プロトコルです。STUNは、NATの内側にあるコンピュータの IP アドレス、ポート、接続状態を返します。

参考情報
----

* STUN (ウィキペディア)
* WebRTC プロトコル
### 技術リファレンス

* 仕様
RTL (右書き)
=========

**RTL** (**Right To Left**, 右書き) は、テキストが右から左へ書かれることを示す locale プロパティです。例えば、`he` ロケール (ヘブライ語) は右書きを定義します。アラビア語 (`ar`) も右書きで書かれる有名な言語です。

RTL とは対照的に、LTR (Left To Right, 左書き) は、英語 (`en`, `en-US`, `en-GB`, など)、スペイン語 (`es`)、フランス語 (`fr`) などの他の言語で使用されます。

* MDN Web Docs 用語集
    + Localization
    + LTR (左書き)
    + RTL (右書き)
Global variable (グローバル変数)
=========================

グローバル変数はグローバルスコープで宣言された変数です。言い換えると、他のすべてのスコープから参照可能な変数です。

JavaScript では、グローバル変数はグローバルオブジェクトのプロパティです。

関連項目
----

### 一般知識

* Wikipedia の グローバル変数
Middleware (ミドルウェア)
===================

ミドルウェアとは、システムの各部分がデータを通信および管理できるようにする、あらゆるソフトウェアまたはサービスの（定義があやふやな）用語です。コンポーネントと入出力間の通信を処理するソフトウェアであるため、開発者はアプリケーションの特定の目的に集中できます。

サーバー側のウェブアプリケーションのフレームワークでは、この用語は、データベースアクセスなどのタスクを処理するために、フレームワークのリクエスト/レスポンス処理パイプラインに追加できる既成のソフトウェアコンポーネントを指すのに使用されることがよくあります。

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

### 一般知識

* Wikipedia 上の ミドルウェア（分散アプリケーション）（英語）
* Wikipedia 上の メッセージ指向ミドルウェア
* Wikipedia 上の ミドルウェア
Scope (スコープ)
============

実行の現在のコンテキスト。値 と**式**が「見える」、または参照できる文脈。\*\*変数\*\*や他の式が "現在のスコープ内にない" 場合、使用できません。スコープを階層構造で階層化して、子スコープから親スコープにアクセスできるようにすることもできますが、その逆はできません。

**関数**は JavaScript の**クロージャ**として機能し、すなわちスコープを作成して、 (例えば) 関数内で排他的に定義された変数に、関数の外側からや他の関数の中からアクセスできないようになります。たとえば、以下は無効です。


```js
function exampleFunction() {
  var x = "declared inside function"; // x can only be used in exampleFunction
  console.log("Inside function");
  console.log(x);
}

console.log(x); // Causes error
```


ただし、次のコードでは変数が関数外で宣言されており、グローバルになるため、有効になります。


```js
var x = "declared outside function";

exampleFunction();

function exampleFunction() {
  console.log("Inside function");
  console.log(x);
}

console.log("Outside function");
console.log(x);
```

詳細情報
----

### 一般知識

* Wikipedia の スコープ
Challenge-response authentication (チャレンジレスポンス認証)
================================================

セキュリティプロトコルでは、チャレンジは、毎回異なるレスポンス（応答）を生成するために、サーバーによってクライアントに送信されるデータです。 チャレンジレスポンスプロトコルは、攻撃者が元のメッセージを聞いて、後でそれ再送信して元のメッセージと同じ資格情報を取得する反射攻撃に対抗する 1 つの方法です。

HTTP 認証プロトコルはチャレンジレスポンスがベースですが、"Basic" プロトコルは実際のチャレンジを使用していません（レルムは常に同じです）。

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

* Wikipedia 上の Challenge-response authentication （英語）
Idempotent (べき等)
================

ある HTTP メソッドが**べき等**であるとは、サーバーが同じ状況にあるとき、特定のリクエストに対して何回でも続けて同じ効果が起こることをいいます。このことは、べき等なメソッドでは (統計を取る際のことを除いて) 副作用が生じるはずではないと言うこともできます 。 適切に実装された `GET`、`HEAD`、`PUT`、`DELETE` の各メソッドは**べき等**ですが、`POST` メソッドはそうではありません。安全なメソッドはすべてべき等です。

べき等であるためには、サーバーにおける裏側の実際の状態だけが考慮されるので、返される状態コードはリクエストごとに異なる場合があります。 例えば、最初に `DELETE` メソッドが呼び出された場合は、おそらく `200` を返しますが、それ以降は `404` を返すでしょう。RESTful な API の設計において、*最後の入力操作を削除する*機能を `DELETE` メソッドを使って実装すべきでないとされるのも、`DELETE` メソッドがべき等であることを示唆しています。

なお、メソッドがべき等であっても、サーバーやアプリケーションによってべき等性の破壊が生じることがあります。

例えば、 `GET /pageX HTTP/1.1` はべき等です。連続して何度か呼び出しても、クライアントは同じ結果を得ます。
```

GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
GET /pageX HTTP/1.1
```


`POST /add_row HTTP/1.1` はべき等ではありません。 何度か呼び出すと、その回数だけ列に追加されていきます。
```

POST /add_row HTTP/1.1
POST /add_row HTTP/1.1   -> Adds a 2nd row
POST /add_row HTTP/1.1   -> Adds a 3rd row
```


`DELETE /idX/delete HTTP/1.1` はべき等ですが、状態コードは数回のリクエストの間に変化することがあります。
```

DELETE /idX/delete HTTP/1.1   -> idX が存在する場合は 200 を返却
DELETE /idX/delete HTTP/1.1   -> ちょうど削除されたので 404 を返却
DELETE /idX/delete HTTP/1.1   -> 404 を返却
```

関連情報
----

* HTTP 規格におけるべき等の定義
* べき等なメソッド: `GET`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`
* べき等でないメソッド: `POST`,`PATCH`, `CONNECT`
Screen reader (スクリーンリーダー)
=========================

スクリーンリーダーは、画面に表示された内容を視覚以外の方法で伝えるソフトウェアアプリケーションのことです。通常はテキストを音声に変換しますが、点字や音声アイコンに変換することもあります。スクリーンリーダーは、目の不自由な方には欠かせませんし、視覚障碍者や読み書きのできない方、学習障碍のある方にも役立ちます。ブラウザーの拡張機能を利用したスクリーンリーダーもありますが、ほとんどのスクリーンリーダーは、ブラウザーだけでなく、すべてのユーザーのアプリケーションに対してシステム全体で動作します。

ウェブアクセシビリティに関しては、ほとんどのユーザーエージェントがアクセシビリティオブジェクトモデルを提供し、スクリーンリーダーは、さまざまなオペレーティングシステムの機能を使用し、フック技術を使用して専用のアクセシビリティ API と対話します。

VoiceOver
---------

macOS には、内蔵のスクリーンリーダーである VoiceOver が搭載されています。VoiceOver にアクセスするには、システム環境設定 > アクセシビリティ > VoiceOver を選択します。また、fn + コマンド + F5 で VoiceOver のオンオフを切り替えることもできます。VoiceOver は音読とコンテンツの表示の両方を行います。読み上げられた内容は、濃い灰色のボックスに表示されます。

デスクトップ/ノートのスクリーンリーダーのユーザーは、キーボードまたはその他のポインティングデバイスではないものを使用してウェブサイトを操作します。使用をエミュレートする最良の方法は、同じことを行うことです。

VoiceOver を使用しないキーボードナビゲーションと同様に、Tab キーと矢印キーを使用してインタラクティブな要素を操作することができます。

* 次のインタラクティブ要素: Tab
* 前のインタラクティブ要素: Shift + Tab
* 同じ名前のグループ内の次のラジオボタン: 右または下矢印
* 同じ名前のグループ内の前のラジオボタン: 左または上矢印

ページのコンテンツを移動するには、Tab キーとその他の一連のキー、および Control + Option キーを使用します。

* 次の見出し: Control + Option + H
* 次のリスト: Control + Option + X
* 次の図: 次の図：Control + Option + G
* 次のテーブル: Control + Option + T
* HTML の階層を下がる: Control + Option + 右矢印
* 前の見出し: Shift + Control + Option + H
* 前のリスト: Shift + Control + Option + X
* 前の図: Shift + Control + Option + G
* 前のテーブル: Shift + Control + Option + T
* HTML の階層を上がる: Control + Option + 左矢印
関連情報
----

* ARIA
XQuery
======

**XQuery** は XML データベースでデータを更新、検索、計算するためのコンピューター言語です。

より詳しく学ぶ
-------

### 一般知識

* 公式ウェブサイト
* Wikipedia の XQuery
HMAC
====

HMAC は、暗号的にメッセージを認証するために使用されるプロトコルです。 どのような種類の暗号化関数も使用でき、その強さは基礎となる関数（たとえば SHA1 または MD5）と選択された秘密鍵に依存します。このような組み合わせでは、HMAC-SHA1 などの複合名で HMAC 検証アルゴリズムが認識されます。

HMAC は、完全性と認証の両方を保証するために使用されます。

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

### 一般知識

* Wikipedia 上の HMAC
### 技術文書

* IETF の RFC 2104 （英語）
Gecko
=====

**Gecko** は Mozilla プロジェクトによって開発された レイアウトエンジンであり、Firefox や Firefox OS を含む多くのアプリ / デバイスで使用されています。

ウェブブラウザーは HTML、CSS、Javascript、埋め込みコンテンツ（画像など）を解釈して画面に表示するためのレイアウトエンジンと呼ばれるソフトウェアが必要です。また Gecko はサポート対象のすべての OS 上で API と適切に連携し、また適切な API が関連するサポート対象にのみ公開されるようにも動作します。そのため Gecko はネットワークスタック、グラフィックススタック、レイアウトエンジン、JavaScript 仮想マシン、移植レイヤーといった機能などを併せ持っています。

Firefox OS の場合、アプリケーションはすべてウェブアプリケーションなので、Firefox OS は Gecko をアプリケーションランタイムとしても使用しています。

詳細情報
----

### 一般知識

* Wikipedia 上の記事： Gecko
Representation header (表現ヘッダー)
==============================

**表現ヘッダー** (representation header) は HTTP ヘッダーのうち、 HTTP メッセージの本文で送られる特定の*表現*を説明するものです。

 表現とは、特定のリソースをさまざまな形で表現したものです。
 例えば、同じデータが XML や JSON などの特定のメディア種別の形式に変換されたり、特定の記述言語や地理的地域にローカライズされたり、伝送用に圧縮またはその他の方法で符号化されたりする可能性があります。
 基本的なリソースはそれぞれの場合で同じですが、その表現は異なります。

クライアントはコンテンツネゴシエーションの際に（`Accept-*` ヘッダーを用いて）送るべき形式を指定し、表現ヘッダーは実際に受信される*選択された表現*の形式をクライアントに伝えます。

 表現ヘッダーは HTTP リクエストおよびレスポンスの両方のメッセージに存在する可能性があります。
 `HEAD` リクエストに対するレスポンスとして送られる場合、リソースが実際にリクエストされたときに選択される本文の内容を説明します。

表現ヘッダーには、 `Content-Type`, `Content-Encoding`, `Content-Language`, `Content-Location` があります。

関連情報
----

* RFC 7231, section 3: Representations
* すべての HTTP ヘッダーの一覧
* ペイロードヘッダー (en-US)
* エンティティヘッダー
* `Digest` (en-US)/ `Want-Digest` (en-US)
RTSP: Real-time streaming protocol
==================================

Real-time streaming protocol (RTSP) はネットワークプロトコルの一つで、サーバーとクライアントの間でどのようにメディアのストリーミングが行われるかを制御するものです。基本的に、 RTSP は動画をストリーミングするときに [一時停止]/[再生] をクリックしたときに何が起こるかを記述するためのプロトコルです。コンピューターがリモコンであり、ストリーミングサーバーがテレビであった場合、 RTSP はテレビに作用するリモコンの操作の方法を記述します。

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

### 一般知識

* ウィキペディア上の RTSP
* RFC 7826 (このプロトコルの動作を詳細に定義した文書の一つ)

* MDN Web Docs 用語集
    + RTSP
URI
===

**URI** *(Uniform Resource Identifier)* は、リソースを示す文字列です。

もっとも一般的なものは URL であり、ウェブ上の場所を指定することで、リソースを識別します。対照的に URN は、本の ISBN のような与えられた名前空間の中で名前によってリソースを参照します。

関連情報
----

* ウィキペディアの URI の記事
* RFC 3986 の URI
Block cipher mode of operation (暗号利用モード)
========================================

暗号利用モード (通常は単に「モード」と呼ばれます) は、ブロックサイズよりも長いメッセージを暗号化または復号化するためにブロック暗号を使用する方法を指定します。

現在使用されているほとんどの対称鍵アルゴリズムはブロック暗号です。これは、一度に 1 ブロックずつデータを暗号化することを意味します。各ブロックのサイズは固定されており、アルゴリズムによって決定されます。たとえば、AES は 16 バイトのブロックを使用します。ブロック暗号は常に *モード* と共に使用されます。モードは、ブロックサイズより長いメッセージを安全に暗号化する方法を指定します。たとえば、AES は暗号ですが、CTR、CBC、および GCM はすべてモードです。不適切なモードを使用したり、モードを誤って使用したりすると、使用する暗号アルゴリズムによって本来提供されるセキュリティを損なってしまう可能性があります。
AJAX
====

**AJAX** (Asynchronous JavaScript And XML) は、 XMLHttpRequest として知られる技術を用いて、より複雑で動的なウェブページを構築するプログラミング手法のことです。

AJAX によって、ウェブページ全体を再読み込みせずに、 HTML ページの DOM の一部分を更新することができます。 AJAX は非同期処理も可能です。つまり、ウェブページのある部分を再読み込みしようとする間もコードは実行され続けます (ウェブページのある部分の再読み込みが終わるまでコードの実行がブロックされる同期処理と比べて)。

対話型のウェブサイトや最新のウェブ標準では、AJAX は徐々に JavaScript フレームワーク内の関数や公式の `Fetch API` 標準に置き換えられています。

関連情報
----

* AJAX (ウィキペディア)
* AJAX
* AJAX - 始めましょう
* 用語集:
    + XMLHttpRequest
* `XMLHttpRequest`
* `Fetch API`
* Fetch API の使用
* Synchronous vs. Asynchronous Communications
RAIL
====

**RAIL** とは、**Response, Animation, Idle, Load** の頭文字をとったもので、2015 年に Google Chrome チームが発案した、ブラウザー内のユーザーエクスペリエンスとパフォーマンスにフォーカスしたパフォーマンスモデルです。RAIL におけるパフォーマンスとは、"特定のデバイスでサイトを高速化させることではなく、ユーザーを幸せにすること"です。インタラクションには、ページロード、アイドル状態、入力への応答、スクロールとアニメーションの 4 つのステージがあります。各項目については、以下に頭文字順に解説します。

**Response**

ユーザーからの何らかの入力を確認した場合、その入力に対する応答が **100 ミリ秒**以内であることです。

**Animation**

アニメーション中に行われる各フレームの処理が **16 ミリ秒**以内であることです。それは、一貫性もたせ、ジャンクの回避につながります。

**Idle**

JavaScript のメインスレッドを使用する場合、1 チャンクあたりの処理が **50 ミリ秒**以内であることです。それは、ユーザーインタラクションのためにメインスレッドを開放することにつながります。

**Load**

インタラクティブなコンテンツの読み込みが **1 秒**以内であることです。

関連情報
----

* Recommended Web Performance Timings: How long is too long (en-US)
Instance (インスタンス)
=================

コンストラクターによって作成されたオブジェクトは、そのコンストラクターのインスタンスになります。

詳細情報
----

### 一般知識

* ウィキペディア上の記事インスタンス
BigInt
======

JavaScript において, **BigInt** は 任意精度演算 で表現される整数数値型の一種です。他のプログラミング言語では異なる数値型が存在します。例としては、Integer、Float、 Double、 Bignum です。

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

### 一般知識

* Wikipedia 上のデータ型
### 技術文書

* JavaScript のデータ構造: `BigInt`
* JavaScript のグローバルオブジェクト `BigInt`
Certified
=========

**認証済み**とは、アプリケーションやコンテンツ、データの伝達が、関連する分野の専門性を持つ熟練者による評価を受けたことを意味し、従って、完全性、安全性、信頼性を持つことを示します。

暗号化における認証についての詳細は、デジタル証明書をご覧ください。

もっと学ぶ
-----

### 一般知識

* 情報セキュリティのチュートリアル
* Wikipedia の Certification(英語)
### Firefox OS

* Firefox OS の内部アプリは、認証アプリと呼ばれることもあります: 詳しくは、アプリの許可をご覧ください。
SPA (単一ページアプリケーション)
===================

SPA (Single-page application) はウェブアプリの実装の一種で、単一のウェブ文書のみを読み込み、別な内容を表する際には `XMLHttpRequest` や Fetch などの JavaScript API を通じて単一文書の本文の内容を更新するものです。

これにより、サーバーから新しいページ全体を読み込まずにユーザーにウェブサイトを使わせることができ、性能の向上やより動的な利用方法が得られるのと引き換えに、 SEO などで不利になったり、状態の保守、操作の改善、意味のある性能の監視のためにより労力が必要になったりします。

関連項目
----

### 一般知識

主要な SPA フレームワークには次のようなものがあります。

* React
* Angular
* Vue.JS

1. Wikipedia の記事
    1. シングルページアプリケーション
2. 用語集
    1. API
    2. AJAX
    3. JavaScript
3. クライアント側 JavaScript フレームワークの理解
デジタル証明書
=======

デジタル証明書は、公開鍵暗号を組織に結びつけるデータファイルです。デジタル証明書には、コモンネーム(例:mozilla.org)、組織単位(例:Mozilla Corporation)、場所(例:Mountain View)などの組織に関する情報が含まれています。デジタル証明書は、証明書の信頼性を証明する認証局によって最も一般的に署名されます。

関連項目
----

* Wikipedia の公開鍵証明書 の記事
Decryption (復号)
===============

暗号学では、**復号**とは暗号文を平文に変換することです。

復号は暗号プリミティブであり、サイファーと呼ばれる暗号アルゴリズムを使用して暗号文メッセージを平文に変換します。 暗号化と同様に、現代のサイファーの復号は、特定のアルゴリズムと鍵と呼ばれる秘密を使用して実行されます。 アルゴリズムはしばしば公開されるので、暗号化が安全なままであれば、鍵は秘密にしておく必要があります。

![復号プリミティブ。](/ja/docs/Glossary/Decryption/decryption.png)

復号は暗号化の逆であり、鍵が秘密のままであれば、特定の秘密を知らずに復号すると、復号は数学的に実行するのが難しい。 どのくらい難しいかは、選択された暗号アルゴリズムの安全性に依存し、暗号解読の進展と共に進化します。

関連情報
----

* 暗号化と復号
Native
======

*ネイティブ*アプリケーションは、ターゲットアーキテクチャを構成するハードウェア/ソフトウェア環境で実行するようにコンパイルされています。

ネイティブ Android アプリの例は、 Android ツールチェインを使用して Java で記述されたモバイルアプリケーションです。

一方、ブラウザー内で実行される Web アプリはネイティブではありません — これは、ネイティブ環境自体ではなく、ネイティブ環境の上にある Web ブラウザーで実行されます。

関連項目
----

### 一般知識

* Wikipedia 上の Native (computing) (英語)
Style origin (スタイルオリジン)
=======================

CSS では、スタイル変更のソースには 3 つのカテゴリがあります。これらのカテゴリは**スタイルオリジン**と呼ばれています。これらのカテゴリはそれぞれ、**ユーザーエージェントオリジン**、**ユーザーオリジン**、**作者オリジン**と呼ばれています。

ユーザーエージェントオリジン

ユーザーエージェントオリジンは、ユーザーのウェブブラウザで使用されている既定のスタイルで構成されるスタイルオリジンです。コンテンツに他のスタイルが適用されていない場合、要素をレンダリングする際には、ユーザーエージェントオリジンのスタイルが使用されます。

ユーザーオリジン

ユーザーオリジンは、ウェブブラウザーのユーザーが追加した CSS を含むスタイルオリジンです。これらは、開発者ツールを使ってスタイルを追加したものや、 Stylus や Stylish のようにコンテンツにカスタムスタイルを自動的に適用するブラウザー拡張機能によるものなどがあります。

作者オリジン

作者オリジンは、文書の一部となるすべてのスタイルを含むスタイルオリジンであり、 HTML 内に埋め込まれているか、外部のスタイルシートファイルから読み込まれているかは関係ありません。

スタイルオリジンは、 `unset` や `revert` キーワードを使用している場合など、スタイルを削除する際に要素に適用されているスタイルのカスケードを、どこまでロールバック (またはバックトラック) するかを決定するために使用されます。

関連項目
----

### 技術情報

* CSS カスケードと継承: カスケードオリジン
Lossless compression (可逆圧縮)
===========================

**可逆圧縮** (Lossless compression) はデータ圧縮アルゴリズムの一種で、圧縮データから元のデータを完全に再構築することができるものです。可逆圧縮方法は可逆です。可逆圧縮の例としては、 GZIP, Brotli, WebP, PNG などがあります。

一方、非可逆圧縮は元のファイルから一部のデータを犠牲にすることで厳密ではない近似値を使用しており、元に戻すことができない圧縮方法です。

1. 用語集
    1. GZIP
    2. Brotli
    3. PNG
    4. 非可逆圧縮
ICE
===

**ICE** (*Interactive Connectivity Establishment*) は、ネットワークトポロジー (通常は音声および/またはビデオのチャット) に関係なく、2 つのピアを互いに接続するための WebRTC に (他の技術があまたある中で) 使用されるフレームワークです。 このプロトコルを使用すると、ネットワークアドレストランスレーター (NAT) を使用してそれぞれのローカルネットワーク上の他のデバイスとグローバル IP アドレスを共有していても、2 つのピアが相互に接続を見つけて確立することができます。

フレームワークのアルゴリズムは、以下のオプションを順番に試して、2つのピアを接続するために最低遅延のパスを探します。

1. 直接 UDP 接続（この場合かつ、この場合のみ、STUN サーバーを使用してピアのネットワーク対向アドレスを検出します）
2. HTTP ポート経由の直接 TCP 接続
3. HTTPS ポート経由の直接 TCP 接続
4. リレー/TURN サーバー経由の間接接続 (たとえば、NAT トラバーサルをブロックするファイアウォールの背後にピアがいる場合など、直接接続が失敗した場合)
関連情報
----

* WebRTC、ICE を使用する主要なウェブ関連プロトコル
* WebRTC プロトコル
* RFC 5245、ICE の IETF 仕様書 (英語)
* `RTCIceCandidate` (en-US)、ICE 候補を表すインターフェイス
JPEG
====

**JPEG** (*Joint Photographic Experts Group*) とは、一般的に使われている、デジタル画像用の非可逆圧縮の方法です。

JPEG 圧縮は、連続したレイヤーで適用される色度サブサンプリング、離散コサイン変換と量子化、ランレングスデルタ＆ハフマンエンコーディングの 3 つの圧縮技術で構成されています。色度サブサンプリングは、人間の視覚システムが色の違いに対する視力が輝度よりも低いことを利用して、彩度情報の段階をルーマ情報よりも低くすることを意味します。離散コサイン変換は、異なる周波数で振動するコサイン関数の和でデータポイントの有限列を表現します。

関連項目
----

### 一般知識

* Wikipedia 上の JPEG
Sticky activation (粘着的な有効化)
===========================

**粘着的な有効化** (または「ユーザーによる粘着的な有効化」) は、ユーザーがボタンを押したか､マウスを動かしたか､メニューを使用したか､他の何らかの操作をしたことを表すウインドウの状態です｡

ユーザーが現在ページを操作しているか、ページを読み込んでからタッチ、ポインター、またはキーボードの操作を完了したとき、ページは「ユーザーによって有効化された」とみなされます。ユーザーによる粘着的な有効化では、有効化が行われたら (一時的な有効化と違って) セッションの間リセットされません。

*粘着的な有効化* を必要とする API の例は、ユーザーによる有効化によって制御される機能 を参照してください。

プログラムから現在のウインドウの粘着的な有効化の状態を参照するには、`UserActivation.hasBeenActive` プロパティを参照します。

関連情報
----

* HTML Living Standard > Sticky activation
* 一時的な有効化
* `UserActivation.hasBeenActive`
mime
====

MIME（Multipurpose internet mail extensions、多目的インターネットメール拡張）は、例えば、音声、動画、画像のような、ASCII テキスト以外の形式の文書を記述するための規格です。 当初は電子メールの添付ファイルに使用されていましたが、文書の種類をどこでも定義するための事実上の標準となっています。

MIMEタイプも参照してください。

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

### 一般知識

* Wikipedia 上の MIME
Git
===

**Git**はオープンソースで無償の、分散型ソースコードマネジメント (SCM)システムです。Git を用いることで、分散した開発チームがコードベースを取り扱うことができます。従来の SCM システムから一線を画しているのは、一般的な操作(ブランチ(branching)、コミット(commiting)など)を自身の開発機で、master リポジトリを変更することなしに、それどころか master リポジトリへの書き込み権限がなくても行うことができる機能です。

詳細
--

### 基本的な知識

* 公式サイトの資料
* GitHub, Git をベースとしたグラフィカルなプロジェクトホスト
Forbidden header name (禁止ヘッダー名)
===============================

**禁止ヘッダー名**はプログラムから変更することができない HTTP ヘッダーの名前、特に、 HTTP **リクエスト**ヘッダーの名前です (反対に、禁止レスポンスヘッダー名もあります)。

このようなヘッダーを変更することは禁止されています。なぜなら、ユーザーエージェントがヘッダーを完全に制御できるからです。`Sec-` で始まる名前は、`XMLHttpRequest` のような、開発者にヘッダーの制御を許可する Fetch を使った API から安全に新しいヘッダーを作成するために予約されています。

禁止ヘッダー名は `Proxy-` や `Sec-` で始まるもの、または以下の名前の 1 つです。

* `Accept-Charset`
* `Accept-Encoding`
* `Access-Control-Request-Headers`
* `Access-Control-Request-Method`
* `Connection`
* `Content-Length`
* `Cookie`
* `Cookie2`
* `Date`
* `DNT`
* `Expect`
* `Feature-Policy`
* `Host`
* `Keep-Alive`
* `Origin`
* `Proxy-`
* `Sec-`
* `Referer`
* `TE`
* `Trailer`
* `Transfer-Encoding`
* `Upgrade`
* `Via`

**メモ:** `User-Agent` ヘッダーは仕様としては禁止ではなくなりました (Firefox 43 で実装された forbidden header name list を参照)。 Fetch の Headers オブジェクトや、XHR の setRequestHeader() などでこのヘッダーを設定することが可能です。ただし、 Chrome は Fetch リクエストからこのヘッダーを暗黙的に削除します (Chromium バグ 571722 を参照)。

関連情報
----

禁止レスポンスヘッダー名 (用語集)
NNTP
====

**NNTP** (Network News Transfer Protocol) は、Usenet のメッセージをクライアントからサーバー、またはサーバー間で転送するために使用されるプロトコルです。

関連項目
----

### 一般知識

* Wikipedia のNNTP
### 技術リファレンス

* IETF より: RFC 3977 about NNTP (2006)
Fork (フォーク)
===========

Fork (フォーク) とは、ある時点での既存のソフトウェアプロジェクトのコピーであり、自分自身の変更をプロジェクトに追加するためのものです。基本的に、元のソフトウェアのライセンスが許せば、コードをコピーして変更を加えて独自のバージョンを開発することができます。それ自体が「フォーク」となります。

フォークは、フリーでオープンソースのソフトウェア開発でよく見られます。 これは、 Git (及び GitHub プラットフォーム) を使用した貢献モデルにより、有名な用語になりました。

詳細情報
----

### よく知られているフォーク

* Linux ディストリビューション
* Node.js と io.js (のちに統合されました)
* LibreOffice (OpenOffice からのフォーク)

1. General Knowledge
    1. Wikipedia の フォーク
    2. How to fork a GitHub repo (Git コンテキストのフォーク)
2. MDN Web Docs 用語集
    1. フォーク
PNG
===

**PNG** (*Portable Network Graphics*) は、可逆データ圧縮をサポートする画像ファイル形式です。

関連項目
----

### 一般知識

* Wikipedia 上の PNG
LTR (左書き)
=========

**LTR** (**Left To Right**, 左書き) は、テキストが左から右に書かれることを示すロケールプロパティです。例えば、 `en-US` ロケール (アメリカ英語) は左書きを指定します。西洋の言語の多くは、世界中の他の言語と同様に、 LTR で書かれます。

LTR とは逆に、 RTL (Right To Left, 右書き) はアラビア語 (`ar`) やヘブライ語 (`he`) など、他の一般的な語で使われます。

技術情報
----

* ローカリゼーションと国際化
* MDN Web Docs 用語集
    + locale
    + LTR
    + RTL
* HTML グローバル属性
    + `dir`
    + `lang`
* CSS
    + `:dir()` (en-US)
    + `direction`
    + `unicode-bidi`
    + `writing-mode`
Operand (オペランド)
===============

**オペランド**は演算子で操作されるデータを表す命令の一部です。例えば、2 つの数字を加算する時、数字はオペランドで "+" が演算子です。

詳細情報
----

* Wikipedia の 被演算子
Reporting directive (報告ディレクティブ)
===============================

**CSP の報告ディレクティブ**は `Content-Security-Policy` ヘッダーで使用され、 CSP 違反の報告過程を制御します。

完全な一覧については報告ディレクティブを参照してください。

関連情報
----

* 用語集
    + CSP
    + フェッチディレクティブ
    + 文書ディレクティブ
    + ナビゲーションディレクティブ
* リファレンス
    + https://www.w3.org/TR/CSP/#directives-reporting
    + `upgrade-insecure-requests`
    + `block-all-mixed-content`
    + `require-sri-for` 
    非推奨
    + `Content-Security-Policy`
Argument (実引数)
==============

**実引数**は関数の入力として渡される値（プリミティブまたはオブジェクト）です。

例:


```js
const argument1 = "Web";
const argument2 = "Development";
example(argument1, argument2); // 2 つの引数を渡す

// この関数は 2 つの値を取る
function example(parameter1, parameter2) {
  console.log(parameter1); // 出力 = "Web"
  console.log(parameter2); // 出力 = "Development"
}
```


関数呼び出しにおける実引数の順序は、関数定義内の仮引数の順序と同じでなければなりません。


```js
const argument1 = "foo";
const argument2 = [1, 2, 3];
example(argument1, argument2); // 2 つの実引数を渡す

// この関数は単一の値を取るので、渡された第 2 引数は無視される。
function example(parameter) {
  console.log(parameter); // 出力 = foo
}
```

関連情報
----

* 仮引数と実引数の違い（ウィキペディア）
* JavaScript の `arguments` オブジェクト
CSP
===

CSP (Content Security Policy) は特定の種類のウェブサイト関連攻撃 ( XSS やデータインジェクション) を検出して軽減するのに使われます。

実装は HTTP の `Content-Security-Policy` というヘッダーを元にしています。

より深く学ぶ
------

### 一般知識

* Wilkipedia での Content Security Policy
### 技術知識

* MDN の Content Security Policy ドキュメント
Entity header (エンティティヘッダー)
==========================

**警告:** 現在の HTTP/1.1 仕様書では、エンティティ、エンティティヘッダー、エンティティ本体を参照することはなくなりました。一部のフィールドは表現ヘッダーフィールドとして参照されるようになりました。

エンティティヘッダーは HTTP ヘッダーの一種で、 HTTP メッセージの本体を説明します（すなわちメッセージ本体についてのメタデータです）。エンティティヘッダーには、 `Content-Length`, `Content-Language`, `Content-Encoding`, `Content-Type`, `Expires`, などがあります。エンティティヘッダーは HTTP のリクエストおよびレスポンスの両方に存在することがあります。

次の例では、 `Content-Length` はエンティティヘッダーであり、 `Host` と `User-Agent` はリクエストヘッダーです。


```http
POST /myform.html HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Content-Length: 128
```

詳細情報
----

* 表現ヘッダー
P2P
===

P2P (ピア・ツー・ピア)はすべての参加しているノード（*ピア*）が同等の特権を持ち、負荷を共有する、コンピュータネットワークアーキテクチャです。P2P は、複数の*クライアント*ノードがサービスの中心となる*サーバー*に接続するクライアント・サーバーネットワークアーキテクチャとは異なります。 P2P はよくブロックチェーンアプリケーションで見られます。

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

### 一般知識

* Wikipedia 上の記事「P2P」
Fingerprinting (フィンガープリンティング)
=============================

**フィンガープリンティング**は、ウェブサイトがブラウザーや基盤となるオペレーティングシステムを判別できる特性を収集し、組み合わせることにより、特定のブラウザー（ひいては特定のユーザー）を識別する手法です。フィンガープリントの要素は、例えば次のようなものです。

* ブラウザーのバージョン
* タイムゾーンや推奨される言語
* そのシステムで利用できる動画または音声コーデックの組み合わせ
* そのシステムにインストールされているフォント
* ブラウザーの設定の状態
* コンピューターの画面サイズや解像度

ウェブサイトは、端末上で JavaScript や CSS を実行することでこのような情報を取得することができ、このデータを組み合わせることで、ブラウザー固有のフィンガープリントを作成し、ウェブ全体でユーザーを追跡するために使用することができます。

ウェブ標準は、ウェブサイトが識別情報を収集する能力を最小限に抑えるように設計されており、ブラウザーは通常、独自の保護機能も追加しています。

関連情報
----

* Cover Your Tracks: ウェブサイトがブラウザーにフィンガープリントを使用することができるデータを示すツールです。
* Mitigating Browser Fingerprinting in Web Specifications: フィンガープリンティングを防ぐための仕様作成者向けのベストプラクティス。