More Related Content Similar to 今日から始めるGopher - スタートGo #0 @GDG名古屋 Similar to 今日から始めるGopher - スタートGo #0 @GDG名古屋 (20) More from Takuya Ueda (20) 今日から始めるGopher - スタートGo #0 @GDG名古屋3. 日頃やってる事
● 研究
○ システム科学研究室所属
○ 複雑系
○ セルオートマトンを用いたデータ解析
○ JavaやGo言語でシミュレータを作成
● ソフトウェア開発
○ アルバイト
■ Go言語使ったWebアプリ
○ 研究室
■ Javascript + d3jsでWebアプリ
4. アジェンダ
● Go言語とは?
● なぜGo言語なのか?
○ シンプルな設計と文法
○ 並列プログラミング
○ 豊富なライブラリ群とgoツール
● Go言語を勉強するには?
○ 書籍で勉強する
○ Webで勉強する
○ ML等で情報を得る
○ 英語でいいからタダで読みたい!
6. Go言語とは?
● Googleが開発したコンパイラ言語
○ その他のGoogleが開発した言語
■ Dart : JSの代替
■ noop : JavaVMで動く言語(忘却のかなた)
■ Python : 人気の言語
● 設計者:
Robert Grisemer, Rob Pike, Ken Thompson
● 強い型付け
● シンプルな設計・文法
● 並列プログラミング
● マスコットがかわいい
10. なぜGo言語なのか?
● シンプルな設計/文法
○ 曖昧さを排除した設計
○ 型推論
○ 複数の戻り値
○ ポインタはあるがポインタ演算はなし
○ ダックタイピング
○ 強い型付け
● 並列プログラミング
○ ゴールーチンとチャネル
● 豊富なライブラリ群とgoツール
○ goツールは最強
○ Web系パッケージの豊富さ
○ Google App Engine for go
18. 並列プログラミング
-チャネル-
● ゴールーチンとやり取りするための仕組み
○ ゴールーチンとゴールーチンを繋ぐパイプのようなも
の!
○ やり取りする値の型を持つ
○ 安全にやりとりできる!
[Sample] Go
done := make(chan bool)
go func() { main true sub
for i := 0; i < 1000000; i++{}
done <- true // チャネルで送る
}()
<- done // 終わるまで待つ 安全ですね!
19. 豊富なライブラリ群とgoツール
-Web系パッケージ-
● net/http
○ 基本的なWebサーバの機能を提供
● text/template, html/template
○ テンプレートエンジン
● encoding/json, encoding/xml
○ JSON, xmlのシリアライズ
● net/http/fcgi
○ FastCGIをサポート
● その他 暗号やハッシュ関数ライブラリ等
20. 豊富なライブラリ群とgoツール
-goツール-
● goツール
○ ビルド
■ go build
○ ビルド&実行
■ go run
○ パッケージ管理
■ go get, go install
[例] go get github.com/tenntenn/goweb-msgpack
○ 単体テスト
■ go test
○ コード整形
■ gofmt
○ 互換性保持
■ go fix
21. 豊富なライブラリ群とgoツール
-単体テストパッケージ-
● testing
○ 単体テスト用のパッケージ
● net/http/httptest
○ Webアプリの単体テスト用パッケージ
● go test
○ xxx_test.goという名前のgoファイルを対象に単体テスト
を行なうツール
● gocov
○ カバレッジツール
■ 現在のバージョンにはオフィシャルにはない
24. 書籍で勉強する
現在日本語の書籍は4冊発売されている
New!!
http://p.tl/yJeG http://p.tl/5Wnf http://p.tl/suCJ http://p.tl/XBg8
※この3冊持ってきてますので、試し読みしたい片はどうぞ。
25. Webで勉強する
● golang.org(本家)
○ 情報量が多い!
○ 英語!
● golang.jp
○ golang.orgの日本語訳
○ ちょっと情報が古い(随時更新されてる)
● A tour of go
○ チュートリアル!
○ 日本語版もある
○ 後でやります
26. ML等で情報を得る
● go-nuts (Google グループ)
○ オフィシャルなML
● golang-jp (Google グループ)
○ 日本語でやりとりするML
● go-weekly(Googleグループ)
○ Go言語の最新情報を流す
● golang jp(Twitter)
○ Go言語の情報を流している
あとはGoogle+などがある