8/9に,HDE Inc. で行われた「Go lang勉強会」で発表してきました.
pecoの作者である@lestrratさんをメインゲストとして,9人が発表を行いました.
勉強会の情報は以下のとおりです.Ustreamで録画されているので,動画で発表を見ることができます.
【イベントページ】
【togetter】
【Ustream】
私は「インタフェースの実装」という発表を行いました.
先日,Qiitaに投稿した記事を発表用にスライドにしたものです.
内容としては,Go言語においてインタフェースをしっかり理解するための基礎的な話と
「こんなのいつ使うんだ?」というようなインタフェースの応用的で黒魔術的な話です.
【発表スライド】
【Qiita記事】
他の方の発表で特に面白かったのは,@lestrratさんの発表でした.
彼がpecoやその他のプログラムをGo言語で作っていて,以下のような「ハマったポイント」の紹介をされていました.
- panicやrecoverを他の言語の例外のように使わずに,errorを使う
- 並行処理(ゴルーチンとチャネル)
- 構造体の設計方法
特に面白かったのは,構造体の設計方法で,他のクラスベースのオブジェクト志向言語のように,
型を階層的に設計するのではなく,インタフェースと埋め込みを使って型を組み合わせて再利用性を高めるという話です.
日頃感じていたGo言語らしさというプログラムがモヤっとしていて,説明できていなかったのですが,この話を聞いてしっくりしました.
errorや並行処理についても,基本的には他の言語のやり方を持ち込んで「これができる」,「あれができない」を議論するのではなく,
「Goに入ってはGoに従え」という感じでコーディングするとよいということでした.
(@lestrratさんは「Goに入ってはGoに従え」を意図せず言ってたようでした.)
なお,@lestrratさんの発表資料はYAPCの後にアップされるようです.