見出し画像

悔しさと情熱のあの夏 #fukuokark04

あの夏に消えた下書き

僕のnoteの管理画面にはこういう下書きがある。

何これ…

数ヶ月の間公開されていない。

2024年5月15日からのRubyKaigi 2024には2年ぶりに登壇者として参加した。それでも、終わった時に残った感情としては悔しさが大きかった。

その時はmruby/edge と仮に名付けた(そういえば、mrubyを勝手に名乗っていいのか、Matzや石井さんに聞き忘れてた)このプロダクトの話をしたのだが、

  • パフォーマンスをちゃんと最初に測った自分は偉いと思うが(計測にこだわる、偉い)、そもそも比較として妥当かどうか含めもうちょっとプランを考えた方がいいだろう

  • PoC部分は動いたがVMとしてサポートしてる命令がずいぶん少ない(それはRucyとかもまあそうだけど…)

  • やりたいことについても、ruby.wasm の仕様の調整やmruby/cベースでの実現可能性をちゃんと検討したのかどうか(とはいえここは、VMがちゃんとできれば、まあRustネイティブならではのユースケースにも使えるし動くからいいんじゃないですがとはできるが)

と、自分でもずいぶんツッコミどころの多いものを出してしまったと思っている…。

そうは言ってもkateiさんやyharaさんをはじめ皆前向きに面白がってくれたようで、いろいろなフィードバックや、wasm固有の開発周りの話、LLVMの話(?)を聞かせていただいた。

(本筋とは関係ないが、RubyKaigi 2024の個人的ベストシーンは、yharaさんが突然kateiさんに「僕の生成したLLVM-IRを見てくれませんかね」って呼びかけて、kateiさんが「これはなかなか綺麗なIRですね」と評論した場面だった)

それは本当にRubyKaigiならではというか得難い経験だったので改めて感謝したい!

なので上のツッコミも踏まえて真面目に完成度を上げ、パフォーマンス改善もしていけばいいのだが…。

現在に戻る。以下が今回の福岡Rubyist会議04のスライド(大きいせいかmobile safariで開けないので PDF)。

これはそもそも、ホーム戦であるところの甘えが強く出て、

  • 一度2016年からの自分のワークを振り返りたかった

  • WebAssemblyに今こだわっている理由を語りたい

2つやりたいことがあって25分で納めようとして、なんともどちらも中途半端になってしまったと思う…(Yさんにもめっちゃ言われた、直接言ってくれたYさんにはマジ感謝である)。

その上でmruby/edgeの話をしたが、諸事情もあったとはいえ上記に挙げたような問題への対応はあまり進んでいない。なんとなくcomponent model周りの調査を進めているという状態に留まり…。対応するにあたって若干の回数リリースも重ねているが、特にコアな問題にアプローチしていない。

こういう発表になってしまったことは申し訳ないところもあるし、自分の感情ファーストで恐縮だが、やはり何より悔しい。

もはや言い訳でしかないがここで若干の発表の補足をしつつ、「悔しさ」の背景をもう少し考えてみる。

「手を動かすだけ」でいいのかという話

スライドの通り2016年から割と一貫して「興味を持った技術になんとかしてRubyから触れてみる」ということをしてきた。

プログラマとしてよくあることだろうが問題を見つけて課題を解いていくのはとても好きな性質である。しかも「Rubyで動かす」を題材にすれば、RubyKaigiにも行けて、最高じゃないか…。

と思っていた。

ただ今思うと、例えばCRIUの調査は当時の同僚だったまつもとりーさんが、その時仕事で困っていることへのアドバイスとして教えてくれたもので、それをひたすら深掘りしたという感じだったりした。今思うと、当時仕事で扱っていた某システムはかなり複雑だったので、そのアーキテクチャの将来性や運用性を頭に入れた上でまつもとりーさんがこれはどうかな? と提案した技術の一つだったように思う。

そういえば、現職でもめちゃくちゃコードを書いて、運用含めミドルウェア開発の末席に座るようになって、なんというか問題を深掘りしたり実装を書き切ることが徐々にできるようにはなってきた(できるとは言っていない)。

一方でそれは非常に優れたアーキテクトである上司がいるから、彼の描いた大きな絵を助けに一つ一つの難しい問題に当たっていっただけ、という面がどうしてもある。

何が言いたいかというと、技術が解決するべき大きな課題を自分で描いてその技術を深掘りしてきたわけではなかったということだ。

大きな絵を描く

これまで、コンテナ、CRIU、eBPF等々色々いじってきたが、最近は単に低レイヤで遊ぶだけじゃなく、アーキテクトとして面白いことをしたいと思うようになってきていて。

たなべすなおさんの一連のアーキテクトシリーズを何度も読んでいたりする。非常に共感を持って読んでいる。

もちろん島田さんの訳したあの本も買った。

1/3くらい読んだ。もっと時間作ります…。

そういう中で、金子さんのRubyist会議のキーノートを聴いた。

