見出し画像

学生がGopherCon2019に参加してきた話

 7/24~ 7/27日までの間、アメリカのサンディエゴで開催されたGo言語の最大規模のカンファレンスGopherCon2019に参加してきました。
 本来であれば渡航費、滞在費を含めると参加するだけでもかなりの費用がかかってしまい学生の身では参加することは難しいのですが、今回は株式会社メルカリさんのBold Scholrshipという制度で渡航費、滞在費から参加費まですべて支援いただいて参加することができました。改めてありがとうございます。
※ 今後も開催予定とのことですので、関連リンクを載せておきます〜

 楽しかったこと、刺激を受けたこと、自分の力不足を感じたこと、様々な方向性で影響を受け、考えさせられました。
帰国時からからまとめているのですがなかなかまとめきれないので、伝えたいことを書き留めつつ公開して画像など随時追加していこうと思います。
(技術のアウトプットに関してはあとで別記事として書きます。)

# 1.自己紹介

 僕自身は大学生で専攻は情報学ではなく経営学です。プログラミングは小中学生の時からロボコンなどの大会に出ていたり、電子辞書改造したりとかしていたりと機会いじるのが大好きでざっくりとコンピューターの基礎概念をわかっている程度でした。(文系に進んだ話は長くなるので書きません)
もともと創作活動が好きで油絵をやっていましたが高校生の時にやめてしまったので、自分の中で新たに熱中できることを探していて色々試してみて大学生になってからのめり込んだ感じです。

 そんなこんなで個人的にRubyを書いていたのですが、就活中にGoを様々な人から勧められ好奇心で触れてみたのがきっかけです。なので実はGo歴は半年程度です。

 英語に関しては恥ずかしながらゆっくり話してもらえると聞き取れるくらいで、スピーキングは恥ずかしながらボキャブラリーが少ないので喋っている最中に詰まってしまったりとお世辞にもできるとはいえない実力でした。
後述しますがGopherCon参加時にはセッションはライブ字幕があったり、参加者の方々が優しくしてくださってだいぶ助けていただき充実して過ごすことができました。

# 2.きっかけ

 就職活動中にメルカリの話題を常々伺うことが多かったので一度どんな方々が働いているのか見てみようとmercari.goという勉強会に参加してそこでたまたま情報を得たのがきっかけです。Goを気に入り始めていて今後も書きたいなと思っていたこと、学生のうちに海外カンファレンスに参加してみたいと思っていたことが重なってダメ元で応募させていただいてどうにか選考を通りました。
 Goの勉強に関しては@tenntennさんがStepUpGoというBold Scholrshipに向けての勉強会を開催されていたので、そこに参加してGoを勉強させていただきました。

勉強会の内容は、

・goroutineによる非同期処理
・ 抽象化
・ テストの書き方

 などでしたので基本的な部分はA Tour of Goをやったり動画学習したりしてキャッチアップしていました。勉強会ののはじめにGoクイズがあったり、スカラシップ応募のためのツールのレビューをしていただいたおかげで見落としていた知識を身につけることができたので参加してよかったです。

 選考が通って参加できることが決まり嬉しかったものの、行く前は前述したとおりの英語力なので不安で結構緊張していてネガティブな感情になっていました。

# 3. ワークショップ

 初日は全日ワークショップでした。
 大学で基礎的ではありますがデータ処理をやっていたりすることと好奇心からMLとDLにNNをGoで実装するワークショップに参加して来ました。

講義の内容としてはそれぞれの

・ 概念の説明(実際のプロダクトだと何かとかも)
・どういう構造になっているか
(MLだと学習とインターフェイス部分の説明など)
・ Goで実装するならどうするか

という形式で大学の講義のように進んでいきました。
 ただ少し辛かった点としては講師の方の英語が少し早く、質問応答がワークショップ中に飛び交うので、ヒアリングに全集中しないと内容についていけず、質疑応答に関しては聞き落としたりしてしまいました。。。
また講義資料の図解がわかりやすかったので、英語が不出来な自分でも何とかついていくことができました。

 講義の最後にチームを組んでのハンズオンがありました。
お題はMachine-boxを利用したGoで実装するテキスト認識、画像認識のAIの実装かKubernatesへのMLのパイプライン実装があり僕のチームは後者を選びました。

 Kubernatesは触ったことがなかったため、周りの人に教えてもらいながら実装しました。わかりやすい単語でゆっくり話してくださったこと、「翌日のセッションは多分字幕あるから今日よりかは難しくないよ」と教えてくださったりと助けていただいたので、ここで緊張がだいぶほぐれました。

# 4.セッション

全部話すと長くなってしまうので、3個ほどピックアップします。

