2013年12月16日月曜日

Golang Cafeを開いた結果

この記事は、Go Advent Calendar 2013の16日目の記事です。
内容が技術な感じではないので、Qiitaへの投稿は控えました。

2013/10/27(日)から、毎週日曜日の夜に、「Golang Cafe」というGo言語をみっちりやる会をやることにしました。
東京では、Go研というイベントが開催されており、標準パッケージを読み進めるスタイルになっています。(目的は標準パッケージを読み、Goでの設計方法を研究する)
これを自分でもやってみようと思ったのがきっかけです。

本来は、私自身が、Go言語を使うことが少なくなってしまったのと、転職したので、職業上コードを書く機会がかなり減ってしまったので、強制的に書く時間を作ろうと思って、イベントをやることにしました。毎回、「一人でもやります」と書いているものの、一人になったことはなく、毎週2人の猛者が参加して頂いています。

ということで、3人のメンバーで毎週、勉強会をやっています。

Golang Cafeのこれまでのテーマを挙げます。

  1. How to write Go Codeの内容
  2. encoding/jsonパッケージのソースコードを読む
  3. GoroutinesとChannelsで並列処理入門
  4. database/sqlパッケージを触る
  5. osパッケージを触る
  6. text/templateパッケージを使う
  7. Goのプレゼンのプレお披露目/Go1.2の概要
  8. プレGo年会
  9. 既存言語のデザインパターンをGoで書いたら?(12/22開催予定)
という流れですすめてきました。

結果、自分自身の知識が深められた。(職業上、仕事には生かせられないけどw)
参加者のレベルがあがった。(今後、GDG中国の戦力に…)

実際、当初の目的からは活動内容が変わってきていますが、特に問題ないと思っています。ただ、会のなかで、「他の言語で書くと…」という話題が出てくる事が多いので、
標準パッケージや、実際のGoのプロダクトを読みつつ、設計を研究していく必要はありそうです。

ただ、標準パッケージの読み方にもコツがあって、reflectパッケージから読み始めた方が、色々有利な事が多いと思いました。
理由は#2の時にencoding/jsonパッケージを読もうとしましたが、中でreflectパッケージがかなり使われていて、reflectパッケージを読んでおかないとencoding/jsonパッケージに集中できないという状況が発生したからです。
ということから、reflectパッケージは早めに読んでおく方が良さそうです。

それから、osパッケージは中でsyscallパッケージを使っているので、syscallパッケージを読み進めたほうがいいですが、Windows版に関しては中身が「return -1」が連発しているという、いわゆる「サポート外」のコードが散見されますので、Windows版でソースコードを読み進めるのは現時点では、おすすめしません。
(今後も改善の余地があるんだろうか?OSの仕組みから違うような…?)

といった所で、これまでに得た事をつらつらと書いてみました。

※#golangや#gdgchugokuでTwitterに投稿するので、気が向いたら反応してください。