Coding Talk:Rubyの20年を支えたのは「フルタイムコミッターの公共性」と「書く気持ちよさ」(社内イベントレポ)

こんにちは、CTO室のくりまおです。

10月30日に「Coding Talk」というマネーフォワード社内イベントを開催しました。
「Coding Talk」とは、「コードを書く」ということをテーマに、パネリストと参加者がディスカッションをする会です。

マネーフォワードには、さまざまな技術スタックやバックグラウンドを持つエンジニアがたくさん在籍しています。
一方でエンジニアの人数が増えたことで、以前に比べるとエンジニア同士の交流が少なくなっていました。

そこで、共通のテーマで話し合える・話を聞ける機会をつくり、エンジニア同士の交流を深めてほしい、という想いでイベントを実施しました。
当日はZoom中継も含め約40人が参加しました。

登壇者

卜部昌平

2016年2月入社。フルタイムRubyコミッター。Ruby本体の改善を中心に活動。日本Rubyの会監事。

松田明

2015年1月よりマネーフォワード技術顧問。Ruby / Ruby on Railsコミッター。RubyKaigiのチーフ・オーガナイザー。

加藤拓也

2015年8月入社。経理財務プロダクト本部 本部長。VPoEも務める。

モデレーター:水戸利奈

2019年4月入社。クラウド横断本部 横断グループ。Rails Girls スタッフ。

当日の様子

まずはモデレーター水戸の音頭により参加者全員で、乾杯を行いました。

パネルディスカッションは、sli.doを使って事前に募集した質問をモデレーターの水戸が取り上げ、パネリストの3名が回答していく、という形式で進行しました。


(左:卜部、右:松田)

パネルディスカッションで取り上げた質問のうち、一部をご紹介します。

Rubyの生みの親、Matzってどんなひと?Matzとコミッターのかかわり

水戸:コミッターのお二人から見て、Matzさんってどういう方ですか?

卜部:プログラマーとしてのスキルがすごく高い人だなと。
Matzが書いたコードは素直で、デザインとしてかっこよく書かれています。
一方で、コミュニティ運営の話でいうと、自主性を発揮して関わっていくタイプではなくて、周りの人たちを協調させて上手く盛り上げていこうみたいなタイプですね。他人をどう動かすかに関してはすごく面白い人です。僕にはマネできないです。

松田:もともとRubyのリリースマネジメントはMatzひとりでやってたんですけど、リリースマネジメントがあまりにもできない、致命的にできない(笑)
「お前には任せられないから、俺にやらせろ!」ってリリースマネージャーの権限を初めてMatzから取り上げたのがここにいる卜部さんですね。(会場ざわざわ)

卜部:僕ひとりで権限取り上げたわけではないですよ。
Matzがリリースマネジメントできてないなって思っていた人は他にもいましたから(笑)
最終的にとりまとめたのが僕だっただけで。

松田:もっというと、当時大学生だった卜部さんですね。(会場さらにざわざわ)
それからMatzはリリースマネージャーをしなくなって、その後はいろんな人が担当してるんですけど、とにかくMatzにはリリースをさせない仕組みができました(笑)
だから毎年ちゃんと新しいバージョンをお届け出来てるんですよ。きっかけを作った卜部さんすごい。

Matzはそこを除くとほぼ完璧なスペックの持ち主ではないでしょうか。
Matzがやらなきゃいけないことはすごくたくさんあるし、色んなスキルも必要になるけど、しゃべりもプレゼンも面白いし、英語もできるし、テッキーなこともわかるし、かなり完璧に近いですよね。
あと僕はRuby on Rails(以下、Rails)の開発チームにも関わっているんですけど、ここもまた完璧超人に近いDHHっていうすごいリーダーがいまして。
DHHも完璧なんですけど、Matzとタイプが全然ちがくて面白いです。雑に言うと、Matzより性格悪くて、車の運転がうまかったらDHHになる感じですね(笑)

