Golang ことはじめ

このまえScalaに挑戦したばかりですが、ちょうど先週の土曜日に、ロンドンのGoogleオフィスでGoogle Go(Golang)の一日コースを受ける機会がありました。非常に充実した内容だったので少し紹介します。


[写真提供は講師の@enneff さんより]


講義のpdfや回答コードはここで公開されています。


「理論より実践」のコンセプトのもと、「講師による講義15分、実際に演習でプログラミングに60分」というサイクルのセッションを4回行いました。

  1. Nuts and Bolts
  2. Interfaces
  3. Concurrency with Channels
  4. Networking with RPCs

演習の題材がこれでもかというぐらいてんこ盛りです。以下のサンプルはセッション2の演習題材である、マンデブロット曲線をリアルタイムでpng形式のイメージに描画するウェッブアプリです。セッション3ではajax chatプログラム、最後のセッション4ではRPCパッケージを利用したBit TorrentモドキのP2Pイメージファイル交換プログラムとかもありました。



15分の講義なので、ほんとにさらっと流した感じです。実際に講義に出席していなくても、http://golang.jp/チュートリアルや「実践Go言語」を読めば十分自習できると思います。 ただ講義に実際に出席してよかったのは、分からないところを聞いたら、講師の方が丁寧におしえてくれたことでしょう。Golang自体はかなり言語仕様がシンプルです。InterfaceとChannelがGolangの二大目玉で、それらのコンセプト自体を理解するのはあまり難しくないのですが、それらをパッケージ(Goが提供するライブラリ群)といかに組み合わせて使いこなすかはやはり自分で手を動かしてプログラムを書いていかないと難しいでしょう。

そういう時に、Rubyirbに相当するようなインタラクティブシェルがあると、ちょちょっと構文を確認したいときに非常に便利です。スクリプト言語に比べ、コンパイラ言語はいちいちコンパイルするのが非常に面倒くさいのですが、Goはコンパイル時間が非常に早いのが売りです。

そこでgoplayというオンラインGoエディタを使うと、キーストロークごとにコンパイルし、実行結果を表示してくれます。



講義pdfにも載っているのですが、以下の手順でコース用のツールをインストールするとgoplayも一緒にインストールしてくれます。

cd $GOROOT
curl http://swtch.com/usenix/tour.tgz | gunzip | tar xf −
cd tour make install

"golang" のコマンドをタイプした後ブラウザでhttp://localhost:3999をあけると上記の画面が見えるはずです。

講義の演習は半分も終えることができなかったので、時間をかけて全て解いてみたいです。
もうすこしgolangscalaの理解が深まったら両者の比較記事でも書こうと思います。
みなさんも一度試してみてください。結構Golang楽しいです。