@@ -16,7 +16,7 @@ fundamentals.
16
16
実践的なプロジェクトに一緒に取り組むことで、Rustの世界に飛び込んでみましょう!
17
17
この章ではRustの一般的な概念を、実際のプログラムでの使い方を示しながら紹介します。
18
18
` let ` 、` match ` 、メソッド、関連関数、外部クレートの使用などについて学びます!
19
- それらの詳細については後続の章で取り上げますので、この章では基礎部分だけを練習しましょう 。
19
+ それらの詳細については後続の章で取り上げますので、この章では基礎部分だけを練習します 。
20
20
21
21
<!--
22
22
We’ll implement a classic beginner programming problem: a guessing game. Here’s
@@ -44,7 +44,8 @@ To set up a new project, go to the *projects* directory that you created in
44
44
Chapter 1 and make a new project using Cargo, like so:
45
45
-->
46
46
47
- 新しいプロジェクトを立ち上げるには、第1章で作成した* projects* ディレクトリに移動し、以下のようにCargoを使って新規プロジェクトを作成します。
47
+ 新しいプロジェクトを立ち上げましょう。
48
+ 第1章で作成した* projects* ディレクトリに移動し、以下のようにCargoを使って新規プロジェクトを作成します。
48
49
49
50
``` console
50
51
$ cargo new guessing_game
@@ -64,7 +65,7 @@ directory.
64
65
Look at the generated *Cargo.toml* file:
65
66
-->
66
67
67
- 生成された* Cargo.toml* ファイルを見てください 。
68
+ 生成された* Cargo.toml* ファイルを見てみましょう 。
68
69
69
70
<!--
70
71
<span class="filename">Filename: Cargo.toml</span>
@@ -114,7 +115,7 @@ the next one.
114
115
このゲーム(の開発)では各イテレーションを素早くテストしてから、次のイテレーションに移ります。
115
116
` run ` コマンドは、今回のようにプロジェクトのイテレーションを素早く回したいときに便利です。
116
117
117
- > 訳注:ここでのイテレーションは、アジャイル開発など、一連の工程を短期間で繰り返す開発手法で用いられている用語です 。
118
+ > 訳注:ここでのイテレーションは、アジャイル開発など、一連の工程を短期間で繰り返す開発手法で用いられている用語にあたります 。
118
119
> イテレーションとは、開発工程の「一回のサイクル」のことです。
119
120
>
120
121
> この章では「実装」→「テスト」のサイクルを繰り返すことで、プログラムに少しずつ機能を追加していきます。
@@ -126,8 +127,6 @@ Reopen the *src/main.rs* file. You’ll be writing all the code in this file.
126
127
* src/main.rs* ファイルを開き直しましょう。
127
128
このファイルにすべてのコードを書いていきます。
128
129
129
- <!-- 2022-03-14 和訳の更新はここまで終了 -->
130
-
131
130
<!--
132
131
## Processing a Guess
133
132
-->
@@ -141,7 +140,7 @@ allow the player to input a guess. Enter the code in Listing 2-1 into
141
140
*src/main.rs*.
142
141
-->
143
142
144
- 数当てプログラムの最初の部分は 、ユーザに入力を求め、その入力を処理し、予期した形式になっていることを確認します 。
143
+ 数当てゲームプログラムの最初の部分は 、ユーザに入力を求め、その入力を処理し、予期した形式になっていることを確認することになります 。
145
144
手始めに、プレーヤーが予想を入力できるようにしましょう。
146
145
リスト2-1のコードを* src/main.rs* に入力してください。
147
146
@@ -160,11 +159,7 @@ allow the player to input a guess. Enter the code in Listing 2-1 into
160
159
prints it</span>
161
160
-->
162
161
163
- <span class =" caption " >リスト2-1: ユーザに予想を入力してもらい、それを出力するコード</span >
164
-
165
- > 注釈: The programming language Rust第1版の翻訳者によると、
166
- > ソースコードのコメント中以外に日本語文字があるとコンパイルに失敗することがあるそうなので、文字列の英語は、コメントに和訳を載せます。
167
- > また、重複する内容の場合には、最初の1回だけ掲載するようにします。
162
+ <span class =" caption " >リスト2-1:ユーザに予想を入力してもらい、それを出力するコード</span >
168
163
169
164
<!--
170
165
This code contains a lot of information, so let’s go over it line by line. To
@@ -173,9 +168,10 @@ obtain user input and then print the result as output, we need to bring the
173
168
standard library, known as `std`:
174
169
-->
175
170
176
- このコードには、たくさんの情報が詰め込まれていますね。なので、行ごとに見ていきましょう。
177
- ユーザ入力を受け付け、結果を出力するためには、` io ` (入/出力)ライブラリをスコープに導入する必要があります。
178
- ` io ` ライブラリは、標準ライブラリ(` std ` として知られています)に存在します:
171
+ このコードには多くの情報が詰め込まれていますね。
172
+ 行ごとに見ていきましょう。
173
+ ユーザ入力を受け付け、結果を出力するためには、` io ` (入/出力)ライブラリをスコープに入れる必要があります。
174
+ ` io ` ライブラリは、標準ライブラリ(` std ` として知られています)に含まれています。
179
175
180
176
``` rust,ignore
181
177
{{#rustdoc_include ../listings/ch02-guessing-game-tutorial/listing-02-01/src/main.rs:io}}
@@ -187,9 +183,8 @@ into the scope of every program. This set is called the *prelude*, and you can
187
183
see everything in it [in the standard library documentation][prelude].
188
184
-->
189
185
190
- デフォルトでは、[ * prelude* ] [ prelude ] <!-- ignored --> に存在するいくつかの型のみ使えます。
191
- もし、使用したい型がpreludeにない場合は、` use ` 文で明示的にその型をスコープに導入する必要があります。
192
- ` std::io ` ライブラリを使用することで、ユーザ入力を受け付ける能力などの実用的な機能の多くを使用することができます。
186
+ Rustはデフォルトで、標準ライブラリに定義されているいくつかのアイテムを、すべてのプログラムのスコープに取り込みます。
187
+ このセットは* prelude* (プレリュード)を呼ばれ、[ 標準ライブラリのドキュメント] [ prelude ] でその中のすべてを見ることができます。
193
188
194
189
<!--
195
190
If a type you want to use isn’t in the prelude, you have to bring that type
@@ -198,14 +193,17 @@ provides you with a number of useful features, including the ability to accept
198
193
user input.
199
194
-->
200
195
196
+ 使いたい型がpreludeにない場合は、その型を` use ` 文で明示的にスコープに入れる必要があります。
197
+ ` std::io ` ライブラリを` use ` すると、ユーザ入力を受け付ける機能など、多くの便利な機能が利用できるようになります。
198
+
201
199
[ prelude ] : https://doc.rust-lang.org/std/prelude/index.html
202
200
203
201
<!--
204
202
As you saw in Chapter 1, the `main` function is the entry point into the
205
203
program:
206
204
-->
207
205
208
- 第1章で見た通り 、` main ` 関数がプログラムへのエントリーポイント( ` 脚注 ` : スタート地点) になります:
206
+ 第1章で見たとおり 、` main ` 関数がプログラムへのエントリーポイント(訳注: スタート地点) になります。
209
207
210
208
``` rust,ignore
211
209
{{#rustdoc_include ../listings/ch02-guessing-game-tutorial/listing-02-01/src/main.rs:main}}
@@ -216,14 +214,15 @@ The `fn` syntax declares a new function, the parentheses, `()`, indicate there
216
214
are no parameters, and the curly bracket, `{`, starts the body of the function.
217
215
-->
218
216
219
- ` fn ` 構文が関数を新しく宣言し 、かっこの` () ` は引数がないことを示し、波括弧の` { ` が関数本体のスタート地点になります 。
217
+ ` fn ` 構文は関数を新しく宣言し 、かっこの` () ` は引数がないことを示し、波括弧の` { ` は関数の本体を開始します 。
220
218
221
219
<!--
222
220
As you also learned in Chapter 1, `println!` is a macro that prints a string to
223
221
the screen:
224
222
-->
225
223
226
- また、第1章で学んだように、` println! ` は、文字列を画面に表示するマクロになります:
224
+ また、第1章で学んだように、` println! ` は画面に文字列を表示するマクロです.
225
+
227
226
228
227
``` rust,ignore
229
228
{{#rustdoc_include ../listings/ch02-guessing-game-tutorial/listing-02-01/src/main.rs:print}}
@@ -234,7 +233,7 @@ This code is printing a prompt stating what the game is and requesting input
234
233
from the user.
235
234
-->
236
235
237
- このコードは、このゲームが何かを出力し 、ユーザに入力を求めています。
236
+ このコードは、ゲームの内容などを示すプロンプトを表示し 、ユーザに入力を求めています。
238
237
239
238
<!--
240
239
### Storing Values with Variables
@@ -246,7 +245,8 @@ from the user.
246
245
Next, we’ll create a *variable* to store the user input, like this:
247
246
-->
248
247
249
- 次に、ユーザ入力を保持する場所を作りましょう。こんな感じに:
248
+ 次に、ユーザの入力を格納するための* 変数* を作りましょう。
249
+ こんな感じです。
250
250
251
251
``` rust,ignore
252
252
{{#rustdoc_include ../listings/ch02-guessing-game-tutorial/listing-02-01/src/main.rs:string}}
@@ -257,9 +257,10 @@ Now the program is getting interesting! There’s a lot going on in this little
257
257
line. We use the `let` statement to create the variable. Here’s another example:
258
258
-->
259
259
260
- さあ、プログラムが面白くなってきましたね。このたった1行でいろんなことが起きています。
261
- これが` let ` 文であることに注目してください。これを使用して* 変数* を生成しています。
262
- こちらは、別の例です:
260
+ さあ、プログラムが面白くなってきましたね。
261
+ この小さな行の中でいろいろなことが起きています。
262
+ ` let ` 文を使って変数を作っています。
263
+ 別の例も見てみましょう。
263
264
264
265
``` rust,ignore
265
266
let apples = 5;
@@ -273,13 +274,15 @@ variable name:
273
274
-->
274
275
275
276
この行では` apples ` という名前の新しい変数を作成し、` 5 ` という値に束縛しています。
276
- Rustでは、変数は標準で不変 (immutable)です 。
277
- この概念について詳しくは、第3章の [ 「変数と可変性」] [ variables-and-mutability ] の節で議論します 。
278
- 以下の例には 、変数名の前に` mut ` をつけて変数を可変にする方法が示されています:
277
+ Rustでは、変数はデフォルトで不変 (immutable)になります 。
278
+ この概念については第3章の [ 「変数と可変性」] [ variables-and-mutability ] の節で詳しく説明します 。
279
+ 変数を可変(mutable)にするには 、変数名の前に` mut ` をつけます。
279
280
280
281
``` rust,ignore
281
282
let apples = 5; // immutable
283
+ // 不変
282
284
let mut bananas = 5; // mutable
285
+ // 可変
283
286
```
284
287
285
288
<!--
@@ -288,8 +291,8 @@ let mut bananas = 5; // mutable
288
291
> detail in [Chapter 3][comments].
289
292
-->
290
293
291
- > 注釈: ` // ` という記法は、行末まで続くコメントを記述します 。
292
- > コンパイラは、コメントを一切無視し、これについても第3章で詳しく議論します 。
294
+ > 注: ` // ` 構文は行末まで続くコメントを開始し、Rustはコメント内のすべて無視します 。
295
+ > コメントについては [ 第3章 ] [ comments ] で詳しく説明します 。
293
296
294
297
<!--
295
298
Returning to the guessing game program, you now know that `let mut guess` will
@@ -301,11 +304,12 @@ the value that `guess` is bound to, which is the result of calling
301
304
library that is a growable, UTF-8 encoded bit of text.
302
305
-->
303
306
304
- 数当てゲームのプログラムに戻りましょう。さあ、` let mut guess ` が` guess ` という名前の可変変数を導入するとわかりましたね。
305
- イコール記号(` = ` )の反対側には、変数` guess ` が束縛される値があります。この値は、
306
- ` String::new ` 関数の呼び出し結果であり、この関数は、` String ` 型のオブジェクトを返します。
307
- [ ` String ` ] [ string ] <!-- ignore --> 型は、標準ライブラリによって提供される文字列型で、
308
- サイズ可変、UTF-8エンコードされたテキスト破片になります。
307
+ 数当てゲームのプログラムに戻りましょう。
308
+ ここまでの話で` let mut guess ` が` guess ` という名前の可変変数を導入することがわかったと思います。
309
+ 等号記号(` = ` )はRustに、いまこの変数を何かに束縛したいことを伝えます。
310
+ 等号記号の右側には` guess ` が束縛される値があります。
311
+ これは` String::new ` 関数を呼び出すことで得られた値で、この関数は` String ` 型の新しいインスタンスを返します。
312
+ [ ` String ` ] [ string ] は標準ライブラリによって提供される文字列型で、サイズが拡張可能な、UTF-8でエンコードされたテキスト片になります。
309
313
310
314
[ string ] : https://doc.rust-lang.org/std/string/struct.String.html
311
315
@@ -317,20 +321,27 @@ new, empty string. You’ll find a `new` function on many types, because it’s
317
321
common name for a function that makes a new value of some kind.
318
322
-->
319
323
320
- ` ::new ` 行にある ` :: ` という記法は、 ` new ` が` String ` 型の * 関連関数 * であることを表しています 。
321
- 関連関数とは、 ` String ` 型の特定のオブジェクトよりも型(この場合は ` String ` )に対して
322
- 実装された関数のことであり、 * 静的(スタティック)メソッド * と呼ばれる言語もあります 。
323
- この ` new ` 関数は、新しく空の文字列を生成します。 ` new ` 関数は、いろんな型に見られます 。
324
- なぜなら、何らかの新規値を生成する関数にとってありふれた名前だからです 。
324
+ ` ::new ` の行にある ` :: ` 構文は ` new ` が` String ` 型の関連関数であることを示しています 。
325
+ * 関連関数 * とは、ある型(ここでは ` String ` )に対して実装される関数のことです。
326
+ この ` new ` 関数は新しい空の文字列を作成します 。
327
+ ` new ` 関数は多くの型に見られます 。
328
+ なぜなら、何らかの新しい値を作成する関数によくある名前だからです 。
325
329
326
330
<!--
327
331
In full, the `let mut guess = String::new();` line has created a mutable
328
332
variable that is currently bound to a new, empty instance of a `String`. Whew!
329
333
-->
330
334
335
+ つまり` let mut guess = String::new(); ` という行は可変変数を作成し、その変数は現時点では新しい空の` String ` のインスタンスに束縛されているわけです。
336
+ ふう!
337
+
338
+ <!-- ここまで翻訳済み -->
339
+
340
+ <!--
331
341
### Receiving User Input
332
- まとめると、` let mut guess = String::new(); ` という行は、現在、新たに空の` String ` オブジェクトに束縛されている
333
- 可変変数を作っているわけです。ふう!
342
+ -->
343
+
344
+ ### ユーザの入力を受け取る
334
345
335
346
<!--
336
347
Recall that we included the input/output functionality from the standard
0 commit comments