Skip to content

Commit d17cec6

Browse files
committed
Merge pull request astaxie#374 from ernix/ja
Translate delta commits into Japanese
2 parents 9cb8050 + 2002a69 commit d17cec6

27 files changed

+203
-84
lines changed

ja/README.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
# "Go Web プログラミング"
2+
この本には現在いくつかのバージョンがあります:
3+
4+
[中国語で読み始める](<https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/preface.md>)
5+
6+
[日本語で読み始める](<https://github.com/astaxie/build-web-application-with-golang/blob/master/ja/ebook/preface.md>)
7+
8+
[English Version](<https://github.com/astaxie/build-web-application-with-golang/blob/master/en/eBook/preface.md>)
9+
210
現在この本はすでに出版されています。もし悪くない内容だと思ったら以下より購入することができます。ご協力に感謝いたします:
311

412
- [chinapub](http://product.china-pub.com/3767290)
@@ -11,16 +19,17 @@
1119
# カンパでサポートする
1220
もし"Go Webプログラミング"を気に入っていただけたのなら、寄付を通じて作者にこの本の続きを更新させるか、もっと面白くてためになるオープンソースアプリケーションの開発をご検討下さい:例えばこの本にパッチをあてたり、もっと面白い章を追加したり、もっともっと凄い内容の次回作を出してみたり、beegoを改修してくれたり、です。
1321

14-
寄付はこちら: [https://me.alipay.com/astaxie](https://me.alipay.com/astaxie)
22+
支付宝扫描捐款: ![](ebook/images/alipay.png)
1523

24+
English Donate:[donate](http://beego.me/donate)
1625

1726
## 連絡方法
1827
ぜひQQ群にどうぞ:259316004 《Go Web编程》专用交流群
1928

20-
掲示板:[http://bbs.mygolang.com](http://bbs.mygolang.com)
29+
掲示板:[http://bbs.go-china.org/](http://bbs.go-china.org/)
2130

2231
## 謝辞
23-
まずGolang-ChinaのQQ群102319854に感謝を申し上げます。彼らはみんな非常に熱心で、特に数名の方には本当に感謝しています。
32+
まずGolang-ChinaのQQ群102319854(すでに満員です)に感謝を申し上げます。2群(384414723)を追加してください。彼らはみんな非常に熱心で、特に数名の方には本当に感謝しています。
2433

2534
- [四月份平民](https://plus.google.com/110445767383269817959) (コードレビュー)
2635
- [Hong Ruiqi](https://github.com/hongruiqi) (コードレビュー)

ja/ebook/01.1.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,16 @@ PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin`
9696

9797
もしgoのUsage情報が現れた場合は、goはすでにインストールされています。もしこのコマンドが存在しないと出てきた場合は、自分のPATH環境変数の中にgoのインストールディレクトリが含まれているか確認してください。
9898

99-
### Windows インストール
99+
### Windows インストール ###
100100

101-
[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.windows-386.msiをダウンロードします。64bitシステムであればgo1.0.3.windows-amd64.msiをダウンロードします。ファイルをダブルクリックして、デフォルトのまま「次へ」をクリックします。この時goはすでにあなたのシステムにインストールされています。デフォルトでインストール後の環境変数には`c:/go/bin`が追加されています。cmdを開いて、`go`と入力します
101+
[Google Code ダウンロードページ][downlink]に接続し、32bit の場合は名前に windows-386 を含む msi パッケージをダウンロードします。64bit であれば名前に windows-amd64 を含むものをダウンロードします。ダウンロード後実行しますが、デフォルトのインストールフォルダである C:\Go\を変更してはいけません。他の場所にインストールしてしまうと、あなたが書いた Go コードが実行できなくなってしまうかもしれません。インストールが終わるとデフォルトで環境変数 Path に Go のインストールフォルダの下にある bin フォルダ `C:\Go\bin\` が追加され、Go のインストールフォルダである `C:\Go\` の値が環境変数 GOROOT に追加されます
102102

103-
macインストール成功の画像で、インストールが成功します。
103+
** インストールが成功しているか確認する **
104+
105+
「ファイル名を指定して実行」に `cmd` を入力することでコマンドラインツールを開きます。プロンプトで`go`と入力することで Usage 情報が確認できるか確かめることができます。`cd %GOROOT%` を入力すると、Go のインストールフォルダに入れるか確認できます。どちらも成功していれば、インストールに成功しています。
106+
107+
インストールに成功していなければ、環境変数 Path と GOROOT の値を確認してください。もし存在しなければアンインストールの上再インストールし、存在していればコンピュータを再起動し、上の手順を再度お試しください。
104108

105-
もしGoのUsage情報が現れたら、Goはすでにインストールされています。もしこのコマンドが存在しないと出た場合は自分のPATH環境変数にGoのインストールディレクトリが含まれるか確認してください。
106109

107110
## サードパーティツールのインストール
108111
### GVM

ja/ebook/01.3.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
array_windows.go
3434
array_freebsd.go
3535

36-
`go build`の際、システム名の末尾のファイルから選択的にコンパイルすることができます(linux、darwin、windows、freebsd
36+
`go build`の際、システム名の末尾のファイルから選択的にコンパイルすることができます(Linux、Darwin、Windows、Freebsd
3737

3838
## go clean
3939

ja/ebook/01.4.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@
166166
"env": { "GOPATH": "$HOME/golang:$GS_GOPATH" }
167167
}
168168

169-
`$GS_GOPATH` は gosublime の仮想的な環境変数です。自動的に`.go`ファイルが存在する `~/go/src` を探し出すことで、 `~/go/` をプロジェクトのパスと推測し、自動的に `GOPATH` を適用します。
169+
`$GS_GOPATH` は gosublime の仮想的な環境変数です。自動的に`.go`ファイルが存在する `~/go/src` を探し出すことで、 `~/go/` をプロジェクトのパスと推測し、自動的に `GOPATH` を適用します。(注意:このような方法ではsublimeにおいてオリジナルのGOPATHを上書きしてしまいます。もしこの設定でエラーが発生した場合は、GOPATHに関連した問題が発生していることになります)
170170

171171
もうひとつは、sublime プロジェクトの保存です。 project_name.sublime-project を修正して項目を追加します
172172

@@ -226,7 +226,7 @@ Vimはviから発展したテキストエディタです。コード補完、コ
226226

227227
5. おめでとうございます。インストール完了です。あなたは今から`:e main.go`でGoで開発する面白さを体験することができます。
228228

229-
より多くのVIM 設定は[リンク](http://monnand.me/p/vim-golang-environment/zhCN/)をご参照ください。
229+
より多くのVIMの設定は[リンク](http://monnand.me/p/vim-golang-environment/zhCN/)をご参照ください。
230230

231231
## Emacs
232232
Emacsは伝説の神器です。彼女はエディタであるだけでなく、統合環境でもあります。または開発環境の集大成と呼んでもよいかもしれません。これらの機能はユーザの身を万能のオペレーティングシステムに置きます。

ja/ebook/02.2.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ Goではbool値の型は`bool`です。値は`true`もしくは`false`です。
103103

104104
>注意しなければならないのは、これらの型の変数間は相互に代入または操作を行うことができないということです。コンパイル時にコンパイラはエラーを発生させます。
105105
>
106-
>下のコードはエラーが発生します。
106+
>下のコードはエラーが発生します。:invalid operation: a + b (mismatched types int8 and int32)
107107
>
108108
>> var a int8
109109
@@ -135,7 +135,7 @@ Goではbool値の型は`bool`です。値は`true`もしくは`false`です。
135135
frenchHello = "Bonjour" // 通常の代入
136136
}
137137

138-
Goの文字列は変更することができません。例えば下のコードはコンパイル時にエラーが発生します。
138+
Goの文字列は変更することができません。例えば下のコードはコンパイル時にエラーが発生します。:cannot assign to s[0]
139139

140140
var s string = "hello"
141141
s[0] = 'c'
@@ -168,7 +168,10 @@ Goでは`+`演算子を使って文字列を連結することができます:
168168
m := `hello
169169
world`
170170

171-
`` ` `` で括られた文字列はRaw文字列です。すなわち、文字列はコード内の形式がそのままプリント時の形式になります。文字列の変更はありません。改行はそのまま出力されます。
171+
`` ` `` で括られた文字列はRaw文字列です。すなわち、文字列はコード内の形式がそのままプリント時の形式になります。文字列の変更はありません。改行はそのまま出力されます。例えばこの例では以下のように出力されます:
172+
173+
hello
174+
world
172175

173176
### エラー型
174177
Goにはビルトインの`error`型があります。専らエラー情報の処理に使用されます。Goの`package`の中にはエラー処理を行う`errors`というパッケージがあります。
@@ -383,7 +386,7 @@ sliceには便利な操作があります
383386
下のコードをご覧ください。`map`の読み込みと代入は`slice`と似ています。`key`を通して操作します。ただ、`slice``index``int`型のみになります。`map`には多くの型があります。`int`でもかまいませんし、`string``==``!=`演算子が定義されている全ての型でもかまいません。
384387

385388
// keyを文字列で宣言します。値はintとなるディクショナリです。この方法は使用される前にmakeで初期化される必要があります。
386-
var numbers map[string] int
389+
var numbers map[string]int
387390
// もうひとつのmapの宣言方法
388391
numbers := make(map[string]int)
389392
numbers["one"] = 1 //代入
@@ -407,7 +410,7 @@ mapを使う段階で注意しなければならないことがいくつかあ
407410
`delete``map`の要素を削除します:
408411

409412
// ディクショナリを初期化します。
410-
rating := map[string]float32 {"C":5, "Go":4.5, "Python":4.5, "C++":2 }
413+
rating := map[string]float32{"C":5, "Go":4.5, "Python":4.5, "C++":2 }
411414
// mapは2つの戻り値があります。2つ目の戻り値では、もしkeyが存在しなければ、okはfalseに、存在すればokはtrueになります。
412415
csharpRating, ok := rating["C#"]
413416
if ok {

ja/ebook/02.3.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 2.3 フローと関数
22
この節ではGoの中のフロー制御と関数操作についてご紹介します。
33
## フロー制御
4-
フロー制御はプログラム言語の中の最も偉大な発明です。なぜならこれがあるだけで、あなたはとても簡単なフローの記述でとても複雑なロジックを表現できるからです。フロー制御は3つの部分から成ります:条件判断、ループ制御及び無条件ジャンプです。
4+
フロー制御はプログラム言語の中の最も偉大な発明です。なぜならこれがあるだけで、あなたはとても簡単なフローの記述でとても複雑なロジックを表現できるからです。Goではフロー制御は3つの部分から成ります:条件判断、ループ制御及び無条件ジャンプです。
55
### if
66
`if`はあらゆるプログラミング言語の中で最もよく見かけるものかもしれません。この文法は大雑把に言えば:もし条件を満足しなければ何々を行い、そうでなければまたもう一つ別のことをやるということです。
77

@@ -468,7 +468,7 @@ Goのコードを書いている時は、importコマンドによってパッケ
468468

469469
fmt.Println("hello world")
470470

471-
上のfmtはGo言語の標準ライブラリです。実はgorootの下にこのモジュールが加えられています。当然Goのインポートは以下のような2つの方法で自分の書いたモジュールを追加することができます:
471+
上のfmtはGo言語の標準ライブラリです。実は`GOROOT`環境変数で指定されたディレクトリの下にこのモジュールが加えられています。当然Goのインポートは以下のような2つの方法で自分の書いたモジュールを追加することができます:
472472

473473
1. 相対パス
474474

ja/ebook/02.5.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ methodはstructの上でしか使用されないのでしょうか?当然違
156156
b.color = c
157157
}
158158

159-
func (bl BoxList) BiggestsColor() Color {
159+
func (bl BoxList) BiggestColor() Color {
160160
v := 0.00
161161
k := Color(WHITE)
162162
for _, b := range bl {
@@ -192,13 +192,13 @@ methodはstructの上でしか使用されないのでしょうか?当然違
192192
fmt.Printf("We have %d boxes in our set\n", len(boxes))
193193
fmt.Println("The volume of the first one is", boxes[0].Volume(), "cm³")
194194
fmt.Println("The color of the last one is",boxes[len(boxes)-1].color.String())
195-
fmt.Println("The biggest one is", boxes.BiggestsColor().String())
195+
fmt.Println("The biggest one is", boxes.BiggestColor().String())
196196

197197
fmt.Println("Let's paint them all black")
198198
boxes.PaintItBlack()
199199
fmt.Println("The color of the second one is", boxes[1].color.String())
200200

201-
fmt.Println("Obviously, now, the biggest one is", boxes.BiggestsColor().String())
201+
fmt.Println("Obviously, now, the biggest one is", boxes.BiggestColor().String())
202202
}
203203

204204
上のコードはconstでいくつかの定数を定義しています。その後カスタム定義型を定義しています。
@@ -209,9 +209,9 @@ methodはstructの上でしか使用されないのでしょうか?当然違
209209

210210
次に上のカスタム定義型をレシーバとしてmethodを定義します。
211211

212-
- Volume()はレシーバをBoxとして定義します。Boxの堆積を返します
212+
- Volume()はレシーバをBoxとして定義します。Boxの体積を返します
213213
- SetColor(c Color)はBoxの色をcに変更します。
214-
- BiggestsColor()はBoxListに定義されており、listの中の体積が最大の色を返します。
214+
- BiggestColor()はBoxListに定義されており、listの中の体積が最大の色を返します。
215215
- PaintItBlack()はBoxListのすべてのBoxの色を全部黒に変更します。
216216
- String()はColorに定義されており、Colorの具体的な色を返します(文字列形式)
217217

ja/ebook/02.6.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ mは3つの型を持つことのできるオブジェクトなので、Men型
142142
mike := Student{Human{"Mike", 25, "222-222-XXX"}, "MIT", 0.00}
143143
paul := Student{Human{"Paul", 26, "111-222-XXX"}, "Harvard", 100}
144144
sam := Employee{Human{"Sam", 36, "444-222-XXX"}, "Golang Inc.", 1000}
145-
Tom := Employee{Human{"Sam", 36, "444-222-XXX"}, "Things Ltd.", 5000}
145+
Tom := Employee{Human{"Tom", 37, "222-444-XXX"}, "Things Ltd.", 5000}
146146

147147
//Men型の変数iを定義します。
148148
var i Men
@@ -354,7 +354,7 @@ sort.Interfaceは実は組み込みフィールドです。sort.Interfaceのす
354354
}
355355

356356
### リフレクション
357-
Goはリフレクションを実装しています。いわゆるリフレクションとは動的な実行時の状態です。私達が一般的に使用しているパッケージはreflectパッケージです。どのようにreflectパッケージを使うかはオフィシャルのドキュメントに詳細な原理が説明されています。[laws of reflection](http://golang.org/doc/articles/laws_of_reflection.html)
357+
Goはリフレクションを実装しています。リフレクションはプログラムの実行時の状態を検査することができます。私達が一般的に使用しているパッケージはreflectパッケージです。どのようにreflectパッケージを使うかはオフィシャルのドキュメントに詳細な原理が説明されています。[laws of reflection](http://golang.org/doc/articles/laws_of_reflection.html)
358358

359359
reflectを使うには3つのステップに分けられます。下で簡単にご説明します:リフレクションは型の値(これらの値はすべて空のインターフェースを実装しています。)。まずこれをreflectオブジェクトに変換する必要があります(reflect.Typeまたはreflect.Valueです。異なる状況によって異なる関数をコールします。)この2つを取得する方法は:
360360

ja/ebook/02.7.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@ goroutineはGoのruntime管理を利用したスレッドコントローラで
3131
say("hello") //現在のGoroutines実行
3232
}
3333

34-
出力
35-
hello
36-
world
37-
hello
38-
world
39-
hello
40-
world
41-
hello
42-
world
43-
hello
34+
// 上のプログラムを実行すると以下のように出力されます
35+
// hello
36+
// world
37+
// hello
38+
// world
39+
// hello
40+
// world
41+
// hello
42+
// world
43+
// hello
4444

4545
goキーワードで非常に簡単にマルチスレッドプログラミングを実現することがお分かりいただけるかと思います。
4646
上の複数のgoroutineは同じプロセスで実行されています。メモリのデータを共有しますが、デザイン上共有を利用して通信を行ったりせず、通信によって共有を行うようにしましょう。
@@ -137,7 +137,7 @@ channelは`<-`演算子を使ってデータを送ったり受けたりします
137137
}
138138
}
139139

140-
`for i := range c`でこのchannelがクローズを明示されるまで連続してchannelの中のデータを読み込むことができます。上のコードでchannelのクローズが明示されているのが確認できるかと思います。生産者はキーワード`close`関数によってchannelを閉じます。channelを閉じた後はいかなるデータも送信することはできません。消費側は`v, ok := <-ch`という式でchannelがすでに閉じられているかテストすることができます。もしokにfalseが返ってきたら、channelはすでにどのようなデータも無く、閉じられているということになります。
140+
`for i := range c`でこのchannelがクローズを明示されるまで連続してchannelの中のデータを読み込むことができます。上のコードでchannelのクローズが明示されているのが確認できるかと思います。生産者は`close`ビルトイン関数によってchannelを閉じます。channelを閉じた後はいかなるデータも送信することはできません。消費側は`v, ok := <-ch`という式でchannelがすでに閉じられているかテストすることができます。もしokにfalseが返ってきたら、channelはすでにどのようなデータも無く、閉じられているということになります。
141141

142142
>生産者の方でchannelが閉じられる事に注意してください。消費側ではありません。これは容易にpanicを引き起こします。
143143

0 commit comments

Comments
 (0)