From de56ce79056dedcf29400171663b0806c8007bbe Mon Sep 17 00:00:00 2001 From: Shin Kojima Date: Tue, 21 May 2013 03:09:07 +0900 Subject: [PATCH] [ja] Translate 01.{2,3,4} into Japanese. --- ja/ebook/01.2.md | 162 ++++++++++++++++++ ja/ebook/01.3.md | 115 +++++++++++++ ja/ebook/01.4.md | 428 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 705 insertions(+) create mode 100644 ja/ebook/01.2.md create mode 100644 ja/ebook/01.3.md create mode 100644 ja/ebook/01.4.md diff --git a/ja/ebook/01.2.md b/ja/ebook/01.2.md new file mode 100644 index 00000000..d2fb44ac --- /dev/null +++ b/ja/ebook/01.2.md @@ -0,0 +1,162 @@ +# 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>) diff --git a/ja/ebook/01.3.md b/ja/ebook/01.3.md new file mode 100644 index 00000000..0d6250d0 --- /dev/null +++ b/ja/ebook/01.3.md @@ -0,0 +1,115 @@ +# 1.3 Go コマンド + +## Go コマンド + + Go言語は完全なコマンド操作ツールセットを持つ言語です。コマンドラインで`go`を実行することでそれらを確認することができます: + + ![](images/1.3.go.png?raw=true) + +図1.3 Goコマンドで詳細情報を表示 + + これらのコマンドは我々が普段コードを書いている時に非常に役立つものです。次に普段使用するコマンドを理解していきましょう。 + +## go build + + このコマンドは主にコンパイルテストに用いられます。パッケージのコンパイル作業中、もし必要であれば、同時に関連パッケージもコンパイルすることができます。 + + - もし普通のパッケージであれば、我々が1.2章で書いた`mypath`パッケージのように、`go build`を実行したあと、何のファイルも生成しません。もし`$GOPATH/pkg`の下に対応するファイルを生成する必要があれば、`go install`を実行してください。 + + - もしそれが`main`パッケージであれば、`go build`を実行したあと、カレントディレクトリの下に実行可能ファイルが生成されます。もし`$GOPATH/bin`の下に対応するファイルを生成する必要があれば、`go install`を実行するか、`go build- o パス/a.exe`を実行してください。 + + - もしあるプロジェクトディレクトリに複数のファイルがある場合で、単一のファイルのみコンパイルしたい場合は、`go build`を実行する際にファイル名を追加することができます。例えば`go build a.go`です。`go build`コマンドはデフォルトでカレントディレクトリにある全てのgoファイルをコンパイルしようと試みます。 + + - コンパイル後に出力されるファイル名を指定することもできます。1.2章の`mathapp`アプリケーションでは`go build -o astaxie.exe`と指定できます。デフォルトはpackage名(mainパッケージではない)になるか、ソースファイルのファイル名(mainパッケージ)になります。 + + (注:実際はpackage名は[Go言語の規格](https://golang.org/ref/spec)においてコード中の"package"に続く名前になります。この名前はファイル名と異なっていても構いません。デフォルトで生成される実行可能ファイル名はディレクトリ名。 + + - go buildはディレクトリ内の"\_"または"."ではじまるgoファイルを無視します。 + + - もしあなたのソースコードが異なるオペレーティングシステムに対応する場合は異なる処理が必要となります。ですので異なるオペレーティングシステムの名称にもとづいてファイルを命名することができます。例えば配列を読み込むプログラムがあったとして、異なるオペレーティングシステムに対して以下のようなソースファイルがあるかもしれません。 + + array_linux.go + array_darwin.go + array_windows.go + array_freebsd.go + + `go build`の際、システム名の末尾のファイルから選択的にコンパイルすることができます(linux、darwin、windows、freebsd) + +## go clean + + このコマンドは現在のソースコードパッケージのなかでコンパイラが生成したファイルを取り除く操作を行います。これらのファイルはすなわち: + + _obj/ 旧objectディレクトリ、MakeFilesが作成する。 + _test/ 旧testディレクトリ,Makefilesが作成する。 + _testmain.go 旧gotestファイル,Makefilesが作成する。 + test.out 旧testログ,Makefilesが作成する。 + build.out 旧testログ,Makefilesが作成する。 + *.[568ao] objectファイル,Makefilesが作成する。 + + DIR(.exe) go buildが作成する。 + DIR.test(.exe) go test -cが作成する。 + MAINFILE(.exe) go build MAINFILE.goが作成する。 + + 私は基本的にこのコマンドを使ってコンパイルファイルを掃除します。ローカルでテストを行う場合これらのコンパイルファイルはシステムと関係があるだけで、コードの管理には必要ありません。 + +## go fmt + + 読者にC/C++の経験があればご存知かもしれませんが、コードにK&Rスタイルを選択するかANSIスタイルを選択するかは常に論争となってきました。goでは、コードに標準のスタイルがあります。すでに培われた習慣やその他が原因となって我々は常にANSIスタイルまたはその他のより自分にあったスタイルでコードを書いて来ました。これは他の人がコードを閲覧する際に不必要な負担を与えます。そのためgoはコードのスタイルを強制し(例えば左大括弧はかならず行末に置き、このスタイルに従わなければコンパイルは通りません。整形の時間の節約するため、goツールは`go fmt`コマンドを提供しています。これはあなたのかいたコードを整形するのに役立ちます。あなたの書いたコードは標準のスタイルに修正されますが、我々は普段このコマンドを使いません。なぜなら開発ツールには一般的に保存時に自動的に整形を行ってくれるからです。この機能は実際には低レイヤでは`go fmt`を呼んでいます。この次の章で2つのツールをご紹介しましょう。この2つのツールはどれもファイルを保存する際に`go fmt`機能を自動化させます。 + +>go fmtコマンドの使用では、多くの場合はgofmtを使用しますが、-wオプションが必要になります。さもなければ、整形結果はファイルに書き込まれません。gofmt -w src、ですべての項目を整形することができます。 + +## go get + + このコマンドは動的にリモートコードパッケージを取得するために用いられます。現在BitBucket、GitHub、Google CodeとLaunchpadをサポートしています。このコマンドは内部で実際には2ステップの操作に分かれます:第1ステップはソースコードパッケージのダウンロード、第2ステップは`go install`の実行です。ソースコードパッケージのダウンロードを行うgoツールは異なるドメインにしたがって自動的に異なるコードツールを用います。対応関係は以下の通りです: + + BitBucket (Mercurial Git) + GitHub (Git) + Google Code Project Hosting (Git, Mercurial, Subversion) + Launchpad (Bazaar) + + そのため、`go get`を正常に動作させるためには、あらかじめ適切なソースコード管理ツールがインストールされていると同時にこれらのコマンドがあなたのPATHに入っていなければなりません。実は`go get`はカスタムドメインの機能をサポートしています。具体的な内容は`go help remote`を参照ください。 + +## go install + + このコマンドは実際には内部で2ステップの操作に分かれます。第1ステップはリザルトファイルの生成(実行可能ファイルまたはaパッケージ)、第2ステップはコンパイルし終わった結果を`$GOPATH/pkg`または`$GOPATH/bin`に移動する操作です。 + +## go test + + このコマンドを実行すると、ソースコードディレクトリ以下の`*_test.go`ファイルが自動的にロードされ、テスト用の実行可能ファイルが生成/実行されます。出力される情報は以下のようなものになります + + ok archive/tar 0.011s + FAIL archive/zip 0.022s + ok compress/gzip 0.033s + ... + + デフォルトの状態で、オプションを追加する必要はありません。自動的にあなたのソースコードパッケージ以下のすべてのtestファイルがテストされます。もちろんオプションを追加しても構いません。詳細は`go help testflag`を確認してください。 + +## go doc + + 多くの人がgoはいかなるサードパーティドキュメントも必要としないと言っています。例えばchmマニュアルのように(もっとも私はすでに[chmマニュアル](https://github.com/astaxie/godoc)を作っていますが)、なぜならこの中には非常に協力なドキュメントツールが入っているからです。 + + どのように対応するpackageのドキュメントを確認するのか? + 例えばbuiltinパッケージであれば、`go doc builtin`と実行します。 + もしhttpパッケージであれば、`go doc net/http`と実行してください。 + パッケージの中の関数を確認する場合は`godoc fmt Printf`としてください。 + 対応するコードを確認する場合は、`godoc -src fmt Printf`とします。 + + コマンドラインでコマンドを実行します。 godoc -http=:ポート番号 例えば`godoc -http=:8080`として、ブラウザで`127.0.0.1:8080`を開くと、golang.orgのローカルのcopy版を見ることができます。これを通してpkgドキュメントなどの他の内容を確認することができます。もしあなたがGOPATHを設定されていれば、pkgカテゴリの中で、標準パッケージのドキュメントのみならず、ローカルの`GOPATH`のすべての項目に関連するドキュメントをリストアップすることができます。これはグレートファイアーウォールの中にいるユーザにとっては非常にありがたい選択です。 + +## その他のコマンド + + goは他にも様々なツールを提供しています。例えば以下のツール + + go fix は以前の古いバージョンのコードを新しいバージョンに復元するために使われます。例えばgo1の前の古いバージョンのコードをgo1に移動させます。 + go version はgoの現在のバージョンを確認します。 + go env は現在のgoの環境変数を確認します。 + go list は現在インストールされている全てのpackageをリストアップします。 + go run はGoプログラムのコンパイルと実行を行います。 + +以上これらのツールはまだ多くのオプションがあり、ひとつひとつはご紹介しませんが、ユーザは`go help コマンド`で更に詳しいヘルプ情報を取得することができます。 + + +## links + * [目次]() + * 前へ: [GOPATHとワーキングディレクトリ](<01.2.md>) + * 次へ: [Go開発ツール](<01.4.md>) diff --git a/ja/ebook/01.4.md b/ja/ebook/01.4.md new file mode 100644 index 00000000..2ca9a327 --- /dev/null +++ b/ja/ebook/01.4.md @@ -0,0 +1,428 @@ +# 1.4 Go開発ツール + +本章ではいくつかの開発ツールをご紹介します。これらはすべて自動化を備えており、fmt機能を自動化します。なぜならこれらはすべてクロスプラットフォームであり、そのためインストール手順といったものはすべて同じものです。 + +## LiteIDE + + LiteIDEはGo言語の開発に特化したクロスプラットフォームの軽量統合開発環境(IDE)です。visualfcで書かれています。 + + ![](images/1.4.liteide.png?raw=true) + +図1.4 LiteIDEのメイン画面 + +**LiteIDEの主な特徴:** + +* 主なオペレーティングシステムのサポート + * Windows + * Linux + * MacOS X +* Goコンパイル環境の管理と切り替え + * 複数のGoコンパイル環境の管理と切り替え + * Go言語のクロスコンパイルのサポート +* Go標準と同じ項目管理方式 + * GOPATHに基づいたパッケージブラウザ + * GOPATHに基づいたコンパイルシステム + * GOPATHに基づいたドキュメント検索 +* Go言語の編集サポート + * クラスブラウザとアウトライン表示 + * Gocode(コード自動作成ツール)の完全なサポート + * Go言語ドキュメントとApi高速検索 + * コード表現情報の表示`F1` + * ソースコード定義とジャンプのサポート`F2` + * Gdbブレークポイントとテストサポート + * gofmt自動整形のサポート +* その他の特徴 + * 多言語メニューのサポート + * 完全にプラガブルな構成 + * エディタのカラーリングサポート + * Kateに基づいた文法表示サポート + * 全文に基づく単語の自動補完 + * キーボードショートカットのバインディングサポート + * Markdownドキュメントの編集サポート + * リアルタイムプレビューと表示の同期 + * カスタムCSS表示 + * HTML及びPDFドキュメントのエクスポート + * HTML/PDFドキュメントへの変換とマージ + +**LiteIDEインストール設定** + +* LiteIDEインストール + * ダウンロード + * ソースコード + + まずGo言語環境をインストールし、その後オペレーティングシステムにしたがってLiteIDEの対応圧縮ファイルを直接解凍すれば使用できます。 + +* Gocodeのインストール + + Go言語の入力自動補完を起動するにはGocodeをインストールする必要があります: + + go get -u github.com/nsf/gocode + +* コンパイル環境設定 + + 自身のシステムの要求にしたがってLiteIDEが現在使用している環境変数を切り替えまたは設定します。 + + Windowsオペレーティングシステムの64bitGo言語の場合、 + ツール欄の環境設定のなかでwin64を選択し、`編集環境`をクリックしてLiteIDEからwin64.envファイルを編集します。 + + GOROOT=c:\go + GOBIN= + GOARCH=amd64 + GOOS=windows + CGO_ENABLED=1 + + PATH=%GOBIN%;%GOROOT%\bin;%PATH% + 。。。 + + この中の`GOROOT=c:\go`を現在のGoのインストールパスに修正し、保存するだけです。もしMinGW64があれば、`c:\MinGW64\bin`をPATHの中に入れて、goによるgccのコールでCGOコンパイラのサポートを利用することができます。 + + Linuxオペレーティングシステムで64bitGo言語の場合、 + ツール欄の環境設定の中からlinux64を選び、`編集環境`をクリックし、LiteIDEからlinux64.envファイルを編集します。 + + GOROOT=$HOME/go + GOBIN= + GOARCH=amd64 + GOOS=linux + CGO_ENABLED=1 + + PATH=$GOBIN:$GOROOT/bin:$PATH + 。。。 + + この中の`GOROOT=$HOME/go`を現在のGoのインストールパスに修正して保存します。 + +* GOPATH設定 + + Go语言的工具链使用GOPATH设置,是Go语言开发的项目路径列表,在命令行中输入(在LiteIDE中也可以`Ctrl+,`直接输入)`go help gopath`快速查看GOPATH文档。 + TODO: わからん + Go言語のツールキーはGOPATH設定を使用します。Go言語で開発された項目パスリストです。コマンドライン(LiteIDEでは`Ctrl+,`を直接入力できます)で`go help gopath`を入力するとGOPATHドキュメントを素早く確認します。 + + LiteIDEでは簡単に確認でき、GOPATHを設定することができます。`メニュー-確認-GOPATH`設定を通じて、システム中に存在するGOPATHリストを確認することができます。 + 同時に必要な追加項目にそってカスタムのGOPATHリストに追加することができます。 + +## Sublime Text + + ここではSublime Text 2(以下「Sublime」)+GoSublime+gocode+Margoの組み合わせをご紹介します。なぜこの組み合わせなのでしょうか? + + - コード表示の自動化、以下の図の通り + + ![](images/1.4.sublime1.png?raw=true) + + 図1.5 sublimeコードの自動化画面 + + - 保存した時にはコードが自動的に整形されています。あなたの書いたコードをより美しくGoの標準に合うよう仕上げてくれます。 + - プロジェクト管理のサポート + + ![](images/1.4.sublime2.png?raw=true) + + 図1.6 sublimeプロジェクト管理画面  + + - 文法のハイライトサポート + - Sublime Text 2はフリーで使用できます。保存回数が一定の量を超えると購入するかのダイアログが現れるので、継続利用をキャンセルするをクリックします。正式登録版とは何の違いもありません。 + + +次はどのようにインストールするかご説明します。[Sublime](http://www.sublimetext.com/)ダウンロードします。 + + 自分のシステムに合わせて対応するバージョンをダウンロードし、Sublimeを開きます。Sublimeに詳しくない方はまず[Sublime Text 2 入門とテクニック](http://lucifr.com/139225/sublime-text-2-tricks-and-tips/)の文章を読んでみてください。 + + 1. 開いた後、 Package Controlをインストールします。Ctrl+`でコマンドラインを開き、以下のコードを実行します: + + import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation' + + この時Sublimeを再度開き直してください。メニュー欄に一つ項目が増えているのがお分かりいただけるかと思います。これでPackage Controlが正しくインストールされました。 + + ![](images/1.4.sublime3.png?raw=true) + + 図1.7 sublimeパッケージ管理 + + + 2. インストールが完了するとSublimeのプラグインをインストールできます。GoSublime, SidebarEnhancementsとGo Buildをインストールする必要があるので、プラグインをインストールしたあとSublimeを再起動させて有効にしてください。Ctrl+Shift+pでPackage Controlを開き、`pcip`を入力します。(これは"Package Control: Install Package"と省略されます)。 + + この時、左下のコーナーに現在読み込んでいるパッケージデータが表示されます。完了すると下のような画面になります。 + + ![](images/1.4.sublime4.png?raw=true) + + 図1.8 sublimeプラグインのインストール画面 + + この時、GoSublimeと入力し、「確認」をクリックするとインストールが始まります。同じようにSidebarEnhancementsとGo Buildにも行います。 + + 3. インストールが成功したかテストします。Sublimeを開き、main.goを開いて文法がハイライトされているのをご確認ください。`import`を入力してコードの自動表示がされます。`import "fmt"`のあとに`fmt.`を入力すると自動的に関数の候補が現れます。 + + もしすでにこのような表示がされる場合は、インストールが成功しており、自動補完が完了しています。 + + もしこのような表示がなされない場合、あなたの`$PATH`が正しく設定されていないのかもしれません。ターミナルを開き、gocodeを入力して、正しく実行できるか確認してください。もしダメであれば`$PATH`が正しく設定されていません。 + + +## Vim +Vimはviから発展したテキストエディタです。コード補完、コンパイルまたエラージャンプなど、プログラミングに特化した機能が豊富です。広くプログラマに使用されています。 + +![](images/1.4.vim.png?raw=true) + +図1.9 VIMエディタのGoの自動補完画面 + + 1. vimハイライト表示の設定 + + cp -r $GOROOT/misc/vim/* ~/.vim/ + + 2. ~/.vimrcファイルで文法のハイライト表示を追加します + + filetype plugin indent on + syntax on + + 3. [Gocode](https://github.com/nsf/gocode/)をインストールします + + go get -u github.com/nsf/gocode + + gocodeはデフォルトで`$GOBIN`の下にインストールされています。 + + 4. [Gocode](https://github.com/nsf/gocode/)を設定します。 + + ~ cd $GOPATH/src/github.com/nsf/gocode/vim + ~ ./update.bash + ~ gocode set propose-builtins true + propose-builtins true + ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" + lib-path "/home/border/gocode/pkg/linux_amd64" + ~ gocode set + propose-builtins true + lib-path "/home/border/gocode/pkg/linux_amd64" + + >gocode setの2つのパラメータの意味を説明します: + > + >propose-builtins:はGoのビルトイン関数を補完するかです。タイプは定数です。デフォルトはfalseで、表示しません。 + > + >lib-path:デフォルトで、gocodeは**$GOPATH/pkg/$GOOS_$GOARCH**と**$GOROOT/pkg/$GOOS_$GOARCH**ディレクトリのパッケージを検索するだけです。当然この設定には私達の外側のlibを検索できるようパスを設定することができます。 + + + 5. おめでとうございます。インストール完了です。あなたは今から`:e main.go`でGoで開発する面白さを体験することができます。 + + +## Emacs +Emacsは伝説の神器です。彼女はエディタであるだけでなく、統合環境でもあります。または開発環境の集大成と呼んでもよいかもしれません。これらの機能はユーザの身を万能のオペレーティングシステムに置きます。 + + ![](images/1.4.emacs.png?raw=true) + +図1.10 EmacsでGoを編集するメイン画面 + +1. Emacsのハイライト表示設定 + + cp $GOROOT/misc/emacs/* ~/.emacs.d/ + +2. [Gocode](https://github.com/nsf/gocode/)をインストール + + go get -u github.com/nsf/gocode + + gocodeはデフォルトで`$GOBIN`の下にインストールされます。 + +3. [Gocode](https://github.com/nsf/gocode/)を設定 + + + ~ cd $GOPATH/src/github.com/nsf/gocode/emacs + ~ cp go-autocomplete.el ~/.emacs.d/ + ~ gocode set propose-builtins true + propose-builtins true + ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" // あなたのパスに置き換えてください。 + lib-path "/home/border/gocode/pkg/linux_amd64" + ~ gocode set + propose-builtins true + lib-path "/home/border/gocode/pkg/linux_amd64" + +4. [Auto Completion](http://www.emacswiki.org/emacs/AutoComplete)をインストールする必要があります。 + + AutoCompleteをダウンロードして解凍します。 + + ~ make install DIR=$HOME/.emacs.d/auto-complete + + ~/.emacsファイルを設定します。 + + ;;auto-complete + (require 'auto-complete-config) + (add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/ac-dict") + (ac-config-default) + (local-set-key (kbd "M-/") 'semantic-complete-analyze-inline) + (local-set-key "." 'semantic-complete-self-insert) + (local-set-key ">" 'semantic-complete-self-insert) + + 詳細情報はこちらを参考にしてください:http://www.emacswiki.org/emacs/AutoComplete + +5. .emacsを設定します。 + + ;; golang mode + (require 'go-mode-load) + (require 'go-autocomplete) + ;; speedbar + ;; (speedbar 1) + (speedbar-add-supported-extension ".go") + (add-hook + 'go-mode-hook + '(lambda () + ;; gocode + (auto-complete-mode 1) + (setq ac-sources '(ac-source-go)) + ;; Imenu & Speedbar + (setq imenu-generic-expression + '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1) + ("func" "^func *\\(.*\\) {" 1))) + (imenu-add-to-menubar "Index") + ;; Outline mode + (make-local-variable 'outline-regexp) + (setq outline-regexp "//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....") + (outline-minor-mode 1) + (local-set-key "\M-a" 'outline-previous-visible-heading) + (local-set-key "\M-e" 'outline-next-visible-heading) + ;; Menu bar + (require 'easymenu) + (defconst go-hooked-menu + '("Go tools" + ["Go run buffer" go t] + ["Go reformat buffer" go-fmt-buffer t] + ["Go check buffer" go-fix-buffer t])) + (easy-menu-define + go-added-menu + (current-local-map) + "Go tools" + go-hooked-menu) + + ;; Other + (setq show-trailing-whitespace t) + )) + ;; helper function + (defun go () + "run current buffer" + (interactive) + (compile (concat "go run " (buffer-file-name)))) + + ;; helper function + (defun go-fmt-buffer () + "run gofmt on current buffer" + (interactive) + (if buffer-read-only + (progn + (ding) + (message "Buffer is read only")) + (let ((p (line-number-at-pos)) + (filename (buffer-file-name)) + (old-max-mini-window-height max-mini-window-height)) + (show-all) + (if (get-buffer "*Go Reformat Errors*") + (progn + (delete-windows-on "*Go Reformat Errors*") + (kill-buffer "*Go Reformat Errors*"))) + (setq max-mini-window-height 1) + (if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt" "*Go Reformat Output*" nil "*Go Reformat Errors*" t)) + (progn + (erase-buffer) + (insert-buffer-substring "*Go Reformat Output*") + (goto-char (point-min)) + (forward-line (1- p))) + (with-current-buffer "*Go Reformat Errors*" + (progn + (goto-char (point-min)) + (while (re-search-forward "" nil t) + (replace-match filename)) + (goto-char (point-min)) + (compilation-mode)))) + (setq max-mini-window-height old-max-mini-window-height) + (delete-windows-on "*Go Reformat Output*") + (kill-buffer "*Go Reformat Output*")))) + ;; helper function + (defun go-fix-buffer () + "run gofix on current buffer" + (interactive) + (show-all) + (shell-command-on-region (point-min) (point-max) "go tool fix -diff")) + +6. おめでとうございます。今からあなたはこの神器を使ってGo開発の楽しみを体験できます。デフォルトのspeedbarは閉じています。もし開く場合は ;; (speedbar 1) の前のコメントを取り去るか、*M-x speedbar*を手動で起動してください。 + +## Eclipse +Eclipseも非常によく使われる開発ツールです。以下ではEclipseを使ってどのようにGoプログラムを編集するかご紹介します。 + + ![](images/1.4.eclipse1.png?raw=true) + +図1.11 EclipseでのGo編集のメイン画面 + +1. まず[Eclipse](http://www.eclipse.org/)をダウンロードしてインストールします。 + +2. [goclipse](https://code.google.com/p/goclipse/)プラグインをダウンロードします。 + + http://code.google.com/p/goclipse/wiki/InstallationInstructions + +3. gocodeをダウンロードして、goのコード補完を表示させます。 + + gocodeのgithubアドレス: + + https://github.com/nsf/gocode + + windowsではgitをインストールする必要があります。通常は[msysgit](https://code.google.com/p/msysgit/)を使います。 + + cmdでインストールを行います: + + go get -u github.com/nsf/gocode + + 以下のコードをダウンロードし、直接go buildでコンパイルしてもかまいません。この場合はgocode.exeが生成されます。 + +4. [MinGW](http://sourceforge.net/projects/mingw/files/MinGW/)をダウンロードして要求に従いインストールしてください。 + +5. プラグイン設定 + + Windows->Reference->Go + + (1).Goのコンパイラを設定します。 + + ![](images/1.4.eclipse2.png?raw=true) + + 図1.12 Goの基本情報を設定します。 + + + (2).Gocodeを設定します(オプション、コード補完)、Gocodeのパスは事前に生成したgocode.exeファイルを設定します。 + + ![](images/1.4.eclipse3.png?raw=true) + + 図1.13 gocode情報を設定します。 + + (3).GDBを設定します(オプション、テスト用)、GDBのパスはMingGWのインストールディレクトリ下のgdb.exeファイルを設定します。 + + ![](images/1.4.eclipse4.png?raw=true) + + 図1.14 GDB情報の設定 + +6. テストが成功するか + + goプロジェクトを一つ新規作成して、hello.goを作成します: + + ![](images/1.4.eclipse5.png?raw=true) + + 図1.15 プロジェクトの新規作成とファイルの編集 + + テストの実行(consoleでコマンドを入力する必要があります): + + ![](images/1.4.eclipse6.png?raw=true) + + 図1.16 Goプログラムのテスト + +## IntelliJ IDEA +Javaに親しい読者はideaには不慣れだと思います、ideaはプラグインを通してgo言語のシンタックスハイライト、コード補完およびリビルドをサポートしています。 + +1. ideaを先にダウンロードします。ideaはマルチプラットフォームをサポートしています:win,mac,linux、もしお金があれば正式版を購入します、もし無ければ、コミュニティの無料版を使ってください。Go言語を開発するだけであれば無料版で十分事足ります。 + + ![](images/1.4.idea1.png?raw=true) + +2. Goプラグインをインストールし、FileメニューのSettingをクリックします。Pluginsを探したら、Browser repoボタンをクリックします。中国国内のユーザはおそらくエラーが出るかもしれませんが、自分で解決してくれよな。 + + ![](images/1.4.idea3.png?raw=true) + +3. この時いくつものプラグインが見つかります。Golangを検索して、download and installをダブルクリックしてください。golangの行末にDownloadedの表示が現れるのを待って、OKをクリックします。 + + ![](images/1.4.idea4.png?raw=true) + + その後Applyをクリックすると、IDEが再起動を要求します。 + +4. 再起動が完了し、新規プロジェクトを作成すると、golangプロジェクトが作成可能であることがお分かりいただけるかとおもいます: + + ![](images/1.4.idea5.png?raw=true) + + 次に、go sdkの場所を入力するよう促されるかもしれません。普段はいつもC:\Goにインストールされています。Linuxとmacは自分のインストールディレクトリの設定にしたがって、ディレクトリを選択すれば大丈夫です。 + +## links + * [目次]() + * 次へ: [Go コマンド](<01.3.md>) + * 前へ: [サマリー](<01.5.md>)