2020年の振り返りと2021年の目標

Created at 2020-12-29

Updated at 2020-12-29

2020 年の振り返り

2020 年ももう終わってしまいます.早いですね.今年はいつにもまして時間の過ぎるのが早かったように思います. 一方で今年は家にいる時間が長かったので自分のやりたいことをやる時間を多くとることができました. そんな 2020 年を振り返っていこうと思います.

1 ~ 4 月

この時期は C コンパイラを書いていました. Rust が徐々に分かってきたので少し大きめのものを作りたくなったのがきっかけだったと思います. IR を介してコード生成をするように実装していたのでテストがしやすかったように記憶しています.

5 月

Twitter かなにかで見つけた京大の講義資料に沿って OCaml のインタプリタを作りました.

IoPLMaterials | Materials for the class “Implementation of Programming Languages” in Kyoto University.

メインの目標は小さな型推論器を作ることでした. 型推論のしくみはほぼ知らなかったのですが,気合を入れて講義資料を読むことでだんだんと理解することができました. 最終的には以下のようなパターンマッチの型推論まで実装できました.

let rec max l = match l with
  | x :: [] -> x
  | x :: y :: z -> if x < y then max (y :: z) else max (x :: z) in
max [1; 2; 4; 2; 5; 9; 3;];;
let rec len l = match l with
  | [] -> 0
  | x ::y -> 1 + len y in
len (3 :: 0 :: 2 :: 4 :: 8 :: []);;

さらに,ふと思い立っておじさん風の絵文字を命令列として解釈する Brainfuck インタプリタを書きました.

ikanago/ojisan_f-ck

たとえば

Rust ちゃん,おっは~ 😘😘😘😘😘😘😘😘😘✋😅 今日はもう寝ちゃったのかな 😘😘😘😘😘😘😘😘😅😘😘😘😘😘😘😘😘😘😘😘 今日も 2 時までお仕事かナ ❓🤔🤩😅😘😘😘😅😘😭😭😭😭😚🤟😅💦 金曜日,会社がお休みになったよ 😅(笑)😘😘💦😘😘😘😘😘😘😘💦💦😘😘😘💦😅😘😘😘😘😘 カラオケ 🎤 どう!💦😭😭😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘💦😅💦 お返事待ってるヨ!😘😘😘💦😚😚😚😚😚😚💦😚😚😚😚😚😚😚😚💦😅😘💦😅😘💦

というメッセージがおじさんから送られてくることがあると思いますが,これを ojisan_fuck に食わせると Hello, World! が出力されます. おじさん風のメッセージを装ってプログラミングの素養をアピールできるのはなかなかクールではないでしょうか. cargo install ojisan_fuck で簡単にインストールできるのでよければ使ってください.

6,7 月

もともとこのブログははてなでホストしていたのですが,静的サイトジェネレータで生成した Web ページを netlify でホストする方式に変更しました. 静的サイトジェネレータとしては Gatsby.js を使用しています. React をこのとき初めて触ったのですが,関数型言語みたいに宣言的に書くと Web ページが出来ていくのはおもしろかったです.

8 ~ 10 月

確か 8 月ごろにセキュリティキャンプ(セキュキャン)の応募があった気がします. セキュキャンには去年から出たいと思っていたのでエントリーしました. 今回はデータベースゼミに応募しました. データベースにそこまで深い思い入れはなかったのですが,データベースシステムを自作するという内容になんとなく惹かれて応募することにしました.

ところが頑張って応募課題をこなしエントリーしたものの落選してしまいました. そこでこのまま終わるのも後味が悪いと思ったのでひとりでデータベースシステムを作ることにしました.

データベースといえばまず RDB を思い浮かべる人が多いと思います. しかし調べていくうちに RDB は実装がかなり大変そうであることに気づいて,代わりに key-value store を実装することにしました. 今回は LSM-Tree というデータ構造で key-value store を実装しています.簡単な説明でも紙幅を取るので興味のある人はググってみてください.

11,12 月

Twitter を眺めていると僕の大学の量子コンピュータを研究している研究室がプログラミングのバイトを募集していることを知りました. もともとやっていた塾のバイトにも飽きていたので応募してみるとすんなり通ってしまいました.

僕は量子コンピュータはおろか量子力学もあまり勉強したことはなかったためついていくのは大変ですが,いまのところ楽しくやっています (なんで量子力学もやったことないのに応募したのかというと,応募要項で要求されていたスキルが C++ プログラミングと線形代数だけだったからです).

また,12 月にはイラストの練習をいきなり始めました.前々からやろうとは思っていたのですが,この記事を読んで急にモチベーションが湧いてきたのでやってみることにしました.

【練習内容公開】イラストを 100 日練習しました|都路 燕禅| note

まだまだ全然うまくはないですが,当初想定していたよりは描けていてびっくりしています(もっとぐにゃぐにゃしたような絵しか描けないと思っていた). よければ @ikanag0_art のフォローもお願いします.

2021 年の目標

さて来る 2021 年の目標です.

  • 自作言語処理系 on 自作 OS on 自作 CPU エミュ
  • 興味のある研究分野を見つける
  • 新たなインターン/バイトを見つける
  • イラスト環境をデジタルに移行する

一つ目はシステムアプリケーションを自作して全部統合するというプロジェクトです. ロマンがありますよね. さすがにひとりでやっていると寿命を迎えそうなので Twitter で呼びかけてオタクを集めたいと思っています.

二つ目はなかなか大事で,2022 年からおそらく 3 年にわたって研究をすることになるので興味のある分野をぼちぼち見つけなければなりません. 僕は興味がコロコロ変わりがちなのですが,一つくらいは年単位で取り組めるほどに興味を持てる分野があると思う(あってほしい)のでそれを見つけたいです.

三つ目の目標です. 今のバイトは塾のバイトをやめるために始めたようなところがあり,量子コンピュータに特段深い興味があるわけではありません. もっと条件がよくて自分の興味のあることに取り組めるインターンやバイトがあればチャレンジしていきたいです.

2020 年はここには書いていないことも含めていろんなものを作れたと思っています. しかしもっとうまい時間の使い方ができると思うので(Twitter を見すぎない!),その反省を生かして 2021 年はさらに大きな進捗を出したいです.