GopherCon2020を雑多に振り返る

GopherCon2020終わりました。ワークショップから最終日まで実質5日間どっぷりGoに浸って非常に楽しかったです!振り返って色々な事を雑多にまとめていきたいと思います。セッションを再度見たり、思考を整理しつつ加筆修正していくかと思います。

ワークショップについて

Serverless GoとDebugging Techniques for Goに参加しました。今回ワークショップどちらも良かったです。

Serverless Go

Serverless Goはタイトルの通りサーバレスで動くSlackアプリケーションををAWSで動かすというもので、今までなんとなく難しそうで敬遠してたものが、あ、これならできそうに変わりました。実際にサンプルアプリをハンズオンで作るのですが、まっさらな状態から20分ほどでデプロイできてしまうのに驚きました。これでなんかしらChatOPSのツールを作りたいという意欲が湧きました。

GitHubに資料も公開されています。

GitHub - jboursiquot/serverless-go-orchestration-on-aws-course: Serverless Go Orchestration on AWS Course

Debugging Techniques for Go

みっちりDelveを使いこなすというのをメインとして、それを様々な環境に設定したり、Deterministic debuggingについて説明したり、最後にちょっことpprofの話といった感じでした。Delveを作った方が講師の一人でした、すごい…。DelveについてはCLI上でやるというのがあまりイメージがつかず、printデバッグのみしかしてこなかったのですが、まずは自分の環境に中にセットアップしてみて色々試したいという意欲、使えそうというイメージが持てました。

こちらもありがたく資料が公開されており、かつ練習用のプログラム(debugme)もあり素敵です。

GitHub - jasonkeene/debugging-workshop

自分の中の一押しセッション

楽しい!業務で活かせそう!為になった!など、ワクワクして聞けたセッションをまとめます。主にこれ良かったから見た方がいいよと同僚に薦めたいものです。

一日目

・Typing [Generic] Go
genericsはまだ劇的に改善されて嬉しい!という腹落ち感を自分の中で持てないでいます。例も多く話もわかりやすかったので、generics周りを追ってない人は今の状況をさっと知るために良いのではと思います。

・The Quest for the Fastest Deployment Time
→どうやってビルドとDeployの時間を少なくしていくか。鮮やかで見てて楽しかった!k8sも触りたい!

二日目
・Common Patterns for Bounds Check Elimination
→すごいシンプルなコードに高速化の余地が残っているのがすごい!

・Building an FM Radio Station with Go
→半分以上物理的なラジオの話でしたが、最後デモで動かしたところ、これすごい!となりました。

・The Fundamentals of OpenTelemetry
→こういうトレース的なものを仕込みたいなと思っていたので参考になりました。

・Field Report: Building a Game Engine for 300 DEFCON Hackers to Smash
→ISUCONを思い返しました。システムを全部Slackにしたというのはスマートだなと思いました。聞いていて楽しかったです。

・How to Write a Self-Hosted Go Compiler from Scratch
→Go Con2019でも発表されたDQNEOさんの登壇!日本で聞いた時も心動かされましたが、それがここでも非常に称賛を持って受け入れられていて嬉しかったです。

三日目

・Functional Programming with Go
関数プログラミングって無縁だと思っていたけど、Goでもそのパラダイムが実現でき、適応すると非常に効果的なパターンになるものもあり、思っていた以上に面白いセッションでした。

・A Journey to Postgres Productivity with Go
→まさにこれが聞きたかったよというセッション。DB周りは非常に苦しめられているのでここは試したい。

・Crossing the Chasm: Go for the Next Million Users

→長期的な目線での使われる言語と使われなくなる言語の考察、現状のGoの課題、今後Gopherとして何が貢献できるのかが様々な切り口で語られる良セッション だと多います。今後必要なものの一つに、Non-English Speakingとあってその点で参加してこれを伝えることで貢献できるかもしれないと思いました。世界地図のスライドで日本のアイコンがgoconference'19 summer in Fukuokaのラーメンアイコンになっているのに注目。

その他のセッション

微妙だったセッションというわけではなく、自分の中で消化しきれてないもの、内容がマニアックすぎてわからないもの、自分の技術的興味範囲から少し外れているもの、そもそもまだ見れていないものです。あとで見返して一押しセッションに移すかもしれません。もっと理解できるものを増やしたい…。

一日目

・Write Once, Use Many: A Simple & Useful Package to Call Internal HTTP APIs
→HTTPクライアント確かに雑多になるので、参考にしたい
・Go Time Podcast
→最終日のGo Panicは楽しかったです。雑多な話を聞くには自分の英語力がまだ辛い。
・Evolving the Go Memory Manager's RAM and CPU Efficiency
・Build and Test Caching in Go
・Reordering 59 Million New York Times Publishing Assets Using Go and BadgerDB
・Untangling the Monorepo: Moving to Go Modules
・Safety Not Guaranteed - Using unsafe to syscall Windows APIs without CGO
・Implementing Faster Defers

二日目
・A Rainbow of Gophers: Building A More Diverse Community
→コードや技術とは少しかけ離れたdiversityに関する他のセッションとは異色なセッション。メッセージが何か自分の中で掴めていないので、もう一度ちゃんと見てみたい。
・Go is Not Just on Your Server, it's in Your Browser: The Story of and Introduction to Vugu (Go+WebAssembly UI library)

→Wasmも触ってみたい。
・Go Team - Ask Me Anything (AMA)
→目玉セッションのはずで、聞いていたのだけど、眠気と筋書きのなさから頭に残せてない。見返す。
・Deterministically Debugging Go Programs
・Pardon the Interruption: Loop Preemption in Go 1.14

三日目

