皆様こんにちは。ユニファCTOの赤沼です。
先日 2023/05/11 から 05/13 まで松本市で開催された RubyKaigi 2023 に参加してきました。RubyKaigi は毎回違う場所で開催され、松本での開催は2020年に予定されていたものの、COVID-19 の影響でキャンセルになってしまい、それが今回ついに松本で開催されたということで大変盛り上がりました。参加者もスポンサーのブース出展も多く盛況だったので、色々と書きたいことはありますが、長くなってしまうので今回はまつもとゆきひろさん(Matz)の基調講演について書きたいと思います。
スタートアップと共通点が多い講演内容
技術カンファレンスの多くはユーザー向けのカンファレンスであり、セッションの内容も技術的なものだけではなく開発組織やプロダクトマネジメントについての内容も多くなるところがあるかと思いますが、RubyKaigi は Ruby 言語自体の開発者向けの色が強く、その最新の話題をキャッチアップしたいエンジニアが参加するという感じで、各セッションの内容もRubyの内部実装に関するテクニカルな内容が多いことが特徴かと思います。その中にあって今回のまつもとさんの基調講演の内容は、Rubyが誕生してから30周年ということもあり、これまでを振り返ってオープンソースでの言語開発について話されていたのですが、スタートアップで事業を展開する上でも共感することがとても多い内容でした。
名前重要
ソフトウェア開発において「名前が重要」ということはよく言われるかと思います。一般的にソフトウェアの誕生日的なものはリリースされた日や情報が公開された日になることも多いですが、まつもとさんとしては形のないソフトウェアに名前をつけることで Ruby という概念が誕生するという考えで、Rubyの誕生日は Ruby という名前が決まった日とされているとのことでした。これは私としてもとてもしっくりくるものでした。また、 Ruby 以外の名前の候補として Coral や Tish というのものあったそうですが、 Ruby でなければここまで使いたいと思ってもらい、使ってもらえることもなかったのではということで、ネーミングがソフトウェアの広がりに与える影響は大きく、名前によってそのサービスが成功するかどうかある程度決まるとも話されていました。スタートアップにおいても、特に初期にまだ認知がなく、機能も多くない状況で、なんとなくでも使ってみたいと思ってもらえるかはそのサービス名が与える影響は大きいかと思います。また、社名とサービス名を同じにするか別にするかという点も、正解はありませんが各社の思想が現れるポイントかと思います。
初期の基本構成重要
RubyKaigi 2023 時点での Ruby の最新バージョンは 3.2.2 ですが、まつもとさんが手元にある最古のバージョン(0.49)を見直してみたところ、基本的な構成は現在と変わらず、ポリシーもキープされているとのことでした。ソフトウェアはハードウェアと違いあとから変更ができる点や、YAGNI原則で言われているように、実際に機能が必要になったら実装する方が良いので、最初に考え過ぎるのはよくありませんが、一方で基本的な構成はあとからおいそれと修正できないため、後々の開発に及ぼす影響が大きいです。いわゆる技術的負債になりがちなところでもあり、これもスタートアップのサービス立ち上げ時と共通のポイントだと思います。
「好きだから」で一緒にやってくれる人を探す
ソフトウェアは一人で開発するには限界があります。大きくしていくためには自分以外にも協力してくれる人が必要ですが、初期には協力に対する利益を提供できません。でも利益を提供していけるようにソフトウェアを大きくするには協力者が必要、という Chicken & Egg の問題があります。なので初期では利益を求める人ではなく、「そのソフトウェアが好きだから」という理由で一緒にやってくれる人に対してアピールし、仲間になってもらう必要があるというお話がありました。これもまさにスタートアップ立ち上げ時にメンバーを探すのと全く一緒だなと感じました。直接的な利益以外のところで面白さを感じてもらえるようにしていくのはやはり重要だと思います。
マーケティング重要
エンジニアとしては良いソフトウェアができればそれで使ってもらえる、売れると思ってしまいがちですが、実際はそんなことはなく、マーケティングでしっかり認知を得ていくことが必要というお話もありました。これもスタートアップでサービス提供をしていく中では日々思うことです。どれだけプロダクトが良くても認知してもらえなければ存在しないのと同じですし、競合との競争などにおいても実際の機能だけでなく、如何に良いイメージを持ってもらえるかで買ってもらえるかどうかが決まってしまうこともあります。そういった意味ではエンジニアもマーケティングに無関心ではいられません。
互換性重要
Ruby が 1.8 から 1.9 になった際に、エンコーディングの変更などで互換性がなくなったことで、1.8を使い続けたい人と1.9を使っていきたい人でコミュニティの分断が発生し、それはその後数年続いていたということでした。サービスを開発している側からすると古いバージョンのサポートはできるだけ早く終了して新しいバージョンに移行させたいのですが、ユーザにはそれぞれの事情があり、アップデートしたくてもできないという環境にいる人をどれだけサポートしていけるのかというのは重要です。一方でサポートするバージョンを広げればそれだけ開発コストや運用コストも掛かるため、ROIを考えるといつもそのバランスに悩むところです。
リーダーシップとビジョンが重要
まつもとさんが一人で開発していたところから、現在では多くのコミッタが関わることになっており、特に Ruby 3 x 3 のビジョンを掲げたことによってそれを実現するための様々な機能開発につながったこともあり、まつもとさんとしてはその言語をどうしていきたいかというビジョンを描き、そこに向けてリーダーシップを発揮していくことが重要と思われているということでした。確かに一緒に開発していくエンジニアとしてもその言語の未来にワクワク感を感じられるかとか、どういう方向に向かおうとしてるのかのイメージが持てるかどうかで、モチベーションや品質に影響が出てくることは想像できます。これもまさにスタートアップの事業におけるCEOや、開発組織をリードするCTOなどにも共通して求められることだと思います。
メンタルの強さ重要(?)
これは若干余談っぽくなってしまいますが、静的型付の話で DHH による RubyKaigi の数日前の下記ツイートを取り上げ、DHH がRubyへの型ヒントの追加への圧力に屈しないまつもとさんに感謝しているということでした。ですがこのツイートでは TypeScript を批判していることから(当然)炎上したのですが、DHHは炎上するとそこにガソリンを持って駆けつけるタイプだとまつもとさんは言われてまして、私も(炎上はしたくないですが)そのぐらいのメンタルの強さは欲しい物だと思いました。あとでまつもとさんと話したら、「私もそのメンタルの強さは欲しいw」と言われてました。
TypeScript sucked out much of the joy I had writing JavaScript. I’m forever grateful that @yukihiro_matz didn’t succumb to the pressure of adding similar type hints to Ruby. May we forever enjoy this beloved language without 🙏 https://t.co/KqttpLzo8B
— DHH (@dhh) 2023年5月7日
まとめ
ということで、私としては共感して頷きっぱなしの基調講演であり、この内容はエンジニアはもちろん、非エンジニアの方にも聞いて欲しい内容だなと思いました。あとでまつもとさんと話したところ、スタートアップとの共通点を感じて欲しいということもイメージされていたそうで、まさにそれを感じられた内容でした。また、大きなホールを埋め尽くす参加者と一緒に話を聞いて、その温度感を感じられるのは、オフラインならではの良さだなと改めて感じました。
ユニファでは私たちと一緒に働く仲間を募集しています!
気になる方はご検討ください!