あと3分でGolangの環境が欲しい
そういうこと、よくありますよね。
はい、ではこちらにあらかじめ茹でておいた CentOS 6.5の環境があります。
$ cat /etc/redhat-release
CentOS release 6.5 (Final)
0:00 Golangのインストール
$ cd /usr/local/src
$ wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz
$ tar -C /usr/local -xzf go1.4.2.linux-amd64.tar.gz
0:29 ~/.bashrcにGOPATHを追記
$ vim ~/.bashrc
~/.bashrc
export GOPATH=/usr/local/go/
export PATH=$PATH:/usr/local/go/bin
$ source ~/.bashrc
0:48 freshをインストール
https://github.com/pilu/fresh
ディレクトリ監視 & 自動ビルド & 実行ツール
$ go get github.com/pilu/fresh
1:34 NeoBundleのダウンロード
$ mkdir -p ~/.vim/bundle
$ git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
1:48 ~/.vimrcに以下を追記してvim-goをインストール
https://github.com/fatih/vim-go
$ vim ~/.vimrc
~/.vimrc
setnocompatiblefiletype off
if has('vim_starting')setruntimepath+=~/.vim/bundle/neobundle.vim/endiffiletype plugin indent oncall neobundle#begin(expand('~/.vim/bundle/'))
NeoBundleFetch 'Shougo/neobundle.vim'
NeoBundle 'fatih/vim-go'call neobundle#end()letg:go_highlight_functions =1letg:go_highlight_methods =1letg:go_highlight_structs =1letg:go_highlight_operators =1letg:go_highlight_build_constraints =1syntaxon
2:05 適当なディレクトリを作りVimを起動
$ mkdir /usr/local/bin/project
$ cd /usr/local/bin/project
$ vim server.go
2:19 Vim上で :NeoBundleInstall
:NeoBundleInstall
2:37 以下のコードをコピペ
急げ間に合わない。
server.go
packagemainimport("fmt""net/http")funcmain(){http.HandleFunc("/",root)http.ListenAndServe(":8080",nil)}funcroot(whttp.ResponseWriter,r*http.Request){fmt.Fprintf(w,"Hello World.")}
2:46 Vimを閉じてfreshを起動
$ fresh
3:00 「サーバのIPアドレス:8080」にブラウザからアクセス
http://localhost:8080Hello World.
と表示されたら完了。
ところでGolangってなに?
- 非常に単純な構文の言語です
- 公式チュートリアルをこなせば大体覚えられる手軽さ
- 並列処理が言語レベルでサポートされていて、割と楽に実装できます(switch-select ンギモチイイ)
- 今のところ存在するORMがちょっとキモい
Webフレームワークあんの?
ありますが、MVCの形は自分で作るもの。
Goji (Routing & Controller)
https://github.com/zenazn/goji
Genmai (Model)
https://github.com/naoina/genmai
template (View)
3分まで縮めるのに何回練習したの?
お前は今までに打ったvagrant destroy
の数を覚えているのか。
普通にやると5分くらいかかります。
参考文献
http://qiita.com/hit/items/875259a27079aff14f98
http://qiita.com/izumin5210/items/1f3c312edd7f0075b09c
http://qiita.com/Kuchitama/items/68b6b5d5ed40f6f96310