土曜日にGo Conference 2013 springに行ってきた。
過去のブログのエントリーを見ると2009年、おそらく最初に公開されたときにちょこっと触っただけでそれ以降は全く状況を知らない。当時は面白そうと思いつつ、動かす場があまりなさそうと思って諦めていたので時間がたって状況が改善されているかもということで再び興味を持った。
GoConは午前中はもくもくして、午後からセッションがあるというイベント。全然触ったことがない人でもGo Tourをやればいいということで参加。GoConの登録アンケートによれば60%くらいGoを書いたことがある人が登録していたらしい。イベントの場では半分ぐらいがGoを触ったことが無いと手をあげていた。2009年に触った記憶など1bitも残っていないので全然触ったことが無い人で手を挙げておいた。
モクモクとやっていたA Tour of Goメモは以下。
http://qiita.com/items/0638c0af1002647e3f7a
A Tour of Goはなかなか優れているのでGoに興味が有る人は是非やってみるといいと思う。その場でコードをいじりながら実行結果を確認できるというのがいい、あと読んでるだけじゃ頭に入ってこないので所々に演習問題が入ってくるのもいい。
半日で新しい言語の取っ掛かりがつかめるようになるのは大きい。すべての言語にこのレベルの物があればもっと武器が増えるかもしれない。といいつつ、Code Schoolとかあまり手を付けていないのでやっぱりこうやってイベントで集まって強制的に時間を作ってやるのがいいんだろうな。
午後のセッション
@tenntennさんからGo言語で作るWebアプリ。Goにはhttpパッケージなどいろいろなパッケージが用意されていてSinatraみたいにルーティングとハンドラを書いていくような感じで簡単に実装ができるという話。
@najeiraさんからGo on AppEngine。個人的にこれが一番熱い。言語として使いやすくてもやっぱり動かす環境を整えられないと魅力半減。Goのような言語でAppEngineを使えるのは大きい。ただPythonのSDKに依存していたりまだ実験中の様子、システムの一部をGoで書くとか使い分けもできるし今後に期待。
@Jxck_さんからGoroutine & Channel in Go。Goの魅力の一つにGoroutineやChannelを使った並行処理があげられる。というかこれを使いこなさないとGoを使う意味がないという感じ。GoroutineやChannelは新しいおもちゃを手に入れた感がある。
@methaneさんからGOMAXPROCS の基礎。Goroutineの実行はスレッドのよう見えるけどそういうわけじゃなくていろいろゴニョゴニョ中ではしているんだよという話。Goroutineの使い方はGo言語の肝となるわけなのでどういう処理をどれくらい並行させるかというのは大規模なシステムになると鍵になってくるのだろう。
@fumitoshi_ukaiさんからGoのどのあたりがよいか。「Goは最初気持ち悪いだけどやっているうちに好きになっていく。でもそれをうまく説明できない」というのが印象に残った。A Tour of Goやっただけでもなんとなくその気持がわかる気がしていて、使いこなすといままで面倒だったコードがすごい簡潔になるんだろうなという予感がすごいして、それがわかっていくうちに気に入るんだろう。
@moriyoshiさんよりGoでゲームをつくろう。大規模なシステムのための言語のように見えるけど、SDL系やOpenGL系のライブラリもあってやろうと思えばゲームも書けるんだよ。という話。数時間で実装されたというデモもあった。確かにGoroutineとかの並行処理があるから考え方を変えればゲームも書きやすい言語なのかもしれない。
@derekcollisonさんからApcera Case Study: The selection of the Go language。PaaSのサービスの実装にGoを選びましたよという話。以前はRubyを使っていたけどいろいろ制約もあってNode.JSかGoを選択肢で比較したけど、決まるときはあっさりGoに決まって全然問題ないよ。という流れ。印象に残ったのはGoの場合、経験のあるエンジニアを採用できないというリスクがあったけどそれがあまり問題にならなかったということ。シンプルなので理解も早いということなのだろう。ちなみに誤解を招かないように何度もRubyもNode.JSも好きだよと繰り返されていた。
セッションはいろんなバリエーションがあって面白かった。思っていた以上に言語の使いどころの幅も広い感じ。ちょっとしたコマンドラインのツールとかGoogle App Engineを使ったり試して行きたい。