本記事は、TechFeed Conference 2022の開催に際しての「基調講演」コンテンツです。
先日TechFeed公認エキスパートにもご就任頂いた「Rubyの父」まつもとゆきひろさんに、TechFeedならではの切り口でロングインタビューを敢行!
TechFeed Conferenceは、「コロナ禍に負けず、エンジニアコミュニティをまた盛り上げよう!」という趣旨で企画されました。ということで、今回はまつもとさんにRuby、コミュニティ、そしてリーダーシップについて伺ってみました。(前編ではまつもとさんの技術情報収集術、そして現在の主な関心事について存分に語っていただきました)。
まつもとゆきひろさんとエンジニアコミュニティ
– エンジニアコミュニティとはまつもとさんにとってどういう存在でしょうか。
まつもと: 難しいですね。コミュニティというのは実体がない。コミュニティという人はいないんです。あくまでも個人の集まりなわけであって。
例えば1995年にRubyを出したんですが、当時はShift JISとEUC-JPっていう二種類の文字コードしか扱えませんでした。私が日本人で、日本で使われている文字コードがその二種類だったからです。
そんなある日、メーリングリストにかなりでかいパッチが送られてきまして。吉田さんという方でいらっしゃったんですけども、このパッチを当てるとUnicode対応ができます、UTF-8対応ができます、と言うんです。
私はまさかそんなことができるとは思っていませんでした。できたら良いなと思っていたんですが、正規表現エンジンも書き換えなきゃいけないし、ものすごく大変で、私の手に余るな、と思っていたんです。そしたら私以外の人の努力でそれが実現してしまった。
Ruby 1.9から国際化のエンコーディングができるようになったのはそういう経緯です。しかもUnicodeに一度変換してから処理するという形ではなくて、元の文字コードのまま処理ができるプログラミング言語って、現在でもRubyしかありません。
絶対無理だと思っていたのに、私じゃない人が手伝ってくれたおかげでそれが実現された。これはコミュニティのおかげとも言えますし、個人の努力によるものとも言えるわけです。
– すごいエピソードです。
ソース・オブ・インスピレーションとしてのコミュニティ
まつもと: コミュニティということで言うなら、ソース・オブ・インスピレーション(インスピレーションの源泉)としての存在は非常に大きいなと思っています。
Rubyにも昔に比べてたくさんのメソッドが増えました。最初のバージョンのRubyに付いていたメソッドは、「こういうものがあるときっとみんな嬉しいよね」って思って私が作ったものなんですけど、その後は、コミュニティからのフィードバックを取り入れていったものが多いんです。
「こういうメソッドがあるとRubyのプログラミングがもっとずっと楽になるんだけど」と提案してもらい、それを検討した結果、「確かに楽になるね」って言って追加するものの割合がすごく高いんです。彼らがそういう使い方を思いついてくださらなければ、Rubyはここまで進化することはありませんでした。
– Rubyの発展にコミュニティは欠かせないと。
まつもと: Rubyのコミュニティって、結局はプログラマーの集まりなので、「ユーザーと開発者」みたいな切り分けがないんです。みんながRubyを使うユーザーであり、開発者でもある。なので、彼らを助けるにはどうしたらいいだろうかという発想になりますし、それがRuby自体の方向性を定める一助になっていると思います。
また私はRubyを作りましたが、Rubyを「広めていく」となると、私一人では難しい。
例えば「Rubyにはたくさんのライブラリ(Gem)があるから楽に開発ができる」と言われますが、そうしたライブラリを作ってくれてる人たちはもちろん私ではありません。(ライブラリをホスティングしている)ruby-gems.orgも有志が運営していますし、ドキュメントが充実しているのも他の方々のおかげ。
私がやってるのは、Rubyのコアの部分だけです。でも、Rubyを使う人たちが期待しているものっていうのはもっともっと広くて、私一人の手にはとても手に負えません。
なので、「Rubyを作っていこう、良くしていこう」っていうコミュニティの皆さんが、自分たちの労力やサーバーを提供してくれたりすることで、今のRubyがあるんだと思っています。
Rubyは、数多くのユーザとの共同作業
– Rubyとコミュニティについて、印象に残っている思い出があれば教えて下さい。
まつもと: 1999年の12月31日、2000年問題が起きるかっていうタイミングで、海外からメールが来まして。Rubyに関する本を書きたいんだけどって内容でした。会ったこともない人だったんですけど、それがいわゆる「達人プログラマー」のデビッド・トーマスでした。
で、書いてもいいよという話をしたら、そこから先半年間くらい大量にメールが来て。Rubyってこういう風に動くんだけどこれどういうこと?とか、中にはバグみたいなのもあったんですけども(笑)
そんなやり取りをしていたら、その秋には「Programming Ruby」っていう英語の本が出たんです。一年かからずに本を書くってのも凄いですけどね。
そしたら今度は「本が出たから読者の有志で集まってカンファレンスしましょう」なんて言われて、アメリカに行くことになりました。それが2001年、最初のRuby Conferenceでした。
で、カンファレンスに行くとなると、喋らないといけないじゃないですか。
– そうですね(笑)
まつもと: で、「Rubyは何が素晴らしいのか」みたいなことをキーノートで話さなきゃいけなくなりまして。うーん、と頭を悩ましているうちに、「人間を中心としたプログラミング」「プログラミングをエンジョイできるように」というコンセプトが言語化できたんです。
Rubyという言語は、様々な人のフィードバックやリクエストでだんだん出来上がってきたという経緯があります。Rubyを使ってくれた人たちとの間のインタラクションによって、Rubyの本質みたいなものの表現だったり、コンセプトができてきたっていう感覚がある
んです。
なので実際は、Rubyの良い点も含めて、数多くのユーザとの共同作業だっていうふうに私は認識しているんです。
コロナ禍とコミュニティ - マイナス面とプラス面
– この記事はTechFeed Conferenceの基調講演的な位置づけの記事として、「コロナ禍で盛り上がりが減ってしまったコミュニティを応援したい」という思いでインタビューさせていただいています。コロナ禍とコミュニティについて、まつもとさんが感じてらっしゃることを教えて下さい。
まつもと: 誰もが気づいているように、イベントはだいぶ減って、オンラインのイベントばっかりになりました。イベントの形が随分変わったという風に思います。
物理的に同じ場所にいないと、ソーシャルみたいなところは弱くなりますよね。その場に一緒にいてご飯を食べながら喋るとか、同じ興味のある人たちを集めて喋るとか、そういうソーシャル系のところがあんまりできなくなったので、それはちょっと欲しいなっていう気がします。
雑談しながら、「ちょっと最近こんなことで困ってて」とか「こんなことに興味があって」みたいな話から生まれるものもけっこうあったと思うので。それがないともったいないな、と思ってます。これがマイナス面ですね。
– プラス面もある、と。
まつもと: そうですね、やっぱり海外行くとすごい時間かかるんですよ(笑)
海外で三日間のカンファレンスに行くとすると、前後合わせて大体一週間近く潰れる。それが年間5,6回とかあると、一年間52週しかないので、ちゃんと仕事ができなくなっちゃうわけです。
「移動がない」というのは、純粋に効率だけで言うと、すごくいいとこありますよね。
せっかくいろんなテクノロジーが進歩しているので、ソーシャルはソーシャルで提供しつつ、講演とか発表みたいなものはオンラインでできる、みたいな仕組みが今後もっと充実してくるといいなというふうに思っています。
Rubyは「良い言語」。「良い」を定義するのがまつもとゆきひろの仕事
– Rubyのコミュニティが揺らぎそうだとか、縮小しそうだという危機感を感じたことはこれまでございますか?
まつもと: Rubyに関しては、そういうことを感じたことはあまりないですね。ただ、コミュニティを盛り上げたいという気持ちは常にあります。「なんか最近面白いことないよね」って言われないように、とはいつも心がけてはいます。
例えばRubyを定期リリースしている理由の一つに、「一年に一回は大きな話題を提供したい」という思いがあるんです。リリースの間隔が二年とか三年とか空いてしまったら、「なんか新しいことないし、なんかパッとしないよね」っていう話になってしまいますので。
実際、メインでRubyを作ってるコアメンバーの中では、「今年のリリースの目玉機能は何にする?」みたいなことを話し合っていて、話題が途切れないための工夫はしています。足踏みしてる感覚は好きじゃなくて、常に発展を続けていきたいんです。
– Rubyコミュニティが活発に保たれているのは、まつもとさんのリーダーシップもあると思うのですが、何か心がけてらっしゃることはあるのでしょうか?
まつもと: そうですね…
Rubyっていうのは良いプログラミング言語だと思います。自画自賛です(笑)
でも、実は「良い」って未定義な言葉なんですよね。もう一段階深く話さないと、「良いとは何か」がわからない。なので、その「『良い』を定義する」っていうのが私の仕事じゃないかな?って言う気はしています。
Rubyは「良い」。なぜ「良い」のか?どのように「良い」のか?更に「どう良くしていく」のか?
こういうことを定義するのが、私の仕事じゃないかというふうに思っています。
– ものすごく面白いです。
まつもと: 例えば毎年、数年後のRubyのイメージを示しながら、Rubyのここを改善していきましょうみたいなことを発表しているんですが、これはいわば「ビジョンを見せて旗を振る」という感じでしょうか。「ビジョン」なんて、すごく意識高い系の言葉で恐縮なんですが。
しかし、なんでこんな事してるんですかねえ。いちプログラマーなんですが。と、やおら我に返る(笑)
「難しいからやる」の旗を振る
– (笑)しかし、そのビジョンがいかに魅力的か、どう伝えるか、どういうタイミングで伝えるのか、とかも難しそうですね。
まつもと: そこは一生懸命考えますね。
例えば2014年のことですが、「Ruby 3をリリースするときには、パフォーマンスを3倍速くする」という目標を掲げたんです。全部のベンチマークではないにしても、ある種のベンチマークにおいては少なくとも3倍の高速化をしよう、と。
でもこの目標、ほぼ誰にも相談しないで決めたので、ほとんどの人は無理だろうって言ってたんです。でもJITコンパイルを入れたりとかして、2020年のRuby 3リリース時には、一部のベンチマークにおいて3倍以上のパフォーマンス改善を実現できたんですよ。
– すごい!
まつもと: その時私の頭の中にあったのは、1961年にケネディ大統領がアポロ計画を発表したときの演説です。その演説の中で彼が言っていたのが「『簡単だからやる』じゃない。難しいから月に行くんだ」と言っていたんです。で、実際に1969年の7月に、人類は初めて月に到着しました。
このように、「簡単じゃないからやる」「難しいんだけどやる」っていうふうに旗を振るようなことをするのが理想的なリーダーじゃないかな、とは思っています。こんなリーダーシップをいつも発揮できる訳じゃないんですが、できるようになれればいいなとは思ってます。
傍観では十分ではない。もう一歩前に出よう!
– 最後に、コミュニティやそこにいるエンジニアの皆さんに、伝えたいことがあれば教えて下さい。
まつもと: そうですね、まず最初にも言ったんですが、やっぱりコミュニティっていうのは大分ふんわりした言葉で、実際には個人の集まりなわけです。
で、そういう個々人が自発的に活動することが、コミュニティ全体の活力を産んでいる。
Rubyを含むほとんどのオープンソースにとってはコミュニティが必須で、コミュニティから受けているエネルギーみたいなものでドライブされているところがあると思います。そして同じことが、コミュニティに参加している個人にも言えると思うんです。
– 個人もコミュニティからパワーを得られる、と。
まつもと: 「Rubyに関わっている」ということを名刺の代わりにできている人っていうのは、私以外にもたくさんいるわけです。「Rubyはコミュニティの力の集約」と先程申し上げましたが、そのパワーをコミュニティのメンバーもまた活用してるっていう形だと言えます。
こういう関係になるためには、傍観しているだけでは十分ではありません。カンファレンス会場のどこかに座っているだけでは十分ではありません。
もう一歩前に出るとか、手を挙げるとか、そういうことをすることで、その人はコミュニティからより多くのものを得ることができるんじゃないか、すごく良いことがあるんじゃないかと思いますね。
– 情報収集からコミュニティ、リーダーシップに至るまで、様々なことを伺えて大変面白かったです。本日は、どうもありがとうございました。
前編もどうぞ:
まつもとゆきひろの技術情報収集術、そして現在の関心事を聞く - TechFeed Conference 2022スペシャルインタビュー