GopherCon 2016で発表してきました

@tenntennです。

現地時間の2016年7月11日〜13日にアメリカのコロラド州デンバーにて開催されたGopherConにて発表をしてきました。

GopherConとは?

GopherConは、毎年デンバーで開催される世界でもっとも大きいGo(Go言語)のカンファレンスです。
今年で3回目の開催になります。
GopherConと名前の付くカンファレンスは、デンバーで開催されるGopherConの他にもGopherCon IndiaやGopherCon Chinaがあります。
GoのWikiに世界各地で行われているカンファレンスまとめてあるのでそちらを見ると分かりやすいかなと思います。

今年のGopherConの参加者は1500名を超えているらしく、3トラックに分けて発表が行われました。
他のカンファレンスと比べても非常に規模が大きいことが分かります。

GopherConで発表するまで

今年のGopherConも2種類の形式のセッションが募集されました。
通常セッション(発表30分・質疑なし)とチュートリアルセッション(発表50分・質疑込み)です。
通常セッションは午前中にメインステージ(1500人席)で行われ、チュートリアルセッションは3トラックに分かれて行われました。

GopherConで発表を行うためには、プロポーザルを提出する必要があります。
プロポーザルは、タイトル、概要、詳細などを英語で書きます。
タイトルと概要は採択後にWeb上で公開されるもので、詳細は公開されません。
そのため、詳細の方はネタバレの情報を含んでいても構わなく、できるだけ詳細に具体的なことを書きます。

今年の1月1日にCall For Proposal (CFP) がオープンし、締め切りは1月末でした。
私は、Droid Kaigi 2016のCFPが通った勢いでGopherConの方にもえいやと応募してみることにしました。
応募の動機は、GopherConに参加したかったことと、今年は英語能力をのばそうと考えていたので、その具体的な目標にちょうどいいかなと思ったからです。

発表するネタをあれこれ考えている間に、とうとう締め切りの日が近づいてきていました。
Droid Kaigiが50分の発表でしたので、GopherConも同じく50分のチュートリアルセッションに応募することにしました。
発表するネタは、Droid Kaigiでも発表したGo Mobileに決めました。

そこからプロポーザルを書いていきました。
はじめは日本語を書いて英語に翻訳するという作業でプロポーザルを考えていましたが、締め切り間際になると英語で直接文章を考えるようにしました。
これは英語の文章を書くいい練習になりました。

無事締め切りギリギリでプロポーザルを提出し、ひと安心しました。
しばらくすると、思いがけないプロポーザル通過の案内がきて大変驚きました。
それはGopherConに参加できる喜びと、最大規模のGoのカンファレンスで発表する緊張の入り混じった気持ちでした。

そこからは具体的な内容を詰めたり、新しい話のネタを探したりして、発表資料づくりを行いました。

Go for Mobile Games

私のセッションでは、「Go for Mobile Games」というタイトルで、Go MobileというGoのモバイルアプリ開発向けのツールキットについて発表を行いました。

発表資料は、GoogleスライドとSlide Shareにアップロードしてあります。

発表に使った原稿についても以下のURLから閲覧できるようにしてあります。

当日の発表の様子は録画されており、後日Youtubeにて公開されるとのことなので、Gopher Academyの再生リストに追加されるでしょう。

今回の発表では、このブログでも取り上げている、Go MobileのNativeアプリの開発について扱っています。

具体的には、

  • SDKアプリとNativeアプリについて
  • Nativeアプリでゲームを作る方法
  • Google Playへの公開
  • JavaのAPIをGoから呼ぶ方法

についてお話しました。

資料には記載していますが、Unityのネイティブプラグインを作る方法については、時間が足りずお話することができませんでした。
興味のある方はQiitaに記事を書いていますので、そちらをご覧ください。

当日の発表の様子

当日の発表は、写真のような500名ほど入る部屋で行われました。
緊張していてあまり覚えていませんが、それなりに人は入っていたような気がします。
プレゼンの様子

発表ギリギリまで資料を調整し、原稿を手直しました。
発表は原稿を読みながらやろうと割りきっていたので、そこまで不安はありませんでした。
ちなみに、発表原稿は紙に印刷して持って行きましたが、滞在中に修正を加えたため、結局はGoogle DocsをNexus 9で開いて発表しました。

しかし、その時になると機器トラブルが起こり、3台PCを取り替えてもスクリーンに映らず、4台目でようやく映りました。
プレゼンできないんじゃないかと不安になりましたが、カンファレンススタッフの方たちのおかげでどうにか発表を開始できました。

発表の途中に気づいたのですが、機器トラブルに加えて、別の問題も起きました。
自分のMacで発表できない場合に備えて、Googleスライドの原稿をpptxやPDFに変換したものを用意していました。
しかし、pptxまでは直前の調整の結果を反映していたのですが、PDFに反映を忘れており、ようやくスクリーンに映せた4台目のMacにはパワーポイントが入っておらず、結局古い状態の資料で発表することになりました。
PDFなのでスライド中に貼っていたGIFが動かなかったのは非常に残念でした。

