l0w.dev

2020 年 5 月の活動まとめ


記事

Qiita: go generate のベストプラクティス

Go 言語のコード生成に関するベストプラクティスをまとめた記事です。

最初は「go generate 入門」みたいな初心者向けの内容にしようと思って書き始めたのですが、 結局また経験者を前提とした小難しい内容になってしまいました。

Go Modules などの新しい要素について調べたり検証したりなどの手間がかかったため、 公開まで思いのほか時間がかかってしまいました。 まだ書き足りないネタがあるので、今後も随時更新していこうと思います。

開発

GitHub: wtz.go

このライブラリは先月末に作ってしばらく放置していたのですが、 今月末になってようやく README.md を追加しました。 さらに前述の go generate 記事にあわせて内容を更新したりしました。 現在のバージョンは v0.0.2 となっています。

このライブラリや Windows タイムゾーンの話についても、 いずれ Qiita の記事のネタにしたいと思っています。

GitLab: raspi-debootstrap

最近思うところがあり、 Raspberry Pi のようなホビー向けのマイコンをターゲットにカスタマイズした Linux 組み込みシステムを作るプロジェクトをまた始めることにしました。

クラウド時代ですので、なるべくオンプレミスを廃し、 無料枠のあるサービスを使いつつ、必要な場合は自腹でサービスを購入してやっていく方針です。 そして SD カードに dd で書き込めるようなディスクイメージを最終生成物とした CI/CD を構築することを目標としています。 今回のプロジェクトでは GitLab CI の共有 Docker ランナーをメインに使っていきます。

とりあえず最初に作った raspi-debootstrap では、 カスタマイズのベースとなるファイルシステムを作るために Raspbian の debootstrap を行いました。 qemu-user-static を使用するといったテクニックを使っています。

競技プログラミング

Google Code Jam 2020

今年の Code Jam の Round 1 の 3 連戦は次のような成績に終わり、 結局 3 年連続の Round 2 進出 (1A 1B 1C いずれかの順位が 1500 位以内) は残念ながら果たせませんでした。

ラウンド実施時刻(JST)スコア時間順位
Round 1A2020/04/11 10:00542:33:421634
Round 1B2020/04/20 01:00132:08:244857
Round 1C2020/05/02 18:00310:49:074514

まあ忙しさにかまけて 1 年近くコンテストの出場をさぼっていたので順当な結果と言えます。 来年までにはどうにか立て直していきたいものです。

先月の記事で書いたように 今年は C++ ではなく Go で解答コードを書くようになったのですが、 VSCode のコード補完と自動フォーマットがキマってだいぶよいコーディング体験を得られているので、 今後もコンテストは可能な限り Go で出場していこうと思います。

悩ましいのは Go が使えなかったりバージョンが古かったりするコンテストプラットフォームが多いことでしょうか。 特に sort.Slice() が使えないのはわりと拷問に近いです。

今回のコンテストで書いたコードはこちらのこちらのリポジトリで公開しています。

まとめ

今月は残念ながら、勉強会などでのイベントの登壇機会がありませんでした。 また記事の投稿件数も 1 件にとどまり低調でした。 月末にじたばたする癖をはやく直したいと思います。

ほぼすべての勉強会がオンライン開催となったため、イベント参加件数だけはいつもより増えています。 遠隔地のイベントでも聴講できるようになったのはすばらしいのですが、 リアルに名刺交換したり議論したりで人脈を広げる機会は減ってしまったのが残念です。

来月は 6/3(水) のプログラミング言語Go完全入門 質問会 というイベントで LT をする予定です。 go generate について、なるべく初心者向けの話をしたいと思っています (資料はこれから作ります…)。