ある日 Go で reflect パッケージを使ったプログラムを書きたい! と思い立ち、となると reflect.Kind で swtich したいわけで、ありうる case 節を全部書きつくすのは大変だ、というわけで switch 文を生成する簡単なプログラムを書きました。パッケージ名と型を指定すると、その型における switch … case の候補を列挙してくれます。
普通の switch の場合:
% go-switchgen reflect.Kind
switch {
case reflect.Array:
case reflect.Bool:
...
case reflect.Uintptr:
case reflect.UnsafePointer:
}
type switch の場合:
% go-switchgen go/ast.Node
switch {
case *ast.ArrayType:
case *ast.AssignStmt:
...
case *ast.UnaryExpr:
case *ast.ValueSpec:
}
まあまあ便利そうですね。
そして今回はそのコーディング風景を録画してみました。
Goライブコーディング: go-switchgen(2倍速) - YouTube
少し前に同僚がコーディング動画を公開しているのを見て、自分でもやってみたいと思っていたところで、ちょうどいいサイズのネタを探していたこともあってのことでした。
30分くらいかかったので、2倍速にしています。あとから自分のやったことを見なおして声を当てるのは意外と難しく、あまり意味のあるコメントはつけられませんでした。利用しているパッケージの背景知識も必要になるので、題材としてはあまりよくなかったのかも。次に何しよう……と思いながらドキュメントを眺めているだけのシーンも多く、見ていて面白いコーディング動画を撮るのは一筋縄ではいかなそうです。
録画してみると自分がどんなことを考えながらコードを書いているかが分かって面白いですね(今回はかなり print デバッグしながらのコーディングでした)。あまり恥ずかしいことはできない、という心理もはたらき、エディタの設定を見直したりしていて、少し快適になりました。
# そして公開したあとに go/importer を使えばよかったことに気づき、こっそり修正しました……。
