プログラミング遍歴

tanishiking
·

最初にプログラミングしようとしたのは高校3年生の頃で、独習C言語を買って読もうとした、当然挫折した。

大学1-2回生

2013年4月に京都大学工学部情報学科に入学する。数学(数理工学)がやりたかった。この時点ではプログラミングに興味はなかった。

その後プログラミングをやったのは大学1年生の(2013年9月-2014年1月)アルゴリズムとデータ構造の授業(SICPの1-2章をやるなんというかScheme入門みたいな感じだった)。この授業やSICPが教育的に良いとは思わないけれど、当時は高階関数を組み合わせてプログラムを組み立てるのがパズルみたいで楽しかった。

大学の数学が難しすぎ & プログラミングは楽しかったので数理工学コースじゃなくて計算機科学コースに進学する。

大学2年生の前半でSICPの後半をやる。相変わらず楽しく Scheme インタプリタを書きました。他の授業でCでソート関数とか書くやつあった気がする。インタプリタ作った後にプログラミング入門的な感じでソート関数実装するの普通にカリキュラムおかしい気がするね。

同期の pastak などを見て、 2014年9月くらいに飲食バイトをやめて、プログラミングのバイトしたいと思い始める。

勉強のために Windows マシンに Ubuntu を入れてみたり、集合知プログラミング を読んで、Python やクローラー・スクレイピングを勉強したり、データを SQLite に入れてデータベースみたいなのを作って遊ぶ。

2015年1月くらいにプログラミングのバイトを始める。ryota-k と会って、vimをインストールさせられたり、サーバーサイド開発やサーバー運用を教えてもらう。そこでは古いPHPアプリケーションの改修が仕事で、SQLのチューニングとかしてエンジョイする。

大学3-4回生

CAMPHOR-HOUSE に顔を出し始める。コミュニティに参加したことでプログラミングにさらに熱中していったような気がする。

PHPが読み書き難しい(実際は悪いのはPHPではなくその古いシステムの設計だが...)ことを、大学同期の yigarashi に愚痴ったところ Haskell をやれと言われて Haskell を勉強する。

2015年4月(大学三回生半期)の計算機科学実験及び演習3で small C コンパイラを書く実験があった。確か教材はSchemeかなんかだったけど、せっかくなので Haskell で Cコンパイラを書いてみる。演習3の後半はCPUを作る実験でVerilogを勉強する。難しかった(CPUのデバッグが)

2015年9月から OCaml で MinCaml インタープリタ+型推論を実装する実験をやる。Haskellの記号の多さが辛く、記号が少なくてHaskellっぽいやつないかな〜って調べてScalaと出会う。とりあえずScalaでMinCamlインタープリター作り直してScala入門成功する。

この頃(もうちょい前?)バイトを転職して Perl CGI アプリケーションの改修をやり始める。時代を逆行してるけどCGIをやったおかげでHTTPヘッダとかの理解が深まる。あと社員のPC組み立てとかさせられて楽しかった

2016年1月頃(三回生終盤)に大学院進学はやめて就職するかと決意して就職活動を始める。2016年3月頃に株式会社はてなから内定をいただく。ありがたや。

2016年4月頃から内定者バイトさせてもらう。はてなではPerlを書いたりScalaを書いたりする。PerlもScalaもやってたから上手く噛み合っててよかったね。

2017年3月、大学4年生の卒業研究ではLLVMを使ったlanguage-agnostic linterみたいなのを作る。黒歴史。査読なし学会でみんなの前でぼこぼこにされたり何でLLVMなの?LLVM使いたいだけでしょ?(図星)みたいなこと言われてトラウマになる。なんとか卒業する。

社会人(はてな時代)

2017年4月から、はてなでは、しばらくは Perl の Scala 移行の仕事をするDBマイグレーションとかが一番大変で楽しかった。

2018年3月のScalaMatsuriのOSS HackathonでOSSデビューする。この後しばらく趣味で scalastyle や scalafmt に趣味でコントリビュートする。

2019年6月ごろの ScalaDays Lausanne に参加する。そのタイミングで scalameta project のメンテナになる。OSSで出会った人と対面であったりしつつ、Metals (Scala の Language Server) にコントリビュートし始める。その後しばらくは普通に仕事(TypeScript や GCP や Scala や Go)をしながら、Scala の OSS にぼちぼちコントリビュートして生活する。

2020年3月頃、コンパイラとかIDE専門にしたいな〜と思い大学院進学を検討し、院試勉強を始める。

大学院進学

2020年9月、東京工業大学の大学院に進学する、仕事はアルバイトになった。卒業後に研究成果をひっさげてなんとかコンパイラ関連の仕事につけないかという淡い希望。(研究に関してはAIや可視化ツールによるプログラム理解の補助の研究をしようとしていたが、LLMの登場で分野が爆発しつつあるのでいったん休学して研究テーマ見直そうかと思っている。続けるかも不明)。TaPLとかやったりワークショップ論文書いたり

2021年6月-8月くらいまで GSoC で Scala3 compiler に関する仕事をする。

2021年9月頃、金がなさすぎて業務委託で仕事を始める。税金の知識がみにつく。このあたりから大学院より仕事優先になりはじめる

社会人(VirtusLab)

2022年3月頃、だめもとで ScalaDays 2019 で出会って今も繋がりのある tgodzik に連絡してみたところ、まさかのリモートで VirtusLab で OSS エンジニアとしてのポジションをもらう。

2022年9月、上司からBazel興味ない?って言われてある!って答えたらBazelエキスパートという体で知らんプロジェクトのBazel移行のリードをやることになる。Bazel自体はいいけと、チームの人はBazel嫌そうだし、上の人はBazel入れたいしで板挟みにあい疲弊する。

2023年3月Bazel移行は終わってたので、異動するか退職したいと上司に懇願する。コンパイラ本体にも興味があったのでscala-native(LLVMバックエンド)とかやりたいな〜って言ったらそっちの仕事ができることになる

2023年9月ScalaDays Madridに自費で行く。Odersky先生にWasm対応どう?って言われてぼちぼち勉強始める。2023年12月頃からWasmの調査をやり始め、2024年2月頃から Scala の WasmGC バックエンドの開発を始めた。

こうしてみるといろいろアクティブにやっとるな。