diff --git a/docs/1-trial-session/03-css/index.mdx b/docs/1-trial-session/03-css/index.mdx index 6ec61b5f0..5d68cafa0 100644 --- a/docs/1-trial-session/03-css/index.mdx +++ b/docs/1-trial-session/03-css/index.mdx @@ -20,9 +20,9 @@ title: CSS ![Hello World!](./red-hello-world.png) {/* prettier-ignore */} -`style`属性には、**プロパティ**と呼ばれるスタイルの種類と、その値を、コロン記号で繋いだ形式で記述します。また、複数のプロパティを指定する場合は、セミコロンで区切ります。 +`style`属性には、**プロパティ**と呼ばれるスタイルの種類と、その値を、コロン記号で繋いだ形式で記述します。また、複数のプロパティを指定する場合は、セミコロンで区切ります。 -この例では、`color`というプロパティに`red`という値を設定し、`font-size`というプロパティに`24px`という値を設定しています。これにより、`Hello World!`という文字列が、赤色で、24ピクセルの大きさで表示されます。 +この例では、`color`というプロパティに`red`という値を設定し、`font-size`というプロパティに`24px`という値を設定しています。これにより、`Hello World!`という文字列が、赤色で、24ピクセルの大きさで表示されます。 :::tip[`div`要素] diff --git a/docs/1-trial-session/05-expressions/index.mdx b/docs/1-trial-session/05-expressions/index.mdx index 4bc4afb1e..4db31ff34 100644 --- a/docs/1-trial-session/05-expressions/index.mdx +++ b/docs/1-trial-session/05-expressions/index.mdx @@ -28,16 +28,16 @@ document.write(3); document.write(3 + 4); ``` -## 演算子優先順位 +## 演算子優先順位 {/* prettier-ignore */} -演算子には、優先順位が設定されています。 +演算子には、優先順位が設定されています。 ```javascript title="script.js" document.write(3 + 4 * 5); ``` -`*`(乗算演算子)は`+`より優先順位が高く設定されているため、上記のコードの実行結果は`23`となります。 +`*`(乗算演算子)は`+`より優先順位が高く設定されているため、上記のコードの実行結果は`23`となります。 このコードにおいて、`3 + 4 * 5`や、`4 * 5`、`4`を**式**と呼びます。また、が計算され、その結果としてのが確定することを式が**評価**されるといいます。 diff --git a/docs/1-trial-session/07-boolean/index.mdx b/docs/1-trial-session/07-boolean/index.mdx index 43397e484..09dc89bb4 100644 --- a/docs/1-trial-session/07-boolean/index.mdx +++ b/docs/1-trial-session/07-boolean/index.mdx @@ -77,7 +77,7 @@ const height = 155; const canRideRollerCoasters = age >= 10 && height >= 120; // true ``` -`&&`や`||`よりも比較演算子の方が優先順位が高いため、複数の条件を「かつ」「または」などで組み合わせることは容易です。 +`&&`や`||`よりも比較演算子の方が優先順位が高いため、複数の条件を「かつ」「または」などで組み合わせることは容易です。 :::info @@ -114,7 +114,7 @@ document.write(isTanakaWinner); // true :::tip -`+`, `-`, `*`, `/`などの算術演算子は、比較演算子よりも優先順位が高いです。 +`+`, `-`, `*`, `/`などの算術演算子は、比較演算子よりも優先順位が高いです。 ```javascript const isBig = 10 + 5 > 10 - 3; // 15 > 7 なので true diff --git a/docs/1-trial-session/13-dom/index.mdx b/docs/1-trial-session/13-dom/index.mdx index c636a8215..1e275479b 100644 --- a/docs/1-trial-session/13-dom/index.mdx +++ b/docs/1-trial-session/13-dom/index.mdx @@ -69,7 +69,7 @@ greetingType.textContent = "evening"; ## HTML要素のスタイルを変更する -`document.getElementById`関数が返すオブジェクトの`style`プロパティは、その要素の `style`属性と対応します。 **`style`プロパティに格納されている自体もオブジェクト** となっており、その各プロパティがCSSのプロパティに対応します。 +`document.getElementById`関数が返すオブジェクトの`style`プロパティは、その要素の `style`属性と対応します。 **`style`プロパティに格納されている自体もオブジェクト** となっており、その各プロパティがCSSのプロパティに対応します。 ```js title="script.js" element.style.backgroundColor = "red"; @@ -80,7 +80,7 @@ element.style.backgroundColor = "red"; ![JavaScriptからスタイルを操作する](./change-styles.png) {/* prettier-ignore */} -CSSプロパティ名である`background-color`は、内部にハイフンが含まれているため、`element.style.background-color`のように指定してしまうと、ハイフンが減算演算子として解釈されてしまいます。`style`プロパティでは、CSSプロパティ名はキャメルケースとして指定する必要があることに注意してください。 +CSSプロパティ名である`background-color`は、内部にハイフンが含まれているため、`element.style.background-color`のように指定してしまうと、ハイフンが減算演算子として解釈されてしまいます。`style`プロパティでは、CSSプロパティ名はキャメルケースとして指定する必要があることに注意してください。 ### 確認問題 diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx index 0f51eac50..a9eb8df64 100644 --- a/docs/3-web-servers/07-fetch-api-post/index.mdx +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -12,7 +12,7 @@ Fetch APIを用いると、サーバーからデータを取得するだけで [Expressによるサーバー構築](../server/)の節では、クライアントからサーバーへの要求をリクエストと呼び、その応答をレスポンスと呼ぶことを学びました。HTTPのリクエストやレスポンスは、主に3つの要素から構成されます。 -- **制御情報**: リクエストやレスポンスの基本的な情報を含む部分。リクエストには、**メソッド**と呼ばれるHTTPリクエストの種類を指定するための情報や、リクエストの対象となるパスなどが含まれます。レスポンスには、**ステータスコード**と呼ばれる、リクエストの結果を示すコードが含まれます。 +- **制御情報**: リクエストやレスポンスの基本的な情報を含む部分。リクエストには、**メソッド**と呼ばれるHTTPリクエストの種類を指定するための情報や、リクエストの対象となるパスなどが含まれます。レスポンスには、**ステータスコード**と呼ばれる、リクエストの結果を示すコードが含まれます。 - **ヘッダー**: リクエストやレスポンスに関する追加情報を含む部分。名前と値のペアで構成され、リクエストやレスポンスの内容をより詳細に説明します。 - **ボディ**: リクエストやレスポンスの実際のデータ。リクエストのボディには、サーバーに送信するデータが含まれ、レスポンスのボディには、サーバーからクライアントに返されるデータが含まれます。 diff --git a/docs/4-advanced/01-cookie/index.mdx b/docs/4-advanced/01-cookie/index.mdx index 8db1f0fd0..3d128bbc0 100644 --- a/docs/4-advanced/01-cookie/index.mdx +++ b/docs/4-advanced/01-cookie/index.mdx @@ -24,7 +24,7 @@ IDとパスワードによる認証は、Webアプリケーションにおいて Webアプリケーションのクライアントが、サーバーから発行された証明書を保管しておく手段として、もっともよく用いられるのが**Cookie**です。Cookieは、ブラウザ内に保存される小さなデータで、文字列のキーと値のペアとして保存されます。 -Cookieを操作するための最も基本的な方法は、HTTPリクエストやレスポンスのヘッダを用いて送受信することです。HTTPレスポンスヘッダに`Set-Cookie`ヘッダを含めることにより、次回以降のリクエストで、クライアントはそのデータを`Cookie`リクエストヘッダに入れて毎回送信します。例えば、 +Cookieを操作するための最も基本的な方法は、HTTPリクエストやレスポンスのヘッダを用いて送受信することです。HTTPレスポンスヘッダに`Set-Cookie`ヘッダを含めることにより、次回以降のリクエストで、クライアントはそのデータを`Cookie`リクエストヘッダに入れて毎回送信します。例えば、 - `Set-Cookie: name=tanaka` - `Set-Cookie: age=20` diff --git a/docs/4-advanced/02-bundler/index.mdx b/docs/4-advanced/02-bundler/index.mdx index 1d084b755..3644df12f 100644 --- a/docs/4-advanced/02-bundler/index.mdx +++ b/docs/4-advanced/02-bundler/index.mdx @@ -88,7 +88,7 @@ dist/assets/index-_AYE_jbl.js 2.58 kB │ gzip: 1.40 kB ✓ built in 130ms ``` -これにより、カレントディレクトリに`dist`ディレクトリが作成され、トランスパイルバンドルの結果が格納されます。 +これにより、カレントディレクトリに`dist`ディレクトリが作成され、トランスパイルバンドルの結果が格納されます。 出力されたファイルを元のファイルと比較してみましょう。元の`index.html`や`main.js`が、変換された状態で出力されていることがわかります。ディレクトリごと[Netlify Drop](/docs/trial-session/deploy-application/)などにアップロードすれば使用可能になるでしょう。 diff --git a/src/components/Term/definitions.js b/src/components/Term/definitions.js deleted file mode 100644 index 421606457..000000000 --- a/src/components/Term/definitions.js +++ /dev/null @@ -1,443 +0,0 @@ -export default { - referencePageTitles: { - "/docs/trial-session/get-started/": "はじめてのWeb開発", - "/docs/trial-session/html/": "HTML", - "/docs/trial-session/css/": "CSS", - "/docs/trial-session/javascript/": "JavaScriptことはじめ", - "/docs/trial-session/expressions/": "値と式と演算子", - "/docs/trial-session/variables/": "変数", - "/docs/trial-session/boolean/": "論理値と論理演算子", - "/docs/trial-session/if-statement/": "条件分岐", - "/docs/trial-session/functions/": "関数", - "/docs/trial-session/loop/": "繰り返し", - "/docs/trial-session/array/": "配列", - "/docs/trial-session/object/": "オブジェクト", - "/docs/trial-session/dom/": "DOM", - "/docs/trial-session/events/": "イベント", - "/docs/trial-session/project/": "プロジェクト", - "/docs/trial-session/deploy-application/": "作ったウェブアプリを公開する", - "/docs/browser-apps/inspector/": "ブラウザの開発者ツール", - "/docs/browser-apps/reference/": "オブジェクトの参照", - "/docs/browser-apps/class/": "クラス", - "/docs/browser-apps/anonymous-function/": "無名関数", - "/docs/browser-apps/css-arrangement/": "CSSによる配置", - "/docs/browser-apps/project/": "プロジェクト", - "/docs/web-servers/wsl-setup/": "WSLのセットアップ", - "/docs/web-servers/linux-commands/": "Linuxコマンド", - "/docs/web-servers/node-js/": "はじめてのNode.js", - "/docs/web-servers/module/": "モジュールとnpm", - "/docs/web-servers/server/": "Expressによるサーバー構築", - "/docs/web-servers/fetch-api/": "Fetch APIによるデータの取得", - "/docs/web-servers/fetch-api-post/": "Fetch APIによるデータの送信", - "/docs/web-servers/database/": "データベース", - "/docs/web-servers/git-github-init/": "GitとGitHubのセットアップ", - "/docs/web-servers/git/": "Gitを用いたバージョン管理", - "/docs/web-servers/github/": "GitとGitHubを用いた共同開発", - "/docs/web-servers/deploy-on-render/": "Renderへのデプロイ", - "/docs/advanced/cookie/": "Cookieと認証", - "/docs/advanced/bundler/": "トランスパイラとモジュールバンドラ", - "/docs/advanced/typescript/": "TypeScript", - "/docs/advanced/react/": "React", - }, - terms: { - fileExtension: { - name: "拡張子", - definition: - "ファイル名のピリオド以降の部分。ファイルの種類を識別するために用いられる場合がある。Windowsでは標準では表示されないので、表示する設定にしておくと良い。", - referencePage: "/docs/trial-session/html/", - }, - git: { - name: "Git", - definition: "分散型バージョン管理システムのひとつ。", - referencePage: "/docs/web-servers/git-github-init/", - }, - github: { - name: "GitHub", - definition: - "Gitを用いて、プログラムの保存、共有、公開などができる、開発者のための総合プラットフォーム。", - referencePage: "/docs/web-servers/git-github-init/", - }, - repository: { - name: "リポジトリ", - definition: "ソースコードやそれに付随する情報のまとまり。", - referencePage: "/docs/web-servers/git/", - }, - html: { - name: "HTML", - definition: "ウェブページの構造を表すためのマークアップ言語。", - referencePage: "/docs/trial-session/html/", - }, - nest: { - name: "ネスト", - definition: "ある構造の中にある別の構造を入れること。", - referencePage: "/docs/trial-session/html/", - }, - javascript: { - name: "JavaScript", - definition: - "ウェブサイトに動きを与えるために生まれたスクリプト言語。現在は機能が拡張され、ウェブサイト以外にも応用されるようになった。", - referencePage: "/docs/trial-session/javascript/", - }, - startTag: { - name: "開始タグ", - definition: - "要素の先頭を表す。
内容
ならば
が開始タグ。属性をつけることができる。", - referencePage: "/docs/trial-session/html/", - }, - tag: { - name: "タグ", - definition: - "<から>までで囲まれた領域。を「aタグ」のように読んでいる。", - referencePage: "/docs/trial-session/html/", - }, - attribute: { - name: "属性", - definition: "HTML要素の特徴を指定する値。開始タグの中に含まれる。", - referencePage: "/docs/trial-session/html/", - }, - element: { - name: "HTML要素", - definition: "HTMLの開始タグから終了タグまでの領域。", - referencePage: "/docs/trial-session/html/", - }, - endTag: { - name: "終了タグ", - definition: "要素の終端を表す。
内容
ならば
が終了タグ。", - referencePage: "/docs/trial-session/html/", - }, - css: { - name: "CSS", - definition: - "ウェブサイトの見た目をカスタマイズするための言語。HTML要素のstyle属性はCSSを用いて記述する。", - referencePage: "/docs/trial-session/css/", - }, - styleAttribute: { - name: "style属性", - definition: - "表示可能な多くのHTML要素に対して設定できる、見た目をカスタマイズするための属性。", - referencePage: "/docs/trial-session/css/", - }, - cssProperty: { - name: "プロパティ (CSS)", - definition: - "CSSにより設定できる見た目の種類。例えばcolorは文字色、font-sizeは文字の大きさ。", - referencePage: "/docs/trial-session/css/", - }, - javascriptStatement: { - name: "文", - definition: - "JavaScriptにおいて、セミコロンによって区切られた命令の単位。ただしセミコロンは省略可能。", - referencePage: "/docs/trial-session/javascript/", - }, - javascriptValue: { - name: "値 (JavaScript)", - definition: - "JavaScript上で扱われる単一のデータ。数値や文字列、論理値、オブジェクトなど。", - referencePage: "/docs/trial-session/expressions/", - }, - javascriptString: { - name: "文字列 (JavaScript)", - definition: - "JavaScriptにおける値の一種。ダブルクォーテーションで囲んでプログラム上に直接記述できる。", - referencePage: "/docs/trial-session/expressions/", - }, - javascriptNumber: { - name: "数値 (JavaScript)", - definition: "JavaScriptにおける値の一種。プログラム中に直接記述できる。", - referencePage: "/docs/trial-session/expressions/", - }, - javascriptOperator: { - name: "演算子 (JavaScript)", - definition: - "JavaScriptにおいて、主に値に対して作用し、別の値を得るための記号。", - referencePage: "/docs/trial-session/expressions/", - }, - javascriptExpression: { - name: "式 (JavaScript)", - definition: "JavaScriptにおいて、計算・処理されて値を生成するまとまり。", - referencePage: "/docs/trial-session/expressions/", - }, - javascriptEvaluation: { - name: "評価 (JavaScript)", - definition: "JavaScriptの実行エンジンが式から値を生成する動作。", - referencePage: "/docs/trial-session/expressions/", - }, - javascriptOperatorPriority: { - name: "演算子の優先順位 (JavaScript)", - definition: - "複数の演算子を含む式の評価順序を決定するための指標。例えば、乗算演算子は加算演算子より優先順位が高いため、3 + 4 * 5は3 + (4 * 5)と評価される。", - referencePage: "/docs/trial-session/expressions/", - }, - javascriptVariable: { - name: "変数", - definition: "JavaScriptで値を一時的に保存しておくための入れ物。", - referencePage: "/docs/trial-session/variables/", - }, - javascriptDeclaration: { - name: "宣言 (JavaScript)", - definition: "JavaScriptで変数を使用するために必要な記述。", - referencePage: "/docs/trial-session/variables/", - }, - javascriptAssignment: { - name: "代入 (JavaScript)", - definition: - "変数に値を設定する操作。それまで入っていた値は消えてしまう。", - referencePage: "/docs/trial-session/variables/", - }, - camelCase: { - name: "キャメルケース", - definition: - "複数の単語にわたるフレーズを、2語目以降の先頭の文字を大文字にして結合する命名規則。例: camelCase", - referencePage: "/docs/trial-session/variables/", - }, - snakeCase: { - name: "スネークケース", - definition: - "複数の単語にわたるフレーズを、アンダーバー (_) によって結合する命名規則。例: snake_case", - referencePage: "/docs/trial-session/variables/", - }, - pascalCase: { - name: "パスカルケース", - definition: - "複数の単語にわたるフレーズを、それぞれの単語の先頭の文字を大文字にして結合する命名規則。例: PascalCase", - referencePage: "/docs/trial-session/variables/", - }, - javascriptBoolean: { - name: "論理値 (JavaScript)", - definition: - "JavaScriptにおける値の一種で、真偽を表すもの。trueまたはfalseの2種類しかない。", - referencePage: "/docs/trial-session/boolean/", - }, - javascriptIfStatement: { - name: "if文", - definition: - "与えられた真偽値が真である場合のみ{}ブロックの中の処理を実行する制御構造。", - referencePage: "/docs/trial-session/if-statement/", - }, - javascriptControlFlow: { - name: "制御構造 (JavaScript)", - definition: - "JavaScriptにおいて、通常上から下に実行される文の実行順序を変化させるための言語構造。", - referencePage: "/docs/trial-session/if-statement/", - }, - javascriptFunction: { - name: "関数 (JavaScript)", - definition: "引数や返り値を持つ文のまとまり。", - referencePage: "/docs/trial-session/functions/", - }, - javascriptParameter: { - name: "引数 (JavaScript)", - definition: "JavaScriptの関数に対し、呼び出し時に与えることのできる値。", - referencePage: "/docs/trial-session/functions/", - }, - javascriptPass: { - name: "~ (値) を~ (関数) に渡す", - definition: "JavaScriptの関数に値を引数として設定して実行すること。", - referencePage: "/docs/trial-session/functions/", - }, - javascriptReturnValue: { - name: "戻り値 (JavaScript)", - definition: "JavaScriptの関数呼び出し式の評価結果となる値。", - referencePage: "/docs/trial-session/functions/", - }, - javascriptReturn: { - name: "~ (値) を返す (JavaScript)", - definition: - "関数の実行が終了し、式の評価結果の値が確定すること。return文により実現できる。", - referencePage: "/docs/trial-session/functions/", - }, - javascriptScope: { - name: "スコープ (JavaScript)", - definition: "変数が有効な範囲。", - referencePage: "/docs/trial-session/functions/", - }, - javascriptArray: { - name: "配列 (JavaScript)", - definition: "複数の値を並べて1つにまとめた値。", - referencePage: "/docs/trial-session/array/", - }, - javascriptObject: { - name: "オブジェクト (JavaScript)", - definition: - "JavaScriptにおける値の一種。関連する値をまとめて1つの値として扱うことができる。プリミティブでない値はすべてオブジェクト。", - referencePage: "/docs/trial-session/object/", - }, - javascriptPrimitive: { - name: "プリミティブ (JavaScript)", - definition: - "JavaScriptにおける値の種類。数値や文字列、論理値などの「それ以上分解できない」値。", - referencePage: "/docs/trial-session/object/", - }, - javascriptProperty: { - name: "プロパティ (JavaScript)", - definition: - "JavaScriptのオブジェクトに関連付けられた属性のこと。学生を表すオブジェクトであれば、名前や年齢などのプロパティが考えられる。", - referencePage: "/docs/trial-session/object/", - }, - javascriptPropertyName: { - name: "プロパティ名 (JavaScript)", - definition: - "JavaScriptのオブジェクトにおいて、プロパティを表す名前のこと。", - referencePage: "/docs/trial-session/object/", - }, - javascriptPropertyValue: { - name: "プロパティ値 (JavaScript)", - definition: - "JavaScriptのオブジェクトにおいて、プロパティに関連付けられた値のこと。", - referencePage: "/docs/trial-session/object/", - }, - dom: { - name: "DOM", - definition: "HTML構造をJavaScriptのオブジェクトとして扱うための枠組み。", - referencePage: "/docs/trial-session/dom/", - }, - events: { - name: "イベント", - definition: - "ボタンのクリック、フォームへの入力、ページの読み込みなど、Webページ上で発生するあらゆるアクションの総称。", - referencePage: "/docs/trial-session/events/", - }, - eventHandler: { - name: "イベントハンドラ", - definition: - "イベント発生時の処理を行う仕組み。onclick関数、onload関数など、onキーワードにイベント名をつけた名称になっている。", - referencePage: "/docs/trial-session/events/", - }, - javascriptClass: { - name: "クラス (JavaScript)", - definition: - "同じプロパティを持つオブジェクトを統一的に扱うための仕組み。プロパティや関数(メソッド)を予め設定できる。", - referencePage: "/docs/browser-apps/class/", - }, - javascriptInstance: { - name: "インスタンス (JavaScript)", - definition: "new演算子をクラスに適用して生成されるオブジェクトのこと。", - referencePage: "/docs/browser-apps/class/", - }, - javascriptConstructor: { - name: "コンストラクタ (JavaScript)", - definition: - "インスタンスを作成するタイミング(new演算子をクラスに適用するタイミング)で実行される特殊なメソッド。constructorという名前で定義する必要がある。コンストラクタを定義すると、インスタンスを生成するときにプロパティの設定も同時に行うことができる。", - referencePage: "/docs/browser-apps/class/", - }, - javascriptMethod: { - name: "メソッド (JavaScript)", - definition: - "オブジェクトに対して定義された関数。メソッド内ではメソッドが定義されたオブジェクトをthisキーワードを用いて参照できる。", - referencePage: "/docs/browser-apps/class/", - }, - arrowFunction: { - name: "アロー関数", - definition: - "JavaScriptにおいて関数を生成するための式のひとつ。=>という記号が矢のように見えることから命名された。", - referencePage: "/docs/browser-apps/anonymous-function/", - }, - callbackFunction: { - name: "コールバック関数", - definition: "他の関数の引数として呼び出される関数。", - referencePage: "/docs/browser-apps/anonymous-function/", - }, - javascriptModule: { - name: "モジュール (JavaScript)", - definition: - "独立したプログラムの塊。JavaScriptでは、通常1つのファイルがモジュールとして扱われる。Node.jsでは、拡張子が.mjsの場合import文を用いてインポートして利用する。", - referencePage: "/docs/web-servers/module/", - }, - library: { - name: "ライブラリ", - definition: - "汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたもの。基本的に他のプログラムから利用され、単体では実行できない。", - referencePage: "/docs/web-servers/module/", - }, - serverClient: { - name: "サーバーとクライアント", - definition: - "サービスを提供する側のコンピューターやソフトウェアをサーバー、提供される側のコンピューターやソフトウェアをクライアントと呼ぶ。例えばGoogle ChromeなどのWebブラウザは、Webにおける代表的なクライアントソフトウェアである。", - referencePage: "/docs/web-servers/server/", - }, - json: { - name: "JSON", - definition: - "複雑なデータ構造をJavaScriptオブジェクトに似た形式で文字列として表現するための記法。", - referencePage: "/docs/web-servers/fetch-api/", - }, - requestResponse: { - name: "リクエストとレスポンス", - definition: - "クライアントからサーバーに対しサービスを要求する通信をリクエスト、リクエストに対してサーバーからクライアントに応答として返される通信をレスポンスと呼ぶ。", - referencePage: "/docs/web-servers/server/", - }, - httpHeaderBody: { - name: "リクエスト・レスポンスのヘッダ・ボディ (HTTP)", - definition: - "HTTPにおいてリクエストやレスポンスは主にヘッダと呼ばれる領域とボディと呼ばれる領域に分かれている。リクエストやレスポンスの本体はボディの部分に格納されており、ヘッダは付加的な情報を与えるために用いられる。なお、GETリクエストではリクエストボディを使用できない。", - referencePage: "/docs/web-servers/fetch-api-post/", - }, - httpMethod: { - name: "メソッド (HTTP)", - definition: - "HTTPリクエストの種類。GETやPOSTなどがある。GETリクエストではリクエストボディを利用できないが、POSTリクエストでは利用できるなどの違いがある。", - referencePage: "/docs/web-servers/fetch-api-post/", - }, - httpStatusCode: { - name: "ステータスコード (HTTP)", - definition: - "HTTPレスポンスに含まれる、リクエストの処理結果を表す3桁の数値。200番台は成功、400番台はクライアント側の問題での失敗、500番台はサーバー側の問題での失敗を表す。代表的なものに200 (OK)、400 (Bad Request)、401 (Unauthorized)、404 (Not Found)、500 (Internal Server Error)がある。", - referencePage: "/docs/web-servers/fetch-api-post/", - }, - npxCommand: { - name: "npxコマンド", - definition: - "npm付属のコマンド。インストールしたnpmパッケージを直接実行する機能を持つ。", - referencePage: "/docs/web-servers/database/", - }, - asynchronousProcess: { - name: "非同期処理", - definition: - "処理を実行する際、その完了を待たずに呼び出し元の処理が続行されるような処理。JavaScriptでは、asyncキーワードをつけた関数は非同期処理を行うための関数となり、内部ではawaitキーワードにより他の非同期処理を呼び出してその結果を待機できるようになる。", - referencePage: "/docs/web-servers/fetch-api/", - }, - environmentVariable: { - name: "環境変数", - definition: - "アプリケーションの実行時に、アプリケーション自体を変更することなく外側から動作を変更するために用いることができる仕組み。キーと値の組み合わせによって定義される。", - referencePage: "/docs/web-servers/database/", - }, - deploy: { - name: "デプロイ", - definition: - "開発したプログラムを実行可能な状態にして、実際に利用できるようにすること。Webアプリケーションの場合、サーバーにプログラムを配置して、インターネット上でアクセスできるようにすることを指す。", - referencePage: "/docs/web-servers/deploy-on-render/", - }, - transpile: { - name: "トランスパイル", - definition: - "プログラムを同じ意味を持つ別のプログラムへと変換すること。Web開発では、通常変換の結果ウェブブラウザが解釈できるJavaScriptが生成される。Babelが有名。", - referencePage: "/docs/advanced/bundler/", - }, - moduleBundler: { - name: "モジュールバンドラ", - definition: - "複数のJavaScriptモジュールをまとめてひとつにするためのソフトウェア。webpackが有名。", - referencePage: "/docs/advanced/bundler/", - }, - jsx: { - name: "JSX", - definition: - "JavaScriptの拡張構文で、Reactなどと共に用いられる。JSXが有効なJavaScriptでは、HTMLに似た構文の式により特定の種類のオブジェクトを作成できる。拡張子は.jsxで、TypeScriptとともに用いる場合は.tsx。", - referencePage: "/docs/advanced/react/", - }, - javascriptTruthyFalsy: { - name: "truthyとfalsy (JavaScript)", - definition: - "JavaScriptでは、数値のゼロ、空文字列、null、undefined、NaNをfalsy、それ以外の全ての値をtruthyとみなす。if文は条件式の結果がtruthyであるかfalsyであるかによって分岐を行う。", - referencePage: "/docs/advanced/react/", - }, - mutableImmutable: { - name: "ミュータブルとイミュータブル", - definition: - "オブジェクトの内部が変更可能であるとき、そのオブジェクトはミュータブルであるといい、変更不能である場合はイミュータブルであるという。Reactなどのライブラリでは状態を表すオブジェクトはイミュータブルであることが求められる。これは、状態が変化する際に参照も変化することを保証するためである。", - referencePage: "/docs/browser-apps/reference/", - }, - }, -}; diff --git a/src/components/Term/definitions.ts b/src/components/Term/definitions.ts new file mode 100644 index 000000000..879bf5391 --- /dev/null +++ b/src/components/Term/definitions.ts @@ -0,0 +1,588 @@ +export const referencePageTitles = { + "/docs/trial-session/get-started/": "はじめてのWeb開発", + "/docs/trial-session/html/": "HTML", + "/docs/trial-session/css/": "CSS", + "/docs/trial-session/javascript/": "JavaScriptことはじめ", + "/docs/trial-session/expressions/": "値と式と演算子", + "/docs/trial-session/variables/": "変数", + "/docs/trial-session/boolean/": "論理値と論理演算子", + "/docs/trial-session/if-statement/": "条件分岐", + "/docs/trial-session/functions/": "関数", + "/docs/trial-session/loop/": "繰り返し", + "/docs/trial-session/array/": "配列", + "/docs/trial-session/object/": "オブジェクト", + "/docs/trial-session/dom/": "DOM", + "/docs/trial-session/events/": "イベント", + "/docs/trial-session/project/": "プロジェクト", + "/docs/trial-session/deploy-application/": "作ったウェブアプリを公開する", + "/docs/browser-apps/inspector/": "ブラウザの開発者ツール", + "/docs/browser-apps/reference/": "オブジェクトの参照", + "/docs/browser-apps/class/": "クラス", + "/docs/browser-apps/anonymous-function/": "無名関数", + "/docs/browser-apps/css-arrangement/": "CSSによる配置", + "/docs/browser-apps/project/": "プロジェクト", + "/docs/web-servers/wsl-setup/": "WSLのセットアップ", + "/docs/web-servers/linux-commands/": "Linuxコマンド", + "/docs/web-servers/node-js/": "はじめてのNode.js", + "/docs/web-servers/module/": "モジュールとnpm", + "/docs/web-servers/server/": "Expressによるサーバー構築", + "/docs/web-servers/fetch-api/": "Fetch APIによるデータの取得", + "/docs/web-servers/fetch-api-post/": "Fetch APIによるデータの送信", + "/docs/web-servers/database/": "データベース", + "/docs/web-servers/git-github-init/": "GitとGitHubのセットアップ", + "/docs/web-servers/git/": "Gitを用いたバージョン管理", + "/docs/web-servers/github/": "GitとGitHubを用いた共同開発", + "/docs/web-servers/deploy-on-render/": "Renderへのデプロイ", + "/docs/advanced/cookie/": "Cookieと認証", + "/docs/advanced/bundler/": "トランスパイラとモジュールバンドラ", + "/docs/advanced/typescript/": "TypeScript", + "/docs/advanced/react/": "React", +}; + +type Term = { + id: string; + name: string; + aliases: string[]; + definition: string; + referencePage: keyof typeof referencePageTitles; +}; + +export const terms: Term[] = [ + { + id: "file-extension", + name: "拡張子", + aliases: [], + definition: + "ファイル名のピリオド以降の部分。ファイルの種類を識別するために用いられる場合がある。Windowsでは標準では表示されないので、表示する設定にしておくと良い。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "git", + name: "Git", + aliases: [], + definition: "分散型バージョン管理システムのひとつ。", + referencePage: "/docs/web-servers/git-github-init/", + }, + { + id: "github", + name: "GitHub", + aliases: [], + definition: + "Gitを用いて、プログラムの保存、共有、公開などができる、開発者のための総合プラットフォーム。", + referencePage: "/docs/web-servers/git-github-init/", + }, + { + id: "repository", + name: "リポジトリ", + aliases: [], + definition: "ソースコードやそれに付随する情報のまとまり。", + referencePage: "/docs/web-servers/git/", + }, + { + id: "html", + name: "HTML", + aliases: [], + definition: "ウェブページの構造を表すためのマークアップ言語。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "nest", + name: "ネスト", + aliases: [], + definition: "ある構造の中にある別の構造を入れること。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "javascript", + name: "JavaScript", + aliases: [], + definition: + "ウェブサイトに動きを与えるために生まれたスクリプト言語。現在は機能が拡張され、ウェブサイト以外にも応用されるようになった。", + referencePage: "/docs/trial-session/javascript/", + }, + { + id: "start-tag", + name: "開始タグ", + aliases: [], + definition: + "要素の先頭を表す。
内容
ならば
が開始タグ。属性をつけることができる。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "tag", + name: "タグ", + aliases: [], + definition: "<から>までで囲まれた領域。を「aタグ」のように読んでいる。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "attribute", + name: "属性", + aliases: [], + definition: "HTML要素の特徴を指定する値。開始タグの中に含まれる。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "element", + name: "HTML要素", + aliases: ["要素"], + definition: "HTMLの開始タグから終了タグまでの領域。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "end-tag", + name: "終了タグ", + aliases: [], + definition: "要素の終端を表す。
内容
ならば
が終了タグ。", + referencePage: "/docs/trial-session/html/", + }, + { + id: "css", + name: "CSS", + aliases: [], + definition: + "ウェブサイトの見た目をカスタマイズするための言語。HTML要素のstyle属性はCSSを用いて記述する。", + referencePage: "/docs/trial-session/css/", + }, + { + id: "style-attribute", + name: "style属性", + aliases: [], + definition: + "表示可能な多くのHTML要素に対して設定できる、見た目をカスタマイズするための属性。", + referencePage: "/docs/trial-session/css/", + }, + { + id: "css-property", + name: "プロパティ (CSS)", + aliases: [], + definition: + "CSSにより設定できる見た目の種類。例えばcolorは文字色、font-sizeは文字の大きさ。", + referencePage: "/docs/trial-session/css/", + }, + { + id: "javascript-statement", + name: "文", + aliases: [], + definition: + "JavaScriptにおいて、セミコロンによって区切られた命令の単位。ただしセミコロンは省略可能。", + referencePage: "/docs/trial-session/javascript/", + }, + { + id: "javascript-value", + name: "値 (JavaScript)", + aliases: ["値"], + definition: + "JavaScript上で扱われる単一のデータ。数値や文字列、論理値、オブジェクトなど。", + referencePage: "/docs/trial-session/expressions/", + }, + { + id: "javascript-string", + name: "文字列 (JavaScript)", + aliases: ["文字列"], + definition: + "JavaScriptにおける値の一種。ダブルクォーテーションで囲んでプログラム上に直接記述できる。", + referencePage: "/docs/trial-session/expressions/", + }, + { + id: "javascript-number", + name: "数値 (JavaScript)", + aliases: ["数値"], + definition: "JavaScriptにおける値の一種。プログラム中に直接記述できる。", + referencePage: "/docs/trial-session/expressions/", + }, + { + id: "javascript-operator", + name: "演算子 (JavaScript)", + aliases: ["演算子"], + definition: + "JavaScriptにおいて、主に値に対して作用し、別の値を得るための記号。", + referencePage: "/docs/trial-session/expressions/", + }, + { + id: "javascript-expression", + name: "式 (JavaScript)", + aliases: ["式"], + definition: "JavaScriptにおいて、計算・処理されて値を生成するまとまり。", + referencePage: "/docs/trial-session/expressions/", + }, + { + id: "javascript-evaluation", + name: "評価 (JavaScript)", + aliases: ["評価"], + definition: "JavaScriptの実行エンジンが式から値を生成する動作。", + referencePage: "/docs/trial-session/expressions/", + }, + { + id: "javascript-operator-priority", + name: "演算子の優先順位 (JavaScript)", + aliases: [], + definition: + "複数の演算子を含む式の評価順序を決定するための指標。例えば、乗算演算子は加算演算子より優先順位が高いため、3 + 4 * 5は3 + (4 * 5)と評価される。", + referencePage: "/docs/trial-session/expressions/", + }, + { + id: "javascript-variable", + name: "変数", + aliases: [], + definition: "JavaScriptで値を一時的に保存しておくための入れ物。", + referencePage: "/docs/trial-session/variables/", + }, + { + id: "javascript-declaration", + name: "宣言 (JavaScript)", + aliases: ["宣言"], + definition: "JavaScriptで変数を使用するために必要な記述。", + referencePage: "/docs/trial-session/variables/", + }, + { + id: "javascript-assignment", + name: "代入 (JavaScript)", + aliases: ["代入"], + definition: "変数に値を設定する操作。それまで入っていた値は消えてしまう。", + referencePage: "/docs/trial-session/variables/", + }, + { + id: "camel-case", + name: "キャメルケース", + aliases: [], + definition: + "複数の単語にわたるフレーズを、2語目以降の先頭の文字を大文字にして結合する命名規則。例: camelCase", + referencePage: "/docs/trial-session/variables/", + }, + { + id: "snake-case", + name: "スネークケース", + aliases: [], + definition: + "複数の単語にわたるフレーズを、アンダーバー (_) によって結合する命名規則。例: snake_case", + referencePage: "/docs/trial-session/variables/", + }, + { + id: "pascal-case", + name: "パスカルケース", + aliases: [], + definition: + "複数の単語にわたるフレーズを、それぞれの単語の先頭の文字を大文字にして結合する命名規則。例: PascalCase", + referencePage: "/docs/trial-session/variables/", + }, + { + id: "javascript-boolean", + name: "論理値 (JavaScript)", + aliases: ["論理値"], + definition: + "JavaScriptにおける値の一種で、真偽を表すもの。trueまたはfalseの2種類しかない。", + referencePage: "/docs/trial-session/boolean/", + }, + { + id: "javascript-if-statement", + name: "if文", + aliases: [], + definition: + "与えられた真偽値が真である場合のみ{}ブロックの中の処理を実行する制御構造。", + referencePage: "/docs/trial-session/if-statement/", + }, + { + id: "javascript-control-flow", + name: "制御構造 (JavaScript)", + aliases: ["制御構造", "制御構文"], + definition: + "JavaScriptにおいて、通常上から下に実行される文の実行順序を変化させるための言語構造。", + referencePage: "/docs/trial-session/if-statement/", + }, + { + id: "javascript-function", + name: "関数 (JavaScript)", + aliases: ["関数"], + definition: "引数や返り値を持つ文のまとまり。", + referencePage: "/docs/trial-session/functions/", + }, + { + id: "javascript-parameter", + name: "引数 (JavaScript)", + aliases: ["引数"], + definition: "JavaScriptの関数に対し、呼び出し時に与えることのできる値。", + referencePage: "/docs/trial-session/functions/", + }, + { + id: "javascript-pass", + name: "~ (値) を~ (関数) に渡す", + aliases: ["渡す"], + definition: "JavaScriptの関数に値を引数として設定して実行すること。", + referencePage: "/docs/trial-session/functions/", + }, + { + id: "javascript-return-value", + name: "戻り値 (JavaScript)", + aliases: ["戻り値"], + definition: "JavaScriptの関数呼び出し式の評価結果となる値。", + referencePage: "/docs/trial-session/functions/", + }, + { + id: "javascript-return", + name: "~ (値) を返す (JavaScript)", + aliases: ["返す", "返し"], + definition: + "関数の実行が終了し、式の評価結果の値が確定すること。return文により実現できる。", + referencePage: "/docs/trial-session/functions/", + }, + { + id: "javascript-scope", + name: "スコープ (JavaScript)", + aliases: ["スコープ"], + definition: "変数が有効な範囲。", + referencePage: "/docs/trial-session/functions/", + }, + { + id: "javascript-array", + name: "配列 (JavaScript)", + aliases: ["配列"], + definition: "複数の値を並べて1つにまとめた値。", + referencePage: "/docs/trial-session/array/", + }, + { + id: "javascript-object", + name: "オブジェクト (JavaScript)", + aliases: ["オブジェクト"], + definition: + "JavaScriptにおける値の一種。関連する値をまとめて1つの値として扱うことができる。プリミティブでない値はすべてオブジェクト。", + referencePage: "/docs/trial-session/object/", + }, + { + id: "javascript-primitive", + name: "プリミティブ (JavaScript)", + aliases: ["プリミティブ"], + definition: + "JavaScriptにおける値の種類。数値や文字列、論理値などの「それ以上分解できない」値。", + referencePage: "/docs/trial-session/object/", + }, + { + id: "javascript-property", + name: "プロパティ (JavaScript)", + aliases: ["プロパティ"], + definition: + "JavaScriptのオブジェクトに関連付けられた属性のこと。学生を表すオブジェクトであれば、名前や年齢などのプロパティが考えられる。", + referencePage: "/docs/trial-session/object/", + }, + { + id: "javascript-property-name", + name: "プロパティ名 (JavaScript)", + aliases: ["プロパティ名"], + definition: + "JavaScriptのオブジェクトにおいて、プロパティを表す名前のこと。", + referencePage: "/docs/trial-session/object/", + }, + { + id: "javascript-property-value", + name: "プロパティ値 (JavaScript)", + aliases: ["プロパティ値"], + definition: + "JavaScriptのオブジェクトにおいて、プロパティに関連付けられた値のこと。", + referencePage: "/docs/trial-session/object/", + }, + { + id: "dom", + name: "DOM", + aliases: [], + definition: "HTML構造をJavaScriptのオブジェクトとして扱うための枠組み。", + referencePage: "/docs/trial-session/dom/", + }, + { + id: "events", + name: "イベント", + aliases: [], + definition: + "ボタンのクリック、フォームへの入力、ページの読み込みなど、Webページ上で発生するあらゆるアクションの総称。", + referencePage: "/docs/trial-session/events/", + }, + { + id: "event-handler", + name: "イベントハンドラ", + aliases: [], + definition: + "イベント発生時の処理を行う仕組み。onclick関数、onload関数など、onキーワードにイベント名をつけた名称になっている。", + referencePage: "/docs/trial-session/events/", + }, + { + id: "javascript-class", + name: "クラス (JavaScript)", + aliases: ["クラス"], + definition: + "同じプロパティを持つオブジェクトを統一的に扱うための仕組み。プロパティや関数(メソッド)を予め設定できる。", + referencePage: "/docs/browser-apps/class/", + }, + { + id: "javascript-instance", + name: "インスタンス (JavaScript)", + aliases: ["インスタンス"], + definition: "new演算子をクラスに適用して生成されるオブジェクトのこと。", + referencePage: "/docs/browser-apps/class/", + }, + { + id: "javascript-constructor", + name: "コンストラクタ (JavaScript)", + aliases: ["コンストラクタ"], + definition: + "インスタンスを作成するタイミング(new演算子をクラスに適用するタイミング)で実行される特殊なメソッド。constructorという名前で定義する必要がある。コンストラクタを定義すると、インスタンスを生成するときにプロパティの設定も同時に行うことができる。", + referencePage: "/docs/browser-apps/class/", + }, + { + id: "javascript-method", + name: "メソッド (JavaScript)", + aliases: ["メソッド"], + definition: + "オブジェクトに対して定義された関数。メソッド内ではメソッドが定義されたオブジェクトをthisキーワードを用いて参照できる。", + referencePage: "/docs/browser-apps/class/", + }, + { + id: "arrow-function", + name: "アロー関数", + aliases: [], + definition: + "JavaScriptにおいて関数を生成するための式のひとつ。=>という記号が矢のように見えることから命名された。", + referencePage: "/docs/browser-apps/anonymous-function/", + }, + { + id: "callback-function", + name: "コールバック関数", + aliases: [], + definition: "他の関数の引数として呼び出される関数。", + referencePage: "/docs/browser-apps/anonymous-function/", + }, + { + id: "javascript-module", + name: "モジュール (JavaScript)", + aliases: ["モジュール"], + definition: + "独立したプログラムの塊。JavaScriptでは、通常1つのファイルがモジュールとして扱われる。Node.jsでは、拡張子が.mjsの場合import文を用いてインポートして利用する。", + referencePage: "/docs/web-servers/module/", + }, + { + id: "library", + name: "ライブラリ", + aliases: [], + definition: + "汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたもの。基本的に他のプログラムから利用され、単体では実行できない。", + referencePage: "/docs/web-servers/module/", + }, + { + id: "server-client", + name: "サーバーとクライアント", + aliases: ["サーバー", "クライアント"], + definition: + "サービスを提供する側のコンピューターやソフトウェアをサーバー、提供される側のコンピューターやソフトウェアをクライアントと呼ぶ。例えばGoogle ChromeなどのWebブラウザは、Webにおける代表的なクライアントソフトウェアである。", + referencePage: "/docs/web-servers/server/", + }, + { + id: "json", + name: "JSON", + aliases: [], + definition: + "複雑なデータ構造をJavaScriptオブジェクトに似た形式で文字列として表現するための記法。", + referencePage: "/docs/web-servers/fetch-api/", + }, + { + id: "request-response", + name: "リクエストとレスポンス", + aliases: ["HTTPリクエスト", "リクエスト", "レスポンス"], + definition: + "クライアントからサーバーに対しサービスを要求する通信をリクエスト、リクエストに対してサーバーからクライアントに応答として返される通信をレスポンスと呼ぶ。", + referencePage: "/docs/web-servers/server/", + }, + { + id: "http-header-body", + name: "リクエスト・レスポンスのヘッダ・ボディ (HTTP)", + aliases: ["リクエストヘッダ", "リクエストボディ", "レスポンスボディ"], + definition: + "HTTPにおいてリクエストやレスポンスは主にヘッダと呼ばれる領域とボディと呼ばれる領域に分かれている。リクエストやレスポンスの本体はボディの部分に格納されており、ヘッダは付加的な情報を与えるために用いられる。なお、GETリクエストではリクエストボディを使用できない。", + referencePage: "/docs/web-servers/fetch-api-post/", + }, + { + id: "http-method", + name: "メソッド (HTTP)", + aliases: ["GETリクエスト", "POSTリクエスト"], + definition: + "HTTPリクエストの種類。GETやPOSTなどがある。GETリクエストではリクエストボディを利用できないが、POSTリクエストでは利用できるなどの違いがある。", + referencePage: "/docs/web-servers/fetch-api-post/", + }, + { + id: "http-status-code", + name: "ステータスコード (HTTP)", + aliases: ["ステータスコード"], + definition: + "HTTPレスポンスに含まれる、リクエストの処理結果を表す3桁の数値。200番台は成功、400番台はクライアント側の問題での失敗、500番台はサーバー側の問題での失敗を表す。代表的なものに200 (OK)、400 (Bad Request)、401 (Unauthorized)、404 (Not Found)、500 (Internal Server Error)がある。", + referencePage: "/docs/web-servers/fetch-api-post/", + }, + { + id: "npx-command", + name: "npxコマンド", + aliases: [], + definition: + "npm付属のコマンド。インストールしたnpmパッケージを直接実行する機能を持つ。", + referencePage: "/docs/web-servers/database/", + }, + { + id: "asynchronous-process", + name: "非同期処理", + aliases: ["非同期関数"], + definition: + "処理を実行する際、その完了を待たずに呼び出し元の処理が続行されるような処理。JavaScriptでは、asyncキーワードをつけた関数は非同期処理を行うための関数となり、内部ではawaitキーワードにより他の非同期処理を呼び出してその結果を待機できるようになる。", + referencePage: "/docs/web-servers/fetch-api/", + }, + { + id: "environment-variable", + name: "環境変数", + aliases: [], + definition: + "アプリケーションの実行時に、アプリケーション自体を変更することなく外側から動作を変更するために用いることができる仕組み。キーと値の組み合わせによって定義される。", + referencePage: "/docs/web-servers/database/", + }, + { + id: "deploy", + name: "デプロイ", + aliases: [], + definition: + "開発したプログラムを実行可能な状態にして、実際に利用できるようにすること。Webアプリケーションの場合、サーバーにプログラムを配置して、インターネット上でアクセスできるようにすることを指す。", + referencePage: "/docs/web-servers/deploy-on-render/", + }, + { + id: "transpile", + name: "トランスパイル", + aliases: ["トランスパイラ"], + definition: + "プログラムを同じ意味を持つ別のプログラムへと変換すること。Web開発では、通常変換の結果ウェブブラウザが解釈できるJavaScriptが生成される。Babelが有名。", + referencePage: "/docs/advanced/bundler/", + }, + { + id: "module-bundler", + name: "モジュールバンドラ", + aliases: [], + definition: + "複数のJavaScriptモジュールをまとめてひとつにするためのソフトウェア。webpackが有名。", + referencePage: "/docs/advanced/bundler/", + }, + { + id: "jsx", + name: "JSX", + aliases: [], + definition: + "JavaScriptの拡張構文で、Reactなどと共に用いられる。JSXが有効なJavaScriptでは、HTMLに似た構文の式により特定の種類のオブジェクトを作成できる。拡張子は.jsxで、TypeScriptとともに用いる場合は.tsx。", + referencePage: "/docs/advanced/react/", + }, + { + id: "javascript-truthy-falsy", + name: "truthyとfalsy (JavaScript)", + aliases: ["truthy", "falsy"], + definition: + "JavaScriptでは、数値のゼロ、空文字列、null、undefined、NaNをfalsy、それ以外の全ての値をtruthyとみなす。if文は条件式の結果がtruthyであるかfalsyであるかによって分岐を行う。", + referencePage: "/docs/advanced/react/", + }, + { + id: "mutable-immutable", + name: "ミュータブルとイミュータブル", + aliases: ["ミュータブル", "イミュータブル"], + definition: + "オブジェクトの内部が変更可能であるとき、そのオブジェクトはミュータブルであるといい、変更不能である場合はイミュータブルであるという。Reactなどのライブラリでは状態を表すオブジェクトはイミュータブルであることが求められる。これは、状態が変化する際に参照も変化することを保証するためである。", + referencePage: "/docs/browser-apps/reference/", + }, +]; diff --git a/src/components/Term/index.jsx b/src/components/Term/index.jsx deleted file mode 100644 index 863723536..000000000 --- a/src/components/Term/index.jsx +++ /dev/null @@ -1,77 +0,0 @@ -import Link from "@docusaurus/Link"; -import { useLocation } from "@docusaurus/router"; -import Tippy from "@tippyjs/react"; -import { MdArrowForward } from "react-icons/md"; -import "tippy.js/dist/tippy.css"; -import "tippy.js/themes/material.css"; -import { onlyText } from "react-children-utilities"; -import styles from "./styles.module.css"; -import definitions from "./definitions"; -import typeMap from "./type-map.js"; - -/** - * @param {Object} props - * @param {keyof typeof definitions | null} props.type - * @param {React.ReactNode} props.children - */ -export default function Term({ type = null, children }) { - if (type === null) type = typeMap.get(onlyText(children)); - if (!type) - throw new Error( - `Problem: Term ${onlyText(children)} is not defined in type-map.js . - Solution: explicitly specify term type, or add type definition to type-map.js`, - ); - - const term = definitions.terms[type]; - if (!term) throw new Error(`Type ${type} is not defined.`); - const referencePageTitle = - definitions.referencePageTitles[term.referencePage]; - const location = useLocation(); - - const wrap = (content) => { - const shouldLinkToReferencePage = () => { - // referencePageがundefinedならばリンクを表示しない - if (term.referencePage === undefined) return false; - - // referencePageTitleがundefinedならばエラーを投げる (明らかに人的ミスのため) - if (referencePageTitle === undefined) { - throw new Error( - `The page title of the reference "${term.referencePage}" is not defined in referencePageTitles in "src/components/Term/definition.js"`, - ); - } - - // referencePageの#アンカーを除外 - const referenceLink = term.referencePage.split("#")[0]; - // 現在のページで用語が初出であればリンクを表示する必要がない - if (location.pathname === referenceLink) return false; - if (location.pathname + "/" === referenceLink) return false; - return true; - }; - - return ( - -
{term.name}
-
{term.definition}
- {shouldLinkToReferencePage() && ( - - {referencePageTitle} へ - - - )} - - } - > - {content} -
- ); - }; - - const content = {children}; - - return typeof window === "object" ? wrap(content) : content; -} diff --git a/src/components/Term/index.tsx b/src/components/Term/index.tsx new file mode 100644 index 000000000..30c517f2e --- /dev/null +++ b/src/components/Term/index.tsx @@ -0,0 +1,67 @@ +import { JSX } from "react"; +import Link from "@docusaurus/Link"; +import { useLocation } from "@docusaurus/router"; +import Tippy from "@tippyjs/react"; +import { MdArrowForward } from "react-icons/md"; +import "tippy.js/dist/tippy.css"; +import "tippy.js/themes/material.css"; +import { onlyText } from "react-children-utilities"; +import styles from "./styles.module.css"; +import { referencePageTitles, terms } from "./definitions"; + +type TermProps = { + id?: string; + children: React.ReactNode; +}; + +export default function Term(props: TermProps) { + const term = props.id + ? terms.find((term) => term.id === props.id) + : terms.find( + (term) => + term.name === onlyText(props.children) || + term.aliases.includes(onlyText(props.children)), + ); + if (!term) + throw new Error( + `${props.id ? props.id : onlyText(props.children)}という用語は定義されていません`, + ); + + const referencePageTitle = referencePageTitles[term.referencePage]; + + const location = useLocation(); + + const wrap = (content: JSX.Element) => { + // 現在のページで用語が初出であればリンクを表示する必要がない + const shouldLinkToReferencePage = Boolean( + location.pathname !== term.referencePage && + location.pathname + "/" !== term.referencePage, + ); + + return ( + +
{term.name}
+
{term.definition}
+ {shouldLinkToReferencePage && ( + + {referencePageTitle} へ + + + )} + + } + > + {content} +
+ ); + }; + + const content = {props.children}; + + return typeof window === "object" ? wrap(content) : content; +} diff --git a/src/components/Term/type-map.js b/src/components/Term/type-map.js deleted file mode 100644 index 22f00ec7b..000000000 --- a/src/components/Term/type-map.js +++ /dev/null @@ -1,108 +0,0 @@ -/* - * # term の追加 - * > 文字列そのままの Term しか match しないので、 - * 説明的な Term は対応していません。 - * 例: "演算子の優先順位" - * - * > 名前の同じ Term は、使用頻度の高そうな方を優先してください。 - * 例: "プロパティ" -> "javascriptProperty" - * "メソッド" -> "jsMethod" - * - * > 英数字と日本語の間は半角スペースを入れることになっているので、 - * 半角が入っているもののみを記述してください。 - * 例: 〇 "HTML 要素" × "HTML要素" - * - * - * # 使い方 - * > 説明的な Term (演算子の優先順位 など) や、 - * 名前の同じ Term (CSS のプロパティ -> JS のプロパティとして解釈する) - * などは対応していないので、term を明示してください。 - * 例: CSS のプロパティ // /docs/ - * - */ - -const typeMap = new Map([ - ["拡張子", "fileExtension"], - ["Git", "git"], // not found - ["GitHub", "github"], // not found - ["リポジトリ", "repository"], // not found - ["HTML", "html"], - ["ネスト", "nest"], - ["JavaScript", "javascript"], - ["開始タグ", "startTag"], - ["タグ", "tag"], - ["属性", "attribute"], - ["HTML要素", "element"], - ["要素", "element"], - ["終了タグ", "endTag"], - ["CSS", "css"], - ["style属性", "styleAttribute"], - ["文", "javascriptStatement"], - ["値", "javascriptValue"], - ["文字列", "javascriptString"], - ["数値", "javascriptNumber"], - ["演算子", "javascriptOperator"], - ["式", "javascriptExpression"], - ["評価", "javascriptEvaluation"], - ["変数", "javascriptVariable"], - ["宣言", "javascriptDeclaration"], - ["代入", "javascriptAssignment"], - ["キャメルケース", "camelCase"], - ["スネークケース", "snakeCase"], - ["パスカルケース", "pascalCase"], - ["論理値", "javascriptBoolean"], - ["if文", "javascriptIfStatement"], - ["制御構造", "javascriptControlFlow"], - ["制御構文", "javascriptControlFlow"], // ここ 1-1 (Term以外では8-2) でした。とりあえず両方対応させます - ["関数", "javascriptFunction"], - ["引数", "javascriptParameter"], - ["渡す", "javascriptPass"], - ["戻り値", "javascriptReturnValue"], - ["返す", "javascriptReturn"], - ["返し", "javascriptReturn"], - ["スコープ", "javascriptScope"], - ["配列", "javascriptArray"], - ["オブジェクト", "javascriptObject"], - ["プリミティブ", "javascriptPrimitive"], - ["プロパティ", "javascriptProperty"], - ["プロパティ名", "javascriptPropertyName"], - ["プロパティ値", "javascriptPropertyValue"], - ["DOM", "dom"], - ["イベント", "events"], - ["イベントハンドラ", "eventHandler"], - ["クラス", "javascriptClass"], - ["インスタンス", "javascriptInstance"], - ["コンストラクタ", "javascriptConstructor"], - ["メソッド", "javascriptMethod"], - ["アロー関数", "arrowFunction"], - ["コールバック関数", "callbackFunction"], - ["モジュール", "javascriptModule"], - ["ライブラリ", "library"], - ["サーバー", "serverClient"], - ["クライアント", "serverClient"], - ["JSON", "json"], - ["HTTPリクエスト", "requestResponse"], - ["リクエスト", "requestResponse"], - ["レスポンス", "requestResponse"], - ["リクエストヘッダ", "httpHeaderBody"], - ["リクエストボディ", "httpHeaderBody"], - ["レスポンスボディ", "httpHeaderBody"], - ["GETリクエスト", "httpMethod"], - ["POSTリクエスト", "httpMethod"], - ["ステータスコード", "httpStatusCode"], - ["npxコマンド", "npxCommand"], - ["非同期処理", "asynchronousProcess"], - ["非同期関数", "asynchronousProcess"], - ["環境変数", "environmentVariable"], - ["デプロイ", "deploy"], - ["トランスパイル", "transpile"], - ["トランスパイラ", "transpile"], - ["モジュールバンドラ", "moduleBundler"], - ["JSX", "jsx"], - ["truthy", "javascriptTruthyFalsy"], - ["falsy", "javascriptTruthyFalsy"], - ["ミュータブル", "mutableImmutable"], - ["イミュータブル", "mutableImmutable"], -]); - -export default typeMap;