・Go is Boring... And That's Fantastic!
・Working with Errors
→昨年のエラーのセッションと比べて、1.13で追加されたerror周りの機能をどう使うのかが整理されていたように思う。ちゃんと見返して理解したい。
・Anyone Can Be A Gopher!
・Optimizing Performance using a VM and Go Plugins
・Go Make Something Real – The Potential for Go on the Factory Floor
・করো: Translating Go to Other (Human) Languages, and Back Again

LTに挑戦しました 

www.youtube.com

How I avoid a terrible problem of database.

内容はGoCon Sendaiでやったものをブラッシュアップしてます。

Gormとの付き合い方

去年参加したとき来年はLTするぞと思ってましたが、なんとか果たすことができました!
前回発表された皆様には本当触発されてます。特に@hgsgtkさんをみて、自分も頑張ろうと思ってました。

GopherCon 2019に参加、海外カンファレンスでLT登壇した経験を振り返る - BASEプロダクトチームブログ
といっても、LTがあるのを知ったのがLTの数日前でそれまでは今回はLTないと思っていました。当初は確か5月に募集するとか書いてあった記憶がありましたが、延期されたりバーチャルになったりしたのち、自然消滅したものと思っていました…。

やるまではやはり胃が痛かったです。去年は非常にたくさん発表があったのですが、今回は時間も少なくで一人のウェイトが大きく、こんな場でこの内容でいいんだろう感に苛まれましたが、最終的にはつべこべ言わずやってしまおうと開き直りました。

やってみたら自分の想像以上にWelcomeで、びっくりしました。Discordで反応が出しやすかったのも良かったのでしょうか?自分の名前がGoなのもウケたし、朝まで起きていたのかとか、日本語でコメントをくれた方もいました。本当心温まる瞬間でした。

f:id:drunkturtle:20201116221810p:plain

こんな感じで、Gopherのみんなありがとう!やって良かった!と強く思いました。やった人を暖かく称えるというのは大事ですね。またやりたいな!と思いますもの。

今回自分にとって非常に糧となり自信になりました。そして楽しかったです。日本でもっといろいろ発表できるかたはたくさんいるかと思うので是非来年トライしてみてもらえればと思います!

参加することに価値はあるのだろうか

日本からの参加者は今回10数名だったでしょうか?少ないなと思います。母国語でないという敷居の高さ、時差、後からほぼ全てyoutubeに上がってみれる、などから参加したいという意欲を削るポイントは多いです。各セッションをみても全部が全部面白いかというと決してそうではないです。興味範囲か外れるもの、内容が濃くないもの、英語と内容いずれかもしくは両面でわけがわからないもの、等々。よく練られた書籍なりWeb教材の方の方がためになるかもしれません。

自分がわざわざ参加費を出してもらって参加する意味はあるのだろうかと始まるまでは自問自答していました。自分はそこまで技術的に世に誇る成果も出していないし、Goの最先端を追い求めている人間でもないです。

そんな事を考えつつ悶々と参加した今回のGopherConだったのですが、、、蓋を開けてみたら非常に楽しく、刺激を受けて、終わってみたらかけがえのないものとなりました。その気持ちは収まらずに何かをしたいという方向に向いて居るので十分価値があったと言えるのではないかと思います。

毎日Goの話をシャワーのように浴びて、Goに関わる人と触れ合って、Goの事をずっと考える非日常が5日間も続くわけです。今回を通して、ああこれは教育の場、議論の場、発表の場という面もありつつも、これって本質的には祭りなんじゃないかと今回感じました。

リアルタイムで見るから伝わる雰囲気もあるし、リアルタイムで貼りつくからこそあとで見ようとも思わないであろうセッションも見たりするし、リアルタイムだからこそそこにいる人となんかリンクしたりするし、それが面白いです。

去年は初めてだから楽しかったのであって、今年はそこまでではないだろうと思っていましたが今年も十分楽しめました。もっと興味を持ってくれる人が周りにも増えてみんなで楽しめるようになると良いですね。

TIPS 

 ・今回ほぼ一週間休みをとって、昼寝て夜起きて、jetlagなしで臨もうとしましたが結果としてうまくいかなかったです。どうしても変な時間に起きてしまうし、夜どうしようもなく眠くなります。太陽がなく日の光を浴びないと調整は難しいように思います。逆に戻すのにはそこまで苦労はなかったです。この点で海外カンファレンスは依然辛いですね。

・本当に聞き逃したくないセッションのために、何をすると一番目を覚めるのかを知っておくと良いのかもしれないです。自分の場合ガムやコーヒーより、するめが一番目が覚めることに気付きました。顎痛くなるんですけど。

・今回参加者はDiscord上で交流したのですが活発で面白かったです。Gamingチャンネルでamong usやっていて混じりたかった…。

・Discordだからこそ反応がダイレクトかつスピーディで面白かったです。間違いの指摘とかもさっと入ります。LTもオフラインならさっとやって終わりだったように思います。ここはonlineならではの良いところだなと思いました。

・字幕のテンポがオンラインだからか少し遅かったように思います。個人的には字幕見ていると混乱しました。

今後について 

非常に楽しみつつも技術的に触発された部分、もうちょっと勉強したいなと思った部分、今の仕事をよくするためのアイデア等々沢山得てこれからが大変です。次は長いセッションにチャレンジしたいというよりかは、今回のgophercon含めて色々とためた知見や勉強したことを活用して、今の自分の担当しているプロジェクトをより磨き上げたいという思いが強いです。あと得た知見を伝えて周りを触発できればとも思ってます。

目の前の仕事をしっかりとやって、地力をつけて、成果を出して、そして聞いた人が非常にためになって良かったと思えるセッションをする、というのを目指していきます。