sashima

GREE Tech Talk #06 ご来場ありがとうございました

こんにちは。開発企画室の佐島です。

はじめに

9月24日(水)、グリー主催の技術勉強会GREE Tech Talkが開催されました。

6回目となる今回のテーマは「Practical Go」。

言語をテーマにしたのは今回が初めてでしたが、言語そのものを学ぶというよりも実際の開発や運用で出会った問題を取り扱うという「実践的」な内容でしたので、いつものGREE Tech Talkと同じ感じだったのではないかと思います。

天候の悪い中お越し頂いたみなさま、本当にありがとうございました。

セッション概要

当日行われたセッションの模様をダイジェストでお届けします。

『Lessons Learned While Writing “peco”』牧 大輔(LINE株式会社)

lestrrat

最初にご登壇頂いたのはpecoの開発者であり、上位3%のアクティブGoユーザ牧大輔さん(@lestrrat)によるpeco開発で得られた5つの学びについてです。

ちなみに上位3%というのは、Golangコミッタの一人であるDave Cheneyよりも上とのこと!

まず最初にマーケティングの話。ツールを作成しても説明は誰も読まないので、いかに簡単にわかってもらうか、そしていかに簡単に使ってもらうかが重要。その点Goはバイナリの作成が簡単なので活用すべしというお話でした。そしてなんと発表中にpeco v0.2.10のLive Release!

次に同期の話。pecoのステータスメッセージではまってしまったバグを例に「並行処理の同期は簡単なことであっても油断するとすぐ間違えてしまうぐらい難しい問題なので気をつけるように」と警鐘を鳴らされました。

続いてテストの話。pecoでは必要な関数だけを抜き出してinterfaceを作りテストを実装したとのこと。必要になったタイミングで、必要な関数だけ抜き取ってinterface考えて差し替えれば良いというのがGo的なやり方ということです。

続いてライブラリ。スクリプト言語との最大の違いはコンパイルすること。pecoで必要な機能のライブラリにcontributeするという方向を選ばずpeco専用として取り込むという選択をしたとのこと。reflectionやinterface{}を使うことで多くの場面に対応できるライブラリにできるけれども今回のケースではそこまで必要性を感じなかったとのこと。go1.4で予定されているgo generateではもしかしたらソースコードジェネレータが追加されるかもしれないので今後ここらへんは改善されるかもしれません。

最後にクロスコンパイル。cgo使うとはまるので注意。とは言えgoに同梱されたライブラリを使えばよいかと言うとそれも怪しい。ということでハマったらTwitter等で聞いてみるということを覚えておくと良いですよとのことでした。

スライド:Lessons Learned While Writing “peco”

『Practical Go』田沼 修平(グリー株式会社)

chobi_e

続いて弊社エンジニアの田沼修平(@chobi_e)が登壇しました。

まずGREEでのGoの利用事例として、アプリケーションのボトルネックをモニタリングするために、XHProfを改造し、パフォーマンスデータをInfluxDBにバイナリで突っ込んでいるという紹介がありました。(注: GREEではpatch当てて利用しています)

その流れでモニタリングの重要性、Goでどうやってモニタリングするのか、という話になり、標準パッケージであるexpvarを使っているという説明がありました。

ちなみにPractical Goというタイトルは、Goでサービスをやっているという話はよく聞くものの、実際にモニタリングや運用まわりの話を聞く機会がないので企画したとのこと。

続いてGoでサーバを書く話。会場の半数以上の方がGoでサーバを書かれているということで、注目が集まっていました。

Echoサーバ、Rankingサーバの作り方が簡単に説明された後、本題のGoでMQTTサーバを導入した話へ。

GREEではGoの評価の一環として一部異常値をMQTTで収集しているという事例紹介が行われ、しかも負荷試験を行ったところパフォーマンス的にはCで書かれたMQTTサーバよりは多少時間がかかっているが、今後のチューニングで大きな遜色がないところまで行くだろうとのこと。

ということでGoでミドルウェア作ることはさほど難しくないし、実際に運用でも使え、パフォーマンスもでるが、一方で並行プログラミングはしっかり学ぶ必要がある、というメッセージで締めくくられました。

スライド:Practical Go

『Experiences Building InfluxDB with #golang』Paul Dix(InfluxDB)

paul

最後に、InfluxDBのCEOであるPaulさんが登壇されました。

Goの長所として、まずシンプルであることを挙げられました。コードが読みやすく、理解しやすい、そしてそのことが特に大規模プロジェクトにおいてメンテナンス性の向上に繋がるとのことです。

また、特にWebサーバなどネットワークサービスに置けるパフォーマンス、堅牢性、外部依存なくデプロイできる点を長所として挙げられました。

次に得られた知見として、InfluxDBはgoraftを当初go get経由で利用していたが、しばしばgo getが参照するコミットが違うことにより調査に時間を費やすことがありました。その為重要な外部ライブラリはproject内に取り込むようにした点の説明がありました。またGoは新しい言語なのでChannels of channles等のGoならではの書き方を日々学び続けている点などの説明がありました。

