Retranslate the complete Japanese online edition from Chinese (#2008)

* Retranslate the complete Japanese online edition from Chinese

* Fit Japanese homepage labels and localize heading permalinks

* Point Japanese contribution instructions to the Japanese preview

* Replace locale conditionals with multilingual UI tables
This commit is contained in:
Yudong Jin
2026-10-30 02:12:26 +08:00
committed by GitHub
parent 455e8c1281
commit 7257641e0e
1987 changed files with 23531 additions and 23261 deletions

View File

@@ -1,46 +1,46 @@
# 一緒に制作に参加しましょう
# 一緒に本書を作りましょう
著者の力には限りがあるため、本書にはどうしても一部の漏れや誤りが含まれる可能性があります。ご了承ください。誤字、リンク切れ、内容の欠落、表現の曖昧さ、説明の不明瞭さ、文章構成の不適切さなどの問題を見つけた場合は、ぜひ修正にご協力ください。読者により良い学習リソースを提供できます。
著者の力が及ばず、本書には見落としや誤りがあるかもしれません。どうかご了承ください。誤字脱字、リンク切れ、内容の欠落、曖昧な表現、わかりにくい説明、不適切な文章構成などに気づいたら、修正にご協力ください。読者の皆さんに、よりよい学習教材を届けることにつながります。
すべての[寄稿者](https://github.com/krahets/hello-algo/graphs/contributors)の GitHub ID は、本書のリポジトリ、Web 版、PDF 版のホームページに掲載され、オープンソースコミュニティへの惜しみない貢献に感謝を表します。
オープンソースコミュニティへの惜しみない貢献に感謝し、すべての[執筆協力者](https://github.com/krahets/hello-algo/graphs/contributors)の GitHub ID を、原書のリポジトリ、Web 版、および既存の PDF 版のトップページに掲載します。
!!! success "オープンソースの魅力"
紙の書籍では、2 回の増刷の間隔が長くなりがちで、内容更新は非常に不便です。
紙の書籍は次の印刷までに長い時間がかかることが多く、内容の更新が容易ではありません。
一方、このオープンソース書籍では、内容更新のサイクルは数日、場合によっては数時間にまで短縮されています。
一方、オープンソースである本書なら、数日、場合によっては数時間で内容を更新できます。
### 内容の微調整
### 内容の小さな修正
以下の図のように、各ページの右上には「編集アイコン」があります。次の手順で本文やコードを修正できます。
下図のように、各ページの右上に「編集アイコン」があります。次の手順で文章やコードを修正できます。
1. 「編集アイコン」をクリックし、「このリポジトリを Fork する必要があります」と表示された場合は、その操作を承認してください。
2. Markdown のソースファイルを修正し、内容が正しいことを確認したうえで、できるだけ書式の統一を保ってください。
3. ページ下部に修正内容の説明を入力し、その後「Propose file change」ボタンをクリックします。ページ遷移後、「Create pull request」ボタンをクリックするとプルリクエストを作成できます。
1. 「編集アイコン」をクリックします。「このリポジトリを Fork する必要がある」という案内が表示されたら、操作に同意してください。
2. Markdown ソースファイルを編集し、内容が正しいか確認します。書式もできるだけ統一してください。
3. ページ下部に変更内容の説明を入力し、「Propose file change」ボタンをクリックします。移動先のページで「Create pull request」ボタンをクリックすると、プルリクエストを作成できます。
![ページ編集ボタン](contribution.assets/edit_markdown.png)
![ページの編集ボタン](contribution.assets/edit_markdown.png)
画像は直接修正できないため、新しい [Issue](https://github.com/krahets/hello-algo/issues) を作成するかコメントで問題を説明してください。できるだけ早く描き直して差し替えます。
画像は直接編集できません。新しい [Issue](https://github.com/krahets/hello-algo/issues) を作成するか、コメントで問題をお知らせください。できるだけ早く描き直して差し替えます。
### コンテンツ制作
### 新しい内容の作成
コードを他のプログラミング言語へ翻訳することや、記事内容を拡充することなど、このオープンソースプロジェクトへの参加に興味がある場合は、以下の Pull Request ワークフローに従ってください。
コードをほかのプログラミング言語に移植したり、記事の内容を充実させたりするなど、このオープンソースプロジェクトへの参加に関心がある方は、次の Pull Request の手順に従ってください。
1. GitHub にログインし、本書の[コードリポジトリ](https://github.com/krahets/hello-algo)を個人アカウントに Fork します。
2. Fork したリポジトリのページに入り、`git clone` コマンドを使ってリポジトリをローカルにクローンします。
3. ローカルでコンテンツを作成し、完全なテストを行ってコードの正しさを確認します。
4. ローカルで行った変更を Commit し、その後リモートリポジトリへ Push します。
5. リポジトリのページを更新し、「Create pull request」ボタンをクリックするとプルリクエストを作成できます。
1. GitHub にログインし、本書の[コードリポジトリ](https://github.com/krahets/hello-algo)を自分のアカウントに Fork します。
2. Fork したリポジトリのページを開き、`git clone` コマンドでローカルにクローンします。
3. ローカルで内容を作成し、十分なテストを行ってコードの正しさを確認します。
4. ローカルの変更を Commit し、リモートリポジトリに Push します。
5. リポジトリのページを再読み込みし、「Create pull request」ボタンをクリックすると、プルリクエストを作成できます。
### Docker デプロイ
### Docker での起動
`hello-algo` のルートディレクトリで以下の Docker スクリプトを実行すると、`http://localhost:8000` で本プロジェクトにアクセスできます。
`hello-algo` のルートディレクトリで次の Docker スクリプトを実行すると、`http://localhost:8000/ja/` から本プロジェクトの日本語版にアクセスできます。
```shell
docker-compose up -d
```
以下のコマンドでデプロイを削除できます。
次のコマンドで起動した環境を削除できます。
```shell
docker-compose down

View File

@@ -2,13 +2,13 @@
## IDE のインストール
オープンソースで軽量な VS Code をローカルの統合開発環境(IDE)として使用することを推奨します。[VS Code 公式サイト](https://code.visualstudio.com/) にアクセスし、使用している OS に応じたバージョンの VS Code をダウンロードしてインストールしてください。
ローカルの統合開発環境(IDE)には、オープンソースで軽量な VS Code をおすすめします。[VS Code 公式サイト](https://code.visualstudio.com/)にアクセスし、OS に合ったバージョンをダウンロードしてインストールしてください。
![公式サイトから VS Code をダウンロード](installation.assets/vscode_installation.png)
VS Code には強力な拡張機能のエコシステムがあり、ほとんどのプログラミング言語の実行とデバッグをサポートしています。Python を例にすると、「Python Extension Pack」拡張機能をインストールした後、Python コードをデバッグできるようになります。インストール手順を以下に示します。
VS Code には豊富な拡張機能があり、多くのプログラミング言語の実行とデバッグに対応しています。たとえば Python では、「Python Extension Pack」をインストールすると、Python コードをデバッグできます。インストール手順を下図に示します。
![VS Code 拡張機能のインストール](installation.assets/vscode_extension_installation.png)
![VS Code の拡張機能をインストール](installation.assets/vscode_extension_installation.png)
## 言語環境のインストール
@@ -16,30 +16,30 @@ VS Code には強力な拡張機能のエコシステムがあり、ほとんど
1. [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) をダウンロードしてインストールします。Python 3.10 以降が必要です。
2. VS Code の拡張機能マーケットプレイスで `python` を検索し、Python Extension Pack をインストールします。
3. (任意)コマンドラインで `pip install black` を入力し、コード整形ツールをインストールします。
3. (任意)コマンドラインで `pip install black` を実行し、コード整形ツールをインストールします。
### C/C++ 環境
1. Windows システムでは [MinGW](https://sourceforge.net/projects/mingw-w64/files/) をインストールする必要があります([設定チュートリアル](https://blog.csdn.net/qq_33698226/article/details/129031241))。macOS には Clang が標準搭載されているため、追加インストールは不要です。
1. Windows では [MinGW](https://sourceforge.net/projects/mingw-w64/files/) のインストールが必要です([設定ガイド](https://blog.csdn.net/qq_33698226/article/details/129031241))。macOS には Clang が付属しているため、インストールは不要です。
2. VS Code の拡張機能マーケットプレイスで `c++` を検索し、C/C++ Extension Pack をインストールします。
3. (任意)Settings ページを開き、コード整形オプション `Clang_format_fallback Style` を検索して、`{ BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }` に設定します。
### Java 環境
1. [OpenJDK](https://jdk.java.net/18/) をダウンロードしてインストールします(バージョンは JDK 9 より新しい必要があります)。
1. [OpenJDK](https://jdk.java.net/18/) をダウンロードしてインストールします(JDK 9 より新しいバージョンが必要です)。
2. VS Code の拡張機能マーケットプレイスで `java` を検索し、Extension Pack for Java をインストールします。
### C# 環境
1. [.NET 8.0](https://dotnet.microsoft.com/en-us/download) をダウンロードしてインストールします。
2. VS Code の拡張機能マーケットプレイスで `C# Dev Kit` を検索し、C# Dev Kit をインストールします([設定チュートリアル](https://code.visualstudio.com/docs/csharp/get-started))。
3. Visual Studio を使用することもできます([インストール手順](https://learn.microsoft.com/zh-cn/visualstudio/install/install-visual-studio?view=vs-2022))。
2. VS Code の拡張機能マーケットプレイスで `C# Dev Kit` を検索し、C# Dev Kit をインストールします([設定ガイド](https://code.visualstudio.com/docs/csharp/get-started))。
3. Visual Studio も使用できます([インストールガイド](https://learn.microsoft.com/zh-cn/visualstudio/install/install-visual-studio?view=vs-2022))。
### Go 環境
1. [go](https://go.dev/dl/) をダウンロードしてインストールします。
2. VS Code の拡張機能マーケットプレイスで `go` を検索し、Go をインストールします。
3. ショートカットキー `Ctrl + Shift + P` を押してコマンドパレットを開き、go と入力して `Go: Install/Update Tools` を選択し、すべてにチェックを入れてインストールします。
3. ショートカットキー `Ctrl + Shift + P` でコマンドパレットを開き、go と入力して `Go: Install/Update Tools` を選択します。すべての項目を選んでインストールします。
### Swift 環境

View File

@@ -1,136 +1,136 @@
# 用語集
以下の表は、本書に登場する重要な用語を一覧にしたものです。英語文献を読む際に役立つよう、各名詞の英語表現も覚えておくことをおすすめします。
下表に、本書に登場する重要な用語を示します。英語の文献を読む際に役立つよう、各用語の英語名も覚えておくことをおすすめします。
<p align="center"> 表 <id> &nbsp; データ構造とアルゴリズムの重要用語 </p>
| English | 日本語 |
| ------------------------------ | ------------------------------ |
| algorithm | アルゴリズム |
| data structure | データ構造 |
| code | コード |
| file | ファイル |
| function | 関数 |
| method | メソッド |
| variable | 変数 |
| asymptotic complexity analysis | 漸近計算量解析 |
| time complexity | 時間計算量 |
| space complexity | 空間計算量 |
| loop | ループ |
| iteration | 反復 |
| recursion | 再帰 |
| tail recursion | 末尾再帰 |
| recursion tree | 再帰木 |
| big-$O$ notation | ビッグオー記法 |
| asymptotic upper bound | 漸近上界 |
| sign-magnitude | 符号絶対値表現 |
| 1’s complement | 1の補数 |
| 2’s complement | 2の補数 |
| array | 配列 |
| index | インデックス |
| linked list | 連結リスト |
| linked list node, list node | 連結リストノード |
| head node | 先頭ノード |
| tail node | 末尾ノード |
| list | リスト |
| dynamic array | 動的配列 |
| hard disk | ハードディスク |
| random-access memory (RAM) | メモリ |
| cache memory | キャッシュ |
| cache miss | キャッシュミス |
| cache hit rate | キャッシュヒット率 |
| stack | スタック |
| top of the stack | スタックトップ |
| bottom of the stack | スタックボトム |
| queue | キュー |
| double-ended queue | 両端キュー |
| front of the queue | キュー先頭 |
| rear of the queue | キュー末尾 |
| hash table | ハッシュテーブル |
| hash set | ハッシュ集合 |
| bucket | バケット |
| hash function | ハッシュ関数 |
| hash collision | ハッシュ衝突 |
| load factor | 負荷率 |
| separate chaining | 連鎖アドレス法 |
| open addressing | オープンアドレス法 |
| linear probing | 線形探索 |
| lazy deletion | 遅延削除 |
| binary tree | 二分木 |
| tree node | ノード |
| left-child node | 左子ノード |
| right-child node | 右子ノード |
| parent node | 親ノード |
| left subtree | 左部分木 |
| right subtree | 右部分木 |
| root node | 根ノード |
| leaf node | 葉ノード |
| edge | 辺 |
| level | レベル |
| degree | 次数 |
| height | 高さ |
| depth | 深さ |
| perfect binary tree | 完備二分木 |
| complete binary tree | 完全二分木 |
| full binary tree | 満二分木 |
| balanced binary tree | 平衡二分木 |
| binary search tree | 二分探索木 |
| AVL tree | AVL 木 |
| red-black tree | 赤黒木 |
| level-order traversal | レベル順走査 |
| breadth-first traversal | 幅優先走査 |
| depth-first traversal | 深さ優先走査 |
| pre-order traversal | 前順走査 |
| in-order traversal | 中順走査 |
| post-order traversal | 後順走査 |
| balanced binary search tree | 平衡二分探索木 |
| balance factor | 平衡係数 |
| heap | ヒープ |
| max heap | 最大ヒープ |
| min heap | 最小ヒープ |
| priority queue | 優先度付きキュー |
| heapify | ヒープ化 |
| top-$k$ problem | Top-$k$ 問題 |
| graph | グラフ |
| vertex | 頂点 |
| undirected graph | 無向グラフ |
| directed graph | 有向グラフ |
| connected graph | 連結グラフ |
| disconnected graph | 非連結グラフ |
| weighted graph | 重み付きグラフ |
| adjacency | 隣接 |
| path | 経路 |
| in-degree | 入次数 |
| out-degree | 出次数 |
| adjacency matrix | 隣接行列 |
| adjacency list | 隣接リスト |
| breadth-first search | 幅優先探索 |
| depth-first search | 深さ優先探索 |
| binary search | 二分探索 |
| searching algorithm | 探索アルゴリズム |
| sorting algorithm | ソートアルゴリズム |
| selection sort | 選択ソート |
| bubble sort | バブルソート |
| insertion sort | 挿入ソート |
| quick sort | クイックソート |
| merge sort | マージソート |
| heap sort | ヒープソート |
| bucket sort | バケットソート |
| counting sort | 計数ソート |
| radix sort | 基数ソート |
| divide and conquer | 分割統治 |
| hanota problem | ハノイの塔問題 |
| backtracking algorithm | バックトラッキングアルゴリズム |
| constraint | 制約 |
| solution | 解 |
| state | 状態 |
| pruning | 枝刈り |
| permutations problem | 全順列問題 |
| subset-sum problem | 部分和問題 |
| $n$-queens problem | $n$ クイーン問題 |
| dynamic programming | 動的計画法 |
| initial state | 初期状態 |
| state-transition equation | 状態遷移方程式 |
| knapsack problem | ナップサック問題 |
| edit distance problem | 編集距離問題 |
| greedy algorithm | 貪欲法 |
| English | 日本語 |
| ------------------------------ | -------------- |
| algorithm | アルゴリズム |
| data structure | データ構造 |
| code | コード |
| file | ファイル |
| function | 関数 |
| method | メソッド |
| variable | 変数 |
| asymptotic complexity analysis | 漸近計算量解析 |
| time complexity | 時間計算量 |
| space complexity | 空間計算量 |
| loop | ループ |
| iteration | 反復 |
| recursion | 再帰 |
| tail recursion | 末尾再帰 |
| recursion tree | 再帰木 |
| big-$O$ notation | ビッグ $O$ 記法 |
| asymptotic upper bound | 漸近上界 |
| sign-magnitude | 符号絶対値表現 |
| 1’s complement | 1 の補数表現 |
| 2’s complement | 2 の補数表現 |
| array | 配列 |
| index | インデックス |
| linked list | 連結リスト |
| linked list node, list node | 連結リストのノード |
| head node | 先頭ノード |
| tail node | 末尾ノード |
| list | リスト |
| dynamic array | 動的配列 |
| hard disk | ハードディスク |
| random-access memory (RAM) | メモリ |
| cache memory | キャッシュ |
| cache miss | キャッシュミス |
| cache hit rate | キャッシュヒット率 |
| stack | スタック |
| top of the stack | スタックの先頭 |
| bottom of the stack | スタックの底 |
| queue | キュー |
| double-ended queue | 両端キュー |
| front of the queue | キューの先頭 |
| rear of the queue | キューの末尾 |
| hash table | ハッシュテーブル |
| hash set | ハッシュ集合 |
| bucket | バケット |
| hash function | ハッシュ関数 |
| hash collision | ハッシュ衝突 |
| load factor | 負荷率 |
| separate chaining | チェイン法 |
| open addressing | オープンアドレス法 |
| linear probing | 線形探索法 |
| lazy deletion | 遅延削除 |
| binary tree | 二分木 |
| tree node | 木のノード |
| left-child node | 左の子ノード |
| right-child node | 右の子ノード |
| parent node | 親ノード |
| left subtree | 左部分木 |
| right subtree | 右部分木 |
| root node | 根ノード |
| leaf node | 葉ノード |
| edge | 辺 |
| level | レベル |
| degree | 次数 |
| height | 高さ |
| depth | 深さ |
| perfect binary tree | パーフェクト二分木 |
| complete binary tree | 完全二分木 |
| full binary tree | 全二分木 |
| balanced binary tree | 平衡二分木 |
| binary search tree | 二分探索木 |
| AVL tree | AVL 木 |
| red-black tree | 赤黒木 |
| level-order traversal | レベル順走査 |
| breadth-first traversal | 幅優先走査 |
| depth-first traversal | 深さ優先走査 |
| pre-order traversal | 行きがけ順走査 |
| in-order traversal | 通りがけ順走査 |
| post-order traversal | 帰りがけ順走査 |
| balanced binary search tree | 平衡二分探索木 |
| balance factor | 平衡係数 |
| heap | ヒープ |
| max heap | 最大ヒープ |
| min heap | 最小ヒープ |
| priority queue | 優先度付きキュー |
| heapify | ヒープ化 |
| top-$k$ problem | Top-$k$ 問題 |
| graph | グラフ |
| vertex | 頂点 |
| undirected graph | 無向グラフ |
| directed graph | 有向グラフ |
| connected graph | 連結グラフ |
| disconnected graph | 非連結グラフ |
| weighted graph | 重み付きグラフ |
| adjacency | 隣接 |
| path | 経路 |
| in-degree | 入次数 |
| out-degree | 出次数 |
| adjacency matrix | 隣接行列 |
| adjacency list | 隣接リスト |
| breadth-first search | 幅優先探索 |
| depth-first search | 深さ優先探索 |
| binary search | 二分探索 |
| searching algorithm | 探索アルゴリズム |
| sorting algorithm | ソートアルゴリズム |
| selection sort | 選択ソート |
| bubble sort | バブルソート |
| insertion sort | 挿入ソート |
| quick sort | クイックソート |
| merge sort | マージソート |
| heap sort | ヒープソート |
| bucket sort | バケットソート |
| counting sort | カウントソート |
| radix sort | 基数ソート |
| divide and conquer | 分割統治 |
| hanota problem | ハノイの塔の問題 |
| backtracking algorithm | バックトラッキングアルゴリズム |
| constraint | 制約 |
| solution | 解 |
| state | 状態 |
| pruning | 枝刈り |
| permutations problem | 順列列挙問題 |
| subset-sum problem | 部分集合和問題 |
| $n$-queens problem | $n$ クイーン問題 |
| dynamic programming | 動的計画法 |
| initial state | 初期状態 |
| state-transition equation | 状態遷移式 |
| knapsack problem | ナップサック問題 |
| edit distance problem | 編集距離問題 |
| greedy algorithm | 貪欲アルゴリズム |