@@ -13,10 +13,10 @@ explore these ideas in more detail. In this chapter, you’ll practice the
13
13
fundamentals.
14
14
-->
15
15
16
- 実践的なプロジェクトに一緒に取り組むことで 、Rustの世界に飛び込んでみましょう!  ;
16
+ ハンズオン形式のプロジェクトに一緒に取り組むことで 、Rustの世界に飛び込んでみましょう!  ;
17
17
この章ではRustの一般的な概念を、実際のプログラムでの使い方を示しながら紹介します。
18
- ` let ` 、` match ` 、メソッド、関連関数、外部クレートの使用などについて学びます !  ;
19
- これらについての詳細は後続の章で取り上げますので、この章では基礎部分だけを練習します 。
18
+ ` let ` 、` match ` 、メソッド、関連関数、外部クレートの使いかたなどについて学びます !  ;
19
+ これらについての詳細は後続の章で取り上げますので、この章では基本的なところを練習します 。
20
20
21
21
<!--
22
22
We’ll implement a classic beginner programming problem: a guessing game. Here’s
@@ -118,7 +118,7 @@ the next one.
118
118
> 訳注:ここでのイテレーションは、アジャイルな開発手法で用いられている用語にあたります。
119
119
>
120
120
> イテレーションとは開発工程の「一回のサイクル」のことで、サイクルには、設計、実装、テスト、改善(リリース後の振り返り)が含まれます。
121
- > アジャイル開発では、イテレーションを数週間の短いスパンで一通り回し、それを繰り返しながら開発を進めていきます 。
121
+ > アジャイル開発ではイテレーションを数週間の短いスパンで一通り回し、それを繰り返すことで開発を進めていきます 。
122
122
>
123
123
> この章では「実装」→「テスト」のごく短いサイクルを繰り返すことで、プログラムに少しずつ機能を追加していきます。
124
124
@@ -142,7 +142,7 @@ allow the player to input a guess. Enter the code in Listing 2-1 into
142
142
*src/main.rs*.
143
143
-->
144
144
145
- 数当てゲームプログラムの最初の部分は、ユーザに入力を求め、その入力を処理し、予期した形式になっていることを確認することになります 。
145
+ 数当てゲームプログラムの最初の部分は、ユーザに入力を求め、その入力を処理し、期待した形式(訳注:数値データ)になっていることを確認することです 。
146
146
手始めに、プレーヤーが予想を入力できるようにしましょう。
147
147
リスト2-1のコードを* src/main.rs* に入力してください。
148
148
@@ -172,8 +172,8 @@ standard library, known as `std`:
172
172
173
173
このコードには多くの情報が詰め込まれています。
174
174
行ごとに見ていきましょう。
175
- ユーザ入力を受け付け、結果を出力するためには、 ` io ` (入/出力 )ライブラリをスコープに入れる必要があります。
176
- ` io ` ライブラリは、標準ライブラリ( ` std ` として知られています)に含まれています 。
175
+ ユーザ入力を受け付け、結果を出力するためには` io ` (入出力 )ライブラリをスコープに入れる必要があります。
176
+ ` io ` ライブラリは、` std ` と呼ばれる標準ライブラリに含まれています 。
177
177
178
178
``` rust,ignore
179
179
{{#rustdoc_include ../listings/ch02-guessing-game-tutorial/listing-02-01/src/main.rs:io}}
@@ -185,8 +185,8 @@ into the scope of every program. This set is called the *prelude*, and you can
185
185
see everything in it [in the standard library documentation][prelude].
186
186
-->
187
187
188
- Rustはデフォルトで、標準ライブラリに定義されているいくつかのアイテム(をセットにしたもの)を 、すべてのプログラムのスコープに取り込みます。
189
- このセットは* prelude* (プレリュード)を呼ばれ 、[ 標準ライブラリのドキュメント] [ prelude ] でその中のすべてを見ることができます。
188
+ Rustはデフォルトで、標準ライブラリで定義されているアイテムの中のいくつかを 、すべてのプログラムのスコープに取り込みます。
189
+ このセットは* prelude* (プレリュード)と呼ばれ 、[ 標準ライブラリのドキュメント] [ prelude ] でその中のすべてを見ることができます。
190
190
191
191
<!--
192
192
If a type you want to use isn’t in the prelude, you have to bring that type
@@ -196,7 +196,7 @@ user input.
196
196
-->
197
197
198
198
使いたい型がpreludeにない場合は、その型を` use ` 文で明示的にスコープに入れる必要があります。
199
- ` std::io ` ライブラリを` use ` すると、ユーザ入力を受け付ける機能など、 多くの便利な機能が利用できるようになります。
199
+ ` std::io ` ライブラリを` use ` すると、ユーザ入力を受け付ける機能など(入出力に関する) 多くの便利な機能が利用できるようになります。
200
200
201
201
[ prelude ] : https://doc.rust-lang.org/std/prelude/index.html
202
202
@@ -383,7 +383,7 @@ string’s content.
383
383
384
384
次の` .read_line(&mut guess) ` 行は、標準入力ハンドルの[ ` read_line ` ] [ read_line ] メソッドを呼び出し、ユーザからの入力を得ています。
385
385
また、` read_line ` の引数として` &mut guess ` を渡し、ユーザ入力をどの文字列に格納するかを指示しています。
386
- ` read_line ` メソッドの仕事は、ユーザが標準入力に入力したものを文字列に(その内容を上書きすることなく )追加することですので、文字列を引数として渡しているわけです。
386
+ ` read_line ` メソッドの仕事は、ユーザが標準入力に入力したものを文字列に(いまの内容を上書きせずに )追加することですので、文字列を引数として渡しているわけです。
387
387
引数の文字列は、その内容をメソッドが変更できるように、可変である必要があります。
388
388
389
389
[ read_line ] : https://doc.rust-lang.org/std/io/struct.Stdin.html#method.read_line
@@ -419,8 +419,8 @@ line of text, it’s still part of a single logical line of code. The next part
419
419
is this method:
420
420
-->
421
421
422
- まだ、このコードの行は終わってませんよ 。
423
- これから説明するのはテキスト上は3行目になりますが、まだ一つの論理的な行の一部分です 。
422
+ まだ、このコードの行は終わってません 。
423
+ これから説明するのはテキスト上は3行目になりますが、まだ一つの論理的な行の一部分に過ぎません 。
424
424
次の部分はこのメソッドです。
425
425
426
426
``` rust,ignore
@@ -461,7 +461,7 @@ different code based on which variant an enum value is when the conditional is
461
461
evaluated.
462
462
-->
463
463
464
- 前述したように、` read_line ` メソッドは、渡された文字列にユーザが入力したものを入れます 。
464
+ 前述したように、` read_line ` メソッドは渡された文字列にユーザが入力したものを入れます 。
465
465
しかし、同時に値(この場合は[ ` io::Result ` ] [ ioresult ] )も返します。
466
466
Rustの標準ライブラリには` Result ` という名前の型がいくつかあります。
467
467
汎用の[ ` Result ` ] [ result ] と、` io::Result ` といったサブモジュール用の特殊な型などです。
@@ -519,7 +519,7 @@ can use it. In this case, that value is the number of bytes in the user’s inpu
519
519
If you don’t call `expect`, the program will compile, but you’ll get a warning:
520
520
-->
521
521
522
- もし` expect ` メソッドを呼び出さなかったら、コンパイルできるものの、警告が出るでしょう 。
522
+ もし` expect ` メソッドを呼び出さなかったら、コンパイルはできるものの警告が出るでしょう 。
523
523
524
524
``` console
525
525
{{#include ../listings/ch02-guessing-game-tutorial/no-listing-02-without-expect/output.txt}}
@@ -540,7 +540,7 @@ use `expect`. You’ll learn about recovering from errors in [Chapter
540
540
-->
541
541
542
542
警告を抑制する正しい方法は実際にエラー処理を書くことです。
543
- しかし、今回は問題が起きたときにこのプログラムをクラッシュさせたいだけなので 、` expect ` が使えるわけです。
543
+ しかし、現時点では問題が起きたときにこのプログラムをクラッシュさせたいだけなので 、` expect ` が使えるわけです。
544
544
エラーからの回復については第9章で学びます。
545
545
546
546
<!--
@@ -704,16 +704,16 @@ release that will still compile with the code in this chapter. Any version
704
704
examples use.
705
705
-->
706
706
707
- * Cargo.toml* ファイルでは、ヘッダに続くものは全て 、他のセクションが始まるまで続くセクションの一部になります。
707
+ * Cargo.toml* ファイルでは、ヘッダに続くものはすべて 、他のセクションが始まるまで続くセクションの一部になります。
708
708
(訳注:Cargo.tomlファイル内には複数のセクションがあり、各セクションは` [ ] ` で囲まれたヘッダ行から始まります)
709
709
710
710
` [dependecies] ` はプロジェクトが依存する外部クレートと必要とするバージョンをCargoに伝えます。
711
711
今回は` rand ` クレートを` 0.8.3 ` というセマンティックバージョン指定子で指定します。
712
712
Cargoは[ セマンティックバージョニング] [ semver ] (* SemVer* と呼ばれることもあります)を理解しており、これはバージョンナンバーを記述するための標準です。
713
713
` 0.8.3 ` という数字は実際には` ^0.8.3 ` の省略記法で、` 0.8.3 ` 以上` 0.9.0 ` 未満の任意のバージョンを意味します。
714
714
Cargoはこれらのバージョンを、バージョン` 0.8.3 ` と互換性のある公開APIを持つものとみなします。
715
- この仕様により、この章のコードがコンパイルできるような最新のパッチリリースを取得できるようになります 。
716
- 0.9.0以降のバージョンは、以下の例で使用しているものと同じAPIであることを保証しません 。
715
+ この仕様により、この章のコードが引き続きコンパイルできるようにしつつ、最新のパッチリリースを取得できるようになります 。
716
+ 0.9.0以降のバージョンは、以下の例で使用しているものと同じAPIを持つことを保証しません 。
717
717
718
718
[ semver ] : http://semver.org
719
719
@@ -847,8 +847,8 @@ directory.
847
847
Cargoはあなたや他の人があなたのコードをビルドするたびに、同じ生成物をリビルドできるようにするしくみを備えています。
848
848
Cargoは何も指示されない限り、指定したバージョンの依存のみを使用します。
849
849
たとえば来週` rand ` クレートのバージョン0.8.4が出て、そのバージョンには重要なバグ修正が含まれていますが、同時にあなたのコードを破壊するリグレッションも含まれているとします。
850
- これに対応するため、Rustは` cargo build ` を最初に実行したとき * Cargo.lock* ファイルを作成します。
851
- なので、いま * guessing_game* ディレクトリにそれがあります。
850
+ これに対応するため、Rustは` cargo build ` を最初に実行したときに * Cargo.lock* ファイルを作成します。
851
+ (いまの * guessing_game* ディレクトリにもあるはずです)
852
852
853
853
<!--
854
854
When you build a project for the first time, Cargo figures out all the
@@ -862,7 +862,7 @@ file.
862
862
-->
863
863
864
864
プロジェクトを初めてビルドするとき、Cargoは条件に合うすべての依存関係のバージョンを計算し* Cargo.lock* ファイルに書き込みます。
865
- 次にプロジェクトをビルドする際は 、Cargoは* Cargo.lock* ファイルが存在することを確認し、バージョンを把握するすべての作業を再度行う代わりに、そこに指定されているバージョンを使います 。
865
+ 次にプロジェクトをビルドすると 、Cargoは* Cargo.lock* ファイルが存在することを確認し、バージョンを把握するすべての作業を再び行う代わりに、そこで指定されているバージョンを使います 。
866
866
これにより再現性のあるビルドを自動的に行えます。
867
867
言い換えれば、* Cargo.lock* ファイルのおかげで、あなたが明示的にアップグレードするまで、プロジェクトは` 0.8.3 ` を使い続けます。
868
868
@@ -906,7 +906,7 @@ this instead:
906
906
907
907
Cargoは` 0.9.0 ` リリースを無視します。
908
908
またそのとき、* Cargo.lock* ファイルが変更され、` rand ` クレートの現在使用中のバージョンが` 0.8.4 ` になったことにも気づくでしょう。
909
- そうではなく、` rand ` のバージョン` 0.9.0 ` か、` 0.9.x ` 系のどれかを使用するには、* Cargo.toml* ファイルを以下のように変更する必要があるでしょう 。
909
+ そうではなく、` rand ` のバージョン` 0.9.0 ` か、` 0.9.x ` 系のどれかを使用するには、* Cargo.toml* ファイルを以下のように変更する必要があります 。
910
910
911
911
``` toml
912
912
[dependencies ]
@@ -975,7 +975,7 @@ use those methods. Chapter 10 will cover traits in detail.
975
975
-->
976
976
977
977
まず` use rand::Ring ` という行を追加します。
978
- ` Rng ` トレイトは乱数生成器が実装するメソッドを定義しており 、それらのメソッドを使用するには、このトレイトがスコープ内になければなりません。
978
+ ` Rng ` トレイトは乱数生成器が実装すべきメソッドを定義しており 、それらのメソッドを使用するには、このトレイトがスコープ内になければなりません。
979
979
トレイトについて詳しくは第10章で解説します。
980
980
981
981
<!--
@@ -993,7 +993,7 @@ upper bound, so we need to specify `1..101` to request a number between 1 and
993
993
-->
994
994
995
995
次に、途中に2行を追加しています。
996
- 最初の行では` rand::thread_rng ` 関数を呼び出して、これから使う特定の乱数生成器を取得しています 。
996
+ 最初の行では` rand::thread_rng ` 関数を呼び出して、これから使う、ある特定の乱数生成器を取得しています 。
997
997
なお、この乱数生成器は現在のスレッドに固有で、オペレーティングシステムからシード値を得ています。
998
998
そして、この乱数生成器の` gen_range ` メソッドを呼び出しています。
999
999
このメソッドは` use rand::Rng ` 文でスコープに導入した` Rng ` トレイトで定義されています。
@@ -1025,13 +1025,13 @@ as it starts!
1025
1025
1026
1026
コードに追加した2行目は秘密の数字を表示します。
1027
1027
これはプログラムを開発している間のテストに便利ですが、最終版からは削除する予定です。
1028
- プログラムが始まってすぐに答え表示されたらゲームになりませんからね !
1028
+ プログラムが始まってすぐに答えが表示されたらゲームになりませんからね !
1029
1029
1030
1030
<!--
1031
1031
Try running the program a few times:
1032
1032
-->
1033
1033
1034
- 試しに何回かプログラムを走らせてみてください 。
1034
+ 試しにプログラムを何回か走らせてみてください 。
1035
1035
1036
1036
``` console
1037
1037
$ cargo run
@@ -1169,7 +1169,7 @@ expression ends because it has no need to look at the last arm in this scenario.
1169
1169
` match ` 式は` Ordering::Greater ` の値を取得し、各アームのパターンを吟味し始めます。
1170
1170
まず最初のアームのパターンである` Ordering::Less ` を見て、` Ordering::Greater ` の値と` Ordering::Less ` がマッチしないことがわかります。
1171
1171
そのため、このアームのコードは無視して、次のアームに移ります。
1172
- 次のアームのパターンは` Ordering::Greater ` で、これは* 見事に * ` Ordering::Greater ` とマッチします !  ;
1172
+ 次のアームのパターンは` Ordering::Greater ` で、これは` Ordering::Greater ` と * マッチ * します !  ;
1173
1173
このアームに関連するコードが実行され、画面に` Too big! ` と表示されます。
1174
1174
このシナリオでは最後のアームと照合する必要がないため` match ` 式(の評価)は終了します。
1175
1175
@@ -1228,7 +1228,7 @@ by adding this line to the `main` function body:
1228
1228
The line is:
1229
1229
-->
1230
1230
1231
- その行とは、
1231
+ その行とはこれのことです。
1232
1232
1233
1233
``` rust,ignore
1234
1234
let guess: u32 = guess.trim().parse().expect("Please type a number!");
@@ -1355,7 +1355,7 @@ We have most of the game working now, but the user can make only one guess.
1355
1355
Let’s change that by adding a loop!
1356
1356
-->
1357
1357
1358
- 現在、ゲームの大部分は動作していますが 、まだユーザは1回しか予想できません。
1358
+ 現在、ゲームの大半は動作していますが 、まだユーザは1回しか予想できません。
1359
1359
ループを追加して、その部分を変更しましょう!
1360
1360
1361
1361
<!--
@@ -1431,7 +1431,7 @@ quit
1431
1431
thread 'main' panicked at 'Please type a number!: ParseIntError { kind: InvalidDigit }', src/main.rs:28:47
1432
1432
(スレッド'main'は'数字を入力してください!:ParseIntError { kind: InvalidDigit }', src/libcore/result.rs:785でパニックしました)
1433
1433
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
1434
- (注意 :`RUST_BACKTRACE=1`で走らせるとバックトレースを見れます)
1434
+ (注 :`RUST_BACKTRACE=1`で走らせるとバックトレースを見れます)
1435
1435
```
1436
1436
1437
1437
<!--
@@ -1636,7 +1636,7 @@ ownership, a feature that makes Rust different from other languages. Chapter 5
1636
1636
discusses structs and method syntax, and Chapter 6 explains how enums work.
1637
1637
-->
1638
1638
1639
- このプロジェクトでは実践的な手法を通して 、` let ` 、` match ` 、メソッド、関連関数、外部クレートの使用など、多くの新しいRustの概念に触れることができました 。
1639
+ このプロジェクトではハンズオンを通して 、` let ` 、` match ` 、メソッド、関連関数、外部クレートの使いかたなど、多くの新しいRustの概念に触れました 。
1640
1640
以降の章では、これらの概念についてより詳しく学びます。
1641
1641
第3章では変数、データ型、関数など多くのプログラミング言語が持つ概念を取り上げ、Rustでの使い方を説明します。
1642
1642
第4章ではRustを他の言語とは異なるものに特徴づける、所有権について説明します。
0 commit comments