Skip to content

Commit 22de820

Browse files
Update Japanese translations and fix heading anchors for documentation (#1084)
This PR contains comprehensive updates to Japanese translations across the Vapor documentation, along with fixes for heading anchors to ensure proper cross-language navigation. ## Summary of changes ### 1. Translation updates (27 files) - Updated Japanese translations to match the latest English documentation - Improved translation quality and consistency across all sections - Fixed typos and grammatical errors (e.g., 'ミッドウェア' → 'ミドルウェア') - Updated technical terms and code examples to match English version ### 2. Heading anchor fixes - Added explicit anchors to Japanese headings to match English auto-generated anchors - Removed unnecessary anchors from pure English headings in Japanese files - Ensured all heading anchors match between language versions for proper navigation ### 3. Structural alignment - Removed "Stack Traces" section from `errors.ja.md` to match English structure - Updated routing parameter syntax (`.get` → `.req.parameters.get`) - Fixed method parameter names (e.g., `type:` → `redirectType:`) ## Sections updated - **Getting Started**: hello-world, folder-structure, spm, xcode - **Basics**: async, client, content, environment, errors, logging, routing, validation, controllers - **Fluent**: overview, migration, advanced, model, query, relations, schema - **Install**: linux, macos - **Leaf**: getting-started, overview, custom-tags - **Security**: passwords, authentication, crypto - **Advanced**: server, sessions, testing, tracing - **Deploy**: systemd, digital-ocean, heroku - **Other**: index, contributing, upgrading, redis/sessions ## Testing - All Playwright cross-language navigation tests pass - Manual verification of translations and heading anchors - No changes to English documentation or non-documentation files ## Commits included 27 commits updating translations + 1 commit fixing heading anchors (total: 28 commits) --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent c66e86d commit 22de820

40 files changed

+382
-284
lines changed

docs/advanced/queues.ja.md

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ app.queues.add(emailJob)
8686
新しいキューワーカーを開始するには、`swift run App queues` を実行します。特定の種類のワーカーを実行する場合は、`swift run App queues --queue emails` と指定することもできます。
8787

8888
!!! tip
89-
ワーカーは本番環境で実行し続ける必要があります。長時間実行するプロセスを維持する方法については、ホスティングプロバイダーに従ってください。例えば、Heroku では、Procfile に `worker: Run queues` のように "worker" dyno を指定できます。これを設定すると、ダッシュボードのリソースタブや `heroku ps:scale worker=1`(または任意の dyno 数)でワーカーを開始できます。
89+
ワーカーは本番環境で実行し続ける必要があります。長時間実行するプロセスを維持する方法については、ホスティングプロバイダーに相談してください。例えば、Heroku では、Procfile に `worker: Run queues` のように "worker" dyno を指定できます。これを設定すると、ダッシュボードのリソースタブや `heroku ps:scale worker=1`(または任意の dyno 数)でワーカーを開始できます。
9090

9191
### プロセス内でワーカーを実行 {#running-workers-in-process}
9292

@@ -103,7 +103,7 @@ try app.queues.startScheduledJobs()
103103
```
104104

105105
!!! warning
106-
キューワーカーをコマンドラインまたはプロセス内ワーカー経由で起動しない場合、ジョブはディスパッチされません。
106+
キューワーカーをコマンドラインまたはプロセス内ワーカー経由で起動しないと、ジョブはディスパッチされません。
107107

108108
## `Job` プロトコル {#the-job-protocol}
109109

@@ -156,7 +156,7 @@ struct EmailJob: AsyncJob {
156156
`Payload` 型が `Codable` プロトコルを実装していることを確認してください。
157157

158158
!!! tip
159-
**Getting Started** の指示に従って、このジョブを設定ファイルに追加することを忘れないでください。
159+
**はじめに** の指示に従って、このジョブを設定ファイルに追加することを忘れないでください。
160160

161161
## ジョブのディスパッチ {#dispatching-jobs}
162162

@@ -242,7 +242,7 @@ app.get("email") { req async throws -> String in
242242
}
243243
```
244244

245-
ジョブが `delay` パラメータの前にデキューされた場合、ドライバによってジョブが再キューされます。
245+
ジョブが遅延パラメータの前にデキューされた場合、ドライバによってジョブが再キューされます。
246246

247247
### 優先度の指定 {#specify-a-priority}
248248

@@ -308,7 +308,7 @@ struct SendEmailCommand: AsyncCommand {
308308

309309

310310

311-
キューを指定しない場合、ジョブは `default` キューで実行されます。各キュータイプのワーカーを起動する手順については、**Getting Started** の指示に従ってください。
311+
キューを指定しない場合、ジョブは `default` キューで実行されます。各キュータイプのワーカーを起動する手順については、**はじめに** の指示に従ってください。
312312

313313
## ジョブのスケジューリング {#scheduling-jobs}
314314

@@ -325,7 +325,7 @@ swift run App queues --scheduled
325325
```
326326

327327
!!! tip
328-
ワーカーは本番環境で実行し続ける必要があります。長時間実行するプロセスを維持する方法については、ホスティングプロバイダーに従ってください。例えば、Heroku では、Procfile に `worker: App queues --scheduled` と指定することで「worker」 dyno を指定できます。
328+
ワーカーは本番環境で実行し続ける必要があります。長時間実行するプロセスを維持する方法については、ホスティングプロバイダーに相談してください。例えば、Heroku では、Procfile に `worker: App queues --scheduled` と指定することで「worker」 dyno を指定できます。
329329

330330
### `ScheduledJob` の作成 {#creating-a-scheduledjob}
331331

@@ -447,3 +447,28 @@ app.queues.add(MyEventDelegate())
447447

448448
- [QueuesDatabaseHooks](https://github.com/vapor-community/queues-database-hooks)
449449
- [QueuesDash](https://github.com/gotranseo/queues-dash)
450+
451+
## テスト {#testing}
452+
453+
同期の問題を避け、決定論的なテストを確保するために、Queues パッケージは `XCTQueue` ライブラリとテスト専用の `AsyncTestQueuesDriver` ドライバーを提供しており、次のように使用できます:
454+
455+
```swift
456+
final class UserCreationServiceTests: XCTestCase {
457+
var app: Application!
458+
459+
override func setUp() async throws {
460+
self.app = try await Application.make(.testing)
461+
try await configure(app)
462+
463+
// テスト用のドライバーをオーバーライド
464+
app.queues.use(.asyncTest)
465+
}
466+
467+
override func tearDown() async throws {
468+
try await self.app.asyncShutdown()
469+
self.app = nil
470+
}
471+
}
472+
```
473+
474+
詳細については、[Romain Pouclet のブログ記事](https://romain.codes/2024/10/08/using-and-testing-vapor-queues/)を参照してください。

docs/advanced/server.ja.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ app.http.server.configuration.backlog = 128
6666
app.http.server.configuration.reuseAddress = false
6767
```
6868

69-
### TCP No Delay {#tcp-no-delay}
69+
### TCP No Delay
7070

7171
`tcpNoDelay`パラメーターを有効にすると、TCPパケットの遅延を最小限に抑えようとします。デフォルトは`true`です。
7272

@@ -132,7 +132,7 @@ app.http.server.configuration.supportPipelining = true
132132
app.http.server.configuration.supportVersions = [.two]
133133
```
134134

135-
### TLS {#tls}
135+
### TLS
136136

137137
`tlsConfiguration`パラメーターは、サーバーでTLS(SSL)が有効かどうかを制御します。デフォルトは`nil`です。
138138

docs/advanced/sessions.ja.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ app.sessions.use(.memory)
5151

5252
本番環境での使用例については、データベースを使用してアプリの複数のインスタンス間でセッションを永続化および共有する他のセッションドライバーを確認してください。
5353

54-
### Fluent {#fluent}
54+
### Fluent
5555

5656
Fluentには、アプリケーションのデータベースにセッションデータを保存するサポートが含まれています。このセクションでは、[Fluentを設定](../fluent/overview.md)し、データベースに接続できることを前提としています。最初のステップは、Fluentセッションドライバーを有効にすることです。
5757

@@ -75,7 +75,7 @@ app.migrations.add(SessionRecord.migration)
7575

7676
新しいマイグレーションを追加した後、必ずアプリケーションのマイグレーションを実行してください。セッションはアプリケーションのデータベースに保存されるようになり、再起動間で永続化され、アプリの複数のインスタンス間で共有できます。
7777

78-
### Redis {#redis}
78+
### Redis
7979

8080
Redisは、設定されたRedisインスタンスにセッションデータを保存するサポートを提供します。このセクションでは、[Redisを設定](../redis/overview.md)し、Redisインスタンスにコマンドを送信できることを前提としています。
8181

docs/advanced/testing.ja.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# テスト {#testing}
22

3-
## VaporTesting {#vaportesting}
3+
## VaporTesting
44

55
Vaporには`VaporTesting`というモジュールが含まれており、`Swift Testing`をベースとしたテストヘルパーを提供しています。これらのテストヘルパーを使用すると、Vaporアプリケーションにプログラムでテストリクエストを送信したり、HTTPサーバー経由で実行したりできます。
66

@@ -162,7 +162,7 @@ private func withApp(_ test: (Application) async throws -> ()) async throws {
162162
}
163163
```
164164

165-
## XCTVapor {#xctvapor}
165+
## XCTVapor
166166

167167
Vaporには`XCTVapor`というモジュールが含まれており、`XCTest`をベースとしたテストヘルパーを提供しています。これらのテストヘルパーを使用すると、Vaporアプリケーションにプログラムでテストリクエストを送信したり、HTTPサーバー経由で実行したりできます。
168168

docs/advanced/tracing.ja.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Vaporのトレーシング APIは[swift-distributed-tracing](https://github.com/
66

77
Swiftでのトレーシングとスパンに馴染みがない場合は、[OpenTelemetryトレースドキュメント](https://opentelemetry.io/ja/docs/concepts/signals/traces/)[swift-distributed-tracingドキュメント](https://swiftpackageindex.com/apple/swift-distributed-tracing/main/documentation/tracing)を確認してください。
88

9-
## TracingMiddleware {#tracingmiddleware}
9+
## TracingMiddleware
1010

1111
各リクエストに対して完全に注釈付きのスパンを自動的に作成するには、アプリケーションに`TracingMiddleware`を追加します。
1212

docs/basics/async.ja.md

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 非同期
1+
# 非同期 {#async}
22

33
## Async Await
44

@@ -8,7 +8,7 @@ Vaporは、低レベルの非同期プログラミングのためのプリミテ
88

99
VaporのAPIの多くは、`EventLoopFuture``async`/`await`の両方のバージョンを提供するようになり、どちらが最適かを選択できるようになりました。一般的には、1つのルートハンドラーにつき1つのプログラミングモデルのみを使用し、コードの中で混在させないようにすべきです。イベントループを明示的に制御する必要があるアプリケーションや、非常に高性能が求められるアプリケーションについては、カスタムエグゼキュータが実装されるまで`EventLoopFuture`を使用し続けるべきです。それ以外の人々には、読みやすさや保守性の利点が小さなパフォーマンスのペナルティをはるかに上回るため、`async`/`await`を使用すべきです。
1010

11-
### async/awaitへの移行
11+
### async/awaitへの移行 {#migrating-to-asyncawait}
1212

1313
async/awaitに移行するにはいくつかのステップが必要です。まず、macOSを使用している場合は、macOS 12 Monterey以降とXcode 13.1以降が必要です。他のプラットフォームでは、Swift 5.5以降を実行している必要があります。次に、すべての依存関係を更新したことを確認してください。
1414

@@ -71,7 +71,7 @@ routes.get("firstUser") { req async throws -> String in
7171
}
7272
```
7373

74-
### 古い API と新しい API の使用
74+
### 古い API と新しい API の使用 {#working-with-old-and-new-apis}
7575

7676
まだ `async`/`await` バージョンを提供していない API に遭遇した場合は、`EventLoopFuture` を返す関数に `.get()` を呼び出して変換することができます。
7777

@@ -108,7 +108,7 @@ let futureString: EventLoopFuture<String> = promise.futureResult
108108

109109
に変換できます。
110110

111-
## `EventLoopFuture`
111+
## `EventLoopFuture` {#eventloopfutures}
112112

113113
Vapor のいくつかの API が一般的な `EventLoopFuture` タイプを期待したり返したりすることに気づいたかもしれません。もしこれが futures について初めて聞いたのであれば、最初は少し混乱するかもしれません。しかし心配しないでください、このガイドは彼らの強力な API を利用する方法をお見せします。
114114

@@ -121,7 +121,7 @@ Vapor のいくつかの API が一般的な `EventLoopFuture` タイプを期
121121

122122
フューチャーは、コールバックベースの非同期 API への代替手段です。フューチャーは、単純なクロージャではできない方法で連鎖させたり変換したりすることができます。
123123

124-
## 変換
124+
## 変換 {#transforming}
125125

126126
Swiftのオプショナルや配列のように、フューチャーはマップやフラットマップで変換できます。これらは、フューチャーに対して行う最も一般的な操作です。
127127

@@ -235,7 +235,7 @@ print(futureStatus) // EventLoopFuture<HTTPStatus>
235235

236236
`transform` に既に利用可能な値を提供しているとしても、これはまだ_変換_です。前のフューチャーが完了する(または失敗する)まで、フューチャーは完了しません。
237237

238-
### Chaining
238+
### チェーン {#chaining}
239239

240240
フューチャーの変換の素晴らしい点は、それらがチェーンできることです。これにより、多くの変換やサブタスクを簡単に表現できます。
241241

@@ -300,8 +300,24 @@ futureString.whenComplete { result in
300300
!!! note
301301
Future には、好きなだけコールバックを追加できます。
302302

303+
### Get
304+
305+
API に並行性ベースの代替手段がない場合は、`try await future.get()` を使用して Future の値を待つことができます。
306+
307+
```swift
308+
/// 何らかの API から Future 文字列を取得すると仮定します
309+
let futureString: EventLoopFuture<String> = ...
310+
311+
/// 文字列が準備できるまで待ちます
312+
let string: String = try await futureString.get()
313+
print(string) /// String
314+
```
315+
303316
### Wait
304317

318+
!!! warning
319+
`wait()` 関数は廃止されました。推奨されるアプローチについては [`Get`](#get) を参照してください。
320+
305321
`.wait()`を使用して、フューチャーが完了するまで同期的に待つことができます。フューチャーが失敗する可能性があるため、この呼び出しは投げられます。
306322

307323
```swift
@@ -345,7 +361,7 @@ promiseString.fail(...)
345361

346362
約束はどのスレッドからでも完了(`succeed` / `fail`)できます。これが、初期化にイベントループが必要な理由です。約束は、完了アクションがそのイベントループに戻されて実行されることを保証します。
347363

348-
## イベントループ
364+
## イベントループ {#event-loop}
349365

350366
アプリケーションが起動すると、通常は実行中の CPU の各コアに対して1つのイベントループが作成されます。各イベントループには1つのスレッドがあります。Node.js からのイベントループに精通している場合、Vapor のものは似ています。主な違いは、Swift がマルチスレッディングをサポートしているため、Vapor は 1 つのプロセスで複数のイベントループを実行できることです。
351367

@@ -411,7 +427,7 @@ app.get("hello") { req -> EventLoopFuture<String> in
411427

412428
すべてのブロッキングコールが `sleep(_:)` ほど明白ではありません。使用している呼び出しがブロッキングかどうか疑わしい場合は、そのメソッド自体を調査するか、誰かに尋ねてください。以下のセクションでは、メソッドがどのようにブロッキングする可能性があるかについて、詳しく説明します。
413429

414-
### I/O バウンド
430+
### I/O バウンド {#io-bound}
415431

416432
I/O バウンドのブロッキングとは、ネットワークやハードディスクなど、CPU よりも桁違いに遅いリソースを待つことを意味します。これらのリソースを待っている間に CPU をブロックすると、時間が無駄になります。
417433

@@ -420,7 +436,7 @@ I/O バウンドのブロッキングとは、ネットワークやハードデ
420436

421437
Vapor のすべてのパッケージは SwiftNIO に基づいており、ノンブロッキング I/O を使用しています。しかし、ブロッキング I/O を使用する Swift のパッケージや C ライブラリが多く存在します。関数がディスクやネットワーク IO を行っており、同期 API(コールバックやフューチャーがない)を使用している場合、ブロッキングしている可能性が高いです。
422438

423-
### CPU バウンド
439+
### CPU バウンド {#cpu-bound}
424440

425441
リクエスト中のほとんどの時間は、データベースのクエリやネットワークリクエストなどの外部リソースを待っているために費やされます。Vapor と SwiftNIO はノンブロッキングなので、このダウンタイムは他の受信リクエストを満たすために使用できます。しかし、アプリケーションのいくつかのルートは、リクエストの結果として重い CPU バウンド作業を行う必要があるかもしれません。
426442

docs/basics/client.ja.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# クライアント
1+
# クライアント {#client}
22

33
Vapor のクライアント API では、外部のリソースに対して HTTP 通信を行うことができます。これは [async-http-client](https://github.com/swift-server/async-http-client) に基づいており、[コンテンツ](content.ja.md) API と統合されています。
44

5-
## 概要
5+
## 概要 {#overview}
66

77
`Application` やルートハンドラー内の `Request` から、デフォルトクライアントにアクセスできます。
88

@@ -16,17 +16,17 @@ app.get("test") { req in
1616

1717
アプリケーションのクライアントは、設定時に HTTP リクエストを送る際に便利です。ルートハンドラー内で HTTP リクエストを行う場合は、リクエストに紐づくクライアントを使うべきです。
1818

19-
### メソッド
19+
### メソッド {#methods}
2020

2121
`GET` リクエストを行う際には、目的の URL を `get` メソッドに渡します。
2222

2323
```swift
2424
let response = try await req.client.get("https://httpbin.org/status/200")
2525
```
2626

27-
`get``post``delete` など、各種 HTTP メソッドに対応したメソッドがあります。クライアントからのレスポンスは将来的に返され、HTTPステータス、ヘッダー、ボディが含まれます。
27+
`get``post``delete` など、各種 HTTP メソッドに対応したメソッドがあります。クライアントからのレスポンスはFutureとして返され、HTTPステータス、ヘッダー、ボディが含まれます。
2828

29-
### コンテンツ
29+
### コンテンツ {#content}
3030

3131
Vapor の [コンテンツ](content.ja.md) を使うと、クライアントリクエストやレスポンスのデータを扱うことができます。コンテンツやクエリパラメータをエンコードしたり、ヘッダーを追加するには、`beforeSend` クロージャを使います。
3232

@@ -42,32 +42,32 @@ let response = try await req.client.post("https://httpbin.org/status/200") { req
4242
let auth = BasicAuthorization(username: "something", password: "somethingelse")
4343
req.headers.basicAuthorization = auth
4444
}
45-
//レスポンスを扱う
45+
// レスポンスを処理する。
4646
```
4747

48-
レスポンスボディを `Content` を使ってデコードすることもできます。
48+
レスポンスボディを `Content` を使ってデコードすることもできます。
4949

5050
```swift
5151
let response = try await req.client.get("https://httpbin.org/json")
5252
let json = try response.content.decode(MyJSONResponse.self)
5353
```
5454

55-
もし、futures を使っている場合は、`flatMapThrowing` を使うことができます。
55+
もし、Future を使っている場合は、`flatMapThrowing` を使うことができます。
5656

5757
```swift
5858
return req.client.get("https://httpbin.org/json").flatMapThrowing { res in
5959
try res.content.decode(MyJSONResponse.self)
6060
}.flatMap { json in
61-
// Use JSON here
61+
// ここでJSONを使用
6262
}
6363
```
6464

65-
## 設定
65+
## 設定 {#configuration}
6666

6767
アプリケーションを通じて、基本となる HTTP クライアントを設定することができます。
6868

6969
```swift
70-
// Disable automatic redirect following.
70+
// 自動リダイレクトを無効にする。
7171
app.http.client.configuration.redirectConfiguration = .disallow
7272
```
7373

0 commit comments

Comments
 (0)