Skip to content

Commit e3bc424

Browse files
committed
fix: レビュー前半の指摘点修正
1 parent d56a1cc commit e3bc424

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

aio-ja/content/tutorial/toh-pt4.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# サービス
22

3-
ツアー・オブ・ヒーローズ の中で扱っている `HeroesComponent` は、今のところ仮のデータを取得して表示している状態です。
3+
Tour of Heroes の中で扱っている `HeroesComponent` は、今のところ仮のデータを取得して表示している状態です。
44

5-
この章では`HeroesComponent` から無駄を省き、ビュー関連の処理に専念できるよう修正を行います
5+
このチュートリアルのリファクタリング後には`HeroesComponent` は小さくなりビューをサポートすることに専念します
66
これはモックサービスを使用して、ユニットテストをより簡潔にすることにもつながります。
77

88
## なぜサービスが必要なのか?
@@ -12,9 +12,9 @@
1212
コンポーネントはデータの受け渡しに集中し、その他の処理はサービスクラスへ委譲するべきです。
1313

1414
このチュートリアルでは、アプリケーション全体でヒーローを取得できる `HeroService` を作成します。
15-
そのサービスは `new` で生成するのではなく、Angular [*依存性注入*](guide/dependency-injection)`HeroesComponent` のコンストラクタに注入します
15+
そのサービスは `new` で生成するのではなく、Angular による [*依存性の注入*](guide/dependency-injection) `HeroesComponent` コンストラクタに注入します
1616

17-
また、サービスは異なるクラス間で情報を共有する最適な方法です
17+
サービスは、_お互いを知らない_ クラスの間で情報を共有する最適な方法です
1818
このチュートリアル後半でも `MessageService` を作成し、次の2クラスに注入します。
1919

2020
1. `HeroService`: メッセージを送信するため
@@ -28,7 +28,7 @@ Angular CLI を使用して `HeroService` を作成しましょう。
2828
ng generate service hero
2929
</code-example>
3030

31-
このコマンドは `HeroService` のスケルトンファイルを `src/app.hero.service.ts` に生成します。また、生成される `HeroService` クラスを次に記載します
31+
このコマンドは `HeroService` のスケルトンファイルを `src/app.hero.service.ts` に生成します。`HeroService` クラスは次のようになっているはずです
3232

3333
<code-example path="toh-pt4/src/app/hero.service.1.ts" region="new"
3434
title="src/app/hero.service.ts (new service)" linenums="false">
@@ -40,7 +40,7 @@ Angular CLI を使用して `HeroService` を作成しましょう。
4040

