2018年にやったこと
ハイライト
- 所属しているTreasure DataがArmに買収され、給料が増えた
- ジョブタイトルがSenior Software Engineerになった
- Ruby 2.6のJITコンパイラを開発し、Ruby Prize 2018をいただいた
ARMに入社しました / “The Next Chapter - Treasure Data” https://t.co/f5FdgHM4wI
— k0kubun (@k0kubun) August 2, 2018
「Ruby Prize 2018」受賞者は国分崇志様です!おめでとうございます! #rubyworld pic.twitter.com/H6VYIRgPjV
— RubyWorld Conference (@RubyWorldConf) November 1, 2018
おかげ様で経済的に大分余裕ができ、結婚式や新婚旅行、奨学金繰り上げ返済などを経たものの、前年比で結構資産が増えた。
200万ほど繰上返還して奨学金完済した
— k0kubun (@k0kubun) May 28, 2018
発表
JITの話を4回、JITに関係ない発表を2回やり、あとRuby Prize受賞スピーチがあり計7回登壇した。そのうち海外での登壇は2回。
RubyConf, RubyKaigi, RubyElixirConf Taiwan, TD Tech Talk: JITの話
2年くらいずっとこれに取り組んでいるのもあり、過去にJITの話を7回やってて、来年も既に2つJITで話す予定が入っている。自分自身が飽きないよう、可能な限り毎回スライドを新作にしたり、過去に話してないネタを話すようにしているが、そろそろ聞く側が飽きてる気がするので別のネタを考えたい…。しかし「JITでRailsをX倍速くしたぞ!!」と言える日が来たら、是非一度壇上でやりたいと思っている。
年の始めにオンライン英会話をやった後、会社で英語話者ばかりのチームに入ったのもあり、5月にRubyElixirConfで話した時より11月にRubyConfで話した時の方が英語が改善したと思えたのはよかった。2年前に初めてRubyConfで話した時はほとんど資料読んでるだけだったし、成長した感じがする。
Ruby Association Grant: Rubyのベンチマーク環境の話
あまり知られていないと思うけど、今年Rubyのベンチマーク環境は一新された。具体的にはruby/rubyリポジトリのbenchmarkディレクトリは去年から今年にかけて私が開発した benchmark_driver.gem というベンチマークツールで実行されるものに移行され、既存のRubyBenchといったシステムもこれをベースに動くようになった。
何が嬉しいのかは資料に書いてある通りだけど、そもそもベンチマーク環境の整備というのは言語処理系の最適化を考えるのに比べると(私にとっては)あまり面白みがないのでお金でも貰わないとやらないと思うんだけど、その割にはとても重要な話で、Rubyアソシエーション様や協賛企業様のおかげで今回私が50万円をいただいてこれを完遂できたのはとても良かったと思う。
Rails Developers Meetup 2018: マイクロサービス化の話
2017年11月〜2018年2月くらいにかけてやっていた仕事の話。コントローラと密結合しているモデルの実装がRailsアプリとは別のリポジトリでYAMLとして管理されていて、かつそのYAMLのメンテをするチームが異なることから、そのYAMLだけAPIで動的にリリースされているという状況があった。
あるモデルに変更を加える場合、それに対応するコントローラの実装も同時に変えてリリースすれば少なくとも同じプロセス内では整合性が取れて壊れにくいのだけど、それらが独立してリリースされている上、そのYAMLに後方非互換な変更が加えられることが多く、その全てが障害に繋がっていた。「モデルだけ切り離すんじゃなくて、APIの実装として独立させた方が疎結合になって安全なんじゃない?」という発想で生まれたプロジェクト。
サービスが分散するとそれはそれでまた新たな問題を解決しないといけなくなるのだけど、上記の問題は解決したし、去年の状態に比べるとかなりマシな状態になっていると思っている。
仕事
2017年は主にRailsアプリケーションの開発をしていたが、2018年はSREチームに移りレガシーなインフラの改善を進めていた。具体的には、以下のようなことをやっていた:
- 障害のあったインスタンスの自動ローテーション、負荷の高いサービスのAutoScaling有効化
- スケールアウト時のインスタンスの起動時間短縮や安定化のためのパッケージング、Docker化
- 乱立していたデプロイ基盤の統一化
- 開発やテスト、本番用のクラスタをオンデマンドに作れるマルチクラウドな基盤の整備
僕がチームに入る前Rubyを書ける人よりPythonを書ける人の方が多かったのと、当時RubyがLambdaでサポートされていなかったのもあり、AWS Lambdaに乗せるPythonのコードを書く仕事が多かった。
弊社はSREチームも割と最近まで存在せず、創業時ごろに整備されたインフラを少数の人が片手間でメンテしつつほとんどの人はプロダクトの開発に集中してるという雰囲気だった。これはある程度の期間うまくいくけれど、組織やビジネスが大きくなると少しの負債が大きな障害や開発速度の鈍化に繋がるので、このくらいの規模・タイミングで基盤の改善に投資するのはビジネス上も効果が高いだろう、と思いながら仕事をしていた。
僕は長期的にはSREというよりSWE(ソフトウェアエンジニア)でやっていくつもりなのだけど、社内でもかなりトラフィックが多めなサービス達の負債を返済するべく足を突っ込んできた結果、色々ご迷惑もおかけしてしまったが、オペレーション上色々経験させていただけたのは良かったと思う。
なお2019年の頭からバックエンドチームに移ることになっていて、主にJavaでミドルウェアや分散システムを書く感じになると期待している。最近入った人たちの間ではKotlinが流行っている様子。
執筆
初めて執筆っぽい活動を達成した。WEB+DB PRESSの特集記事で、Ruby 2.5における処理系自体の最適化の話と、Rubyのコードの最適化の話を書かさせていただいた。
8ページだけでもものすごい労力がかかったので、今後もし本を出したくなった時の参考になった。
WEB+DB PRESS Vol.103の特集記事「Ruby最前線」で、Ruby 2.5で高速化された機能とその仕組みや、2.5で2倍高速化されたERBを題材にRubyのコードのパフォーマンスチューニング方法について書かせていただきました。よろしくお願いします!! https://t.co/FZpfkC98Rz
— k0kubun (@k0kubun) February 13, 2018
ホッテントリ
意識が高くなって英語のブログを書くようになった反動で日本語の記事は減った。スライドも含め、ブクマがついてたのはこのへん。
英語で書いた奴はこういう感じ
タイトル | claps | |
---|---|---|
1. | The method JIT compiler for Ruby 2.6 – k0kubun – Medium | 944 |
2. | Ruby 2.6 JIT - Progress and Future – k0kubun – Medium | 460 |
3. | Benchmark Driver Designed for Ruby 3x3 – k0kubun – Medium | 195 |
最初の奴は英語版と日本語版両方書いたけど、これは本当に大変だったので、両方の言語で書くというのはもうやらないと思う。適当に棲み分けてやっていこうと思う。
OSS活動
GitHubで結構芝が生えてたけど、そのうちprivateなコミット(仕事)が5000くらいで、publicなコミットは2500くらいだった。
登録してる中だけで上に8人もいるのか / 私は2018年にGitHubで7444コントリビュートし、Findy内で9位でした。月間の最大は934 (8月)、一日あたりの平均は21.1/日でした。 https://t.co/p695hkqyyM #findy #コントリビューションオブザイヤー
— k0kubun (@k0kubun) December 19, 2018
今年開発していたOSS
Star | リポジトリ |
---|---|
★349 | k0kubun/sqldef |
★70 | benchmark-driver/benchmark-driver |
新作がsqldefだけで寂しい感じ。というか、これも「このままでは今年は新作無しになってしまう!」みたいな気持ちがあって出した奴でもある。benchmark-driverもほとんど今年に完成させたようなものなのでいれておいた。
Contribution
Rubyに636コミットしていて、何人かいるフルタイムコミッターよりコミット数が多かった。JITの開発に加え、MinGWやJIT用のCIを新たに加えたり、CIを安定化させたり、ベンチマーク環境を刷新したり、といった変更をしていた。
2019年は
JITでRailsアプリが高速化できるようにしたい。そのために、JITがある他の処理系の実装を読んだりいじったりしてみようと思っている。それが落ちついたら、今知らない技術で何か新しいものを作るのをまたやっていきたい。
2019年もどうぞよろしくお願いします。