長所の次は短所、ということでGCの話に。InfluxDBは時系列データベースなので特に多くの小さなデータを取り扱っているのですが試験中に2GBほどのheapでさえGCの影響を多く受けてしまうことが分かりました。Go1.4以降にはGCの改善計画がありますが、InfluxDBのように大量の小さなデータを扱うケースだと思ったよりも性能がでないのではと思っているとのこと。対応策は現在検討中のようです。

また、いくらGoが並行プログラミングやネットワークまわりに強いと言っても、やはり一筋縄では行かないという例として対象ノードが高負荷時やGC処理中のnetwork書き込み、読み込み周りのtimeoutをどう扱っていくかという問題の解説がありました。

ライブラリの再発明についても触れられ、raftプロトコル特有の問題を解決するためにInfluxDB向けににstreaming raftのライブラリを作成しているとのこと。Goのライブラリはまだまだ枯れていないものも多く、自分たちのプロダクトを良くするためには再発明を恐れず作るのが良い、というお話でした。

(WIP: Streaming Raft https://github.com/influxdb/influxdb/pull/903)

最後にパフォーマンスTipsとして、pprofは早い段階から何度も使いうこと、ベンチマークはあらゆるレイヤーで書くこと、というメッセージで締めくくられました。

スライド:Experiences Building InfluxDB with #golang

写真撮影

イベントの合間に登壇者の方々で記念撮影をさせて頂きました。

speakers

普段ならここから懇親会となるところですが、今回、ニコ生をやるということで、せっかくなので弊社CTOふじもとがPaulさんにインタビューする模様を配信しました。

paul x グリーCTO ニコニコインタビュー

こちらもダイジェストでお届けしたいと思います。

paulxCTO

ふじもと(以下、ふ)Paulさんのバックグラウンドとか教えてください。いつからGO始めたとか、好きな言語とか

Paulさん(以下、P)プログラミングは9-10歳ぐらいで始めました。最初はRubyです。Rubyって日本の言語ですよね?だけどもっとハイパフォーマンスなのがやりたくなってscalaをやり始めました。その後Goを書き始めました。

ふ:どうやってGo学んだんです?

P:オンラインドキュメントとかGoの本とか他のgoのサイトとか、あとソース読んだりとか

ふ:おすすめのコードは?

P:やっぱりGo, The Standard Libraryですかね。

ふ:Goは1年前にInfluxDBのために選択したんでしたっけ?

P:いえ、2年前です。InfluxDBのために始めたのが1年前です。

ふ:2年経ってベストな選択だった思います?例えばもっといい言語があったとか。

P:それは、、ずいぶん大きな質問ですね。ただ一つ言えるのはGoはすごい速さで成長しているし、色んな人が助けてくれるし、僕たちのプロダクトに貢献してくれるのはGoで書いてるからだと思います。

ふ:日本ではGoもずいぶんポピュラーになってきましたけどアメリカではどうです?

P:まだアーリーステージですけどサーバサイドではポピュラーになってきてると思います。4月末にGoのカンファレンスがあったので行ったけど700人ぐらいいました。

まだアーリーステージだけどコミュニティもあるし、信じられないスピードで成長してます。Ruby始めた頃もコミュニティ小さかったけど6年たった今では大きくなりましたし。

ふ:Goでも同じことが起こると?

P:Rubyより大きくなると思います。

ふ:キラーアプリってなんだと思います?

P:WebAPIじゃないですかね。WebAPI書くなら、特にSinglePageApplication書くならGoがベストだと思います。

ふ:最後に、日本のエンジニアに向けて何かメッセージを

P:Run Go & Use InfluxDB!

ふ:ありがとうございました!

アンカンファレンス

今回は懇親会中にアンカンファレンスを実施しましたので、発表者のみなさまの写真だけでもお届けしたいと思います。

『Go Learning Challengeの話』Yambeさん

yambe

『ISUCONにGoで参加する話』@matsuuさん

matsuu

『golang-jp.orgの話』@atottoさん

atotto

『wtの紹介』@yosuke_furukawaさん

yosuke_furukawa

『GobiesVMの紹介』@Spring_MTさん

Spring_MT

最後に

改めまして、お忙しい中ご来場頂きましたみなさま、並びに快く登壇をして頂きましたスピーカーのみなさま、アンカンファレンスにご参加頂いたみなさま、本当にありがとうございました。

そして今回初めての試みだったニコ生をご視聴頂きましたみなさまも、ありがとうございました。至らぬ点も多かったのではと思っておりますが、多少なりともイベントの雰囲気を感じて頂けたのではと思います。

GREE Tech Talkは今後も活動を続けて参りますので、どうぞよろしくお願いします。

参考

togetter:GREE Techtalk#6 – Practical Go -

公式サイト:GREE Tech Talk #06『Practical Go』

ATND:GREE Tech Talk #06「Practical Go」- #greetech06 -

sashima

開催まであと1週間! GREE Tech Talk #06を楽しむための5つのポイント – ニコ生もあるよ。

GREE Tech Talk

ゲーム業界はまもなく開催される東京ゲームショウで盛り上がっておりますが、まもなく開催されると言えばGREE Tech Talk #06も負けてはいられません。

こんにちは。GREE Tech Talkの運営をやってる開発企画室の佐島です。

今日は開催まであと1週間に迫ったGREE Tech Talkの直前情報をみなさまにお届けしたいと思います。

お楽しみポイントその1「Paulさんのスライドが日本語?!」

はい、日本語になる可能性大です。

Paulさんご自身より、事前にスライドを渡すからいい感じに翻訳して欲しい、という嬉しいご提案を頂きました。

スライドが届けばすぐさま翻訳できる万全の体制を整えて、ひたすら待ち続ける日々を過ごしています。

また、当日の発表は英語ですが、質疑応答には通訳を入れる方向で準備中です。

聞きたいことをきける絶好のチャンスですので、是非ご来場ください!

お楽しみポイントその2「GREE Tech Talkのステッカーがもらえる?!」

はい、実はGREE Tech Talkのロゴがひっそりとデザインされましたので、それをステッカーにするべく準備しております。

まだ手元に現物はありませんが、きっと一週間後には出来上がっている、はずです。

ぜひ会場で手に入れてください!(できてれば)

お楽しみポイントその3「アンカンファレンスあるってホント?!」

はい、懇親会の時間帯を利用してアンカンファレンスをやる予定です。

といっても懇親会の開始が21時と遅めということもあり、一人5分で5枠ぐらいできればなぁと思っています。

ホワイトボードを用意しますので、喋りたい方はぜひエントリーお願いします。(エントリーは当日会場にて、多分休憩時間ぐらいから受付開始の予定。)

事前にネタをご準備頂いても構いませんが、会場の都合でスクリーンは使えません。あらかじめご了承ください。

お楽しみポイントその4「ニコ生配信?!」

はい、ニコ生やります!(たぶん)

当日諸事情により参加できなくなった方(決してドタキャンを推奨しているわけではありません)、そもそも遠方で参加できない方、などなど様々な方のために生放送を予定してます。

本編の放送はもちろん、終了後にちょっとしたニコ生向けのおまけコーナーも準備中です。

あと、ニコ生視聴者の方からスピーカーの方へ質疑できるようにするかもしれません。(が、いろいろ盛りだくさんでやらないかもしれません)

会場へ来れない方、何かの予定と重なってあきらめられていた方、みたいな方々が周りにいらっしゃいましたら是非ニコ生やるらしいということをお伝え頂けますと幸いです。

※配信が決定したら告知ページにてご案内させて頂きます。

お楽しみポイントその5「chobi_eさんの講演内容は本当に泥臭い?!」

聞きたいのは事例ですよ事例。ということで、(仮)のついたタイトルに偽りないか、本当のところをちょっと聞いてきました。

そうですねー、Goのアレコレ細いTipsはネットでもよく見かけてとても参考になるんですが、実際にGoのアプリケーション書いて運用にのせる時にどういうふうにモニタリングすればいいか、とかってそんなにノウハウ出回ってなかったりするんですよね。

今回のTechTalkのお題がPractical Goという事で、プロダクション環境のサーバー等でGoアプリケーションを運用していくにはどのような実装にしていけばいいか、またそれに関連してGoアプリケーションのパフォーマンスを下げないようにするには、というお話をする予定です。

私の所属するチームでは主にインフラ周りを担当しておりますが、開発も行っておりますのでその中からGoアプリケーション開発の経験としてInfluxDBとの連携や、Goでのサーバー実装についての事例についてお話できればと思います

当日は懇親会やアンカンファレンスもあるということですので、Goの魅力や実践的な活用についてみなさんとお話かわせればいいなー、と思っていますのでぜひぜひお楽しみに!

ふむふむ、発表タイトル通り、どうやら運用周りの生々しい話が聞けそうです!

ということで、いかがだったでしょうか?

みなさまにお楽しみ頂けるよう、しっかり準備をしていこうと思っておりますので是非ご来場ならびにご視聴お願いします。

sashima

GREEのUserAgent比率を公開します(2014/09)

もうすぐ開催されるGREE Tech Talk #06が楽しみな佐島です。

今月もGREEを利用して頂いているクライアントのUA比率を公開します。

グラフは以下のデータを元に作成しています。

  • 本データはGREEのSNSサービスのブラウザに基くデータです。
  • 本データの内容の正確性・信頼性については保証いたしかねます。
  • データはスマートフォンに限ったブラウザ比率を元に集計しています。
kyo_ago

GREEのUserAgent比率を公開します(2014/08)

サンダルは鼻緒派のago(@kyo_ago)です。

今月もGREEを利用して頂いているクライアントのUA比率を公開します。

グラフは以下のデータを元に作成しています。

  • 本データはGREEのSNSサービスのブラウザに基くデータです。
  • 本データの内容の正確性・信頼性については保証いたしかねます。
  • データはスマートフォンに限ったブラウザ比率を元に集計しています。