[ja] apply patch

This commit is contained in:
Shin Kojima
2013-12-25 03:30:48 +09:00
parent 5f305549c5
commit 78e9ea1dc3

View File

@@ -1,426 +1,434 @@
# 1.4 Go開発ツール # 1.4 Go開発ツール
本章ではいくつかの開発ツールをご紹介します。これらはすべて自動化を備えており、fmt機能を自動化します。なぜならこれらはすべてクロスプラットフォームであり、そのためインストール手順といったものはすべて同じものです。 本章ではいくつかの開発ツールをご紹介します。これらはすべて自動化を備えており、fmt機能を自動化します。なぜならこれらはすべてクロスプラットフォームであり、そのためインストール手順といったものはすべて同じものです。
## LiteIDE ## LiteIDE
LiteIDEはGo言語の開発に特化したクロスプラットフォームの軽量統合開発環境(IDE)です。visualfcで書かれています。 LiteIDEはGo言語の開発に特化したクロスプラットフォームの軽量統合開発環境(IDE)です。visualfcで書かれています。
![](images/1.4.liteide.png?raw=true) ![](images/1.4.liteide.png?raw=true)
図1.4 LiteIDEのメイン画面 図1.4 LiteIDEのメイン画面
**LiteIDEの主な特徴** **LiteIDEの主な特徴**
* 主なオペレーティングシステムのサポート * 主なオペレーティングシステムのサポート
* Windows * Windows
* Linux * Linux
* MacOS X * MacOS X
* Goコンパイル環境の管理と切り替え * Goコンパイル環境の管理と切り替え
* 複数のGoコンパイル環境の管理と切り替え * 複数のGoコンパイル環境の管理と切り替え
* Go言語のクロスコンパイルのサポート * Go言語のクロスコンパイルのサポート
* Go標準と同じ項目管理方式 * Go標準と同じ項目管理方式
* GOPATHに基づいたパッケージブラウザ * GOPATHに基づいたパッケージブラウザ
* GOPATHに基づいたコンパイルシステム * GOPATHに基づいたコンパイルシステム
* GOPATHに基づいたドキュメント検索 * GOPATHに基づいたドキュメント検索
* Go言語の編集サポート * Go言語の編集サポート
* クラスブラウザとアウトライン表示 * クラスブラウザとアウトライン表示
* Gocode(コード自動作成ツール)の完全なサポート * Gocode(コード自動作成ツール)の完全なサポート
* Go言語ドキュメントとApi高速検索 * Go言語ドキュメントとApi高速検索
* コード表現情報の表示`F1` * コード表現情報の表示`F1`
* ソースコード定義とジャンプのサポート`F2` * ソースコード定義とジャンプのサポート`F2`
* Gdbブレークポイントとテストサポート * Gdbブレークポイントとテストサポート
* gofmt自動整形のサポート * gofmt自動整形のサポート
* その他の特徴 * その他の特徴
* 多言語メニューのサポート * 多言語メニューのサポート
* 完全にプラガブルな構成 * 完全にプラガブルな構成
* エディタのカラーリングサポート * エディタのカラーリングサポート
* Kateに基づいた文法表示サポート * Kateに基づいた文法表示サポート
* 全文に基づく単語の自動補完 * 全文に基づく単語の自動補完
* キーボードショートカットのバインディングサポート * キーボードショートカットのバインディングサポート
* Markdownドキュメントの編集サポート * Markdownドキュメントの編集サポート
* リアルタイムプレビューと表示の同期 * リアルタイムプレビューと表示の同期
* カスタムCSS表示 * カスタムCSS表示
* HTML及びPDFドキュメントのエクスポート * HTML及びPDFドキュメントのエクスポート
* HTML/PDFドキュメントへの変換とマージ * HTML/PDFドキュメントへの変換とマージ
**LiteIDEインストール設定** **LiteIDEインストール設定**
* LiteIDEインストール * LiteIDEインストール
* ダウンロード <http://code.google.com/p/golangide> * ダウンロード <http://code.google.com/p/golangide>
* ソースコード <https://github.com/visualfc/liteide> * ソースコード <https://github.com/visualfc/liteide>
まずGo言語環境をインストールし、その後オペレーティングシステムにしたがってLiteIDEの対応圧縮ファイルを直接解凍すれば使用できます。 まずGo言語環境をインストールし、その後オペレーティングシステムにしたがってLiteIDEの対応圧縮ファイルを直接解凍すれば使用できます。
* Gocodeのインストール * Gocodeのインストール
Go言語の入力自動補完を起動するにはGocodeをインストールする必要があります Go言語の入力自動補完を起動するにはGocodeをインストールする必要があります
go get -u github.com/nsf/gocode go get -u github.com/nsf/gocode
* コンパイル環境設定 * コンパイル環境設定
自身のシステムの要求にしたがってLiteIDEが現在使用している環境変数を切り替えまたは設定します。 自身のシステムの要求にしたがってLiteIDEが現在使用している環境変数を切り替えまたは設定します。
Windowsオペレーティングシステムの64bitGo言語の場合、 Windowsオペレーティングシステムの64bitGo言語の場合、
ツール欄の環境設定のなかでwin64を選択し、`編集環境`をクリックしてLiteIDEからwin64.envファイルを編集します。 ツール欄の環境設定のなかでwin64を選択し、`編集環境`をクリックしてLiteIDEからwin64.envファイルを編集します。
GOROOT=c:\go GOROOT=c:\go
GOBIN= GOBIN=
GOARCH=amd64 GOARCH=amd64
GOOS=windows GOOS=windows
CGO_ENABLED=1 CGO_ENABLED=1
PATH=%GOBIN%;%GOROOT%\bin;%PATH% PATH=%GOBIN%;%GOROOT%\bin;%PATH%
。。。 。。。
この中の`GOROOT=c:\go`を現在のGoのインストールパスに修正し、保存するだけです。もしMinGW64があれば、`c:\MinGW64\bin`をPATHの中に入れて、goによるgccのコールでCGOコンパイラのサポートを利用することができます。 この中の`GOROOT=c:\go`を現在のGoのインストールパスに修正し、保存するだけです。もしMinGW64があれば、`c:\MinGW64\bin`をPATHの中に入れて、goによるgccのコールでCGOコンパイラのサポートを利用することができます。
Linuxオペレーティングシステムで64bitGo言語の場合、 Linuxオペレーティングシステムで64bitGo言語の場合、
ツール欄の環境設定の中からlinux64を選び、`編集環境`をクリックし、LiteIDEからlinux64.envファイルを編集します。 ツール欄の環境設定の中からlinux64を選び、`編集環境`をクリックし、LiteIDEからlinux64.envファイルを編集します。
GOROOT=$HOME/go GOROOT=$HOME/go
GOBIN= GOBIN=
GOARCH=amd64 GOARCH=amd64
GOOS=linux GOOS=linux
CGO_ENABLED=1 CGO_ENABLED=1
PATH=$GOBIN:$GOROOT/bin:$PATH PATH=$GOBIN:$GOROOT/bin:$PATH
。。。 。。。
この中の`GOROOT=$HOME/go`を現在のGoのインストールパスに修正して保存します。 この中の`GOROOT=$HOME/go`を現在のGoのインストールパスに修正して保存します。
* GOPATH設定 * GOPATH設定
Go言語のツールキーはGOPATH設定を使用します。Go言語開発のプロジェクトのパスリストです。コマンドライン(LiteIDEでは`Ctrl+,`を直接入力できます)で`go help gopath`を入力するとGOPATHドキュメントを素早く確認できます。 Go言語のツールキーはGOPATH設定を使用します。Go言語開発のプロジェクトのパスリストです。コマンドライン(LiteIDEでは`Ctrl+,`を直接入力できます)で`go help gopath`を入力するとGOPATHドキュメントを素早く確認できます。
LiteIDEでは簡単に確認でき、GOPATHを設定することができます。`メニュー-確認-GOPATH`設定を通じて、システム中に存在するGOPATHリストを確認することができます。 LiteIDEでは簡単に確認でき、GOPATHを設定することができます。`メニュー-確認-GOPATH`設定を通じて、システム中に存在するGOPATHリストを確認することができます。
同時に必要な追加項目にそってカスタムのGOPATHリストに追加することができます。 同時に必要な追加項目にそってカスタムのGOPATHリストに追加することができます。
## Sublime Text ## Sublime Text
ここではSublime Text 2以下「Sublime」+GoSublime+gocode+Margoの組み合わせをご紹介します。なぜこの組み合わせなのでしょうか ここではSublime Text 2以下「Sublime」+GoSublime+gocode+Margoの組み合わせをご紹介します。なぜこの組み合わせなのでしょうか
- コード表示の自動化、以下の図の通り - コード表示の自動化、以下の図の通り
![](images/1.4.sublime1.png?raw=true) ![](images/1.4.sublime1.png?raw=true)
図1.5 sublimeコードの自動化画面 図1.5 sublimeコードの自動化画面
- 保存した時にはコードが自動的に整形されています。あなたの書いたコードをより美しくGoの標準に合うよう仕上げてくれます。 - 保存した時にはコードが自動的に整形されています。あなたの書いたコードをより美しくGoの標準に合うよう仕上げてくれます。
- プロジェクト管理のサポート - プロジェクト管理のサポート
![](images/1.4.sublime2.png?raw=true) ![](images/1.4.sublime2.png?raw=true)
図1.6 sublimeプロジェクト管理画面  図1.6 sublimeプロジェクト管理画面 
- 文法のハイライトサポート - 文法のハイライトサポート
- Sublime Text 2はフリーで使用できます。保存回数が一定の量を超えると購入するかのダイアログが現れるので、継続利用をキャンセルするをクリックします。正式登録版とは何の違いもありません。 - Sublime Text 2はフリーで使用できます。保存回数が一定の量を超えると購入するかのダイアログが現れるので、継続利用をキャンセルするをクリックします。正式登録版とは何の違いもありません。
次はどのようにインストールするかご説明します。[Sublime](http://www.sublimetext.com/)ダウンロードします。 次はどのようにインストールするかご説明します。[Sublime](http://www.sublimetext.com/)ダウンロードします。
自分のシステムに合わせて対応するバージョンをダウンロードし、Sublimeを開きます。Sublimeに詳しくない方はまず[Sublime Text 2 入門とテクニック](http://lucifr.com/139225/sublime-text-2-tricks-and-tips/)の文章を読んでみてください。 自分のシステムに合わせて対応するバージョンをダウンロードし、Sublimeを開きます。Sublimeに詳しくない方はまず[Sublime Text 2 入門とテクニック](http://lucifr.com/139225/sublime-text-2-tricks-and-tips/)の文章を読んでみてください。
1. 開いた後、 Package Controlをインストールします。Ctrl+`でコマンドラインを開き、以下のコードを実行します: 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' 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が正しくインストールされました。 この時Sublimeを再度開き直してください。メニュー欄に一つ項目が増えているのがお分かりいただけるかと思います。これでPackage Controlが正しくインストールされました。
![](images/1.4.sublime3.png?raw=true) ![](images/1.4.sublime3.png?raw=true)
図1.7 sublimeパッケージ管理 図1.7 sublimeパッケージ管理
2. インストールが完了するとSublimeのプラグインをインストールできます。GoSublime, SidebarEnhancementsとGo Buildをインストールする必要があるので、プラグインをインストールしたあとSublimeを再起動させて有効にしてください。Ctrl+Shift+pでPackage Controlを開き、`pcip`を入力します。(これは"Package Control: Install Package"と省略されます)。 2. インストールが完了するとSublimeのプラグインをインストールできます。GoSublime, SidebarEnhancementsとGo Buildをインストールする必要があるので、プラグインをインストールしたあとSublimeを再起動させて有効にしてください。Ctrl+Shift+pでPackage Controlを開き、`pcip`を入力します。(これは"Package Control: Install Package"と省略されます)。
この時、左下のコーナーに現在読み込んでいるパッケージデータが表示されます。完了すると下のような画面になります。 この時、左下のコーナーに現在読み込んでいるパッケージデータが表示されます。完了すると下のような画面になります。
![](images/1.4.sublime4.png?raw=true) ![](images/1.4.sublime4.png?raw=true)
図1.8 sublimeプラグインのインストール画面 図1.8 sublimeプラグインのインストール画面
この時、GoSublimeと入力し、「確認」をクリックするとインストールが始まります。同じようにSidebarEnhancementsとGo Buildにも行います。 この時、GoSublimeと入力し、「確認」をクリックするとインストールが始まります。同じようにSidebarEnhancementsとGo Buildにも行います。
3. インストールが成功したかテストします。Sublimeを開き、main.goを開いて文法がハイライトされているのをご確認ください。`import`を入力してコードの自動表示がされます。`import "fmt"`のあとに`fmt.`を入力すると自動的に関数の候補が現れます。 3. インストールが成功したかテストします。Sublimeを開き、main.goを開いて文法がハイライトされているのをご確認ください。`import`を入力してコードの自動表示がされます。`import "fmt"`のあとに`fmt.`を入力すると自動的に関数の候補が現れます。
もしすでにこのような表示がされる場合は、インストールが成功しており、自動補完が完了しています。 もしすでにこのような表示がされる場合は、インストールが成功しており、自動補完が完了しています。
もしこのような表示がなされない場合、あなたの`$PATH`が正しく設定されていないのかもしれません。ターミナルを開き、gocodeを入力して、正しく実行できるか確認してください。もしダメであれば`$PATH`が正しく設定されていません。 もしこのような表示がなされない場合、あなたの`$PATH`が正しく設定されていないのかもしれません。ターミナルを開き、gocodeを入力して、正しく実行できるか確認してください。もしダメであれば`$PATH`が正しく設定されていません。
4. MacOSではすでに$GOROOT, $GOPATH, $GOBINが設定されていても自動的にはどうすればよいか教えてくれません。
## Vim
Vimはviから発展したテキストエディタです。コード補完、コンパイルまたエラージャンプなど、プログラミングに特化した機能が豊富です。広くプログラマに使用されています。 sublimeにてcommand + 9を押し、envを入力して$PATH, $GOROOT, $GOPATH, $GOBINといった変数を確認します。もしなければ、以下の手順に従ってください
![](images/1.4.vim.png?raw=true) まず下のシンボリックリンクを作成し、Terminalで直接sublimeを起動します
図1.9 VIMエディタのGoの自動補完画面 ln -s /Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl /usr/local/bin/sublime
1. vimハイライト表示の設定
## Vim
cp -r $GOROOT/misc/vim/* ~/.vim/ Vimはviから発展したテキストエディタです。コード補完、コンパイルまたエラージャンプなど、プログラミングに特化した機能が豊富です。広くプログラマに使用されています。
2. ~/.vimrcファイルで文法のハイライト表示を追加します ![](images/1.4.vim.png?raw=true)
filetype plugin indent on 図1.9 VIMエディタのGoの自動補完画面
syntax on
1. vimハイライト表示の設定
3. [Gocode](https://github.com/nsf/gocode/)をインストールします
cp -r $GOROOT/misc/vim/* ~/.vim/
go get -u github.com/nsf/gocode
2. ~/.vimrcファイルで文法のハイライト表示を追加します
gocodeはデフォルトで`$GOBIN`の下にインストールされています。
filetype plugin indent on
4. [Gocode](https://github.com/nsf/gocode/)を設定します。 syntax on
~ cd $GOPATH/src/github.com/nsf/gocode/vim 3. [Gocode](https://github.com/nsf/gocode/)をインストールします
~ ./update.bash
~ gocode set propose-builtins true go get -u github.com/nsf/gocode
propose-builtins true
~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" gocodeはデフォルトで`$GOBIN`の下にインストールされています。
lib-path "/home/border/gocode/pkg/linux_amd64"
~ gocode set 4. [Gocode](https://github.com/nsf/gocode/)を設定します。
propose-builtins true
lib-path "/home/border/gocode/pkg/linux_amd64" ~ cd $GOPATH/src/github.com/nsf/gocode/vim
~ ./update.bash
>gocode setの2つのパラメータの意味を説明します: ~ gocode set propose-builtins true
> propose-builtins true
>propose-builtinsはGoのビルトイン関数を補完するかです。タイプは定数です。デフォルトはfalseで、表示しません。 ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64"
> lib-path "/home/border/gocode/pkg/linux_amd64"
>lib-path:デフォルトで、gocodeは**$GOPATH/pkg/$GOOS_$GOARCH**と**$GOROOT/pkg/$GOOS_$GOARCH**ディレクトリのパッケージを検索するだけです。当然この設定には私達の外側のlibを検索できるようパスを設定することができます。 ~ gocode set
propose-builtins true
lib-path "/home/border/gocode/pkg/linux_amd64"
5. おめでとうございます。インストール完了です。あなたは今から`:e main.go`でGoで開発する面白さを体験することができます。
>gocode setのつのパラメータの意味を説明します
>
## Emacs >propose-builtinsはGoのビルトイン関数を補完するかです。タイプは定数です。デフォルトはfalseで、表示しません。
Emacsは伝説の神器です。彼女はエディタであるだけでなく、統合環境でもあります。または開発環境の集大成と呼んでもよいかもしれません。これらの機能はユーザの身を万能のオペレーティングシステムに置きます。 >
>lib-path:デフォルトで、gocodeは**$GOPATH/pkg/$GOOS_$GOARCH**と**$GOROOT/pkg/$GOOS_$GOARCH**ディレクトリのパッケージを検索するだけです。当然この設定には私達の外側のlibを検索できるようパスを設定することができます。
![](images/1.4.emacs.png?raw=true)
図1.10 EmacsでGoを編集するメイン画面 5. おめでとうございます。インストール完了です。あなたは今から`:e main.go`でGoで開発する面白さを体験することができます。
1. Emacsのハイライト表示設定
## Emacs
cp $GOROOT/misc/emacs/* ~/.emacs.d/ Emacsは伝説の神器です。彼女はエディタであるだけでなく、統合環境でもあります。または開発環境の集大成と呼んでもよいかもしれません。これらの機能はユーザの身を万能のオペレーティングシステムに置きます。
2. [Gocode](https://github.com/nsf/gocode/)をインストール ![](images/1.4.emacs.png?raw=true)
go get -u github.com/nsf/gocode 図1.10 EmacsでGoを編集するメイン画面
gocodeはデフォルトで`$GOBIN`の下にインストールされます。 1. Emacsのハイライト表示設定
3. [Gocode](https://github.com/nsf/gocode/)を設定 cp $GOROOT/misc/emacs/* ~/.emacs.d/
2. [Gocode](https://github.com/nsf/gocode/)をインストール
~ cd $GOPATH/src/github.com/nsf/gocode/emacs
~ cp go-autocomplete.el ~/.emacs.d/ go get -u github.com/nsf/gocode
~ gocode set propose-builtins true
propose-builtins true gocodeはデフォルトで`$GOBIN`の下にインストールされます。
~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" // あなたのパスに置き換えてください。
lib-path "/home/border/gocode/pkg/linux_amd64" 3. [Gocode](https://github.com/nsf/gocode/)を設定
~ gocode set
propose-builtins true
lib-path "/home/border/gocode/pkg/linux_amd64" ~ cd $GOPATH/src/github.com/nsf/gocode/emacs
~ cp go-autocomplete.el ~/.emacs.d/
4. [Auto Completion](http://www.emacswiki.org/emacs/AutoComplete)をインストールする必要があります。 ~ gocode set propose-builtins true
propose-builtins true
AutoCompleteをダウンロードして解凍します ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" // あなたのパスに置き換えてください
lib-path "/home/border/gocode/pkg/linux_amd64"
~ make install DIR=$HOME/.emacs.d/auto-complete ~ gocode set
propose-builtins true
~/.emacsファイルを設定します。 lib-path "/home/border/gocode/pkg/linux_amd64"
;;auto-complete 4. [Auto Completion](http://www.emacswiki.org/emacs/AutoComplete)をインストールする必要があります。
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/ac-dict") AutoCompleteをダウンロードして解凍します。
(ac-config-default)
(local-set-key (kbd "M-/") 'semantic-complete-analyze-inline) ~ make install DIR=$HOME/.emacs.d/auto-complete
(local-set-key "." 'semantic-complete-self-insert)
(local-set-key ">" 'semantic-complete-self-insert) ~/.emacsファイルを設定します。
詳細情報はこちらを参考にしてくださいhttp://www.emacswiki.org/emacs/AutoComplete ;;auto-complete
(require 'auto-complete-config)
5. .emacsを設定します。 (add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/ac-dict")
(ac-config-default)
;; golang mode (local-set-key (kbd "M-/") 'semantic-complete-analyze-inline)
(require 'go-mode-load) (local-set-key "." 'semantic-complete-self-insert)
(require 'go-autocomplete) (local-set-key ">" 'semantic-complete-self-insert)
;; speedbar
;; (speedbar 1) 詳細情報はこちらを参考にしてくださいhttp://www.emacswiki.org/emacs/AutoComplete
(speedbar-add-supported-extension ".go")
(add-hook 5. .emacsを設定します。
'go-mode-hook
'(lambda () ;; golang mode
;; gocode (require 'go-mode-load)
(auto-complete-mode 1) (require 'go-autocomplete)
(setq ac-sources '(ac-source-go)) ;; speedbar
;; Imenu & Speedbar ;; (speedbar 1)
(setq imenu-generic-expression (speedbar-add-supported-extension ".go")
'(("type" "^type *\\([^ \t\n\r\f]*\\)" 1) (add-hook
("func" "^func *\\(.*\\) {" 1))) 'go-mode-hook
(imenu-add-to-menubar "Index") '(lambda ()
;; Outline mode ;; gocode
(make-local-variable 'outline-regexp) (auto-complete-mode 1)
(setq outline-regexp "//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....") (setq ac-sources '(ac-source-go))
(outline-minor-mode 1) ;; Imenu & Speedbar
(local-set-key "\M-a" 'outline-previous-visible-heading) (setq imenu-generic-expression
(local-set-key "\M-e" 'outline-next-visible-heading) '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)
;; Menu bar ("func" "^func *\\(.*\\) {" 1)))
(require 'easymenu) (imenu-add-to-menubar "Index")
(defconst go-hooked-menu ;; Outline mode
'("Go tools" (make-local-variable 'outline-regexp)
["Go run buffer" go t] (setq outline-regexp "//\\.\\|//[^\r\n\f][^\r\n\f]\\|pack\\|func\\|impo\\|cons\\|var.\\|type\\|\t\t*....")
["Go reformat buffer" go-fmt-buffer t] (outline-minor-mode 1)
["Go check buffer" go-fix-buffer t])) (local-set-key "\M-a" 'outline-previous-visible-heading)
(easy-menu-define (local-set-key "\M-e" 'outline-next-visible-heading)
go-added-menu ;; Menu bar
(current-local-map) (require 'easymenu)
"Go tools" (defconst go-hooked-menu
go-hooked-menu) '("Go tools"
["Go run buffer" go t]
;; Other ["Go reformat buffer" go-fmt-buffer t]
(setq show-trailing-whitespace t) ["Go check buffer" go-fix-buffer t]))
)) (easy-menu-define
;; helper function go-added-menu
(defun go () (current-local-map)
"run current buffer" "Go tools"
(interactive) go-hooked-menu)
(compile (concat "go run " (buffer-file-name))))
;; Other
;; helper function (setq show-trailing-whitespace t)
(defun go-fmt-buffer () ))
"run gofmt on current buffer" ;; helper function
(interactive) (defun go ()
(if buffer-read-only "run current buffer"
(progn (interactive)
(ding) (compile (concat "go run " (buffer-file-name))))
(message "Buffer is read only"))
(let ((p (line-number-at-pos)) ;; helper function
(filename (buffer-file-name)) (defun go-fmt-buffer ()
(old-max-mini-window-height max-mini-window-height)) "run gofmt on current buffer"
(show-all) (interactive)
(if (get-buffer "*Go Reformat Errors*") (if buffer-read-only
(progn (progn
(delete-windows-on "*Go Reformat Errors*") (ding)
(kill-buffer "*Go Reformat Errors*"))) (message "Buffer is read only"))
(setq max-mini-window-height 1) (let ((p (line-number-at-pos))
(if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt" "*Go Reformat Output*" nil "*Go Reformat Errors*" t)) (filename (buffer-file-name))
(progn (old-max-mini-window-height max-mini-window-height))
(erase-buffer) (show-all)
(insert-buffer-substring "*Go Reformat Output*") (if (get-buffer "*Go Reformat Errors*")
(goto-char (point-min)) (progn
(forward-line (1- p))) (delete-windows-on "*Go Reformat Errors*")
(with-current-buffer "*Go Reformat Errors*" (kill-buffer "*Go Reformat Errors*")))
(progn (setq max-mini-window-height 1)
(goto-char (point-min)) (if (= 0 (shell-command-on-region (point-min) (point-max) "gofmt" "*Go Reformat Output*" nil "*Go Reformat Errors*" t))
(while (re-search-forward "<standard input>" nil t) (progn
(replace-match filename)) (erase-buffer)
(goto-char (point-min)) (insert-buffer-substring "*Go Reformat Output*")
(compilation-mode)))) (goto-char (point-min))
(setq max-mini-window-height old-max-mini-window-height) (forward-line (1- p)))
(delete-windows-on "*Go Reformat Output*") (with-current-buffer "*Go Reformat Errors*"
(kill-buffer "*Go Reformat Output*")))) (progn
;; helper function (goto-char (point-min))
(defun go-fix-buffer () (while (re-search-forward "<standard input>" nil t)
"run gofix on current buffer" (replace-match filename))
(interactive) (goto-char (point-min))
(show-all) (compilation-mode))))
(shell-command-on-region (point-min) (point-max) "go tool fix -diff")) (setq max-mini-window-height old-max-mini-window-height)
(delete-windows-on "*Go Reformat Output*")
6. おめでとうございます。今からあなたはこの神器を使ってGo開発の楽しみを体験できます。デフォルトのspeedbarは閉じています。もし開く場合は ;; (speedbar 1) の前のコメントを取り去るか、*M-x speedbar*を手動で起動してください。 (kill-buffer "*Go Reformat Output*"))))
;; helper function
## Eclipse (defun go-fix-buffer ()
Eclipseも非常によく使われる開発ツールです。以下ではEclipseを使ってどのようにGoプログラムを編集するかご紹介します。 "run gofix on current buffer"
(interactive)
![](images/1.4.eclipse1.png?raw=true) (show-all)
(shell-command-on-region (point-min) (point-max) "go tool fix -diff"))
図1.11 EclipseでのGo編集のメイン画面
6. おめでとうございます。今からあなたはこの神器を使ってGo開発の楽しみを体験できます。デフォルトのspeedbarは閉じています。もし開く場合は ;; (speedbar 1) の前のコメントを取り去るか、*M-x speedbar*を手動で起動してください。
1. まず[Eclipse](http://www.eclipse.org/)をダウンロードしてインストールします。
## Eclipse
2. [goclipse](https://code.google.com/p/goclipse/)プラグインをダウンロードします。 Eclipseも非常によく使われる開発ツールです。以下ではEclipseを使ってどのようにGoプログラムを編集するかご紹介します。
http://code.google.com/p/goclipse/wiki/InstallationInstructions ![](images/1.4.eclipse1.png?raw=true)
3. gocodeをダウンロードして、goのコード補完を表示させます。 図1.11 EclipseでのGo編集のメイン画面
gocodeのgithubアドレス 1. まず[Eclipse](http://www.eclipse.org/)をダウンロードしてインストールします。
https://github.com/nsf/gocode 2. [goclipse](https://code.google.com/p/goclipse/)プラグインをダウンロードします。
windowsではgitをインストールする必要があります。通常は[msysgit](https://code.google.com/p/msysgit/)を使います。 http://code.google.com/p/goclipse/wiki/InstallationInstructions
cmdでインストールを行います 3. gocodeをダウンロードして、goのコード補完を表示させます
go get -u github.com/nsf/gocode gocodeのgithubアドレス
以下のコードをダウンロードし、直接go buildでコンパイルしてもかまいません。この場合はgocode.exeが生成されます。 https://github.com/nsf/gocode
4. [MinGW](http://sourceforge.net/projects/mingw/files/MinGW/)をダウンロードして要求に従いインストールしてください windowsではgitをインストールする必要があります。通常は[msysgit](https://code.google.com/p/msysgit/)を使います
5. プラグイン設定 cmdでインストールを行います
Windows->Reference->Go go get -u github.com/nsf/gocode
(1).Goのコンパイラを設定します。 以下のコードをダウンロードし、直接go buildでコンパイルしてもかまいません。この場合はgocode.exeが生成されます。
![](images/1.4.eclipse2.png?raw=true) 4. [MinGW](http://sourceforge.net/projects/mingw/files/MinGW/)をダウンロードして要求に従いインストールしてください。
図1.12 Goの基本情報を設定します。 5. プラグイン設定
Windows->Reference->Go
(2).Gocodeを設定しますオプション、コード補完、Gocodeのパスは事前に生成したgocode.exeファイルを設定します。
(1).Goのコンパイラを設定します。
![](images/1.4.eclipse3.png?raw=true)
![](images/1.4.eclipse2.png?raw=true)
図1.13 gocode情報を設定します。
図1.12 Goの基本情報を設定します。
(3).GDBを設定しますオプション、テスト用、GDBのパスはMingGWのインストールディレクトリ下のgdb.exeファイルを設定します。
![](images/1.4.eclipse4.png?raw=true) (2).Gocodeを設定しますオプション、コード補完、Gocodeのパスは事前に生成したgocode.exeファイルを設定します。
図1.14 GDB情報の設定 ![](images/1.4.eclipse3.png?raw=true)
6. テストが成功するか 図1.13 gocode情報を設定します。
goプロジェクトを一つ新規作成して、hello.goを作成します (3).GDBを設定しますオプション、テスト用、GDBのパスはMingGWのインストールディレクトリ下のgdb.exeファイルを設定します
![](images/1.4.eclipse5.png?raw=true) ![](images/1.4.eclipse4.png?raw=true)
図1.15 プロジェクトの新規作成とファイルの編集 図1.14 GDB情報の設定
テストの実行consoleでコマンドを入力する必要があります 6. テストが成功するか
![](images/1.4.eclipse6.png?raw=true) goプロジェクトを一つ新規作成して、hello.goを作成します
図1.16 Goプログラムのテスト ![](images/1.4.eclipse5.png?raw=true)
## IntelliJ IDEA 図1.15 プロジェクトの新規作成とファイルの編集
Javaに親しい読者はideaには不慣れだと思います、ideaはプラグインを通してgo言語のシンタックスハイライト、コード補完およびリビルドをサポートしています。
テストの実行consoleでコマンドを入力する必要があります
1. ideaを先にダウンロードします。ideaはマルチプラットフォームをサポートしていますwin,mac,linux、もしお金があれば正式版を購入します、もし無ければ、コミュニティの無料版を使ってください。Go言語を開発するだけであれば無料版で十分事足ります。
![](images/1.4.eclipse6.png?raw=true)
![](images/1.4.idea1.png?raw=true)
図1.16 Goプログラムのテスト
2. Goプラグインをインストールし、FileメニューのSettingをクリックします。Pluginsを探したら、Browser repoボタンをクリックします。中国国内のユーザはおそらくエラーが出るかもしれませんが、自分で解決してくれよな。
## IntelliJ IDEA
![](images/1.4.idea3.png?raw=true) Javaに親しい読者はideaには不慣れだと思います、ideaはプラグインを通してgo言語のシンタックスハイライト、コード補完およびリビルドをサポートしています。
3. この時いくつものプラグインが見つかります。Golangを検索して、download and installをダブルクリックしてください。golangの行末にDownloadedの表示が現れるのを待って、OKをクリックします。 1. ideaを先にダウンロードします。ideaはマルチプラットフォームをサポートしていますwin,mac,linux、もしお金があれば正式版を購入します、もし無ければ、コミュニティの無料版を使ってください。Go言語を開発するだけであれば無料版で十分事足ります。
![](images/1.4.idea4.png?raw=true) ![](images/1.4.idea1.png?raw=true)
その後Applyをクリックすると、IDEが再起動を要求します 2. Goプラグインをインストールし、FileメニューのSettingをクリックします。Pluginsを探したら、Browser repoボタンをクリックします。中国国内のユーザはおそらくエラーが出るかもしれませんが、自分で解決してくれよな
4. 再起動が完了し、新規プロジェクトを作成すると、golangプロジェクトが作成可能であることがお分かりいただけるかとおもいます ![](images/1.4.idea3.png?raw=true)
![](images/1.4.idea5.png?raw=true) 3. この時いくつものプラグインが見つかります。Golangを検索して、download and installをダブルクリックしてください。golangの行末にDownloadedの表示が現れるのを待って、OKをクリックします。
次に、go sdkの場所を入力するよう促されるかもしれません。普段はいつもC:\Goにインストールされています。Linuxとmacは自分のインストールディレクトリの設定にしたがって、ディレクトリを選択すれば大丈夫です。 ![](images/1.4.idea4.png?raw=true)
## links その後Applyをクリックすると、IDEが再起動を要求します。
* [目次](<preface.md>)
* 前へ: [Goのコマンド](<01.3.md>) 4. 再起動が完了し、新規プロジェクトを作成すると、golangプロジェクトが作成可能であることがお分かりいただけるかとおもいます
* 次へ: [概要](<01.5.md>)
![](images/1.4.idea5.png?raw=true)
次に、go sdkの場所を入力するよう促されるかもしれません。普段はいつもC:\Goにインストールされています。Linuxとmacは自分のインストールディレクトリの設定にしたがって、ディレクトリを選択すれば大丈夫です。
## links
* [目次](<preface.md>)
* 前へ: [Goのコマンド](<01.3.md>)
* 次へ: [概要](<01.5.md>)