Aqutras Members' Blog

株式会社アキュトラスのメンバーが、技術情報などを楽しく書いています。

Go Conference 2016 Spring 参加レポート

こんにちは、じょにーです。

4月23日にGo Conference 2016 Springに参加してきましたので参加レポートを今回記事にします。

Go Conference とは

そもそもGo Conferenceとは、通称GoConと呼ばれ、
日本でのGo言語の高まりを感じるために開催されているカンファレンスです。
1つの会場で行われ、20分*2のセッションを4つほど行います。
最後にはLTで大会を締めくくるという形式です。
開催の周知や参加登録はconnpass上で行われます。
興味のある方はメンバーになっておくのをオススメします。
定員は毎回200人近く、多いと思われるかもしれませんがすぐに定員以上の応募が来るようです。

Goに触れたことがある人もない人も大歓迎。
とは言いつつセッションの内容の専門性は高めで、Go実運用してみたよ!という内容が多いです。
聞きに来る人もGoをproduction環境に導入したいという目的の方が多い印象でした。

今回はGoに加えてGAE(Google App Engine)上で動作させてみたという内容を含むセッションが多かったです。

各発表について要点だけ列挙する形で紹介していきます。
資料は下の表に記載しているリンク先からダウンロードすることができます。
/区切りで二つ目があるものは関連資料です。 また、発表資料が見当たらなかったもの、無かったものに関しては関連するWebページのリンクを記載しています。

キーノート

Dave Cheneyさん 資料
※ リンクをクリックするとPDFがダウンロードされます。
Goの様々なツールを作っている方。gbなどが有名。

  • Goでツールを作成する際は、エラーメッセージに注釈をつけよう

通常セッション

発表者 発表資料
lestrrat (Daisuke Maki)さん Auto-Generating builderscon server, validator, and client with JSON (Hyper)? Schema, et al
motemenさん Go ツールのソースコードを読む
shibukawaさん GoでGUI
Daichi Hirataさん Elastic Beatsを導入した話
kaneshinさん Golang + Cloud Vision API + GAE
kazegusuriさん GRPCの実践と現状での利点欠点
鶴岡 達也さん Go と GAE による Web サービス開発
vvakameさん 自作Webフレームワーク uconを作った話
stanakaさん How to Contribute to Golang / pr
yyoshiki41さん Requirements for Go server in production
methaneさん Building scalable MO game server

Auto-Generating builderscon server, validator, and client with JSON (Hyper)? Schema, et al

  • GoでAPIサーバを立てたい
  • APIサーバって同じようなことを何度も書く必要があるので自動化したい
  • APIにはどの形式を使うか検討
  • 主にメンテナンス性の観点からJSON schemaを採用
  • GoにはJSON用のvalidationパッケージ等が無かったので自作した

Go ツールのソースコードを読む

  • Go ツールのソースを読み、自分でも作れるようになろう
  • goimportsとgddoのソースの解説
  • 追加でstringerの解説

GoでGUI

  • GoでGUIプログラミングをしたい
  • Toolkit Wrapperだとメンテナンスに時間がかかる
  • Go用のToolkitを自作
  • ハイブリッドスタイルの検討

Elastic Beatsを導入した話

  • Elastic SearchのJSONを出力するElastic Beatsの利用報告
  • Apache Kafkaで運用
  • Elastic Search + Kibana環境で手軽に始められる

Golang + Cloud Vision API + GAE

pairsはGoで書いている。

  • WAFをRevelからGinに移行
  • パッケージ管理にはGlideを利用
  • botを運用するためにGAE+Goの組み合わせを利用

GRPCの実践と現状での利点欠点

  • 利点

    • 実装に集中できる
    • クライアントが作りやすい
    • ルーティング、enc/decが自動
  • 欠点

    • アクセスログなどミドルウェアが無い、そもそも作りづらい
    • curlが使えない
    • ドキュメントが少なく、ソースを見ないとわからないような機能が
    • 言語毎に完成度や機能が違う