Railsが10年も続くなんて、思っていなかった(松田)

水戸:ありがとうございます。
では次の質問にいってみます。「10年スパンでのキャリア観、Rubyに賭けようと思ったきっかけを教えてほしいです。

松田:Rubyに賭けたというつもりはないんだよなあ。Railsも10年とか続くなんて思ってませんでした。
というか、人類の歴史上、15年間もメインストリームで使われ続けたフレームワークってRails以外に存在しないんですよ。だからそんな予測ができるわけがない。

Railsは初期から触ってますけど、たまたま当時一番おもしろそうだからやってただけで、「Railsで10年食ってくぞ!」とは考えていなかったです。
そうやって毎日いじっていたら「もっといじって」って言われてコミット権を与えられて、今に至ります(笑)
そういう意味では、Railsが使われ続けている理由の何%かは貢献できてるのかも。流行ってるから乗ってるだけじゃなくて、自分たちが改良を続けてるから選ばれているんだっていう自負みたいなのはちょっとぐらいはあるのかもしれません。それ言ったら卜部さんは20年スパンですよね。

卜部:Rubyがキャリアになったのはマネーフォワードに入社してからなんですよね。それまでは趣味でやっていました。
「Rubyを開発する仕事やりませんか?」と言われたときに、それが3年も4年も続くと正直思っていなかったです。
今でこそ笑い話ですけど、「その頃のマネーフォワード、これから先も続くのか?」とも思っていました(笑)
リスクヘッジもしていて、賭けたつもりは全然ないです。現在もたまたまRubyの仕事ができていて、すごくラッキーですね。

松田:えっ、Rubyに賭けようと思ったことないんですか?

卜部:賭けるとしても賭け金はraiseしていないです、なにかあっても片足は外せるようにやってきていたつもりです。

松田:賭け金はね。お金をかけずに楽しめるのがオープンソースのいいところですよね。
今のところ、Webアプリケーション開発を一番楽しく、気持ちよくやれているのがRuby、Railsであると思ってます。
なので、Webが使われてる限りはそこで培ってきた何かで潰しが利くと思うので、今は一番楽なRailsをやっときゃいいんじゃないですかね(笑)
なんて思ってたら10年、15年経ってましたけど、別に賭けたつもりはないですね。

加藤:僕はサービスを作ること自体が好きだったりするので、Rubyだと「こういうサービス作りたいな」と思った時にぱっと作れて0→1で新規立ち上げがすごくやりやすい。
ひとりでサービスインまでできちゃう、って環境がいいなって思います。
賭けようかと思ったかどうかはわかんないんですけど、「Rubyいいな」って思ったのはそれがきっかけですね。

(左:水戸、右:加藤)

言語の課題との向き合い方

水戸:ちょっと気になる質問があるので私からも質問していいですか?
Ruby言語における課題に対するアプローチってどんな感じでしょうか?
フルタイムコミッターになる前と今とで違ったりしますか?

卜部:結構明確に違いますね。
趣味でやっているときは、他人の課題を解決する必要は全くないんですよね(笑)
気が向いたら直してあげてもいいけど、基本は自分のやりたいことをやっていました。Rubyに限らず、業務の中でオープンソースの開発をしていても、業務をやっていく中で困ったところを解決する。自分自身の持っている課題意識があって、それを解決していく、ってのが最初の一歩です。

でも仕事になって、他人の課題も解決するようになりました。
実はフルタイムコミッターになる前と後で、GitHubの草の色はそんなに変わっていないんですよ。
何が変わったかと言うと、メールの量が爆発的に増えました。バグトラッカーやGitHubの人のissueにまめにapproveしたり、他の人が何をやっているかを拾ったりすることが増えました。

松田:そもそも卜部さんのようなフルタイムコミッターという働き方はすごく貴重なんですよね。
世界に4、5人ぐらいしかいないわけです。
フルタイムコミッターのみなさんは会社にお金をもらってるんで、わりとpublicな意識でやってくれているのかなと。

