2019年の振り返り

今年は以前より取り組んできた組込みシステム上でのRustプログラミングで一定の成果が出せた。
他、ブログも去年より色々書けたし、Twitterのフォロワー数も伸びてきた。

今年の成果

ブログ記事

今年はこの記事を除いて12本のブログ記事を書いた。内2本は英語版をMediumに投稿した。
去年は9本だったので、アウトプットの数は増えてきている。
また、その関連で各種LT会などに参加して、何回か発表もした。

自作OSプロジェクト

今年、一番の成果はRustで組込みOSを書くという個人プロジェクトでとりあえず基本的な形が出来上がり、それを公開できたことだ。

一応、今も機能追加を進めていて、以前のブログからだと簡易的なプロセス間通信が実装できた。
今はイーサーネットドライバの実装に着手し始めているが、まだ基本的なデバイスの初期化をようやく理解し始めたところなので、まだまだ時間はかかりそう。
去年のまとめではOLEDモジュールドライバの実装をしたいと言っていたが、それは流れてしまった。
正直、この先どういう機能を実装すべきか、というのは結構悩んでいて、というのは自分があまり実際の組込みOSに深く触れたことがないので、どういう機能がどういう構造であるべきなのか、というのがいまいち実感がわかない。
一旦、自作OSから離れて、既存の組込みOSで遊んでみる、というのはありなのかなあとぼんやりと計画はしている。

OSS活動

OSSのコントリビュートもちょくちょく始めるようにした。
組込みRust関連で気がついたことがあったときにPRを送った他、仕事でOSSのコントリビューションを業務時間内にやってもよい、と言われたのでRust製のブラウザエンジンのServoを触り始めている。

ブラウザエンジン開発はもちろん、デスクトップのGUIアプリの開発自体ほとんど経験がないので、学ぶべき内容は多い。
そのため、現状だと仕様書とにらめっこする時間の方が圧倒的に長く、今年は数行程度の簡単な修正しかできてないが、来年はもうちょっと大きめの変更もできるようになりたい。
今はIME周りの実装がまだまだ甘い、ということに気がついたのだが、これを修正するのはかなり大変そうで困っている。

競技プログラミング

競技プログラミングもちょくちょく参加するようにした。
AtCoderのBeginner Contestをメインで参加するほか、AtCoder Problemsという外部サービスに問題のおすすめ機能がついたので、そのオススメ問題を単体で解く、ということをした。

この推薦システムは結構優秀で頭の体操にはちょうどいいレベルの問題をちゃんと出してくれて、とても重宝している。
このサイトを運営してくださっている@kenkooooさんと、この推薦アルゴリズムを実装してくれた@pepsin_amylaseに圧倒的感謝。
その他、チームnegainoidoとしてICFPCに出て、一人チームとしてISUCONに出場した。
前者は去年と比べメンバーが一人欠けた状態だったものの、去年レベルの順位をとれたのでトータルとしてはよかったのかなあと思ったが、ISUCONは惨敗だったので悔しい。
SECCONはそもそも予選があることに気がつかず、参加できなかったという大失態を犯した。

心がけてたこと

仕事外でのインプット・アウトプットを増やす、というのが去年からの継続してきた目標なのだが、それに加えて心がけていたこととして

  • SNS等での反応を必要以上に狙わない
  • 「精進」はしない
    ということに実は気を配っていた。

これは仕事以外のこういう活動というのをどうしてやっているか、というと一番の理由は自分がやりたいと思った分野であるわけで、それを見失ってしまうと精神衛生上よくないと思ったから。
そう考えると、SNS等で反応を貰いたい、という気持ち自体があるのはいいのだが、その優先順位があがりすぎると、そもそもマイナーな低レイヤー系のことをやめろ、という話になりかねないし、そもそも目立つ記事を書くみたいな分野は僕が得意な分野ではない。
「精進」という言葉については、なんとなく「つらいことに耐え抜いて努力する」という感じがして、楽しくないならやめればいいわけだし、自分は「精進」といえるほど努力するタイプでもない。
あと、つらいことに耐えるというのが目的になり始めると、その先の見返りへの欲求みたいなのも自然と大きくなる気がしたので、あまりにも気がすすまないときは素直に休むことにした。なので今年は「精進」していません。
とはいっても、もうちょっと生産ペースは上げていきたいなあ。

来年について

Rustでの組込み自作OSは一定の成果は上げられたので、これについてはまとまったドキュメントを書いて、機会があれば製本して技術書典あたりで販売したいと思っている。
自作OS作成そのものについては、イーサーネットドライバ周りをある程度作り込んだら、先述のとおり一回戦略を立て直すために別の既存のプロジェクトを触るという方向になると思う。

ブログ記事も平均月一ペースで書けたので、来年はこれに加えて英語版も増やしていきたい。

なお、今年から始まったGithub Sponsoredに登録成功したので、もし自分の活動を支援してくださる方がいらっしゃるならば是非お願いします。