読者です 読者をやめる 読者になる 読者になる

memoメモ

最近はGo言語関連で。φ(..)メモメモ

GoCon 2015 summerを見てきました #gocon

2015-06-21のgocon 2015 summerを見てきました。

遠方からいらっしゃっていた @kwmt27 さんや @qt_luigi さんに会えたり、 @vvakame さんにTypeScriptについていろいろ聞いたり、その他皆様ありがとうございました!

次回も楽しみにしています!


以下、簡単なものですが、メモを公開します。

Keynote by @francesc at Google

It's an exciting time to be a gopher

Go 1.5 won't have a single line of C

Go in Go:

  • don't like C
  • love writing Go
  • a more maintenable code base
  • more mind space left for innovation (no context switch)

Program analysis:

  • dynamic analysis
    • debbuging
    • code cover
  • static analysis
    • gofmt, golint, go vet

SSA (Single Static Assignment):

  • Data flow analysis easier
  • SSA Backend plan for go1.6

Oracle:

  • source code analysis tool
  • pointer analysis
    • analysis: satatic function call or dynamic function call
    • call stack
  • godoc -analysis

Mobile:

総括: Goで開発ベースは全部整うし、モバイルもこれから書けるし、Goでいいやん。

"What I Talk About When I Talk About CLI Tool By Golang" by @deeeet at rakuten

https://speakerdeck.com/tcnksm/what-i-talk-about-when-i-talk-about-cli-tool-by-golang-number-gocon

Cloud foundry : Goで書き直し中

Command line toolつくるときに使えるライブラリ:

感想:

flagパッケージでほとんど事足りる、が、必要に応じてライブラリ使うほうがいいかも。

"Generative Programming in Go" by @monochromegane at GMO Pepabo

https://speakerdeck.com/monochromegane/generative-programming-in-go

generate programming

templateは可読性重視。goimportsで自動整形する:

func writeWithFormat(file, template string, structs structs) ([]byte, error) {
    var b bytes.Buffer
    w := bufio.NewWriter(&b)
    write(w, template, structs)
    w.Flush()
    formatted, err := imports.Process(file, b.Bytes(), nil)
    if err != nil {
        return nil, err
    }
    return formatted, nil
}

func write(w io.Writer, tplText string, structs structs) error {
    t := template.New("t")
    t.Funcs(template.FuncMap{})
    tpl := template.Must(t.Parse(tplText))
    if err := tpl.Execute(w, structs); err != nil {
        return err
    }
    return nil
}

感想:

ASTでGoのコードを解析してコードを生成するというのは、それなりにメンテナンスコストもかかるので、細かい所を除いた8割くらいにおさえていた方がいい、というのがこれまでの経験で思う所。 goimportsの処理をコードから呼ぶことで整形するのは良いかもしれないので今度実装したい。

"GoCon 2015 Summer GoのASTをいじくって新しいツールを作る" by @vvakame at TopGate

http://www.slideshare.net/vvakame/gocon-2015-summer

TypeScript and Go の人

"Gore: A Tale of Go REPL" by @motemen at hatena

https://speakerdeck.com/motemen/gore-a-tale-of-go-repl

Gore: https://github.com/motemen/gore

  • REPL
  • Goを試したいときにirbみたいにやりたい
  • しくみ: 中でgo runしてる
  • コードをastで解析して各行をラップしてmainで実行する

"Debugging Go Code with GDB" by @kaneshin at eureka

https://speakerdeck.com/kaneshin/debugging-go-code-with-gdb

サービスをGoで書き換え中。

デバッグ:

感想:

GoでGDBは何度か試みたことがある、が、うまく動くことが少なかったので諦めていた。 go1.4+で解消されているのであればまたチャレンジしてみようかな。

"Scaling Sourcegraph with Go" by Gabriel Aszalos(@gabrielaszalos) at Sourcegraph

https://sourcegraph.com/ https://srclib.org/

感想:

ソースコードの解析サービスがWebブラウザで手軽に閲覧できるのはうれしい。 gRPCをもう取り込んでい活用していてすごい。 いろんなノウハウが溜まっていそう。

ikawaha at パシフィックポーター

形態素解析 kagomme

https://github.com/ikawaha/kagome

go gettableを目指す

感想:

形態素解析の話からはじまってどこへ向かうのかとおもったら、go getで簡単に取れるようにするための工夫がいろいろあった。 go-bindataつかったことないので困ったら活用しよう。

cubicdaiya at Mercari

https://speakerdeck.com/cubicdaiya/a-general-push-notification-server-in-go

nginxの人

"Golang, make and robotics" by @HideyukiTakei at beatrobo

https://speakerdeck.com/hideyuki/golang-make-and-robotics-number-gocon

Go in Robot

感想:

ロボット動いてた。 IDLなんだかんだで使ったことない。試さないと。

"広告サーバーでのGoの開発・運用" by @catatsuy at ビクシブ

https://speakerdeck.com/catatsuy/p-ads-server-gocon2015

インフラまわり 広告サーバをGoで作っている

  • nginx → Circus → Application(golang)
  • nginxでユーザーのリクエストをバッファリングする
  • アクセス制御も簡単
  • nginx <-unix domain socket-> Circus <-file descriptor-> go

感想:

nginx <--> Circus <--> Go の組合せでの運用は良さ気。 GoでCircusのような実装ってないのかな?

nishio ryota サイバーエージェント

サーバーサイド

  • 基盤はJavaの開発が長い
  • Goのメリット: 並行性、わかりやすさ、速度
  • コード: 読みやすい、フォーマット・コード規約が明確
  • 学習コスト: A Tour of Go、Effective Goで基本的(6割)に書けるようになる。Goらしく書くにはその先
  • 開発環境: 充実 gfmt, golint, go vet etc..
  • デプロイ: クロスコンパイル簡単。
  • テスト: 標準で。 go test
  • ベンチマーク: 簡単。 go bench, go tool benchcmp
  • プロファイル: 標準。 runtime/pprof, net/http/pprof
  • パッケージ管理: まだこれから
  • Goっぽさ: 標準パッケージで学ぶ。

感想:

人出が足りてないという割にはちゃんと使いこなせていてすごい。 Goの勉強会を開催するらしいので遊びに行ってみたい。

その他