また、発表時間は50分だったのですが、発表開始と同時にカウントダウンタイマーが動く予定でしたが、動いておらず、今自分が何分話しているのか分からないまま発表するという事態になりました。
発表練習では、だいたい時間どおりに発表できていたので、うまく時間どおりに発表できたと信じたいところです。

発表した感触としては、英語はまだまだ改善の余地があり、内容についてはもう少し盛り上がる要素を入れればよかったなと思いました。
それでも50分の英語の発表は、これまでに経験したことのなかったのでいい経験になりました。
質問も発表時間内は時間がなくて受けれませんでしたが、発表終了後にいくつか頂いたので興味をもって頂けたのかなと思いました。
発表資料については、最後まで調整するのは仕方がないことだと思いますが、PDFへの反映を忘れたり、GIFのことを忘れたりしないようにしたいです。

次も機会があれば英語での発表に積極的にチャレンジできればと思います。

他のセッションについて

11日と12日は、通常セッション(30分)とチュートリアルセッション(50分)、そしてLT(6分)の3種類のセッションが行われました。
各セッションのスライドについては、以下のgithubのリポジトリに順次アップロードされると思います。

私が特に面白かったと思う発表は以下の通りです。
括弧の中は発表者の名前です。

Understanding nil (Francesc Campoy Flores)

nilについて理解を深めることのできるセッションでした。
各型におけるnilの意味、特にインタフェースのnilの話などを改めて復習できてよかったです。
またレシーバをnilにしてもメソッドが動くことを利用して、nilをうまく使う方法についても説明されていました。

Visualizing Concurrency in Go (Ivan Daniluk)

このセッションでは、ゴールーチンのビジュアライズの話がされてました。
ゴールーチンをビジュアライズすることで、ゴールーチンのリークや並列度の有効性などを視覚的に分かりやすくなるという話でした。

Inside the Map Implementation (Keith Randall)

マップがどう実装されているのかという話でした。
コアな話でしたが、面白かったです。

The Design of the Go Assembler (Rob Pike)

こちらはまだ完全に理解が追いついてないのですが、1.5で導入されたGoのアセンブラの話でした。
中間コードのようなものを吐き出して、そこから各アーキテクチャごとのバイナリを生成するというような話だったかと思います。
Go 1.5からクロスコンパイルが簡単になったのもこの機能のおかげのようです。
ビデオが公開されたらもう一度見なおしてみようと思います。

Go Mobile as the Backbone of Lantern for Android (José Carlos Nieto)

私のセッションと同じく、Go Mobileの話でした。
こちらのセッションでは主にSDKアプリの話がされていました。
LanternというサービスでどうGo Mobileを使っているかという話でした。

The Go Gopher: A Character Study (Renee French)

このセッションではGoのマスコットのGopherのャラクターデザインについて原作者自ら話すというものでした。
Gopherがどう生まれたのか、Gopherの体の仕組みやデザインのルールなどを知ることができました。
また、Goのコミュニティで描かれているGopherのイラストが紹介され、私もGopherアーティストとして紹介してもらいました(笑)
Gopherの原作者に私の描いたGopherが気に入ってもらえているようで、とても光栄です。

Hack Day

13日は、セッションが開催されず、かわりにHack Dayといういわゆるもくもく会が行われました。
いくつかテーマごとに部屋に分かれて、もくもくと手を動かすというものでした。
私は、GoBotのワークショップに参加しました。

Edisonのスターターキット(写真参照)を使ってLEDをチカチカさせたり、音をならしたりと一通りのセンサーを使ってみるというワークショップでした。
Edison上でもクロスコンパイルしたバイナリが簡単に動いて、Goのクロスコンパイルの偉大さが改めて身にしみました。
GoBotもお手軽につかえて楽しかったです。
今度はドローンの操作もやってみたいと思います。

ワークショップで使ったキット

ワークショップで使用した資料は以下のリポジトリで公開されています。

After PartyとSpeaker's Dinnerについて

1日目の夜は、お店を貸し切ってAfter Partyが行われました。
また2日目の夜は、スピーカーとカンファレンスオーガナイザー、Goチームが参加するSpeaker's Dinnerが行われました。
どちらも普段話せないような著名な方々と話す機会ができて、非常に嬉しかったです。
これだけでも十分GopherConで発表する意義があるかなと思います。

全体を通した感想

Goのみを扱っているということで内容の濃い3日間でした。
緊張と時差ボケで一部の発表があまり聞けなかったのが残念でしたが、聞けたものはどの発表も内容が濃いものばかりでした。
発表内容は、業務上で得たノウハウを基にしたものか、Goのコアな実装の話が多かったのではないかなと思います。

カンファレンスの運営という点から見ても、有料とはいえGopherConの運営はしっかりしているなと思いました。
スピーカーへ発表内容へのアドバイス、参加者に対する気配りなどが随所に見られて関心しました。

また来年もスピーカーとして参加できたら良いなと思っています。

このブログについて

KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。

おすすめ

合わせて読みたい

このブログについて

KLabのゲーム開発・運用で培われた技術や挑戦とそのノウハウを発信します。