@@ -13,10 +13,10 @@ explore these ideas in more detail. In this chapter, you’ll practice the
1313fundamentals.
1414-->
1515
16- 実践的なプロジェクトに一緒に取り組むことで 、Rustの世界に飛び込んでみましょう!  ;
16+ ハンズオン形式のプロジェクトに一緒に取り組むことで 、Rustの世界に飛び込んでみましょう!  ;
1717この章ではRustの一般的な概念を、実際のプログラムでの使い方を示しながら紹介します。
18- ` let ` 、` match ` 、メソッド、関連関数、外部クレートの使用などについて学びます !  ;
19- これらについての詳細は後続の章で取り上げますので、この章では基礎部分だけを練習します 。
18+ ` let ` 、` match ` 、メソッド、関連関数、外部クレートの使いかたなどについて学びます !  ;
19+ これらについての詳細は後続の章で取り上げますので、この章では基本的なところを練習します 。
2020
2121<!--
2222We’ll implement a classic beginner programming problem: a guessing game. Here’s
@@ -118,7 +118,7 @@ the next one.
118118> 訳注:ここでのイテレーションは、アジャイルな開発手法で用いられている用語にあたります。
119119>
120120> イテレーションとは開発工程の「一回のサイクル」のことで、サイクルには、設計、実装、テスト、改善(リリース後の振り返り)が含まれます。
121- > アジャイル開発では、イテレーションを数週間の短いスパンで一通り回し、それを繰り返しながら開発を進めていきます 。
121+ > アジャイル開発ではイテレーションを数週間の短いスパンで一通り回し、それを繰り返すことで開発を進めていきます 。
122122>
123123> この章では「実装」→「テスト」のごく短いサイクルを繰り返すことで、プログラムに少しずつ機能を追加していきます。
124124
@@ -142,7 +142,7 @@ allow the player to input a guess. Enter the code in Listing 2-1 into
142142*src/main.rs*.
143143-->
144144
145- 数当てゲームプログラムの最初の部分は、ユーザに入力を求め、その入力を処理し、予期した形式になっていることを確認することになります 。
145+ 数当てゲームプログラムの最初の部分は、ユーザに入力を求め、その入力を処理し、期待した形式(訳注:数値データ)になっていることを確認することです 。
146146手始めに、プレーヤーが予想を入力できるようにしましょう。
147147リスト2-1のコードを* src/main.rs* に入力してください。
148148
@@ -172,8 +172,8 @@ standard library, known as `std`:
172172
173173このコードには多くの情報が詰め込まれています。
174174行ごとに見ていきましょう。
175- ユーザ入力を受け付け、結果を出力するためには、 ` io ` (入/出力 )ライブラリをスコープに入れる必要があります。
176- ` io ` ライブラリは、標準ライブラリ( ` std ` として知られています)に含まれています 。
175+ ユーザ入力を受け付け、結果を出力するためには` io ` (入出力 )ライブラリをスコープに入れる必要があります。
176+ ` io ` ライブラリは、` std ` と呼ばれる標準ライブラリに含まれています 。
177177
178178``` rust,ignore
179179{{#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
185185see everything in it [in the standard library documentation][prelude].
186186-->
187187
188- Rustはデフォルトで、標準ライブラリに定義されているいくつかのアイテム(をセットにしたもの)を 、すべてのプログラムのスコープに取り込みます。
189- このセットは* prelude* (プレリュード)を呼ばれ 、[ 標準ライブラリのドキュメント] [ prelude ] でその中のすべてを見ることができます。
188+ Rustはデフォルトで、標準ライブラリで定義されているアイテムの中のいくつかを 、すべてのプログラムのスコープに取り込みます。
189+ このセットは* prelude* (プレリュード)と呼ばれ 、[ 標準ライブラリのドキュメント] [ prelude ] でその中のすべてを見ることができます。
190190
191191<!--
192192If a type you want to use isn’t in the prelude, you have to bring that type
@@ -196,7 +196,7 @@ user input.
196196-->
197197
198198使いたい型がpreludeにない場合は、その型を` use ` 文で明示的にスコープに入れる必要があります。
199- ` std::io ` ライブラリを` use ` すると、ユーザ入力を受け付ける機能など、 多くの便利な機能が利用できるようになります。
199+ ` std::io ` ライブラリを` use ` すると、ユーザ入力を受け付ける機能など(入出力に関する) 多くの便利な機能が利用できるようになります。
200200
201201[ prelude ] : https://doc.rust-lang.org/std/prelude/index.html
202202
@@ -383,7 +383,7 @@ string’s content.
383383
384384次の` .read_line(&mut guess) ` 行は、標準入力ハンドルの[ ` read_line ` ] [ read_line ] メソッドを呼び出し、ユーザからの入力を得ています。
385385また、` read_line ` の引数として` &mut guess ` を渡し、ユーザ入力をどの文字列に格納するかを指示しています。
386- ` read_line ` メソッドの仕事は、ユーザが標準入力に入力したものを文字列に(その内容を上書きすることなく )追加することですので、文字列を引数として渡しているわけです。
386+ ` read_line ` メソッドの仕事は、ユーザが標準入力に入力したものを文字列に(いまの内容を上書きせずに )追加することですので、文字列を引数として渡しているわけです。
387387引数の文字列は、その内容をメソッドが変更できるように、可変である必要があります。
388388
389389[ 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
419419is this method:
420420-->
421421
422- まだ、このコードの行は終わってませんよ 。
423- これから説明するのはテキスト上は3行目になりますが、まだ一つの論理的な行の一部分です 。
422+ まだ、このコードの行は終わってません 。
423+ これから説明するのはテキスト上は3行目になりますが、まだ一つの論理的な行の一部分に過ぎません 。
424424次の部分はこのメソッドです。
425425
426426``` rust,ignore
@@ -461,7 +461,7 @@ different code based on which variant an enum value is when the conditional is
461461evaluated.
462462-->
463463
464- 前述したように、` read_line ` メソッドは、渡された文字列にユーザが入力したものを入れます 。
464+ 前述したように、` read_line ` メソッドは渡された文字列にユーザが入力したものを入れます 。
465465しかし、同時に値(この場合は[ ` io::Result ` ] [ ioresult ] )も返します。
466466Rustの標準ライブラリには` Result ` という名前の型がいくつかあります。
467467汎用の[ ` 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
519519If you don’t call `expect`, the program will compile, but you’ll get a warning:
520520-->
521521
522- もし` expect ` メソッドを呼び出さなかったら、コンパイルできるものの、警告が出るでしょう 。
522+ もし` expect ` メソッドを呼び出さなかったら、コンパイルはできるものの警告が出るでしょう 。
523523
524524``` console
525525{{#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
540540-->
541541
542542警告を抑制する正しい方法は実際にエラー処理を書くことです。
543- しかし、今回は問題が起きたときにこのプログラムをクラッシュさせたいだけなので 、` expect ` が使えるわけです。
543+ しかし、現時点では問題が起きたときにこのプログラムをクラッシュさせたいだけなので 、` expect ` が使えるわけです。
544544エラーからの回復については第9章で学びます。
545545
546546<!--
@@ -704,16 +704,16 @@ release that will still compile with the code in this chapter. Any version
704704examples use.
705705-->
706706
707- * Cargo.toml* ファイルでは、ヘッダに続くものは全て 、他のセクションが始まるまで続くセクションの一部になります。
707+ * Cargo.toml* ファイルでは、ヘッダに続くものはすべて 、他のセクションが始まるまで続くセクションの一部になります。
708708(訳注:Cargo.tomlファイル内には複数のセクションがあり、各セクションは` [ ] ` で囲まれたヘッダ行から始まります)
709709
710710` [dependecies] ` はプロジェクトが依存する外部クレートと必要とするバージョンをCargoに伝えます。
711711今回は` rand ` クレートを` 0.8.3 ` というセマンティックバージョン指定子で指定します。
712712Cargoは[ セマンティックバージョニング] [ semver ] (* SemVer* と呼ばれることもあります)を理解しており、これはバージョンナンバーを記述するための標準です。
713713` 0.8.3 ` という数字は実際には` ^0.8.3 ` の省略記法で、` 0.8.3 ` 以上` 0.9.0 ` 未満の任意のバージョンを意味します。
714714Cargoはこれらのバージョンを、バージョン` 0.8.3 ` と互換性のある公開APIを持つものとみなします。
715- この仕様により、この章のコードがコンパイルできるような最新のパッチリリースを取得できるようになります 。
716- 0.9.0以降のバージョンは、以下の例で使用しているものと同じAPIであることを保証しません 。
715+ この仕様により、この章のコードが引き続きコンパイルできるようにしつつ、最新のパッチリリースを取得できるようになります 。
716+ 0.9.0以降のバージョンは、以下の例で使用しているものと同じAPIを持つことを保証しません 。
717717
718718[ semver ] : http://semver.org
719719
@@ -847,8 +847,8 @@ directory.
847847Cargoはあなたや他の人があなたのコードをビルドするたびに、同じ生成物をリビルドできるようにするしくみを備えています。
848848Cargoは何も指示されない限り、指定したバージョンの依存のみを使用します。
849849たとえば来週` rand ` クレートのバージョン0.8.4が出て、そのバージョンには重要なバグ修正が含まれていますが、同時にあなたのコードを破壊するリグレッションも含まれているとします。
850- これに対応するため、Rustは` cargo build ` を最初に実行したとき * Cargo.lock* ファイルを作成します。
851- なので、いま * guessing_game* ディレクトリにそれがあります。
850+ これに対応するため、Rustは` cargo build ` を最初に実行したときに * Cargo.lock* ファイルを作成します。
851+ (いまの * guessing_game* ディレクトリにもあるはずです)
852852
853853<!--
854854When you build a project for the first time, Cargo figures out all the
@@ -862,7 +862,7 @@ file.
862862-->
863863
864864プロジェクトを初めてビルドするとき、Cargoは条件に合うすべての依存関係のバージョンを計算し* Cargo.lock* ファイルに書き込みます。
865- 次にプロジェクトをビルドする際は 、Cargoは* Cargo.lock* ファイルが存在することを確認し、バージョンを把握するすべての作業を再度行う代わりに、そこに指定されているバージョンを使います 。
865+ 次にプロジェクトをビルドすると 、Cargoは* Cargo.lock* ファイルが存在することを確認し、バージョンを把握するすべての作業を再び行う代わりに、そこで指定されているバージョンを使います 。
866866これにより再現性のあるビルドを自動的に行えます。
867867言い換えれば、* Cargo.lock* ファイルのおかげで、あなたが明示的にアップグレードするまで、プロジェクトは` 0.8.3 ` を使い続けます。
868868
@@ -906,7 +906,7 @@ this instead:
906906
907907Cargoは` 0.9.0 ` リリースを無視します。
908908またそのとき、* 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* ファイルを以下のように変更する必要があります 。
910910
911911``` toml
912912[dependencies ]
@@ -975,7 +975,7 @@ use those methods. Chapter 10 will cover traits in detail.
975975-->
976976
977977まず` use rand::Ring ` という行を追加します。
978- ` Rng ` トレイトは乱数生成器が実装するメソッドを定義しており 、それらのメソッドを使用するには、このトレイトがスコープ内になければなりません。
978+ ` Rng ` トレイトは乱数生成器が実装すべきメソッドを定義しており 、それらのメソッドを使用するには、このトレイトがスコープ内になければなりません。
979979トレイトについて詳しくは第10章で解説します。
980980
981981<!--
@@ -993,7 +993,7 @@ upper bound, so we need to specify `1..101` to request a number between 1 and
993993-->
994994
995995次に、途中に2行を追加しています。
996- 最初の行では` rand::thread_rng ` 関数を呼び出して、これから使う特定の乱数生成器を取得しています 。
996+ 最初の行では` rand::thread_rng ` 関数を呼び出して、これから使う、ある特定の乱数生成器を取得しています 。
997997なお、この乱数生成器は現在のスレッドに固有で、オペレーティングシステムからシード値を得ています。
998998そして、この乱数生成器の` gen_range ` メソッドを呼び出しています。
999999このメソッドは` use rand::Rng ` 文でスコープに導入した` Rng ` トレイトで定義されています。
@@ -1025,13 +1025,13 @@ as it starts!
10251025
10261026コードに追加した2行目は秘密の数字を表示します。
10271027これはプログラムを開発している間のテストに便利ですが、最終版からは削除する予定です。
1028- プログラムが始まってすぐに答え表示されたらゲームになりませんからね !
1028+ プログラムが始まってすぐに答えが表示されたらゲームになりませんからね !
10291029
10301030<!--
10311031Try running the program a few times:
10321032-->
10331033
1034- 試しに何回かプログラムを走らせてみてください 。
1034+ 試しにプログラムを何回か走らせてみてください 。
10351035
10361036``` console
10371037$ cargo run
@@ -1169,7 +1169,7 @@ expression ends because it has no need to look at the last arm in this scenario.
11691169` match ` 式は` Ordering::Greater ` の値を取得し、各アームのパターンを吟味し始めます。
11701170まず最初のアームのパターンである` Ordering::Less ` を見て、` Ordering::Greater ` の値と` Ordering::Less ` がマッチしないことがわかります。
11711171そのため、このアームのコードは無視して、次のアームに移ります。
1172- 次のアームのパターンは` Ordering::Greater ` で、これは* 見事に * ` Ordering::Greater ` とマッチします !  ;
1172+ 次のアームのパターンは` Ordering::Greater ` で、これは` Ordering::Greater ` と * マッチ * します !  ;
11731173このアームに関連するコードが実行され、画面に` Too big! ` と表示されます。
11741174このシナリオでは最後のアームと照合する必要がないため` match ` 式(の評価)は終了します。
11751175
@@ -1228,7 +1228,7 @@ by adding this line to the `main` function body:
12281228The line is:
12291229-->
12301230
1231- その行とは、
1231+ その行とはこれのことです。
12321232
12331233``` rust,ignore
12341234let 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.
13551355Let’s change that by adding a loop!
13561356-->
13571357
1358- 現在、ゲームの大部分は動作していますが 、まだユーザは1回しか予想できません。
1358+ 現在、ゲームの大半は動作していますが 、まだユーザは1回しか予想できません。
13591359ループを追加して、その部分を変更しましょう!
13601360
13611361<!--
@@ -1431,7 +1431,7 @@ quit
14311431thread 'main' panicked at 'Please type a number!: ParseIntError { kind: InvalidDigit }', src/main.rs:28:47
14321432(スレッド'main'は'数字を入力してください!:ParseIntError { kind: InvalidDigit }', src/libcore/result.rs:785でパニックしました)
14331433note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
1434- (注意 :`RUST_BACKTRACE=1`で走らせるとバックトレースを見れます)
1434+ (注 :`RUST_BACKTRACE=1`で走らせるとバックトレースを見れます)
14351435```
14361436
14371437<!--
@@ -1636,7 +1636,7 @@ ownership, a feature that makes Rust different from other languages. Chapter 5
16361636discusses structs and method syntax, and Chapter 6 explains how enums work.
16371637-->
16381638
1639- このプロジェクトでは実践的な手法を通して 、` let ` 、` match ` 、メソッド、関連関数、外部クレートの使用など、多くの新しいRustの概念に触れることができました 。
1639+ このプロジェクトではハンズオンを通して 、` let ` 、` match ` 、メソッド、関連関数、外部クレートの使いかたなど、多くの新しいRustの概念に触れました 。
16401640以降の章では、これらの概念についてより詳しく学びます。
16411641第3章では変数、データ型、関数など多くのプログラミング言語が持つ概念を取り上げ、Rustでの使い方を説明します。
16421642第4章ではRustを他の言語とは異なるものに特徴づける、所有権について説明します。
0 commit comments