HDE BLOG

コードもサーバも、雲の上

Go 旋風はインドまで! ー GopherCon India 2015

こんにちは。HDE のおがわです。

つい先日、インドのベンガルールで開催された GopherCon India 2015 に参加してきました。

GopherCon India 2015

弊社 HDE は現在、新規製品・既存製品問わず Go 言語を積極的に採用してます。GopherCon India 2015 の Associate Sponsor にもなりました。

開催地はインドのベンガルール

ところで、インドのベンガルール、みなさんご存知でしょうか?インド南部カルナータカ州の都市です。

ベンガルールには日本からの直通便はなく、シンガポールやバンコクなどを経由して行きます。経路にもよるようですが、私が行ったときはシンガポール経由で片道 13 〜 15 時間程度かかりました。

私はインドには今回はじめて訪れました。インドというと蒸し暑くて、埃っぽいイメージを抱いていましたが、実際に行ってみるとベンガルールは多少埃っぽいものの、涼しく、とても過ごしやすい都市でした。現地のインド料理も美味しかったです。

f:id:bu0:20150227141327j:plain

GopherCon India 2015

GopherCon India の参加者は、スピーカーも合わせて 200 〜 300 名程度でした。

f:id:bu0:20150227142015j:plain

シングルトラックのセッション方式で、2 日間、朝 8 時頃から夕方 18 時頃まで、さまざまな発表がありました。途中、ランチやティーブレイクがあり、参加者とコミュニケーションを取れる機会も多くありました。

f:id:bu0:20150227141653j:plain (気さくに話しかけてくれるのでありがたかった。)

Session

GopherCon India では Go 言語のライブラリやツールの紹介をはじめ、広範にわたる分野での発表がありました。中には画像処理や組み込みの分野まであり、いよいよ Go 言語がさまざまなシーンで使われだしていることを肌で感じることができました。

f:id:bu0:20150227142551j:plain (いま Go は勢いがありますね。)

数ある GopherCon の発表の中でも、とりわけ印象深かったのは Francesc Campoy Flores 氏と Dave Cheney 氏のキーノートです。

Evolution of a programmer in Go - Francesc Campoy

Francesc 氏のキーノートでは、彼がこれまで世界中の Go プログラマと交流してきた経験から、Go プログラマの習熟度を以下の 5 つのフェーズに大別していました。

Phase 1 (the newcomer): You just learned the language. You’ve gone through a few tutorials or workshops, you understand basic syntax, and you can write short snippets of code.

Phase 2 (the explorer): You can write a complete program, but don’t understand some more advanced language features like channels. You haven’t yet written a large project in Go.

Phase 3 (the builder): You’re proficient in Go, you’re using Go in production to solve a specific and complete problem. You have a strong command of the common patterns and idioms in the language community. Go is a strong tool in your programming toolbelt.

Phase 4 (the expert): You understand the design choices and motivations behind the language. You grok the philosophy of simplicity and composability.

The advocate: You’re actively sharing your knowledge and understanding of the language with others. You’re a voice in the community, a participant on mailing lists and chatrooms, and you’re giving talks at conferences. Being an advocate is not really a separate stage, but a role you can fill at any of the other stages.

(GopherConIndia liveblog より引用)

キーノート中には、これらの各フェーズのプログラマにありがちなこと、やってしまいがちなことを具体例を挙げてわかりやすく解説されていました。

f:id:bu0:20150227143633j:plain (参加者には学生も多かったようです。プレゼン後の Q&A 時に積極的に質問しているのが印象的でした。)

例えば、フェーズ 2 のプログラマにありがちな話として、「自分は Go 言語でなんでもできる気がして、他の言語で書かれたコードを Go 言語に書き直してみるが、他の言語の実装パターンや流儀を転用して実装してしまうため、なんかちょっぴり歪 (いびつ) になってしまう。」など。私自身耳が痛くなるような話ですが、Go のコミュニティでよく見かける光景でもあります。また、他のフェーズにおいても、あるあるネタが満載で面白かったです。各フェーズから次のフェーズに移るためにやるべきことについても、併せて言及されていましたので、多くの GopherCon 参加者にとって有益であったのではないでしょうか。

f:id:bu0:20150227143703j:plain (インド国内には 20 以上もの多様な言語が存在しており、インド人同士でもフォーマルな場では共通の言語として英語で会話するそうです。)

キーノートの後半では、ひとつの言語を学ぶためには他の言語のデザインを学ぶことも重要である、といった主張もあり、これには感銘を受けました。

Simplicity and collaboration - Dave Cheney

Dave 氏のキーノートでは、多くのプログラミング言語が成長の過程でシンプルさを失い、複雑になってしまったこと。シンプルさを保ち続けることや、複雑になってしまってからシンプルにすることの難しさを解説されていました。

f:id:bu0:20150227142440j:plain (Go のツールチェインがチーム開発を後押しする。)

f:id:bu0:20150227141538j:plain (Dave 氏はパネルディスカッションの司会役も務めていました。)

彼のプレゼンスタイル (左手に iPad を持って牧師のようにゆっくり話す) も相まって、いまとても勢いがある Go 言語やそのコミュニティが誤った道に進まないように、警鐘を鳴らしているようにも感じられました。

おわりに

GopherCon India に参加するために、はるばるインドのベンガルールまで行ってきました。

この記事では簡単にですが、GopherCon India で印象的であった Francesc 氏と Dave 氏のキーノートについて紹介しました。両氏の発表は GopherCon India という Go 言語のカンファレンス内での発表でしたが、根っこにある考えは Go 言語に限った話ではなく、どのプログラミング言語にも適用できる普遍的な性質を持った内容であり、プログラマとしてステップアップするための足がかりを与えてくれていたように感じられました。

f:id:bu0:20150227144217j:plain

カンファレンスの 2 日間、あっという間でしたが、とても密度の濃い時間でした。現地に行って、海外のカンファレンスの雰囲気を肌で感じることができましたし、また、Go コミッタをはじめとする海外の凄腕プログラマ達との交流の機会も多々あり、たくさんの刺激も受けました。この経験は私の今後のプログラマ人生の糧となる貴重なものであったと思います。このような機会をもらえたことは大変ありがたいことですね。今後も機会を見つけ、さまざまなカンファレンスに参加していきたいと思います。