行ったので書く(VimConfの記録は出遅れたのであとでこっそり)。
パネルディスカッション
VimConfに続きmattnさんを招待しての他セッション。
聞きながら取ったメモを貼り付けておきます。抜け漏れは許容していただけると。
どういう風にGoを使っているのか
mattnさん
- 業務でかなりちゃんと使っている
- テストを作りやすい
- 数年使っているので実務で十分使える
bokkoさん
- ネットワーク系
- プロキシサーバとかPushサーバ
- 閲覧数カウント
kaoriyaさん
iwataさん
- 画像変換やWebClient
- ちっちゃいツールを作る
アップグレード周りは?
mattnさん
- Goは特に書き直したこと無い
- 動いていたままapg-getしたりしてる
- Windowsでも問題は起きない
- 依存関係がないからかな?
bokkoさん
- アップグレード問題になったことがない
- ちっちゃいものを作っている
kaoriyaさん
- IoTでは問題ない
- オンラインアップデートも不安はない
iwataさん
- 特にプロダクションで使ってない
- 新しいものでビルドしないと対応されないからね
Cgoを使っていると時々ある
mattnさん
- 出た当初から
- Windowsでちゃんと動いた
- Goの開発者にはWindowsHakcerが多い
bokkoさん
- go buildが実装されたから
- pythonで動かしていたのが落ちるようになったので1.2の時にgoで書き直した
- 翌日にプロダクションに入れた
kaoriyaさん
- mattnさんがつかっていたから
- 小物を作り始めたから
- migemo
iwataさん
Windoesで書くことができる
mattnさん
kaoriyaさん
Goの本にはどういうものが欲しいか
mattnさん
bokkoさん
- 特定分野のGoの話とか
- 機械学習とか
- ネットワーク系とか
kaoriyaさん
iwataさん
公式のドキュメントが最新なのでそれを見てくれ
ブログで最新・まとまったらドキュメント
運用について(Logging, metrics tracing)
mattnさん
bokko
- ログファイルに吐き出してlog rotate
- fluentdで取り出してBigQueryに投げ出す
- runtime packageを使ってエンドポイントを作る
- 閾値超えたらアラートとか
- goroutineが増えていく問題があった
- goroutineの数をモニタリングしていてよかった
- 線形に増えていくことがあった
kaoriyaさん
iwataさん
Go2
mattnさん
- バグの互換性を引きずるのはやめて欲しい
- それが終われば何もいらない
- 安全に倒しているので遅くなっている部分がある
bokkoさん
kaoriyaさん
- generationツールでやっていることは多いが正直読めない
- 特にtemplateは読めない
iwataさん
Goは初心者に向けてどう進める?
mattnさん
- 学校で教えればいい
- Cだと教えないといけないことが多いので入門言語としていい感じ
- Rob pikeは学校で教え始めたら教えてくれって言ってた
bokkoさん
iwataさん
- イベントが有るということが広まるところ
- 日本語の本から進める
入門者はどうすればいい?
tenntennさん
- 高校生に教えた(N高校)
- 0ベースの入門者にはやはり難しい
- どうすればいい?
- Chatだと教えることが多いしWebはやっていて楽しいのかわからない
mattnさん
kaoriyaさん
- RaspberryPiでゲーム
- ebitenが良い
iwataさん
Goがどういうバグを引きずっているのか race conditionとか
mattnさん
- OSのプリゲートを似せないようにしているけど
- フラグが足りないが残したい
- WebServerのコンポーネントでHeader周りとかMutexしてて遅いことがある
bokkoさん
テストが階層構造を持っているとテストが辛い
mattnさん
- インジェクションではキツイ
- お手製のMockを作る
- interfaceで埋める
bokkoさん
Go本体にコントリビュートしたいときには
mattnさん
- あのスーパースターにレビューしてもらえるのはやはり
- ドキュメントは修正箇所多いよ
- UintとByteいらないんじゃないの?みたいな議論は
iwataさん
GoだとRDBMSとのやり取りはどうする
mattnさん
- db/sqlが中間層があるので
- gorpとgorm
kaoriyaさん
- xorm使っているけど思い
- スキーマから生成したい
- xoを使っている
気にいっているOSSは?
mattnさん
bokkoさん
- gaurun
- LTSVを加工して式評価機能をができて気に入っている
kaoriyaさん
Digital Oceanのエンジニアであり、vim-goの作者であるFatih氏の発表。
Go+Microservices at Mercari
https://talks.godoc.org/github.com/tcnksm/talks/2017/11/gocon2017/gocon2017.slide#1
メモ : gRPCを触ってみる。
Story of our own Monitoring Agent in golang
Gocon2017:Goのロギング周りの考察
個人的に、Goのロギングは下みたいなLoggerのinterfaceを用意して
使いたいライブラリを薄くWrap、DIすればなんでも良いかなぁ、と思ってるんですがどうなんですかね?
type Logger interface {
Fatalf(...interface{})
Errorf(...interface{})
Warnf(...interface{})
Infof(...interface{})
Debugf(...interface{})
}
How to achieve parallel compilation in Go 1.9
Async, Persistent, Fast, and Sable "Enought" Queue/Worker Using Go and PostgreSQL
Diff algorithm in Go
TODO スライドを追加する。
EBITEN
https://docs.google.com/presentation/d/e/2PACX-1vSSbSxPObBZcJHjvUpAt-HEJVLaux2FQBpJbvbxInJgmEhxSn-lVxTVxUMmUNQwtJtC8w6_HkhuW2hk/pub?start=false&loop=false&delayms=3000&slide=id.p
reviewdog and static analysis for Go
https://docs.google.com/presentation/d/1_BWQXamZvIhL3l9ziL9zb25yP9RjpgXoxkWX-48ECss/edit#slide=id.p
今後
込み入ったGoの部分については掘っていないのであんまり凝った話はできませんが、パッケージ構成とかについてはAdventCalendarとかに書いていこうかなと思います。