## Generics in go
 かなり盛り上がっていたセッションです。以前からかなり話題になっていたのでGo2のこの仕様が知りたい人は多かったはず。僕個人はGenericsを扱ったことがなかったので、テンプレートみたいなものぐらいの理解の仕方しかしておらずありがたみがわからないのですが、出されていた例は分かりやすかったです。
今回はContractという概念が以前のDraftデザインより簡潔化されていて、Goらしいシンプルな書き方ができるようになっています。

これを型パラメータのもとになる型を指定したり、型パラメータのメソッドを一覧表示したりできるそうですが、まだ詳細を理解できていないのでもう少し復習します。。
Ian Lance Taylor氏が書いた記事を載せておきます。

## GUI
 GioとScatterでiOS, Android, Mac, Windows, TVOSのGo純製のネイティブアプリをつくれるよを動かせるよというお話でした。
 ソフトウェアキーボードやポインターなど入力できるインターフェイスも用意しておりチャットアプリでのデモがありました。
 とりあえず自分の環境に落として触ってみましたが、日本語には対応していないみたいです。(文字が豆腐になります。パッケージの中身いじくればいけるかも?)

## Small is Going Big: Go on Microcontrollers

 TinyGoでバイナリサイズを小さくしてGoをArduinoなどのマイクロコントローラで動かすセッションでした。なんと親子で登壇されていて、まるで親子で漫才をしているようで今回一番笑ったセッションでした。
 Arduino上でGoのコードを動かしてLEDを点滅させたり、Gobotというロボコップみたいに改造されたGopher人形の目を光らせたり、Tello DroneをGoで制御するなどのことをやっていました。
以前から興味があって調べてはいて、その際にはガーベッジコレクションをサポートしていないようだったのですが、一部対応していたりとだいぶ速いスピードで成長していっているようです。

# 5.ウェルカムパーティー

 2日目のMSS Midwayという空母の上でウェルカムパーティーがありました。正直なところ緊張していて行くのが怖かったのです。パーティー苦手ですし。
 しかし実際に参加してみるとそれとは裏腹に会場では声をかけていただいたり、拙い英語でもコミュニケーションを図っていただいて大変ありがたい限りでした。ハイレベルな技術の話をされても答えられないなぁと思っていたのですが「どこで働いてるの?」「いや実は学生で〜」みたいな感じで当たり障りない感じから会話を広げていってくださって「このセッション面白かった」みたいな話題で話してくださったりとありがたかったです。

 特に何かしらの司会進行があるわけでもなく、バンドなどのパフォーマンスがあったり、ビリヤードなどのゲームがあったり自由な雰囲気だったので気疲れすることもなく過ごせました。

# 6.感想

 技術に関して強い人ばかり集まっていて正直ついていけるのか、英語でコミニケーションをうまく取れないのではないか緊張していたのですが、そういうわけでもなくハンズオンやワークショップ、ウェルカムパーティーにおいても、わからないところは丁寧に教えてもらえますし、英語がわからなくて困っても、簡単な単語に言い換えていただいたり、ゆっくり話していただいたりしたので思っていたよりも困ることがなかったです。
 あと今回一緒に参加したメルカリの社員の方にもワークショップの内容を共有していただいて勉強になりました。

 最期のセッションでJohnny Boursiquot氏のセッションでコミニティの話をされていたのですが、

「コミュニティ」という言葉は「技術」や「オープンソースへの貢献」を想起させるけど、人間の相互作用、アイデアの交換、あなたが取り組んでいるもの、取り組みたいものについての話、それが我々を結びつけている。

 という話をされていて。今回僕が経験した体験がまさにこのことだったのだと思いました。もちろん皆さんGoが好きだから参加して入るのですが、何か伝えたいものがあったり、作りたいものがあって、それらを今回でいうと「Go」という共通の技術の上でコミュニケーションが行われているように感じました。

# 7.最後に

 今後についてですが、まずはmercari.goでGopherConのについての報告会が行われそこで発表をする予定ですので、セッションやワークショップの内容を復習しながら準備をしようと思います。

 その後は何かしらのコミュニティに対しての貢献を開始していければと考えています。まずはもっとGoを深く使って、ブログ等でアウトプットすることから始めて、日本の勉強会で発表することを目指そうと思っています。

 こういう考えに至ったのも今回の経験を経てのことですし、もし学生の方がBold Scholrshipのことを調べていてこの記事を見ていらっしゃるなら是非参加してほしいなと思います。学生のうちにこうした経験をできたのはすごく有り難い機会だったので。

 来年は就職してすぐなので難しいかもしれませんが、英語とGoの知識をより身につけた上でまた参加したいです!


この記事が気に入ったらサポートをしてみませんか?