From bafaa12ad8963fd937a41a8b4cc845579d123d91 Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Wed, 25 Dec 2013 03:05:19 +0900 Subject: [PATCH] [ja] apply patch --- ja/ebook/01.1.md | 288 ++++++++++++++++++++--------------------- ja/ebook/01.2.md | 326 ++++++++++++++++++++++++----------------------- 2 files changed, 310 insertions(+), 304 deletions(-) diff --git a/ja/ebook/01.1.md b/ja/ebook/01.1.md index 73a4b4f6..93b6d7f7 100644 --- a/ja/ebook/01.1.md +++ b/ja/ebook/01.1.md @@ -1,142 +1,146 @@ -# 1.1 Goのインストール - -## 3つのインストール方法 -Goにはいくつものインストール方法があります。どれでも好きなのを選んでかまいません。ここでは3つのよくあるインストール方法をご紹介しましょう: - -- ソースコードのインストール:標準的なインストール方法です。Unix系システムをよく使うユーザ、特に開発者にとってはお馴染みの方法です。 -- 標準パッケージのインストール:Goは便利なインストールパッケージを用意しています。Windows, Linux, Macなどのシステムをサポートしています。初心者にはうってつけでしょう。システムのbit数に対応したインストールパッケージをダウンロードして、"Next"をたどるだけでインストールできます。 -- サードパーティツールによるインストール:現在便利なサードパーティパッケージも多くあります。たとえばUbuntuのapt-get、Macのhomebrewなどです。これらのシステムに慣れたユーザにはぴったりのインストール方法です。 - -最後に同じシステムの中で異なるバージョンのGoをインストールする場合は、[GVM](https://github.com/moovweb/gvm)が参考になります。どうすればよいか分からない場合一番うまくできます。 - -## Goソースコードのインストール -Goソースコードの中で、いくつかの部分はPlan 9 CとAT&Tコンパイラを使っています。そのため、もしあなたがソースコードをインストールしたい場合は、Cのコンパイルツールをインストールしておく必要があります。 - -Macシステムでは、Xcodeに適切なコンパイラが含まれています。 - -Unixシステムでは、gccなどのツールをインストールする必要があります。例えばUbuntuシステムではターミナルで`sudo apt-get install gcc libc6-dev`を実行することでコンパイラをインストールすることができます。 - -Windowsシステムでは、MinGWをインストールする必要があります。その後MinGWでgccをインストールして、適切な環境変数を設定します。 - -Goは[Mercurial][hg]を使ってバージョン管理を行います、まずMercurialをインストールしなければ、ダウンロードできません。もしMercurialがインストールされているのであれば、以下のコードを実行します: - -もしGoのインストールディレクトリが`$GO_INSTALL_DIR`だったとすると - - hg clone -u release https://code.google.com/p/go - cd go/src - ./all.bash - -all.bashを実行後"ALL TESTS PASSED"が表示されると、インストール成功です。 - -上記はUnixスタイルのコマンドです、Windowsではインストール方法は似ており、all.batを実行するだけです。コンパイラはMinGWのgccを使います。 - -その後環境変数をいくつか設定します、 - - export GOROOT=$HOME/go - export GOBIN=$GOROOT/bin - export PATH=$PATH:$GOBIN - -下のような画像が現れると、インストール成功です。 - -![](images/1.1.mac.png?raw=true) - -図1.1 ソースコードインストール後Goコマンドを実行するの図 - -もしGoのUsage情報が現れたら、Goはインストールが成功しています:もしこのコマンドが存在しない場合は、自分のPATH環境変数のなかにGoのインストールディレクトリが含まれているか確認してください。 - - -## Go標準パッケージのインストール - -Goはさまざまなプラットホームでインストールパッケージを提供しています、これらのパッケージはデフォルトで以下のディレクトリにインストールします:/usr/local/go(Windowsシステム:c:\Go)。当然これらのインストール場所を変更することもできます、ただし変更後はあなたの環境変数を以下のように設定する必要があります: - - export GOROOT=$HOME/go - export PATH=$PATH:$GOROOT/bin - -### 自分の操作しているシステムが32bitか64bitか判断する方法。 - -Goインストールの次はシステムのbit数の判断ですので、この章では先に自分のシステムの種類を確認しましょう。 - -WindowsシステムのユーザはWin+Rを押してcmdを実行してください。`systeminfo`と入力してエンターキーを押します。少しするとシステムの情報が現れます。"システムの種類"の一行に、"x64-based PC"と表示されていれば、64bitシステムです。もし"X86-based PC"とあれば、32bitシステムです。 - -Macユーザは直接64bit版を使用することをおすすめします。なぜなら、GoがサポートしているMac OS Xのバージョンはすでに32bitプロセッサをサポートしていないからです。 - -LinuxユーザはTerminalで`uname -a`を実行することでシステムの情報を確かめることができます。 - -64bitシステムであれば以下のように表示されます。 - - <ほげほげ> x86_64 x86_64 x86_64 GNU/Linux - //場合によっては以下のようになります。例:ubuntu10.04 - x86_64 GNU/Linux - -32bitシステムの場合は以下のように表示されます。 - - <ほげほげ> i686 i686 i386 GNU/Linux - -### Mac インストール - -[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.darwin-386.pkgをダウンロードします。64bitシステムであればgo1.0.3.darwin-amd64.pkgをダウンロードします。ファイルをダブルクリックし、すべてデフォルトで「次へ」ボタンをクリックします。これでgoはあなたのシステムにインストールされました。デフォルトでPATHの中に適切な`~/go/bin`が追加されています。このとき端末を開き、`go`と入力します。 - -インストール成功の画像があらわれるとインストール成功です。 - -もしgoのUsage情報が現れた場合は、goはすでにインストールされています。もしこのコマンドが存在しないと出てきた場合は、自分のPATH環境変数の中にgoのインストールディレクトリが含まれているか確認してください。 - -### Linux インストール - -[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.linux-386.tar.gzをダウンロードします。64bitシステムであればgo1.0.3.linux-amd64.tar.gzをダウンロードします。 - -今後はGoがインストールされたディレクトリを`$GO_INSTALL_DIR`と仮定します。 - -`tar.gz`をインストールディレクトリに解凍します:`tar zxvf go1.0.3.linux-amd64.tar.gz -C $GO_INSTALL_DIR` - -PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin` - -その後、`go`を実行します。 - -![](images/1.1.linux.png?raw=true) - -図1.2 Linuxシステムでインストールに成功したあとgoを実行して表示される情報 - -もしgoのUsage情報が現れた場合は、goはすでにインストールされています。もしこのコマンドが存在しないと出てきた場合は、自分のPATH環境変数の中にgoのインストールディレクトリが含まれているか確認してください。 - -### Windows インストール - -[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.windows-386.msiをダウンロードします。64bitシステムであればgo1.0.3.windows-amd64.msiをダウンロードします。ファイルをダブルクリックして、デフォルトのまま「次へ」をクリックします。この時goはすでにあなたのシステムにインストールされています。デフォルトでインストール後の環境変数には`c:/go/bin`が追加されています。cmdを開いて、`go`と入力します。 - -macインストール成功の画像で、インストールが成功します。 - -もしGoのUsage情報が現れたら、Goはすでにインストールされています。もしこのコマンドが存在しないと出た場合は自分のPATH環境変数にGoのインストールディレクトリが含まれるか確認してください。 - -## サードパーティツールのインストール -### GVM -gvmはサードパーティが開発したGoのバージョン管理ツールです。rubyのrvmツールに似ています。相当使い勝手がいいです。gvmをインストールするには以下のコマンド実行します: - - bash < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer) - -インストールが完了したあと、goをインストールすることができます: - - gvm install go1.0.3 - gvm use go1.0.3 - -上のコマンドを実行したあと、GOPATH、GOROOTなどの環境変数は自動的に設定されます。これで、直接利用することができます。 - -### apt-get -Ubuntuは現在最も多く利用されているLinuxデスクトップシステムです。`apt-get`コマンドでソフトウェア・パッケージを管理します。下のコマンドでGoをインストールすることができます: - - sudo add-apt-repository ppa:gophers/go - sudo apt-get update - sudo apt-get install golang-stable - -### homebrew -homebrewはMacシステムで現在最も使用されているソフトウェア管理ツールです。現在Goをサポートしており、以下のコマンドでGoを直接インストールすることができます。 - - brew install go - - -## links - * [目次]() - * 前へ: [Goの環境設定](<01.0.md>) - * 次へ: [GOPATHとワーキングディレクトリ](<01.2.md>) - -[downlink]: http://code.google.com/p/go/downloads/list "Goインストールパッケージダウンロード" -[hg]: http://mercurial.selenic.com/downloads/ "Mercurialダウンロード" - +# 1.1 Goのインストール + +## 3つのインストール方法 +Goにはいくつものインストール方法があります。どれでも好きなのを選んでかまいません。ここでは3つのよくあるインストール方法をご紹介しましょう: + +- ソースコードのインストール:標準的なインストール方法です。Unix系システムをよく使うユーザ、特に開発者にとってはお馴染みの方法です。 +- 標準パッケージのインストール:Goは便利なインストールパッケージを用意しています。Windows, Linux, Macなどのシステムをサポートしています。初心者にはうってつけでしょう。システムのbit数に対応したインストールパッケージをダウンロードして、"Next"をたどるだけでインストールできます。 +- サードパーティツールによるインストール:現在便利なサードパーティパッケージも多くあります。たとえばUbuntuのapt-get、Macのhomebrewなどです。これらのシステムに慣れたユーザにはぴったりのインストール方法です。 + +最後に同じシステムの中で異なるバージョンのGoをインストールする場合は、[GVM](https://github.com/moovweb/gvm)が参考になります。どうすればよいか分からない場合一番うまくできます。 + +## Goソースコードのインストール +Goソースコードの中で、いくつかの部分はPlan 9 CとAT&Tコンパイラを使っています。そのため、もしあなたがソースコードをインストールしたい場合は、Cのコンパイルツールをインストールしておく必要があります。 + +Macシステムでは、Xcodeに適切なコンパイラが含まれています。 + +Unixシステムでは、gccなどのツールをインストールする必要があります。例えばUbuntuシステムではターミナルで`sudo apt-get install gcc libc6-dev`を実行することでコンパイラをインストールすることができます。 + +Windowsシステムでは、MinGWをインストールする必要があります。その後MinGWでgccをインストールして、適切な環境変数を設定します。 + +Goは[Mercurial][hg]を使ってバージョン管理を行います、まずMercurialをインストールしなければ、ダウンロードできません。もしMercurialがインストールされているのであれば、以下のコードを実行します: + +もしGoのインストールディレクトリが`$GO_INSTALL_DIR`だったとすると + + hg clone -u release https://code.google.com/p/go + cd go/src + ./all.bash + +all.bashを実行後"ALL TESTS PASSED"が表示されると、インストール成功です。 + +上記はUnixスタイルのコマンドです、Windowsではインストール方法は似ており、all.batを実行するだけです。コンパイラはMinGWのgccを使います。 + +その後環境変数をいくつか設定します、 + + export GOROOT=$HOME/go + export GOBIN=$GOROOT/bin + export PATH=$PATH:$GOBIN + +下のような画像が現れると、インストール成功です。 + +![](images/1.1.mac.png?raw=true) + +図1.1 ソースコードインストール後Goコマンドを実行するの図 + +もしGoのUsage情報が現れたら、Goはインストールが成功しています:もしこのコマンドが存在しない場合は、自分のPATH環境変数のなかにGoのインストールディレクトリが含まれているか確認してください。 + + +## Go標準パッケージのインストール + +Goはさまざまなプラットホームでインストールパッケージを提供しています、これらのパッケージはデフォルトで以下のディレクトリにインストールします:/usr/local/go(Windowsシステム:c:\Go)。当然これらのインストール場所を変更することもできます、ただし変更後はあなたの環境変数を以下のように設定する必要があります: + + export GOROOT=$HOME/go + export PATH=$PATH:$GOROOT/bin + +### 自分の操作しているシステムが32bitか64bitか判断する方法。 + +Goインストールの次はシステムのbit数の判断ですので、この章では先に自分のシステムの種類を確認しましょう。 + +WindowsシステムのユーザはWin+Rを押してcmdを実行してください。`systeminfo`と入力してエンターキーを押します。少しするとシステムの情報が現れます。"システムの種類"の一行に、"x64-based PC"と表示されていれば、64bitシステムです。もし"X86-based PC"とあれば、32bitシステムです。 + +Macユーザは直接64bit版を使用することをおすすめします。なぜなら、GoがサポートしているMac OS Xのバージョンはすでに32bitプロセッサをサポートしていないからです。 + +LinuxユーザはTerminalで`uname -a`を実行することでシステムの情報を確かめることができます。 + +64bitシステムであれば以下のように表示されます。 + + <ほげほげ> x86_64 x86_64 x86_64 GNU/Linux + //場合によっては以下のようになります。例:ubuntu10.04 + x86_64 GNU/Linux + +32bitシステムの場合は以下のように表示されます。 + + <ほげほげ> i686 i686 i386 GNU/Linux + +### Mac インストール + +[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.darwin-386.pkgをダウンロードします。64bitシステムであればgo1.0.3.darwin-amd64.pkgをダウンロードします。ファイルをダブルクリックし、すべてデフォルトで「次へ」ボタンをクリックします。これでgoはあなたのシステムにインストールされました。デフォルトでPATHの中に適切な`~/go/bin`が追加されています。このとき端末を開き、`go`と入力します。 + +インストール成功の画像があらわれるとインストール成功です。 + +もしgoのUsage情報が現れた場合は、goはすでにインストールされています。もしこのコマンドが存在しないと出てきた場合は、自分のPATH環境変数の中にgoのインストールディレクトリが含まれているか確認してください。 + +### Linux インストール + +[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.linux-386.tar.gzをダウンロードします。64bitシステムであればgo1.0.3.linux-amd64.tar.gzをダウンロードします。 + +今後はGoがインストールされたディレクトリを`$GO_INSTALL_DIR`と仮定します。 + +`tar.gz`をインストールディレクトリに解凍します:`tar zxvf go1.0.3.linux-amd64.tar.gz -C $GO_INSTALL_DIR` + +PATHを設定します。`export PATH=$PATH:$GO_INSTALL_DIR/go/bin` + +その後、`go`を実行します。 + +![](images/1.1.linux.png?raw=true) + +図1.2 Linuxシステムでインストールに成功したあとgoを実行して表示される情報 + +もしgoのUsage情報が現れた場合は、goはすでにインストールされています。もしこのコマンドが存在しないと出てきた場合は、自分のPATH環境変数の中にgoのインストールディレクトリが含まれているか確認してください。 + +### Windows インストール + +[ダウンロードURL][downlink]に接続し、32bitシステムはgo1.0.3.windows-386.msiをダウンロードします。64bitシステムであればgo1.0.3.windows-amd64.msiをダウンロードします。ファイルをダブルクリックして、デフォルトのまま「次へ」をクリックします。この時goはすでにあなたのシステムにインストールされています。デフォルトでインストール後の環境変数には`c:/go/bin`が追加されています。cmdを開いて、`go`と入力します。 + +macインストール成功の画像で、インストールが成功します。 + +もしGoのUsage情報が現れたら、Goはすでにインストールされています。もしこのコマンドが存在しないと出た場合は自分のPATH環境変数にGoのインストールディレクトリが含まれるか確認してください。 + +## サードパーティツールのインストール +### GVM +gvmはサードパーティが開発したGoのバージョン管理ツールです。rubyのrvmツールに似ています。相当使い勝手がいいです。gvmをインストールするには以下のコマンド実行します: + + bash < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer) + +インストールが完了したあと、goをインストールすることができます: + + gvm install go1.0.3 + gvm use go1.0.3 + +上のコマンドを実行したあと、GOPATH、GOROOTなどの環境変数は自動的に設定されます。これで、直接利用することができます。 + +### apt-get +Ubuntuは現在最も多く利用されているLinuxデスクトップシステムです。`apt-get`コマンドでソフトウェア・パッケージを管理します。下のコマンドでGoをインストールすることができます、今後のため`git`と`mercurial`もインストールしておくべきでしょう: + + sudo apt-get install python-software-properties + sudo add-apt-repository ppa:gophers/go + sudo apt-get update + sudo apt-get install golang-stable git-core mercurial + +### homebrew +homebrewはMacシステムで現在最も使用されているソフトウェア管理ツールです。現在Goをサポートしており、以下のコマンドでGoを直接インストールすることができます。今後のため`git`と`mercurial`もインストールしておくべきでしょう: + + brew update && brew upgrade + brew install go + brew install git + brew install mercurial + + +## links + * [目次]() + * 前へ: [Goの環境設定](<01.0.md>) + * 次へ: [GOPATHとワーキングディレクトリ](<01.2.md>) + +[downlink]: http://code.google.com/p/go/downloads/list "Goインストールパッケージダウンロード" +[hg]: http://mercurial.selenic.com/downloads/ "Mercurialダウンロード" + diff --git a/ja/ebook/01.2.md b/ja/ebook/01.2.md index 4fc79f5e..84bb2c84 100644 --- a/ja/ebook/01.2.md +++ b/ja/ebook/01.2.md @@ -1,162 +1,164 @@ -# 1.2 GOPATHとワーキングディレクトリ - -## GOPATH設定 - go コマンドには重要な環境変数があります:$GOPATH1 - - *(注:これはGoのインストールディレクトリではありません。以下では筆者のワーキングディレクトリで説明します。ご自身のマシン上のワーキングディレクトリに置き換えてください。)* - - Unix に似た環境であれば大体以下のような設定になります: -```sh - export GOPATH=/home/apple/mygo -``` - Windows では以下のように設定します。新しくGOPATHと呼ばれる環境変数を作成します: -```sh - GOPATH=c:\mygo -``` -GOPATHは複数のディレクトリを許容します。複数のディレクトリがある場合、デリミタに気をつけてください。複数のディレクトリがある場合Windowsはセミコロン、Linuxはコロンを使います。複数のGOPATHがある場合は、デフォルトでgo getの内容が第一ディレクトリとされます。 - - -上の $GOPATH ディレクトリには3つのディレクトリがあります: - -- src にはソースコードを保存します(例えば:.go .c .h .s等) -- pkg にはコンパイル後に生成されるファイル(例えば:.a) -- bin にはコンパイル後に生成される実行可能フィアル(このまま $PATH 変数に加えてもかまいません) - -以降私はすべての例でmygoを私のgopathディレクトリとします。 - -## アプリケーションディレクトリ構成 -パッケージとディレクトリの作成:$GOPATH/src/mymath/sqrt.go(パッケージ名:"mymath") - -以後私が新規に作成するアプリケーションまたはコードパッケージはsrcディレクトリに新規ディレクトリを作成します。ディレクトリ名はほぼコードパッケージの名前です。当然ネストしたディレクトリもありえます、例えば、srcの下にディレクトリ $GOPATH/src/github.com/astaxie/beedbというようなディレクトリを作成すると、このパッケージのパスは"github.com/astaxie/beedb"になります。パッケージ名は最後のディレクトリであるbeedbです。 - -以下のコードを実行します。 -```sh - cd $GOPATH/src - mkdir mymath -``` -sqrt.goというファイルを作成し、内容を以下のようにします。 -```go - // $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 - } -``` -このように私のアプリケーションパッケージディレクトリとコードが作成されました。注意:一般的にpackageの名前とディレクトリ名は一致させるべきです。 - -## コンパイルアプリケーション -上のとおり、我々はすでに自分のアプリケーションパッケージを作成しましたが、どのようにコンパイル/インストールすべきでしょうか?2種類の方法が存在します。 - -1、対応するアプリケーションパッケージディレクトリに入り、`go install`を実行すればインストールできます。 - -2,任意のディレクトリで以下のコード`go install mymath`を実行します。 - -インストールが終われば、以下のディレクトリに入り -```sh - cd $GOPATH/pkg/${GOOS}_${GOARCH} - //以下のファイルが現れるはずです。 - mymath.a -``` -この.aファイルはアプリケーションパッケージです。ならば我々はどのように実行できるでしょうか? - -次にアプリケーション・プログラムを作成して実行します。 - -アプリケーションパッケージmathappを作ります。 -```sh - cd $GOPATH/src - mkdir mathapp - cd mathapp - vim main.go -``` -// `$GOPATH/src/mathapp/main.go`コード: -```go - package main - - import ( - "mymath" - "fmt" - ) - - func main() { - fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2)) - } -``` -どのようにプログラムをコンパイルするのでしょうか?このアプリケーションディレクトリに入り、`go build`を実行すれば、このディレクトリの下にmathappの実行可能ファイルが生成されます。 -```sh - ./mathapp -``` -以下のように出力されます。 -```sh - Hello, world. Sqrt(2) = 1.414213562373095 -``` -どのようにアプリケーションをインストールするのでしょうか。このディレクトリに入り、`go install`を実行します。すると、$GOPATH/bin/の下に実行可能ファイルmathappが作成されますので、コマンドラインから以下のように入力することで実行することができます。 - - mathapp - -この場合も以下のように出力されます。 - - Hello, world. Sqrt(2) = 1.414213562373095 - -## リモートパッケージの取得 - go言語はリモートパッケージを取得するツール`go get`を持っています。現在go getは多数のオープンソースリポジトリをサポートしています(github、googlecode、bitbucket、Launchpad) - - go get github.com/astaxie/beedb - ->go get -u オプションはパッケージの自動更新を行います。また、go get時に自動的に当該のパッケージの依存する他のサードパーティパッケージを取得します。 - -このコマンドでふさわしいコードを取得し、対応するオープンソースプラットホームに対し異なるソースコントロールツールを利用します。例えばgithubではgit、googlecodeではhg。そのためこれらのコードを取得したい場合は、先に対応するソースコードコントロールツールをインストールしておく必要があります。 - -上述の方法で取得したコードはローカルの以下の場所に配置されます。 - - $GOPATH - src - |--github.com - |-astaxie - |-beedb - pkg - |--対応プラットフォーム - |-github.com - |--astaxie - |beedb.a - -go getは以下のような手順を踏みます。まずはじめにソースコードツールでコードをsrcの下にcloneします。その後`go install`を実行します。 - -コードの中でリモートパッケージが使用される場合、単純にローカルのパッケージと同じように頭のimportに対応するパスを添えるだけです。 - - import "github.com/astaxie/beedb" - -## プログラムの全体構成 -上記で作成したローカルのmygoのディレクトリ構造は以下のようになっています。 - - bin/ - mathapp - pkg/ - プラットフォーム名/ 例:darwin_amd64、linux_amd64 - mymath.a - github.com/ - astaxie/ - beedb.a - src/ - mathapp - main.go - mymath/ - sqrt.go - github.com/ - astaxie/ - beedb/ - beedb.go - util.go - -上述の構成から明確に判断できるのは、binディレクトリの下にコンパイル後の実行可能ファイルが保存され、pkgの下に関数パッケージが保存され、srcの下にアプリケーションのソースコードが保存されているということです。 - - - - - -[1] Windowsシステムの環境変数の形式は`%GOPATH%`です。本書では主にUnix形式を使いますので、Windowsユーザは適時自分の環境に置き換えてください。 -## links - * [目次]() - * 前へ: [GOのインストール](<01.1.md>) - * 次へ: [GOのコマンド](<01.3.md>) +# 1.2 GOPATHとワーキングディレクトリ + +## GOPATH設定 + go コマンドには重要な環境変数があります:$GOPATH1 + + *(注:これはGoのインストールディレクトリではありません。以下では筆者のワーキングディレクトリで説明します。ご自身のマシン上のワーキングディレクトリに置き換えてください。)* + + Unix に似た環境であれば大体以下のような設定になります: +```sh + export GOPATH=/home/apple/mygo +``` + 上のディレクトリを新たに作成し、上の一行を`.bashrc`または`.zshrc`もしくは自分の`sh`の設定ファイルに加えます。 + + Windows では以下のように設定します。新しくGOPATHと呼ばれる環境変数を作成します: +```sh + GOPATH=c:\mygo +``` +GOPATHは複数のディレクトリを許容します。複数のディレクトリがある場合、デリミタに気をつけてください。複数のディレクトリがある場合Windowsはセミコロン、Linuxはコロンを使います。複数のGOPATHがある場合は、デフォルトでgo getの内容が第一ディレクトリとされます。 + + +上の $GOPATH ディレクトリには3つのディレクトリがあります: + +- src にはソースコードを保存します(例えば:.go .c .h .s等) +- pkg にはコンパイル後に生成されるファイル(例えば:.a) +- bin にはコンパイル後に生成される実行可能フィアル(このまま $PATH 変数に加えてもかまいません) + +以降私はすべての例でmygoを私のgopathディレクトリとします。 + +## アプリケーションディレクトリ構成 +パッケージとディレクトリの作成:$GOPATH/src/mymath/sqrt.go(パッケージ名:"mymath") + +以後私が新規に作成するアプリケーションまたはコードパッケージはsrcディレクトリに新規ディレクトリを作成します。ディレクトリ名はほぼコードパッケージの名前です。当然ネストしたディレクトリもありえます、例えば、srcの下にディレクトリ $GOPATH/src/github.com/astaxie/beedbというようなディレクトリを作成すると、このパッケージのパスは"github.com/astaxie/beedb"になります。パッケージ名は最後のディレクトリであるbeedbです。 + +以下のコードを実行します。 +```sh + cd $GOPATH/src + mkdir mymath +``` +sqrt.goというファイルを作成し、内容を以下のようにします。 +```go + // $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 + } +``` +このように私のアプリケーションパッケージディレクトリとコードが作成されました。注意:一般的にpackageの名前とディレクトリ名は一致させるべきです。 + +## コンパイルアプリケーション +上のとおり、我々はすでに自分のアプリケーションパッケージを作成しましたが、どのようにコンパイル/インストールすべきでしょうか?2種類の方法が存在します。 + +1、対応するアプリケーションパッケージディレクトリに入り、`go install`を実行すればインストールできます。 + +2,任意のディレクトリで以下のコード`go install mymath`を実行します。 + +インストールが終われば、以下のディレクトリに入り +```sh + cd $GOPATH/pkg/${GOOS}_${GOARCH} + //以下のファイルが現れるはずです。 + mymath.a +``` +この.aファイルはアプリケーションパッケージです。ならば我々はどのように実行できるでしょうか? + +次にアプリケーション・プログラムを作成して実行します。 + +アプリケーションパッケージmathappを作ります。 +```sh + cd $GOPATH/src + mkdir mathapp + cd mathapp + vim main.go +``` +// `$GOPATH/src/mathapp/main.go`コード: +```go + package main + + import ( + "mymath" + "fmt" + ) + + func main() { + fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2)) + } +``` +どのようにプログラムをコンパイルするのでしょうか?このアプリケーションディレクトリに入り、`go build`を実行すれば、このディレクトリの下にmathappの実行可能ファイルが生成されます。 +```sh + ./mathapp +``` +以下のように出力されます。 +```sh + Hello, world. Sqrt(2) = 1.414213562373095 +``` +どのようにアプリケーションをインストールするのでしょうか。このディレクトリに入り、`go install`を実行します。すると、$GOPATH/bin/の下に実行可能ファイルmathappが作成されますので、コマンドラインから以下のように入力することで実行することができます。 + + mathapp + +この場合も以下のように出力されます。 + + Hello, world. Sqrt(2) = 1.414213562373095 + +## リモートパッケージの取得 + go言語はリモートパッケージを取得するツール`go get`を持っています。現在go getは多数のオープンソースリポジトリをサポートしています(github、googlecode、bitbucket、Launchpad) + + go get github.com/astaxie/beedb + +>go get -u オプションはパッケージの自動更新を行います。また、go get時に自動的に当該のパッケージの依存する他のサードパーティパッケージを取得します。 + +このコマンドでふさわしいコードを取得し、対応するオープンソースプラットホームに対し異なるソースコントロールツールを利用します。例えばgithubではgit、googlecodeではhg。そのためこれらのコードを取得したい場合は、先に対応するソースコードコントロールツールをインストールしておく必要があります。 + +上述の方法で取得したコードはローカルの以下の場所に配置されます。 + + $GOPATH + src + |--github.com + |-astaxie + |-beedb + pkg + |--対応プラットフォーム + |-github.com + |--astaxie + |beedb.a + +go getは以下のような手順を踏みます。まずはじめにソースコードツールでコードをsrcの下にcloneします。その後`go install`を実行します。 + +コードの中でリモートパッケージが使用される場合、単純にローカルのパッケージと同じように頭のimportに対応するパスを添えるだけです。 + + import "github.com/astaxie/beedb" + +## プログラムの全体構成 +上記で作成したローカルのmygoのディレクトリ構造は以下のようになっています。 + + bin/ + mathapp + pkg/ + プラットフォーム名/ 例:darwin_amd64、linux_amd64 + mymath.a + github.com/ + astaxie/ + beedb.a + src/ + mathapp + main.go + mymath/ + sqrt.go + github.com/ + astaxie/ + beedb/ + beedb.go + util.go + +上述の構成から明確に判断できるのは、binディレクトリの下にコンパイル後の実行可能ファイルが保存され、pkgの下に関数パッケージが保存され、srcの下にアプリケーションのソースコードが保存されているということです。 + + - - - +[1] Windowsシステムの環境変数の形式は`%GOPATH%`です。本書では主にUnix形式を使いますので、Windowsユーザは適時自分の環境に置き換えてください。 +## links + * [目次]() + * 前へ: [GOのインストール](<01.1.md>) + * 次へ: [GOのコマンド](<01.3.md>)