a tour of やきう&go - やきう民の私とgoの半年(実質3日間)

38

Upload: -

Post on 16-Apr-2017

580 views

Category:

Software


0 download

TRANSCRIPT

Page 1: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)
Page 2: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

Who am I ?

• Shinichi Nakagawa(@shinyorke)

• Web Engineer & Baseball Scientist

• Python, Agile,Scrum, SABRmetrics

• Speaker(Baseball, Python, Agile, etc…)

• PyConJP 2014, 2015

• XP祭り2013,2014,2015

• BPStudy #79, #89, #91, #99, #100

• #kwskrb, #gocon, other…

Page 3: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

本日のおみやげ

• Go使いになるまでの道のり(初心者脱出)

• Goの基本とか気になるポイントのTipsとか→自分がハマった&学んだ経験談

• LT(Lightning Talk)駆動開発

Page 4: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

Today’s Starting Member

• Goとの馴れ初め

• 1日目(2015/6/20):A Tour of Go→最初のアプリ開発

• 2日目(2015/6/21):アプリ開発→LT登壇

• 3日目(2015/12/6):再会~Go再入門

• 結び~Go langとの付き合い方(個人的に)

Page 5: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

はじめに…

Page 6: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

参考文献

このスライドは、過去ブログ&発表のまとめ&再編として作りました!

• Golangはじめて半日後に野球のアプリ書いてLTしてきた ~ Go Conference

2015 summer Report #goconhttp://shinyorke.hatenablog.com/entry/2015/06/21/195656

• Golang書き初め~Golangではじめるセイバーメトリクス( #gocon 2015

summer 6/21)http://www.slideshare.net/shinyorke/golang-49650050

• Python製MLBスコア&成績データ取得スクリプトを半日でGoで写経してみたhttp://qiita.com/shinyorke/items/1cd92d456017d77ef75e

Page 7: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

Goとの馴れ初め

Page 8: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

出会い(多分、5月or6月)

• Go言語のConference「Go Conference」略して「GoCon(ごーこん)」の存在を知る

• 俺も「GoConウェーイ!」って言ってみたい

• 夏のGoConに参加登録→抽選通った(^o^)

Page 9: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

Go Conference 2015 summer(2015/6/21) http://gocon.connpass.com/event/14063/

Page 10: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

夏 #gocon 前日(6/20)

• 参加確定&抽選突破(^o^)はいいが、そういえば俺Go書いたこと無い!!!

• Conference行くのに知らない・使ったこと無いは失礼じゃないか?※自分の拘りです(異論認める)

• よし!いっちょ覚えて書いてLTやるか!!!→LT駆動開発のはじまり

Page 11: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

1日目(2015/6/20)

Page 12: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

1日目~学習とFW選び

• A Tour of Go

• 開発環境を作る

• アプリのテーマを決める

• ライブラリを探す

• 作る

Page 13: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

【おさらい】Goとは?

• Googleさんが作った言語

• コンパイル言語、強い型付け言語 …だが、インタプリタ的に使える&読み書きし易い

• プログラマーに優しい(lint、Formatter、パッケージ管理)

• 代表的なプロダクト:Dockerなど

Page 14: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

A Tour of Go https://go-tour-jp.appspot.com/welcome/1

Page 15: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

A Tour of Go

• Go lang公式で用意されている、チュートリアル型の学習コンテンツ

• コミュニティの頑張りで日本語版もある&かなり充実している

• ブラウザで動作確認が可能、いちいち環境を作らなくても手軽に触れる!

Page 16: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

開発環境(Macの場合)

• brew install goからのPATH設定

• $GOPATHをどこに設定するか問題 →workspace的なDirectory下に適当に作った (意訳:$HOME下に作る勇気がなかった)

• エディタはSublime Text2を使った→特にこだわりなかった(当時)

Page 17: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

【Tips】$GOPATH

• Goでものを作るときに必須な環境変数

• Goで作ったものを突っ込むワークスペースを意味する

• 自分で作ったプロジェクトはもちろん、外部から取り込んだライブラリも$GOPATHの支配下に入る

• どこに掘ってもいいが、過激派熟練者達は$HOME下に掘るらしい

Page 18: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

最初に作るもの(アプリのテーマ)

• 野球にしよう!(即決)→PyCon JP 2014でLTしたDjango(Python)アプリを写経

• 理由

• 仕様決め&プログラミングで迷うポイントが少ない→Pythonで作った過去アプリの写経で済む

• 継続性→好きなもの・趣味で始める方がモチベーション保ちやすい(好きこそものの上手なれ)

Page 19: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

http://www.slideshare.net/shinyorke/python-39061157

