あと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
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-goのエラー通知を止めているので、freshのログからエラーを読み取ることになります。
また保存後に行われるオートフォーマットも止めています。
こちらをONにしているとアンドゥが効かなくなります。
$ vim ~/.vimrc
set nocompatible
filetype off
if has('vim_starting')
set runtimepath+=~/.vim/bundle/neobundle.vim/
endif
filetype plugin indent on
call neobundle#begin(expand('~/.vim/bundle/'))
NeoBundleFetch 'Shougo/neobundle.vim'
NeoBundle 'fatih/vim-go'
call neobundle#end()
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_fmt_fail_silently = 1
let g:go_fmt_autosave = 0
syntax on
2:05 適当なディレクトリを作りVimを起動
$ mkdir /usr/local/bin/project
$ cd /usr/local/bin/project
$ vim server.go
2:19 Vim上で :NeoBundleInstall
:NeoBundleInstall
2:37 以下のコードをコピペ
急げ間に合わない。
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", root)
http.ListenAndServe(":8080", nil)
}
func root(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World.")
}
2:46 Vimを閉じてfreshを起動
$ fresh
3:00 「サーバのIPアドレス:8080」にブラウザからアクセス
http://localhost:8080
Hello 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