Go と GAE による Web サービス開発

  • GAEの機能紹介
  • スケーラビリティ、ログ分析機能の解説

自作Webフレームワーク uconを作った話

  • GAEとGoの組み合わせは使いやすい
  • net/httpに近く、Swaggerに対応したWAFを使いたい
  • いいものが無かったため自作

How to Contribute to Golang

  • Amazon Linux 2016.03 で Goのツールが動かなくなった
  • コントリビュートするしかない
  • コントリビュート方法の解説

Requirements for Go server in production

  • デーモン化
  • graceful shutdownの方法など

Building scalable MO game server

  • Goを利用してゲームサーバを高速化
  • 高速化した手法をコードを交えて紹介

LT

発表者 発表資料
Hironobu Saitohさん Goでデーモンを作ってみる
sinmetal さん Goroutine on Google App Engine
__timakin__さん Gopherに逆らうとどうなるのか
cero_tさん Goによる格闘ゲーム用マクロ開発記
y_matsuwitterさん マイクロサービスのライブラリを見比べてみた / go言語でのマイクロサービスフレームワークの雑な比較メモ
Shawn Smithさん Go report Card
松尾 愛賀さん Go言語の入門書を書いてみた話
山崎さん Women Who go
yoyaさん GoImagick詳解 / GoImagickでサムネール作成

Goでデーモンを作ってみる

  • 他のものを使わずGo単独でデーモン化したい
  • 自分自身を外部コマンドとして実行する

Goroutine on Google App Engine

  • GAEでgoroutineを実行したときの性能評価

Gopherに逆らうとどうなるのか

  • DockerをRubyで実装しようとして困った話

Goによる格闘ゲーム用マクロ開発記

  • Goで某格闘ゲームの100コンボを出すマクロを書いた
  • 実演、まさにLT

マイクロサービスのライブラリを見比べてみた

  • マイクロサービス用ライブラリが増えてきたので整理
  • Tracerの観点から比較

Go report Card

  • Goで書かれたシステムのリポジトリ健康診断ツールの紹介

Go言語の入門書を書いてみた話

  • つい先日(2016/4/15)に発売されたGo言語入門書の紹介

Women Who go

  • 女性のGo開発者グループの紹介
  • しかし、会場に女性が2人くらいしかいなかった

GoImagick紹介

  • Go言語ImageMagickの機能を使うGoImagickの紹介
  • GoImagick自体をイジる人を増やしたい

まとめ

Go Conferenceがどういったものなのか紹介しました。
Goをproduction環境で導入してみたいけど、実際どのように導入しているのか知りたい という方にオススメです! プログラミング自体が初心者という人には少しハードルが高いかもしれません。 他言語を普段使っているが新しい言語に挑戦したい!という人にもオススメです。

私は、Go言語を趣味や大学の研究で少し触っている程度の初心者です。
Go言語は若く、そのためパッケージ等もまだ充実しているとは言い切れないため、 production環境での導入はあまり無いんだろうなと考えていました。
しかし、今回参加して導入事例は少なくなく、 パッケージが少ない点は自分たちで作ってやる!!という熱をヒシヒシと感じました。

P.S.

先日社内勉強会でGoの紹介とGoConferenceの参加レポート、Goの導入の検討といった内容で発表してきました。
社内では、新規プロダクトはRailsベースで構築することが多いため、Go言語も選択肢に入れてみないか!?という提案が主な目的でした。

そこで返ってきた反応について少し触れてみたいと思います。

  • 高速な処理が特徴だけど、現状のシステムにはそこまで求められてない
  • 並列処理も特徴だが、大規模な並列処理を求められるプロダクトが今のところ無い
  • 100万人が使うソシャゲを作ろうとするなら欲しい
  • マイクロサービスとして切り出して運用するならありかな

弊社でも導入したいですが、反応はイマイチ...
入れるとしたらマイクロサービスになりそうです。
ドンドン提案していきたいと思います!