Ruby開発チームは基本メンバーがやりたいことをやる感じで、自由にやってますね。でも全員が自由にやっていると、誰も興味がないところは抜け落ちてしまうんですよ。わかりやすい例でいうと、みんな2.7とか3.0とか、新しいものにみんな群がるので(笑)、例えばすごい古いバージョンのRubyのメンテなんかは、お仕事として発注していたりします。

Railsチームはもうちょっとちゃんとしてて、誰が何をやるかのアサインがふわっと決まっていて、Railsコミッター20人ぐらいのうち、みんなのissueやpull requestを見てマージまでもっていく、みたいな担当が数人います。
僕は他人のPRとか一切興味がないので、自分が踏んだバグだけを直してmasterにpushしてます。他人の課題を拾いに行ったりはしません(笑)

水戸:フルタイムコミッターの人は公共性の高い意識をもってやられているんですね。

松田:そういうことだと僕は理解してます。

卜部:それも人によるかもしれないですけどね(笑)
オープンソースの開発って、「世界中に人がちらばっていて、24時間開発しています」みたいに思うかもしれないけど、実際には24時間みんなのことを統括しているプロマネとかはいないんですよ。
それぞれの人が自分のタイムゾーンで好きなことをやっているから24時間開発しているように見えるだけ。
「すごいでかいロードマップつくって頑張って開発しましょう」みたいなオープンソースプロジェクトってあんまりないです。
オープンソースは基本的に「それぞれが困っていることを自分で直す」がちょっとずつ積み重なって形が作られています。

松田:困る人が出るのはなぜかというと使われているからで、使われているものが直される傾向にありますね。
逆に言うと誰も困ってないものは使われていないということ。そこを無理にプロマネみたいな人がやらせるとかはないですね。

例えばMatzがある日「WEBRickがメンテされてないからメンテしろよー」って誰かに押し付けるとかは一切ないので。メンテされずに腐ってるってのは、誰も使っていないという事実を如実に反映しているわけですね。

Rubyだからできること、Rubyにはできないこと

卜部:どのプログラミング言語も、死ぬ気でやればその言語で実現できないことはないと思っています。
しいて言えば、Rubyはアルゴリズムに集中することがやりやすい、と昔は言われていました。
逆にRubyでやりづらいことは、自分で書いたプログラムがちゃんと動くかどうかを検証するまで時間がかかることですかね。がんばってspec書かなきゃとか。

松田:Matzが「プログラマーがハッピーになる、書いてて楽しい言語を目指してRubyを作った」ってよく言ってるじゃないですか。
Rubyができた当時、そういう設計思想、いわゆる「キメると気持ちよくなる」成分が入っているのはRubyだけだったわけですよ。

RubyじゃないとできないことのまずひとつはRailsを動かすことですね。
RubyはRailsを動かすための言語ってよく言われてますけど、Railsを動かすことのできる言語ってRubyしかないんですよ(笑)
Railsが作られて15年ぐらい経ってるんですけど、いまだにRubyでしか動かないので。

つまり、Webアプリ開発で気持ちよくなるのはたぶんRubyでしかできません。
あともうひとつは、開発チームに日本語で質問含むコミュニケーションができて、開発者に国内で会えることですね。
今この時代にRubyプログラマをやっていて、たまたまRubyと巡り会えて、日本に住んでいる、っていうのは、すごく幸せなことだなと思います。日本人が自分の母国語で一次情報にリアルタイムで触れられる、って今この時代のRubyでしかありえないんですよ。すごくないですか?マジでPythonだのJavaだのなんだのやってる場合じゃないですよね。