Page 20: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

ライブラリ探し&実装

• Web Framework探し&お試し

• Revel(Rails/Django的なFW)にチャレンジ →CSSとかJSがうまく取り込めず(T_T)

• Martini(sinatra/Flask的なFW)に挑戦 →ようわからんけどうまく動いた(^o^)

• Revelが悪いというより、自分のフロントエンド力の無さの問題

• 色々あったけど紙芝居がようやっと起動 →6/21 26:00頃w(GoConまであと8時間)

Page 21: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

【Tips】GoのWeb Framework

• かなり種類がある&群雄割拠な感じ

• 標準ライブラリのnet/httpでだいたい書ける→RESTful APIとかは特に

• 有名なのはRevelとかGin、Martiniあたり

• コントリビューターが多いEchoあたりも良さ気 → https://eurie.co.jp/2015/12/go-lang-web-framework-echo/

Page 22: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

2日目(2015/6/21)

Page 23: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

夏 #gocon 当日(6/21)

• 上モノ(デザイン&ページ遷移)は前日に完成、 あとはビジネスロジックを作ろうぜ!っていうノリに

→5分のLTで動けばOKという割り切り

• スライドは適当に作った

• 公募LT終了後、流れに乗って飛び入りLT

→ギリ終了前に飛び込み

Page 24: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

実装&スライド作成(追い込み)

• Form送信、O/R Mapper探しと理解にハマる→色々とTry & Errorでやってなんとかそれっぽく動くものが完成(昼休み明けに)

• スライドは過去のあり物を適当に切り貼りして作成(瞬殺)

Page 25: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

http://www.slideshare.net/shinyorke/golang-49650050

Page 26: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

反響と感想

• ややウケ

• 「Gopherの皆様に質問です!オススメのEditorなんですか?」→vim派が多かった

• 他の人の発表&自分の発表のフィードバックで学びが多かった→これからもGolangやるぞ!

Page 27: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

そして半年後…

Page 28: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

3日目(2015/12/6)

Page 29: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

Goとの再会

• 夏 #gocon 後、XP祭り&PyConの発表準備 &業務多忙によりGoに触る暇がなくなる(T_T)

• PyCon(と、Pythonのコミュニティイベント)が一通り終わったあとに冬 #gocon の情報が!

• 「行けたらラッキー」ぐらいのノリで応募 →無事抽選突破!(半年ぶり二回目)

Page 30: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

Go Conference 2015 Winter(2015/12/6) http://eventdots.jp/event/573121

Page 31: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

Go再入門

• 半年前にLTしたコードを読みなおしたりしてリハビリを開始(#gocon前日)

• 会場でトークを聞きながら、PyCon JP 2015で発表した野球ライブラリをGoで写経

• 「Pythonに替わる道具として使えないかなぁ~」っていう漠然としたテーマでモクモク開発

• なお、LTは諦めました

Page 32: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

http://qiita.com/shinyorke/items/1cd92d456017d77ef75e

Page 33: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

【Tips】Goの並列処理

• Go ルーチンっていう標準仕様のおかげでかなり楽に書ける

• CPUの数に合わせてよしなにやってくれる

• 書きっぷりとか見た目が非常に直感的でわかりやすい

Page 34: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

【Tips】Goのエディタ(おすすめ)

• 夏頃はVim派が多かった印象

• ところがどっこい、最近になってIntelliJ IDEAのプラグインがかなりいい感じに!

• IntelliJ IDEA(というよりPyCharm)ファンのワイ、エディタをIntelliJ IDEAに変更、快適なGoプログラミングライフを満喫中

Page 35: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

結び~Go langとのつきあい方

Page 36: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

俺もGopherになるぞ!(多分)

• 言語・思想・コミュニティ、すべてが好み!

• Pythonほど使いこなせていないが、もっと学んでGoで道具とか小さいプロダクトと作れたらいいなと

• まずは今まで経験したことを言語化してフィードバックをもらいたい→このスライドを作った&発表した理由

Page 37: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

【感謝】ゆるプレ

• 4月の#1から今日の#6まで、定期的に開催は素晴らしい

• 個人的には、Ansible/Chef乗り換えの振り返りと、 XP祭りの壁打ちを通じて学び・知見を得られた(^o^)

• オーガナイザーのたのっちさん、会場提供のウェブレッジさん本当にありがとうございました!&来年もよろしくお願いします!!!(やるよ…ね?)

Page 38: A Tour of やきう&Go - やきう民の私とGoの半年(実質3日間)

ゲームセット!!!ご清聴ありがとうございました.&また来年!

Shinichi Nakagawa(Twitter/Facebook/hatena:@shinyorke)