基本的にパーサーというコンピュータサイエンスの中の、さらに言語の中の一分野の課題や実装の話を中心にしている。しかし、他の方の感想にもある通り、人間が快適にプログラミングをすることに関する、非常に大きな話につながっていく。

大きな話ではあるが、豊かな引き出しに支えられて具体的な問題と、その考察、解決実装が良いテンポで出てきて、とてもわかりやすい(という気持ちになる!)。

この大きな絵/ナラティブの描き方は、僕の中ではまさに優れたアーキテクトのそれだと思われ、とんでもなく感銘を受けた。

ソフトウェアを書いていくのならばこうありたい…。


ところで、自分の話に戻る。

何度も引用するが例えばwasmCloudのこのイラストレーションはめちゃくちゃ個人的に刺さるやつで、

https://wasmcloud.com/ トップページにあるイラスト

自分たちのコードも、誰かの書いた便利なコードも「何で書かれた」ということについてagnosticに繋がれる、尚且つブロック玩具のようにシンプルかつイージーに組み合わせられる基盤というのはテンションが上がる。

(もちろん、自分のやりたいことがstraightforwardにwasmCloudでできるとは実は思っていないが、component modelがすごくいい線を行きそうな予感があるのでひたすら掘っている)

僕自身、今でも(?)Rubyで書きたくなる場面はとても多いし、そもそもなんというか、開発者/プログラマが自分のやりたいことをなるべく制約なく自由にやれて、尚且つパフォーマンスや安全性、運用性を担保できるような仕組みを、アーキテクチャ的に実現したいみたいな気持ちがあるような気がしている。

思えばHaconiwaの時からそういうところがあった気がする。開発者のための「箱庭」を作りたいのかもしれない。

アーキテクトとして成長した先に作るものは、こういう方向性のような気がしている。

それでも、手を動かすこととの向き合い

そういうわけで、闇雲にやらずにでかい絵につなげたいぞ!とか、アーキテクトっぽい発想をするぞ! と色々考えて、例えば新技術のhogehogeが出ても一旦検証はうーん、とりあえずドキュメントざっと読も…みたいになって瞬発力が下がったような気がする…。

でも振り返ると、それは全然ダメだよなって感じがしていて、そもそも金子さんのあの発表はまさに手を動かしまくった成果であるわけで。

今まで通り興味のある技術には飛び込んでいくべきだし、ノータイムで動かしてみる気持ちを持ちたい。そもそも興味が広くないとアーキテクトとしてダメなのでは…??

手を動かすで思い出すこととしては、Happy Eyeballs v2に関するRubyコントリビュータである塩井さんのことで、彼女自身が何度か言っていることなのでここにも書くが、元々は福岡Ruby会議02に参加してコミュニティに入り、Fukuoka.rbに何度も参加していただいている経緯がある。

極めて僭越ながらFukuoka.rbが育てたエンジニアだ!という感情がある。一方で、彼女の直近の活躍は周知の通り。

ぶっちゃけ僕がRuby(MRI)に貢献してない名、コードも入っていないなというのはものすごくコンプレックスに思っていて、そういう中で塩井さんがスッと僕を抜き去り、(そりゃとんでもない努力をしたということはわかっているが)Rubyのコア部分に貢献したというのはすごく悔しいと思っている。

こういう書き方をすると流石に露悪的なんじゃないかと怒られると思う。でもインターネット文章をこじらせているので書いちゃう。塩井さんの能力、努力、集中力はとんでもないレベルだということは本気でそう思っている。

で、別に僕はOSS貢献をするためにOSSをしてるわけではなく、自分の面白いものを追いかけたり自分の納得できるソフトウェアを作る方が好きなのでそうなっているという面はあるにせよ(貢献したくないという意味ではない)、その方向性だとしても、いまだに納得できるOSSを公開していないというのはそうだと思う。

ここでコンプレックスに溺れると、マジでRubyコミッタになることが自己目的化しかねない、がそれは僕にとっては(そしてRuby開発コミュニティにとっても)全然違うので、あくまで自分の納得のいくソフトウェアにつながるよう、今はWebAssemblyを深掘りしたい。

こう書くとruby.wasmのコントリビュータはどうか?と言われそうだが、まずは自分の興味やモチベーションを軸にしたく。もちろんruby.wasmの内部にも向き合う時間は作るし、実はMRIのwasmもこういうことできたりするのかな… という単純なアイデアもあるので、ただ、まずは手を動かす。

めちゃくちゃわがままだって? だから自分の発表を「Rubyをこじらせて」にしたんじゃないですか。そういうことです。


ということで、ちゃんと手を動かした上でこじらせつつ、デカいことを考えていきたい。デカい話を松山でできるといいな。

締めとしてインターネットで知り合って半年なのに謎に親しくなったY氏と行った万作の様子を貼っておく。万作は何度でも行きたいので、一緒に行きたい人ご連絡ください。


この記事が気に入ったらサポートをしてみませんか?