加藤:松田さんがおっしゃった通り、国内で開発者とお話しできる、ということはやっぱり面白いかなと思います。
Rubyの勉強会もすごくたくさんあります。東京だとふらっとどこかの勉強会に行くとひとりぐらいRubyコミッターがいたり。なにか課題があったときに相談するのがすごく簡単です。
できないこと…何ですかね?プロダクトを作っていくうえで、Rubyでできないことにフォーカスはあまりしてないですね。できることを最大限に活かしていくスタイルです。

おまけ:プログラマの優秀さに〇〇が関係している…?

松田:ちょっと気になったのでいってみましょうか、「プログラマの優秀さと髪型の自由さには関係はありますか
髪型は聞いたことないですけど、ヒゲは明確にありますね(笑)

卜部:Rubyではあんまり言われていないけど、Matzはヒゲ生やしてますね。
あとはUnixの開発者のデニス・リッチーもヒゲ生やしてました。
「すごい優秀なプログラマーの人はヒゲを生やしがち」っていうのがあって、「ヒゲの長さと優秀さは相関してるのではないか」とまことしやかに言われています。

松田:ラリー・ウォールとかね。
なので、Matzも「優秀な言語製作者になりたかったからヒゲを伸ばした」って言ってましたね。(会場笑)

(そのころSlackのイベント実況チャンネルでは、参加エンジニアたちによるこんなやりとりが…)

松田:髪型の自由さに話を戻すと、Rubyコミッターってロン毛っぽい人多いですよね。
AKRさんなんか20年くらい髪切ってないとか。

卜部:僕は別に髪切ってないわけじゃないですからね。いまの僕の髪、何ヶ月前ぐらいに切ったと思います?

水戸:では会場のみなさんにお聞きしたいと思います。

(結果、「3ヶ月前」は会場の3分の1ぐらい、「2ヶ月前」「1ヶ月前」は少しずつ手が挙がる)

松田:参考までに、僕が最後に髪切ったのは去年の3月です。(会場ざわざわ)

水戸:松田さんは1年半前に切ったということですね。
では改めてお聞きします。3ヶ月以上切ってないと思われる方?

(会場の半分ぐらい挙手)

卜部:実は今月(2019年10月)です。(会場笑)
「切ってこの長さかよ」って思われるかもですけど。でもその前切ったのは一昨年だったかな?
当時子供が小さくて、奥さんひとりに任せておいて自分が髪を切るなんてできないと思っていて。でもその間に奥さんは髪切ってるんですよ(笑)
非対称が発生して、それから1年ぐらい経って「そろそろいいんじゃない?」ってなって、今月切りました。

水戸:卜部さんが髪を切られていたの、私気づきませんでした…。

卜部:なかなか気づかないですよね、このくらいの髪の長さだと。

懇親会

たくさんの質問で盛り上がったパネルディスカッション終了後には、登壇された皆様を囲んでの懇親会を実施しました。

パネルディスカッションで取り上げきれなかった話題や、お悩み相談、今後開催される勉強会へのお誘いなどで盛り上がりました。

最後に

本記事で紹介した以外にも多くの質問がパネルディスカッションで取り上げられ、大変盛り上がる会となりました。参加者からも様々なコメントをいただきました。

(参加者のコメントを一部抜粋)

今後もマネーフォワードではイベント開催やその他施策などを通じ、プロダクトの開発促進・エンジニア組織の活性化に取り組んでまいります。

マネーフォワードでは、エンジニアを募集しています。
ご応募お待ちしています。

【採用サイトのご案内】
マネーフォワード採用サイト
Wantedly

【プロダクトのご紹介】
お金の見える化サービス 『マネーフォワード ME』 iPhone,iPad Android

ビジネス向けバックオフィス向け業務効率化ソリューション 『マネーフォワード クラウド』

おつり貯金アプリ 『しらたま』

金融商品の比較・申し込みサイト 『Money Forward Mall』

くらしの経済メディア 『MONEY PLUS』

本業に集中できる新しいオンライン融資サービス 『Money Forward BizAccel』

Pocket