Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
58
Help us understand the problem. What is going on with this article?
@morisuke

Golang開発環境 3分クッキング

More than 5 years have passed since last update.

あと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-goのエラー通知を止めているので、freshのログからエラーを読み取ることになります。
また保存後に行われるオートフォーマットも止めています。
こちらをONにしているとアンドゥが効かなくなります。

$ vim ~/.vimrc
~/.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 以下のコードをコピペ

急げ間に合わない。

server.go
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

fresh.png

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)

http://blog.inagaki.in/?p=212

3分まで縮めるのに何回練習したの?

お前は今までに打ったvagrant destroyの数を覚えているのか。
普通にやると5分くらいかかります。

参考文献

http://qiita.com/hit/items/875259a27079aff14f98
http://qiita.com/izumin5210/items/1f3c312edd7f0075b09c
http://qiita.com/Kuchitama/items/68b6b5d5ed40f6f96310

58
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
morisuke
Vue.js / Laravelが得意。ご連絡はメールかTwitterでどうぞ。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
58
Help us understand the problem. What is going on with this article?