a tour of やきう&go - やきう民の私とgoの半年(実質3日間)
TRANSCRIPT
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…
本日のおみやげ
• Go使いになるまでの道のり(初心者脱出)
• Goの基本とか気になるポイントのTipsとか→自分がハマった&学んだ経験談
• LT(Lightning Talk)駆動開発
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との付き合い方(個人的に)
はじめに…
参考文献
このスライドは、過去ブログ&発表のまとめ&再編として作りました!
• 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
Goとの馴れ初め
出会い(多分、5月or6月)
• Go言語のConference「Go Conference」略して「GoCon(ごーこん)」の存在を知る
• 俺も「GoConウェーイ!」って言ってみたい
• 夏のGoConに参加登録→抽選通った(^o^)
Go Conference 2015 summer(2015/6/21) http://gocon.connpass.com/event/14063/
夏 #gocon 前日(6/20)
• 参加確定&抽選突破(^o^)はいいが、そういえば俺Go書いたこと無い!!!
• Conference行くのに知らない・使ったこと無いは失礼じゃないか?※自分の拘りです(異論認める)
• よし!いっちょ覚えて書いてLTやるか!!!→LT駆動開発のはじまり
1日目(2015/6/20)
1日目~学習とFW選び
• A Tour of Go
• 開発環境を作る
• アプリのテーマを決める
• ライブラリを探す
• 作る
【おさらい】Goとは?
• Googleさんが作った言語
• コンパイル言語、強い型付け言語 …だが、インタプリタ的に使える&読み書きし易い
• プログラマーに優しい(lint、Formatter、パッケージ管理)
• 代表的なプロダクト:Dockerなど
A Tour of Go https://go-tour-jp.appspot.com/welcome/1
A Tour of Go
• Go lang公式で用意されている、チュートリアル型の学習コンテンツ
• コミュニティの頑張りで日本語版もある&かなり充実している
• ブラウザで動作確認が可能、いちいち環境を作らなくても手軽に触れる!
開発環境(Macの場合)
• brew install goからのPATH設定
• $GOPATHをどこに設定するか問題 →workspace的なDirectory下に適当に作った (意訳:$HOME下に作る勇気がなかった)
• エディタはSublime Text2を使った→特にこだわりなかった(当時)
【Tips】$GOPATH
• Goでものを作るときに必須な環境変数
• Goで作ったものを突っ込むワークスペースを意味する
• 自分で作ったプロジェクトはもちろん、外部から取り込んだライブラリも$GOPATHの支配下に入る
• どこに掘ってもいいが、過激派熟練者達は$HOME下に掘るらしい
最初に作るもの(アプリのテーマ)
• 野球にしよう!(即決)→PyCon JP 2014でLTしたDjango(Python)アプリを写経
• 理由
• 仕様決め&プログラミングで迷うポイントが少ない→Pythonで作った過去アプリの写経で済む
• 継続性→好きなもの・趣味で始める方がモチベーション保ちやすい(好きこそものの上手なれ)
http://www.slideshare.net/shinyorke/python-39061157
ライブラリ探し&実装
• Web Framework探し&お試し
• Revel(Rails/Django的なFW)にチャレンジ →CSSとかJSがうまく取り込めず(T_T)
• Martini(sinatra/Flask的なFW)に挑戦 →ようわからんけどうまく動いた(^o^)
• Revelが悪いというより、自分のフロントエンド力の無さの問題
• 色々あったけど紙芝居がようやっと起動 →6/21 26:00頃w(GoConまであと8時間)
【Tips】GoのWeb Framework
• かなり種類がある&群雄割拠な感じ
• 標準ライブラリのnet/httpでだいたい書ける→RESTful APIとかは特に
• 有名なのはRevelとかGin、Martiniあたり
• コントリビューターが多いEchoあたりも良さ気 → https://eurie.co.jp/2015/12/go-lang-web-framework-echo/
2日目(2015/6/21)
夏 #gocon 当日(6/21)
• 上モノ(デザイン&ページ遷移)は前日に完成、 あとはビジネスロジックを作ろうぜ!っていうノリに
→5分のLTで動けばOKという割り切り
• スライドは適当に作った
• 公募LT終了後、流れに乗って飛び入りLT
→ギリ終了前に飛び込み
実装&スライド作成(追い込み)
• Form送信、O/R Mapper探しと理解にハマる→色々とTry & Errorでやってなんとかそれっぽく動くものが完成(昼休み明けに)
• スライドは過去のあり物を適当に切り貼りして作成(瞬殺)
http://www.slideshare.net/shinyorke/golang-49650050
反響と感想
• ややウケ
• 「Gopherの皆様に質問です!オススメのEditorなんですか?」→vim派が多かった
• 他の人の発表&自分の発表のフィードバックで学びが多かった→これからもGolangやるぞ!
そして半年後…
3日目(2015/12/6)
Goとの再会
• 夏 #gocon 後、XP祭り&PyConの発表準備 &業務多忙によりGoに触る暇がなくなる(T_T)
• PyCon(と、Pythonのコミュニティイベント)が一通り終わったあとに冬 #gocon の情報が!
• 「行けたらラッキー」ぐらいのノリで応募 →無事抽選突破!(半年ぶり二回目)
Go Conference 2015 Winter(2015/12/6) http://eventdots.jp/event/573121
Go再入門
• 半年前にLTしたコードを読みなおしたりしてリハビリを開始(#gocon前日)
• 会場でトークを聞きながら、PyCon JP 2015で発表した野球ライブラリをGoで写経
• 「Pythonに替わる道具として使えないかなぁ~」っていう漠然としたテーマでモクモク開発
• なお、LTは諦めました
http://qiita.com/shinyorke/items/1cd92d456017d77ef75e
【Tips】Goの並列処理
• Go ルーチンっていう標準仕様のおかげでかなり楽に書ける
• CPUの数に合わせてよしなにやってくれる
• 書きっぷりとか見た目が非常に直感的でわかりやすい
【Tips】Goのエディタ(おすすめ)
• 夏頃はVim派が多かった印象
• ところがどっこい、最近になってIntelliJ IDEAのプラグインがかなりいい感じに!
• IntelliJ IDEA(というよりPyCharm)ファンのワイ、エディタをIntelliJ IDEAに変更、快適なGoプログラミングライフを満喫中
結び~Go langとのつきあい方
俺もGopherになるぞ!(多分)
• 言語・思想・コミュニティ、すべてが好み!
• Pythonほど使いこなせていないが、もっと学んでGoで道具とか小さいプロダクトと作れたらいいなと
• まずは今まで経験したことを言語化してフィードバックをもらいたい→このスライドを作った&発表した理由
【感謝】ゆるプレ
• 4月の#1から今日の#6まで、定期的に開催は素晴らしい
• 個人的には、Ansible/Chef乗り換えの振り返りと、 XP祭りの壁打ちを通じて学び・知見を得られた(^o^)
• オーガナイザーのたのっちさん、会場提供のウェブレッジさん本当にありがとうございました!&来年もよろしくお願いします!!!(やるよ…ね?)
ゲームセット!!!ご清聴ありがとうございました.&また来年!
Shinichi Nakagawa(Twitter/Facebook/hatena:@shinyorke)