久しぶりのブログ更新です。 近況報告第一弾です。
Gopher道場
6月から7月頭にかけ、Gopher道場#2に通っていました。
Gopher道場はtenntennさんが講師を務める、Go初心者向けの講義企画です。「実践的なGoを体系的に学べる場」です!
GWにGoの勉強に手を付けたはいいものの、GW明けてからはロクに手を付けられていなかった自分は外部から働く強制力が欲しいと思っていたところでした。そこにconnpassでこの企画が流れてきたのをみて、すぐに応募を決めました。
応募者全員が通えるわけではなく、事前課題が課されました。 会場のキャパシティもありますし、最低限のプログラミング知識があるかどうか、何よりも全4回の講義にちゃんと出席するモチベーションがあるかどうかを見る意味があったのだと思います。
講義は下記のようなトピックで構成されていました。
- Goに触れる
- 基本構文
- 型と関数
- コマンドラインツール
- パッケージ
- 抽象化とエラー処理
- テストとテスタビリティ
- ゴルーチンとチャネル
- HTTPサーバ・クライアント
各々のトピックについて、基礎を教わりながら、「現場では実際にはこんな使い方をする」など現場感を教わりました。
各回の講義毎に宿題も出されます。第3回のゴルーチンを使った宿題がなかなか難題で、そこでペースを守れなくなった自分は第3回、第4回の宿題は遅れての提出となりました。 期日が基本一週間なのはなかなかツラい汗
濃密な1ヶ月間で、自分の中で全部を消化しきれたわけではなく、復習も必要なのですが(特にゴルーチン&チャネル)、Goに関する基本トピックを一通りさらえたのはとても良かったです。
第4回の講義の数日後にはGopher道場門下生一同の中から有志によるLT発表が行われました。 自分も発表をしました。golang.tokyoでのLTの予行練習的な内容です。 (スライドはブラッシュアップ版のgolang.tokyo LTバージョンがあるので割愛)
楽しい1ヶ月間でした。tenntennさん、そしてサポートでいつも入ってくださっていたosamingoさんに感謝です。
golang.tokyoでのLT発表
7/13に開催された golang.tokyo #16でLT発表してきました。ネタはスライスの拡張容量についてです。
実はGopher道場の第一回の講義の中でスライスの容量が増えるデモをtenntennさんがGo Playground上で実演してくださったのですが、どうも自分のローカル環境(Linux/amd64)で実行したときと挙動が違う、ということがありました。
それがどうしても気になってGoの実装を追ったところ、どうやらメモリ確保前に確保サイズの切り上げ処理が行われていることが分かりました。
この確保サイズの切り上げは、元々確保したかったメモリサイズの大小によって段階的に決まっています。
「元々確保したかったメモリサイズ」がGo Playground環境(NaCl/amd64p32)とLinux/amd64とで異なるために、挙動に差が生まれている、という感じでした。
LTではローカル環境とGo Playground環境で挙動に差があるという話は省いて「メモリ確保前に確保サイズの切り上げ処理が行われている」という点を話のメインに据えて発表させていただきました。