2016年を振り返って

会社は二年目に入り業務にも慣れ、ある程度まとまった仕事を任せられるようになりました。 携わっているサービスのコードに詳しくなり、リファクタリングの方向性を示して改善を進めてきました。 難しい障害も乗り越えながら、引き継いだ手綱を何とか制御できるようになってきたという所感です。

今年は18記事書きました。特に反響の大きかったエントリーは次の3つの記事でした。 内容の方向性もバラバラであまり何したいかよく分からなくなっていますね。どういう技術を学んでいくか悩んでいた一年だったと思います。ブログには書いていませんが、Vimソースコードをいじったりmrubyのコードを読み込んだりしていた時期もありました。

一年に一つ言語を学べという教えを元に次に学ぶべき言語を模索するために様々な言語を触ってみるというチャレンジに取り組んだのですが、その後とくに新しい言語を触れていないのは反省しています。 少しRustのチュートリアルを進めましたが、実際に自分で何かを作ってみるところまでは進めませんでした。 観測範囲ではRustは徐々に人気が高まっているので来年には真面目に手を付けて扱えるようになりたいものです。

最近はVM関連の関心が高まっていて、インタープリタ言語の実装を調べているところです。 ソースコードだけを読んでいるとなかなか背景の技術まで理解できなかったりするのですが、mrubyに関しては最近出版された以下の本が参考になります。

mrubyのmrb_vm_execにあるoptableあたりのコードを最初見た時は何だこれはと思ったのですが、この書籍を読んでようやく意味がわかりました。 調べてみるとVMの実装では有名なテクニックらしいです。 来年は自分で言語を実装しながら色々と学びたいと思います。

Vimは今でももちろん毎日使っていますが、プラグインを制作したいという欲は沸かなくなっています。 既存のプラグインに対するissue報告に対処しながら、リファクタリングなどをのんびりやっていました。 特に、thumbnail.vimの大幅なリファクタリングは時間がかかりました。 thumbnail.vimは自主的に作った最初のプラグインですが、そのせいでコードは複雑に絡み合っており、冗長なtry catchや難解な再帰呼び出しを前に、長い間コードに手を付けられずにいました。 calendar.vimでの設計をベースに、絡み合ったコードを丁寧に解きほぐし、何とかきれいにまとめることができました。 設計のめちゃくちゃなコードを挙動を変えずにリファクタリングするのはとても大変ですね。

来年は、興味のあるVM実装周りの知識を深めながら手を動かして実装を進めていきたいと思っています。 また、良い言語だという予感はあるもののなかなかチュートリアルレベルを抜け出せていないRustを真面目に使ってCLIツールを作ってみたいと思っています。 HaskellScala、Go、JavaScriptそしてRustもスキルセットに揃うと、多くのシーンに柔軟に技術を選択できるのではないかなと思っています。

2016年もいい年でした。技術を深め研鑽しながら来年も頑張っていきましょう。

堤京介「終わらないよ。あきらめなければ、終わらない。俺は何度でも挑戦する。」

ef - a tale of memories.