More Related Content Similar to 過去に自作したGoプロダクトの紹介 - Goオールスターズ (20) 過去に自作したGoプロダクトの紹介 - Goオールスターズ4. Go in KAYAC
• 2014年夏、カヤックは、Go言語を積極的に推
進していきます。
http://www.kayac.com/news/2014/07/
golang
• メインは今もPerl
• ミドルウェアや開発ツールにGoが導入されつつ
ある
5. KAYACで動いてる
Goプロダクト
• go-katsubushi: https://github.com/kayac/go-katsubushi
• snowflake-likeなIDジェネレータ
• stretcher: https://github.com/fujiwara/stretcher
• Consul/Surfと連携したデプロイツール
• rin: https://github.com/fujiwara/Rin
• AWS-S3に出力されたログをRedshiftへインポートするツール
• mirage: https://github.com/acidlemon/mirage
• Dockerを使ったテスト用環境構築
• alphawing: https://github.com/kayac/alphawing
• Android/iOSアプリの社内配信ツール
11. go-rgba4444
• C-likeな配列・構造体で省メモリ
• ex. make([][3]int32, 10000)
4bytes 3 10000分アロケート
• 実行時には型情報を持たないので、大きめのデータでも扱
える
• 簡単な画像処理であれば十分扱える
• Goで書いてあると、デザイナにコンパイルしたバイナリを渡
しやすい ※商用のソフト使ってて実際には渡してない
14. interface
type Closer interface {
Close() error
}
type A struct {}
type B struct {}
func (a *A) Close() error { return nil }
var foo Closer
a = &A{} // OK
a = &B{} // NG
16. go-sql-proxy
// SQLが発行されたときのフックを登録
hooks := &proxy.Hooks{
// Hook functions here(Open, Exec, Query, etc.)
}
sql.Register(
new-proxy-name",
proxy.NewProxy(&another.Driver{}, hooks),
)
// 通常のSQLドライバと同様に扱える
db, err := sql.Open("new-proxy-name", dataSourceName)