この広告は、90日以上更新していないブログに表示しています。
そういやまだ新しい経験だから覚えてるし、golang を勉強していった過程を書いておく。
正しさとかは気にせず、動くものが出来るまでがむしゃらに。
特にひねりはない。 homebrew は便利だ。
$ brew install go$ cd ~$ mkdir -p go/src/hello_world$ export GOPATH=${HOME}/go$ cd go/src/hello_world$ cat main.gopackage mainimport "fmt"func main() { fmt.Println("hello, world")}$ go run main.gohello, world手軽。
http://golang.org/pkg/ に組み込みパッケージの一覧があるので参照する。だいたいここ見ればどういう引数を与えるべきかがわかる。
まずもってgolang のことを知らないので見てもさっぱりわからない。苦痛。なのでhttp://tour.golang.org/ をやる。
なるほど〜。こんな感じなのか〜。わかんね〜。http://golang.org/doc/code.html を読む。正直いきなり REPL っぽいことさせられるよりわかりやすい。ああ、こういうディレクトリ構成が普通なのね、とかすんなりわかる。
さっきの "fmt" とかは fmt パッケージなのか、とかもこの辺でやっとわかってくる。まだこの辺では import はおまじない状態だ。 package main の意味もよくわかってない。
GOPATH の中に引きこもるのが嫌すぎるのでどっかべつのとこでやりたい。
go/pkg/ ... のパスから package を探すようなので、src から外れても実は問題なくコードは書ける。問題はパッケージの import だけで、外部のライブラリを使う分には gondler で解決出来る。では自作のローカルパッケージをどうするかになる。
たとえば以下の様な構成の場合。
この時、main.go からmylib パッケージを使いたい。
import "./mylib" で解決した。なんてことはない。相対パスかけばいいだけだった。
外部ライブラリは gondler で、ローカルパッケージは相対パスで食わせればオッケーとおぼえておくと人生が楽になる。
自分の Github に上がっているような、別リポジトリの場合は gondler に任せるのがよい。 gondler の使い方は次。
$ gem install gondler
もしくは
$ cat Gemfilegroup :development do gem 'gondler'end$ bundle install$ bundle exec gondler
のように使う。 Gemfile でバージョンを固定しておくと各メンバーの gondler のバージョンを固定出来てよい。 gondler はまだ 0.x.x なので固定しておかないと非互換な変更が入る可能性があることを考慮しておくとよい。
あとは Gomfile を書くだけ。
$ cat Gomfilepackage 'github.com/golang/glog'
難しさは特にないと思うがどうか。
なんとなくいろいろ書ける気がしてくる。普通の executable なものを作る分にはこれで大抵問題なくなる。
revel とか使うともっと制限がかかって大変だけど、使う人は頑張って欲しい。僕は revel 使うのだるすぎるし結局省力化されてない気がしたのと、別にgolang ででかい Web アプリ書きたくなかったという大前提に直面して使うのやめた。
読んだりしたコードは多分そこそこあるんだけど、Github の Explore で go の Trending Repos とか読むのがよい。 vegeta あたりは小さくて読んでてためになる。
チャネルの使い方とか難しいから、自分で書きつつ人のコード見て使い所検討するのがよい。僕は未だに慣れてない。
外部パッケージは大抵 godoc.org でドキュメント化出来るようにコメント書いてある。コメントなくても引数名と型で大抵のことはなんとなくわかる。より詳細を知りたければコードを読むしかないが、これはRuby の世界もそんなもんだし、結局コード読むからまあいい。許した。
Dash で go の package とかはローカルに落としておけるので使うのがおすすめ。ドキュメントは何度も読み返すことになる。いつもおもうけどこのへんの暗記ゲーだけなくなってほしい。僕は暗記苦手だから多分コード書いてる時間で一番 Dash を開いてる。
Dash 使ってない人は普通にブラウザから読むといいと思うけど、Dash の方が便利だと思う。理由はこれ。

Functions とかが出るのが便利。あと HUD モードで Global shortcut 設定しておくとすぐ呼び出せる。
http://qiita.com/todogzm/items/3c281da10287f7383487 この辺り読むといい。もともと補完に頼らない派の人間なので :Fmt と :Import ぐらいしか使ってない。
:Import の補完候補には GOPATH 以下にある pkg も対象になるけど、 gondler だとこの辺がサポートできてないので、ちょっと考えないといけない。
あと触れてないのなんだろ、楽なテスト手法とかかな。僕は testing しか使ってないからわからない。"testing/quick" とかもあるけど、あれあんまクイックになってないと思う。 gocode とかで補完されると便利なのかもしれない。
結構世の中にはgolang の勉強会があるようで、そういうところで発表された資料とかも転がってる。あとはよく見てる所。
他にも読んでるけど、今思いついたのがこれだけだった。各位すいません。
他にも『ここで詰まってる』とか具体的な話されると答えられることあるかもしれないけど、わかんない。ちなみに現状まで大体2ヶ月くらいだと思う。始めたの9月ごろだったはず。
Quote saved.
Login to quote this blog
Failed to save quote. Please try again later.
You cannot quote because this article is private.