2018年の振り返り

今年もそろそろ終わろうとしているので、2018年に学んだことをまとめておきます。 今年は、下半期での学びが濃かったです。

分岐点は、TCFMに出合ったことと、仕事のプロジェクトを変えたこと、ですね。 その中で、自分はやはり低レイヤの技術が好きなんだ、ということが自覚できたため、下半期はひたすら低レイヤ技術を楽しんでいました。

とにかく、15分でも30分でも毎日プログラミングする、という目標のもと、活動したのも良かったです。

f:id:tomo-wait-for-it-yuki:20181229073625p:plain
2018年は大草原

サマリ

2018年

  • テックリードっぽい役割で頑張った
  • TCFMとの運命の出会い
  • 低レイヤ技術に広く浅く色々手を出した
  • アウトプットを増やした
  • 毎日プログラミングした
  • Rustとの運命の出会い

2019年やりたいこと

  • アウトプットをさらに増やす
  • 低レイヤ技術の深堀り
  • 毎日プログラミングする
  • Rustの仕事を取ってくる

2018年

テックリードっぽい役割で頑張った

おしごと上半期~統合コックピットシステム~

上半期は、統合コックピットシステムの開発を継続していました。6月で私自身の希望により離脱しました。他案件との掛け持ちを合わせると2年ほどやっていたことになります。 このプロジェクトでは、Linuxユーザーランドのミドルウェアとアプリケーションを担当していました。

途中からはテックリードの役割をやっていた、と思います。チーム全体の生産性を上げるためにあれこれと動いていました。

PM兼アーキテクトとは、設計やチームメンバー育成の方針が異なり、しばしば対立しました。 目の前の成果を挙げることに注力しており、中長期的に見てチームが強くなれるような施策が考えられていないように見えました。なので、自分でやることにしました。

GitLabを中心とした開発プロセスを整備していったことで、かなり状況が改善しました。 コードレビューの導入も、GitLabを立ち上げていたので、やるだけ!でした。 C++勉強会は、GitLabプロジェクトのwikiベースで実施し、プロダクトコードの問題ある箇所に対して、wikiの内容を参照して、改善をお願いすることもありました。

色々うまくいったこと、学べたことがありました。 もうこのチームは自分が居なくても大丈夫だろうと判断したこと、技術的な興味が低レイヤに移ったこと、面白そうなRISC-V×FPGAというプロジェクトが立ち上がりそうだったこと、と様々な要因が重なった結果、統合コックピット開発からは離脱することにしました。

TCFMとの運命の出会い

おそらく5月くらいだったかと思うのですが、Turing Complete FMの存在を知りました。 なんだこれ、面白すぎる、と思って何回も聞きました。

大学ではプロセッサの研究をしていたこともあり、低レイヤへの熱が一気に再燃しました。 ここから、下半期、怒涛の低レイヤラッシュに繋がります。

低レイヤ技術に広く浅く色々手を出した

おしごと下半期~RISC-V / FPGA / Hypervisor / AGL~

下半期は小粒のプロジェクトをたくさんこなしました(半年で4案件)。低レイヤ以外のお仕事はやんわりお断りしました。

RISC-V × FPGA

かねてより一緒にお仕事したい、と思っていたFPGAのプロが、面白そうなことを始めるタイミングだったので、猛アピールして無理矢理ねじ込んでもらいました。 何したか、内容は書けません♪ でもおそらく世界で初めてのことをやったんじゃないかなぁ、と思います。

残念ながら、FPGAのプロは12月をもって退職されたので、一緒に仕事できたのは本件だけでした。

Hypervisor

組込み業界でもハイエンド寄りでは、Hypervisor技術が注目されています。 個人的には、組込みとHypervisorは相性が悪いので、果たして主流になるかな?という疑問はありますが、案件ベースでHypervisorを学ぶ機会だったので、手を挙げました。

Hypervisorとしては、Xenと組込み向けHypervisor ACRNに関わりました。

projectacrn.org

Hypervisorは学習するためのリソースが乏しいところが、少し辛かったです。 結局、最低限の知識を仕入れた後は、ソースコードを読むのが最短です。多分。

AGL (Automotive Grade Linux)

AGLと言いつつ、ほとんどAGLは関係ありません。主に新しく搭載したデバイスに対して、Linux device driverの組込みをやっていました。 順調に行けば、関わったものが、CES 2019で展示されるはずです。

アウトプットを増やした

Qiitaに投稿した記事は、24個でした。最近は少しずつ記事のクオリティを上げている、つもりです。

Qiitaに投稿した記事を辿ると、上半期は、テスト駆動開発C++のトピックが多いです。下半期は、趣味のRustネタを主に投稿していました。

アウトプットすることで、インプットが増えたり、理解が曖昧だったところを調べなおしたりするので、技術力を上げるためにもアウトプットは大事だなぁ、と実感しています。 最近、やる気のある同僚には、アウトプットのメンタリングをしています。一人は実際に踏み出してくれて、もう一人、踏み出してくれそうです。単純に仲間ができてうれしいですね。

毎日プログラミングした

子育てで忙しい、というのはあるのですが、毎日プログラミングをするように心がけました。 高い目標を掲げるとしんどいので、1日15分はやる!ということが目標でした。

1つ1つのコミットは小さいですが、病気で死んでいた日を除いて、毎日githubに何らか成果をコミットしていました。 やはりうまく習慣を作ることが大事ですね。習慣は人生を変えます。 1年前から、また数段プログラマーとしてのレベルが上がっていると思います。

Rustとの運命の出会い

きっかけは忘れてしまいました。今年の6月か7月くらいだったかと思います。 今まで、特定の言語に肩入れすることはなかったのですが、一目惚れです。

ただ、Rustを好きになれたのも、C++と正面から向き合ったおかげです。今でもC++は大好きな言語です。

その他

興味を持ったものに片っ端から手を出してみました。

仕事でx86のSoCを扱っているので、x86を少しでも理解しよう、と思ってRustでx86エミュレータを書いています。x86命令セットはお世辞にも好きになれないですが、これをなんとか作ろうとすることは、色々考えることがあって面白いです。たまに嫌になります。

OS自作にも入門しました。 まだまだ先人たちには遠く及ばないですが、コツコツやっていきたいです。

言語処理系では、Go言語でつくるインタプリタをやってみました。 低レイヤを知りたい人のためのCコンパイラ作成入門や、LLVMチュートリアルをやっています。

低レイヤを知りたい人のための Cコンパイラ作成入門

今の深層学習ブームから見るに、Domain specific architecture + Domain specific languageの組み合わせが増えるのでは?と思えるので、そこを握れるように動いていきたいです。

参加したイベント

これを見ても、やはり下半期の低レイヤ技術系が目立ちますね。

毎月1回、会社の同僚ともくもく会を開催しています。

人を理解するために、心理学のMBTIを継続して受講しています。今年は4回受講しました。

oss-gate.doorkeeper.jp

techplay.jp

kernelvm14.peatix.com

atnd.org

forcia.connpass.com

rust.connpass.com

deep-compilers.connpass.com

cppmix.connpass.com

2019年やりたいこと

Rustは完全に趣味でやっているのですが、プログラミングは取り組んだ時間がものを言う部分もあるので、やはりお仕事の時間でもRustをやりたいです。 後、人から仕事を取ってきてもらっていると、色々と動きにくいので、自分で仕事を取ってこれるようになりたいです。

そのために、Rustで1本仕事を受注する、というのが2019年で最も大きな目標になります。

後、色々と低レイヤに手を出しているのですが、全部中途半端なので、少しずつ深堀していきたいです。