Go Conference 2019 Autumnでの登壇・参加報告

経営企画部の松木です。ビジネスイノベーション推進室で スポーツ観戦アプリSpoLiveの開発をしています。 先日開催された日本最大のGoのカンファレンスであるGo Conference 2019 Autumn(以降、GoCon)にて発表してきましたので、発表・参加の様子を共有します。

イベントの概要


GoConは毎年春・秋に開催されている、日本最大級のGoのカンファレンスです。運営(有志)の方々が、海外から著名な方を日本に呼べるようなカンファレンスとなることを目指して開催しており、200人超の来場者・20のセッションからなります。

GoConで発表するためには、Call for Proposals(以降、CfP)へ応募をし、それが採択される必要があります。このような形式は最近のカンファレンスで多いようです。

CfP応募から発表まで

発表申し込み

発表しようとした理由は、SpoLiveチームにおいて技術選定から携わり、システム的な制約も少なく学びが多かっため、どこかで社外に向けてもアウトプットしていきたいと前から思っていたためです。Goは昨年春から学び始め、自分のプロダクトでも積極的に取り入れていた大好きな言語でした。GoConは以前、倍率が高く抽選で外れたために参加できませんでした。次回こそと思っていたところ、発表の締め切りが迫っていたことを知り、倍率関係なしに参加できる発表者として参加するべく、慌てて申し込みました。 この時点では、具体的なネタは用意できていなかったのですが、やるという気概だけは大きかったです。

友人にレビューを取り付け

締め切り駆動で進めるべく、CfPの準備よりも前に、友人にレビューしてもらう約束を取り付けました。CfPを書くこと自体が初めてだったので、最低限フォーマットを埋めて、発表内容を走り書きしたものをみてもらったところ、非常に有意義なレビューをいただきブラッシュアップすることができました。 参加者に対する自分の発表の魅力を意識して、CfPのフォーマットに合わせたものを提出する大切さを学びました。

テーマは2つ応募した

CfP応募にあたり注力した点として、テーマを2つ応募したことがあります。これは、自分の学びを最大化するためと、質のために量が必要だと考えたことが理由です。

自分は、経験から話せることは、時間をかけて整理すれば複数挙げられると思っています。大切なことは、普段の業務から良いテーマを設定すること・設定したテーマから今までの知識を整理して肉付けすることだと思っています。肉付けとは、発表のために不足している知識を再学習して補うことです。発表準備を行うことで、この再学習により自分の学びが深まりました。

また、良い発表のためにはテーマ選びが重要ですが、自分が思う一つのテーマよりも、運営の方にも見てもらいその中で良いテーマを選んでもらう方が良いテーマ選びにつながるのでは、と考えました。実際、自分の中で新規性があり現業でも深く触れているテーマが良いと思っていたのですが、結果的にはもう一方のテーマが採択されました。このことから、新規性や専門性を大事にしてしまいがちですが「そもそものカンファレンスの目的(Go言語に関連が深いもの)」「来訪者の関心が大きいもの」といった観点でテーマ検討することの大切さも知りました。

発表当日

100人くらいのホールで、20分の発表をしてきました。内容はこちらのGoにおける API Client 実装パターンです。

API Clientに関して、下記の紹介をしました。より詳細は上記資料を参照ください。

  • どのようにエラーハンドリングを行うか
    • 通信エラーがあった場合だけではなく、HTTPステータスコードを含めた確認が必要
    • レスポンスの状態に対して、リトライすべき条件など定義しておくとよい
  • APIリクエストのリトライをする際には、Exponential Backoffの概念が重要
    • APIサーバー側が捌けるクライアント数を最大化するための概念
    • GoにおけるExponential Backoffのライブラリの紹介
  • 冪等性を考えた実装が重要
  • 汎用的なAPIClientの実装例
    • request生成や、headerの共通化の実装例
  • GoにおけるJSONデコードパターン
    • 特定フィールドの遅延処理を行う方法
  • Test設計
    • Clientをmockしてビジネスロジックをtestする方法
    • E2Eのために、net/http/httptest を利用する方法

発表したことにより、予想以上に得たことが大きかったと振り返ります。今後もいろいろな挑戦をしていきたいと思いました。

  • やると決めたら、友人が協力してくれた
  • 発表駆動学習ができた
    • 普段の経験について、発表準備の過程で体系的に整理することができ、理解が深まった
    • 参加者の方から、発表に対するフィードバックも得られた
  • 自信につながった
    • 発表申し込み時点では、CfPが採択されること・20分の発表をすることの自信はまったくなかったですが、やり遂げたことで大きな自信につながりました
  • より楽しめた
    • 発表をしたことで参加者の方との会話がしやすくなり、満喫できました

面白かった発表2選

当日発表された資料は、こちらから 閲覧できるようになっています。特に面白かった発表をご紹介します。

OSS Performance Tuning Tips

資料はこちら

OSSに対してパフォーマンス改善のコントリビュートをおこなったorisanoさんの知見が詰まっていた発表でした。 計測のハードルを下げ、問題箇所を特定し、ベンチマークを書いてから改善する といった流れが大切であること、それらの具体的なノウハウを学ぶことができました。 なにより、パフォーマンスチューニングに対する熱意がとても伝わりまってきました。

go gc algorithm 101

資料はこちら

GCアルゴリズムが、Goでどのように実装されているかと、その歴史(Goのどのバージョンでどういった改善があったか)について学べました。 GCアルゴリズムの基礎から説明してもらえたのがありがたかったのと、taxioさんは新卒にも関わらず、このレベルの発表をしていることにとても刺激をうけました。

さいごに

私がバックエンドをGoで開発している スポーツ解説アプリSpoLive では、ラグビーを始めとして、他スポーツもお楽しみいただけるように日々奮闘しております。ぜひダウンロードしてご利用ください。

発表者に配布された、GoのマスコットキャラクターGopherのぬいぐるみ

© NTT Communications Corporation All Rights Reserved.