[ja] apply patch

This commit is contained in:
Shin Kojima
2015-03-23 21:04:37 +09:00
parent 1de48a96c3
commit 0e605d5ce9

View File

@@ -1,13 +1,17 @@
# 1.2 GOPATHとワーキングディレクトリ
## GOPATH設定
go コマンドには重要な環境変数があります:$GOPATH<sup>1</sup>
さきほどGoをインストールする際はGOPATH変数を設定する必要があるとご説明しました。Goはバージョン1.1から必ずこの変数を設定するようになっており、Goのインストールディレクトリと同じにはできません。このディレクトリは、GoのソースコードやGoの実行可能ファイル、並びにコンパイル済みのパッケージファイルを保存する為に使用します。そのためこのディレクトリにはつのサブディレクトリが存在しますsrc、bin、pkgです。
*これはGoのインストールディレクトリではありません。以下では筆者のワーキングディレクトリで説明します。ご自身のマシン上のワーキングディレクトリに置き換えてください。*
## GOPATH設定
go コマンドは、ある重要な環境変数に依存しています:$GOPATH<sup>1</sup>
Windowsシステムにおいて環境変数の形式は`%GOPATH%`です。この本の中では主にUnix形式を使用します。Windowsユーザは適時置き換えてください。
*これはGoのインストールディレクトリではありません。以下では筆者のワーキングディレクトリで説明します。もし異なるディレクトリを使用する場合はGOPATHをあなたのワーキングディレクトリに置き換えてください。*
Unix に似た環境であれば大体以下のような設定になります:
```sh
export GOPATH=/home/apple/mygo
export GOPATH=/home/apple/mygo
```
上のディレクトリを新たに作成し、上の一行を`.bashrc`または`.zshrc`もしくは自分の`sh`の設定ファイルに加えます。
@@ -26,28 +30,29 @@ GOPATHは複数のディレクトリを許容します。複数のディレク
以降私はすべての例でmygoを私のgopathディレクトリとします。
## アプリケーションディレクトリ構成
パッケージとディレクトリの作成:$GOPATH/src/mymath/sqrt.goパッケージ名"mymath"
## ソースコードディレクトリ構成
GOPATH内のsrcディレクトリはこれから開発するプログラムにとってメインとなるディレクトリです。全てのソースコードはこのディレクトリに置くことになります。一般的な方法では一つのプロジェクトが一つのディレクトリが割り当てられます、例えば$GOPATH/src/mymath はmymathというアプリケーションパッケージか実行アプリケーションになります。これはpackageがmainかそうでないかによって決定します。mainであれば実行可能アプリケーションで、そうでなければアプリケーションパッケージになります。これに関してはpackageを後ほどご紹介する予定です。
以後私が新規に作成するアプリケーションまたはコードパッケージはsrcディレクトリに新規ディレクトリを作成します。ディレクトリ名はほぼコードパッケージの名前です。当然ネストしたディレクトリもありえます、例えば、srcの下にディレクトリ $GOPATH/src/github.com/astaxie/beedbというようなディレクトリを作成すると、このパッケージのパスは"github.com/astaxie/beedb"になります。パッケージ名は最後のディレクトリであるbeedbです。
以下のコードを実行します。
新しくアプリケーションやソースパッケージを作成するときは、srcディレクトリの中にディレクトリを作るところから始めます。ディレクトリ名は一般的にソースパッケージ名になります。もちろんネストしたディレクトリも可能です。例えばsrcの中に$GOPATH/src/github.com/astaxie/beedbというディレクトリを作ったとすると、このパッケージパスは"github.com/astaxie/beedb"になり、パッケージ名は最後のディレクトリであるbeedbになります。
以下ではmymathを例にどのようにアプリケーションパッケージをコーディングするかご説明します。以下のコードを実行します。
```sh
cd $GOPATH/src
mkdir mymath
cd $GOPATH/src
mkdir mymath
```
sqrt.goというファイルを作成し、内容を以下のようにします。
```go
// $GOPATH/src/mymath/sqrt.goコードは以下の通り
package mymath
// $GOPATH/src/mymath/sqrt.goコードは以下の通り
package mymath
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
```
このように私のアプリケーションパッケージディレクトリとコードが作成されました。注意一般的にpackageの名前とディレクトリ名は一致させるべきです。
@@ -60,49 +65,58 @@ sqrt.goというファイルを作成し、内容を以下のようにします
インストールが終われば、以下のディレクトリに入り
```sh
cd $GOPATH/pkg/${GOOS}_${GOARCH}
//以下のファイルが現れるはずです。
mymath.a
cd $GOPATH/pkg/${GOOS}_${GOARCH}
//以下のファイルが現れるはずです。
mymath.a
```
この.aファイルはアプリケーションパッケージです。ならば我々はどのように実行できるでしょうか
次にアプリケーション・プログラムを作成して実行します。
次にアプリケーション・プログラムを作成してこのアプリケーションパッケージをコールします。
アプリケーションパッケージmathappを作ります。
```sh
cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go
cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go
```
// `$GOPATH/src/mathapp/main.go`コード:
`$GOPATH/src/mathapp/main.go`コード:
```go
package main
package main
import (
"mymath"
"fmt"
)
import (
"mymath"
"fmt"
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
}
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
}
```
どのようにプログラムをコンパイルするのでしょうか?このアプリケーションディレクトリに入り、`go build`を実行すれば、このディレクトリの下にmathappの実行可能ファイルが生成されます。
このパッケージは`main`であることが分かると思います。importにおいてコールするパッケージは`mymath`であり、これが`$GOPATH/src`のパスに対応します。もしネストしたディレクトリであれば、importの中でネストしたディレクトリをインポートします。例えばいくつものGOPATHがあった場合も同じで、Goは自動的に複数の`$GOPATH/src`の中から探し出します。
さて、どのようにプログラムをコンパイルするのでしょうか?このアプリケーションディレクトリに入り、`go build`を実行すれば、このディレクトリの下にmathappの実行可能ファイルが生成されます。
```sh
./mathapp
./mathapp
```
以下のように出力されます。
```sh
Hello, world. Sqrt(2) = 1.414213562373095
Hello, world. Sqrt(2) = 1.414213562373095
```
どのようにアプリケーションをインストールするのでしょうか。このディレクトリに入り、`go install`を実行します。すると、$GOPATH/bin/の下に実行可能ファイルmathappが作成されますので、コマンドラインから以下のように入力することで実行することができます。
mathapp
どのようにアプリケーションをインストールするのでしょうか。このディレクトリに入り、`go install`を実行すると、$GOPATH/bin/の下に実行可能ファイルmathappが作成されます。`$GOPATH/bin`が我々のPATHに追加されていることを思い出して下さい、コマンドラインから以下のように入力することで実行することができます。
```sh
mathapp
```
この場合も以下のように出力されます。
Hello, world. Sqrt(2) = 1.414213562373095
ここではどのように実行可能アプリケーションをコンパイル/インストールし、ディレクトリ構造を設計するかについてご紹介しました。
## リモートパッケージの取得
go言語はリモートパッケージを取得するツール`go get`を持っています。現在go getは多数のオープンソースリポジトリをサポートしていますgithub、googlecode、bitbucket、Launchpad
@@ -156,8 +170,6 @@ go getは以下のような手順を踏みます。まずはじめにソース
上述の構成から明確に判断できるのは、binディレクトリの下にコンパイル後の実行可能ファイルが保存され、pkgの下に関数パッケージが保存され、srcの下にアプリケーションのソースコードが保存されているということです。
- - -
[1] Windowsシステムの環境変数の形式は`%GOPATH%`です。本書では主にUnix形式を使いますので、Windowsユーザは適時自分の環境に置き換えてください。
## links
* [目次](<preface.md>)
* 前へ: [GOのインストール](<01.1.md>)