4141
`@Injectable()` デコレータは、このサービス自体が依存関係を注入している可能性があることを示しています。
4242
現時点で依存関係があるわけではありませんが、[この後すぐに設定します](#inject-message-service)
43-
依存関係の有無にかかわらず、デコレータを付けておくことは良い心がけです
43+
依存関係の有無にかかわらず、このデコレータを付けておくとよいでしょう
4444

4545
<div class="l-sub-section">
4646

@@ -58,7 +58,7 @@ Angular の [スタイルガイド](guide/styleguide#style-07-04) ではそれ
5858

5959
この章の実装では、引き続き _モックヒーロー_ を使用します。
6060

61-
続いて、`Hero` および `HEROES` をインポートします。
61+
`Hero` および `HEROES` をインポートします。
6262

6363
<code-example path="toh-pt4/src/app/hero.service.ts" region="import-heroes">
6464
</code-example>
@@ -71,15 +71,14 @@ Angular の [スタイルガイド](guide/styleguide#style-07-04) ではそれ
7171
{@a provide}
7272
## `HeroService` の提供
7373

74-
`HeroService` を使用するためには、Angular がそれを `HeroesComponent` へ注入するよりも前に、[手順](#inject)通り _依存性注入システム_ _提供_ する必要があります。
74+
Angularが `HeroesComponent` へ注入する([次に](#inject)おこないます)よりも前に、 _依存性の注入システム_`HeroService` _提供_ する必要があります。
7575

7676
`HeroService`_提供_ する方法はいくつか存在し、`HeroesComponent``AppComponent` または `AppModule` で行うことができます。
7777
また、それぞれの方法にはメリット・デメリットが存在します。
7878

7979
このチュートリアルでは、 `AppModule` 内で提供を行います。
8080

81-
Angular CLI コマンドに `--module=app` オプションを付与することで、提供を自動化できます。
82-
よく利用するオプションなので覚えておくと良いでしょう。
81+
`--module=app` オプションを付与して提供を自動化するようにCLIに伝えるのが一般的な選択です。
8382

8483
<code-example language="sh" class="code-shell">
8584
ng generate service hero --module=app
@@ -121,14 +120,14 @@ _providers_ についてより詳しく知りたい方は [NgModules](guide/ngmo
121120

122121
### `HeroService` の注入
123122

124-
`HeroService` 型の非公開プロパティである `heroService` をコンストラクタに追加しましょう。
123+
`HeroService` 型のプライベートプロパティである `heroService` をコンストラクタに追加しましょう。
125124

126125
<code-example path="toh-pt4/src/app/heroes/heroes.component.ts" region="ctor">
127126
</code-example>
128127

129-
このパラメータは private な `heroService` プロパティとして定義されると同時に、 `HeroService` を注入すべき場所として認識されます。
128+
このパラメータはプライベートな `heroService` プロパティとして定義されると同時に、 `HeroService` を注入すべき場所として認識されます。
130129

131-
Angular が `HeroesComponent` を生成する際、その [依存性注入](guide/dependency-injection) システムは `heroService` パラメータを `HeroService` のシングルトンインスタンスとして設定します。
130+
Angular が `HeroesComponent` を生成する際、[依存性の注入](guide/dependency-injection) システムは `heroService` パラメータを `HeroService` のシングルトンインスタンスとして設定します。
132131

133132
### _getHeroes()_ の追加
134133

@@ -170,20 +169,22 @@ Angular が `HeroesComponent` を生成する際、その [依存性注入](guid
170169
現在のサービスはモックヒーローを返しているのでこれを免れていますが、
171170
リモートサーバーからヒーローデータを取得するにあたり、この処理は _非同期_ ということに気づくでしょう。
172171

173-
`HeroService` はサーバーのレスポンスを待機しなければならないため、`getHeroes()` は即座にヒーローデータを返すことができません。
174-
またその際、ブラウザの処理をブロックしてはならないので、`HeroService.getHeroes()` は何らかの非同期処理を実装する必要があります。
172+
`HeroService` はサーバーのレスポンスを待たなければならず、`getHeroes()` は即座にヒーローデータを返すことができません。
173+
そしてそのサービスが待機している間、ブラウザはブロックされないでしょう。
174+
175+
`HeroService.getHeroes()` は何らかの非同期処理を実装する必要があります。
175176

176177
それには、コールバック関数、`Promise`、または `Observable` を使用することができるでしょう。
177178

178-
この章では、`HeroService.getHeroes()` の返り値として `Observable` を選択します
179+
この章では、`HeroService.getHeroes()` `Observable` を返します
179180
なぜなら、後にヒーローデータの取得で利用する Angular の [`HttpClient.get()`](guide/http) メソッドが `Observable` を返すからです。
180181

181182
### Observable _HeroService_
182183

183-
`Observable`[RxJS ライブラリ](http://reactivex.io/rxjs/) のキークラスです
184+
`Observable`[RxJS ライブラリ](http://reactivex.io/rxjs/) で重要なクラスのひとつです
184185

185186
[HTTP に関する後の章](tutorial/toh-pt6), でも Angular の `HttpClient` メソッドが `Observable` を返すことに触れるでしょう。
186-
この章では、RxJS の `of()` 関数をサーバーから取得したデータに見立てます
187+
この章ではRxJSの `of()` 関数を使ってサーバーからのデータの取得をシミュレートします
187188

188189
`HeroService` を開き、`Observable` および `of``RxJS` からインポートします。
189190

@@ -195,12 +196,11 @@ title="src/app/hero.service.ts (Observable imports)" region="import-observable">
195196

196197
<code-example path="toh-pt4/src/app/hero.service.ts" region="getHeroes-1"></code-example>
197198

198-
`of(HEROES)``Observable<Hero[]>` を返します。
199-
また、`Observable<Hero[]>` はモックヒーローの配列を _ひとつ_ 出力します。
199+
`of(HEROES)`_ひとつの値_、すなわちモックヒーローの配列を出力する `Observable<Hero[]>` を返します。
200200

201201
<div class="l-sub-section">
202202

203-
後に行う [HTTP のチュートリアル](tutorial/toh-pt6) では、`HttpClient.get<Hero[]>()` を呼び出します。この返り値もまた、 HTTPレスポンスの結果からなる `Observable<Hero[]>` であり、同様に _ひとつ_ のヒーローリストを出力します
203+
[HTTP のチュートリアル](tutorial/toh-pt6) では、_ひとつの値_、すなわちHTTPレスポンスボディ由来のヒーローの配列を出力する `Observable<Hero[]>` を同じように返す `HttpClient.get<Hero[]>()` を呼び出します
204204

205205
</div>
206206

0 commit comments

Comments
 (0)