2020年の振り返りと来年の抱負 読みたい本

26 min read読了の目安(約24000字

GitHub contributions of last year

2020年も終わるということで、今年の振り返りをしていこうと思います。

2020年の振り返り

月ごとの振り返り

1月

何をしていたかあまり覚えていませんが、年末年始の休みは「Go言語でつくるインタプリタ」をやっていた気がします。Rust の楽しさに目覚めた頃で、Rust を使ってやっていました。

https://www.amazon.co.jp/dp/4873118220

結局、最後まで実装しきれていないのですが、それまで自分にとって完全にブラックボックスだったインタプリタの動作原理を学ぶことができ、とても有意義な学習だったと思います。
この後、6月頃からコントリビュートし始めた deno_lint というリンター開発を行う際にも、間接的にこのあたりの知識が役立っています。

2月

またしても何をしていたか覚えていませんが、ぼちぼち在宅勤務が始まった頃のような気がします。
常にペアプログラミングをする(Zoomをつなぎながら)という環境だったので、MacBook に搭載されているマイクだと心もとないかなと思い、指向性のあるUSBマイクを購入したりしました。ただ、これ以外には特にリモートワークのための設備投資を行っていないので、来年はもう少し投資をしたいと思っています。とりあえず本棚を買わないとやばい。

このくらいから、あらゆるコンサートやライブが中止になりはじめました。僕自身も、とあるライブの全国ツアーに行っていたのですが、愛知、宮城、福岡が終わった後に、残る大阪と東京公演だけ中止になるという事態でした。つらい。

3月

リモートワークになり通勤時間がなくなったことで、多少の時間的な余裕が生まれました。OSS にコントリビュートし始めたり、競プロの精進をがんばったりしていた気がします。
あと、大学院に行くことに思いを馳せていたのも3月だった気がします。英文の成績証明書の発行を郵送で申請したり(成績が悪くて絶望)、TOEFLの公式問題集を買ったりしていました。この頃の気持ちの動きは退職エントリでも少し触れました。

https://note.com/maguro_tuna/n/n5e5b56479abe#grcrW

4月

特に何もなかった気がします。社会人2年目になって、「新卒」という肩書が使えなくなりました。

5月

ゴールデンウィークは競プロのライブラリ整備や精進をがんばっていたっぽいです。ライブラリのように、汎用的に使えるデータ構造やそのインタフェースを抽象的に考えることは、Rust のスキルを向上させる上ではある程度の効果があったように思います。

出来心で転職サイトに登録しはじめたのが確かこの頃だったと思います。

6月

自分の中での今年の大きな転機その1、deno_lint へのコントリビュートを開始しはじめました。初めての PR が6月11日だった模様。

https://github.com/denoland/deno_lint/pull/147

最初は ESLint や typescript-eslint のルールを移植していくということをやっていましたが、移植が一段落した頃からは、ルールのリファクタリングとか、false positive(つまり、本来はまったく問題ないはずなのに、誤ってリンターがエラーとして報告してしまうこと)が起きるルールの修正、テストケースを充実させる、などの方向でコントリビュートを続けています。

contribution to deno_lint repo this year
deno_lint への commit 量

7月

なんやかんやあって転職をすることに決めたのが7月だったと思います。
最初は出来心で転職サイトに登録しただけだったのに、カジュアル面談からぬるりと選考に進んで、気づけばいくつか内定をいただくことができました。

8年ぶりくらいに自作PCを組みました。Rust での開発をしていると MacBookPro のファンがうるさかったため、マシンパワーのあるPCが欲しくなりました。
CPU は Ryzen9 3900X で、他のパーツはお買い得そうなものを適当に選び、OS は Manjaro にしました。
目論見通り、開発がめちゃくちゃ快適になって生産性アップに(多分)繋がりました。良い買い物でした。

引き続き OSS は deno_lint をメインにコントリビュートし続けていました。

8月

友人たちと北海道をキャンピングカーで走り回りました。学生時代に戻ったみたいで楽しかった。人生最後の青春。

deno_lint をやっているうちに、deno 本体にも変更を加える必要が出てきて、本体側に初めてコントリビュートをしました。

https://github.com/denoland/deno/pull/7197

その後もちょこちょこと本体側にコントリビュートすることができました。来年はもっと貢献できたらいいな。

contribution to deno repo this year
deno への commit 量

9月

3年くらい使ってきた iPhone X の画面が浮きはじめてきた(バッテリーの膨張?)ので、iPhone 12発売までの繋ぎのつもりで iPhone SE2 を購入しました。(結局今も SE2 を使い続けている……)

毎週日曜日に、1週間の活動報告をブログに投稿するという試みを9月27日から始めました。だんだん手抜きになっていますが、今のところ継続できています。

https://maguro.dev/weekly-report-2020-09-27/

誕生日でした。26歳になり人生に焦りを覚えはじめる。

10月

前職の最終出社でした。
有休消化期間に、2泊3日で伊豆にぼっち開発合宿をしにいきました。OSS開発がとてもはかどりました。もうちょっと長く滞在しても良かった。

shimoda view from mountain
下田の寝姿山からの景色

view from hotel's room
宿の部屋からの眺め

11月

転職先に入社しました。前職が超大企業だったのでいろいろとカルチャーのギャップを感じつつも、一番懸念していた「人間関係がうまくいくか」という心配は完全なる杞憂となり、安心しました。技術的にもエキサイティングな経験を積むことができています。

OSSコントリビュートも引き続き行っていましたが、複雑な機能を実装する際や、機能について議論するときなどに、自分の知識不足を感じる場面が増えてきました。表面的な理解だけでもコントリビュートをすることはできますが、「ただコントリビュートするだけ」ではなく、もっと上のレベルに到達したいという思いが強くなっていきました。
そのためには盤石な基礎を身につけること、これが一番の近道と考え、コンピュータサイエンスとその周辺分野について体系的な学習を開始しました。

12月

投資信託を始めました。

アドベントカレンダーに参加し、以下の5本の記事を書きました。もともとあまり外部発信が得意ではなかったのですが、アドベントカレンダーというある種の強制力によって多少は記事を書くのに慣れることができたような気がします。

https://zenn.dev/magurotuna/articles/25436752b7c32c
https://zenn.dev/magurotuna/articles/8f0ed7da6e9ab1
https://zenn.dev/magurotuna/articles/bab4db5999ebfa
https://zenn.dev/magurotuna/articles/66618f26475702
https://zenn.dev/magurotuna/articles/d5621291b8da87

今年のアドベントカレンダーは終わりましたが、外部発信は続けていけたらいいなと思います。

OSS活動のまとめ

今年1年、OSSに出した Pull Request をまとめてみました。(my-weekly-contributions という自作スクリプトをちょっと書き換えて出力しました)
長いので折りたたみにしておきます。

2020年 OSSに出した Pull Request 一覧 (計161個)

denoland/deno_lint

denoland/deno

kenkoooo/AtCoderProblems

rslint/rslint

hatoo/cargo-snippet

typescript-eslint/typescript-eslint

rust-analyzer/rust-analyzer

launchbadge/sqlx

tanakh/cargo-atcoder

2021年の抱負

コンピュータサイエンスの勉強を続ける

まず、今年の最後のほうから徐々に開始したコンピュータサイエンスの勉強は、来年も引き続きやっていきたいです。いきなり型理論の本(TaPL)を読もうとして挫折したので、大学の教養レベルからじっくりと勉強を進めていきたいと思います。一方で、コンパイラの教科書は今の知識でも読み進められそうな感じがしたので、手を動かしながら読み進めていきたいと思います。

以下、現在読み進めている本および来年読み進めていきたい本です。

compiler textbooks
コンパイラ3種の神器

英語を使えるようになる

ソフトウェアエンジニアとして生きていく中での英語の重要性というのはもはや語るまでもないと思いますが、自分の場合は OSS に積極的に関わるようになってからさらにその重要性を実感することになりました。
具体的には、英語のドキュメントを読むなどの受動的なスキルのほかにも、話す、書く、など能動的なスキルの必要性が、自分の中で増してきた形です。
日本の伝統的英語教育のおかげ(?)でリーディングに関してはできなくもない、しかしリスニング、スピーキング、ライティングはかなり怪しい、というのが現状なので、本腰を入れてこれらを磨くための勉強を始めました。
とりあえず以下の教材をやり始めています。

オンラインの英会話レッスンを受講したり、あと数値的な目標があったほうがモチベーションが続きやすい気がするので、TOEICなどの受験も検討していきたいところ。(現時点での自分の英語力がよく分からないので、数値化したいというのもある)

OSSコントリビュートを続ける

もはや生活の一部がOSSコントリビュートになりつつあるので、いまさら「抱負」として掲げなくても継続していくとは思うのですが、やはりOSSコントリビュートは続けていきたいです。OSSコントリビュートをする自分の中での一番のモチベーションは「楽しいから」という単純なものなので、楽しむ気持ちをもちながらやっていけたらいいなと。

(そういえば、Linusの自伝のタイトルも Just for Fun(邦題: それがぼくには楽しかったから) ですね!)

おわり

みなさんよいお年を!