日々プロダクトに向き合うエンジニアのみなさんにヒントをお届けすべく、日本最大の電子掲示板『2ちゃんねる(現5ちゃんねる)』を立ち上げた、ひろゆきさんを迎えた本連載。国内外のプロダクトを、ひろゆきさんはどうみるのか? ひろゆきさんが開発者ならどこをブラッシュアップするのか?そんなことを、毎回話題のプロダクトを取り上げながらお届けすることでプロダクト開発で大切なことを探っていきます。
ひろゆきがRubyの父・まつもとゆきひろに聞く「弟子募集しないんですか?」
今回で3回目となるこちらの連載。1回目、2回目と若きエンジニアを論破してしまう回が続いたので「次回は論破しないひろゆきもみてみたい…」という気持ちに駆られてきた編集部一同。そこで、ひろゆきさんに聞いてみました。
ひろゆきさん、今話してみたいエンジニアっていますか?
まつもとゆきひろさんですかね。
Rubyの父!ちなみに何を聞きたいんですか?
自分が作った言語が沢山の人に使われ広がっていく感覚ってどんなだろうと思って。
(予想外に純な質問…なんだかキュンとくるな…)なるほど、がってんです。
というわけで、今回は連載の番外編。ひろゆきさんがRubyの開発者であるまつもとゆきひろさんに聞きたいことを聞いちゃいました。
ちなみに二人は「2009年に開催されたCTO協会の飲み会で一緒だった」そう。下の写真はその時のもの。15年前にしては、お二人ともそんなにビジュアル変わってないような…
自分が作った言語が広まるってどんな感覚?
(冒頭の写真が15年前だと伝えると)うは、、そんな前でしたっけ、、、
らしいです。今回は「ひろゆきさんがまつもとさんに聞いてみたいこと」がテーマです!
そうですねー。自分の作った言語が広がっていくってどんな感覚だろうっていうのは気になります。
一人の技術者としては「自分の子供が活躍してくれて嬉しい」という感覚に近いと思います。イチローに対するチチローの気持ちと言うか。
チチローですか。
Rubyは個人的な技術好奇心から誕生したものですし、「思ったより良いものができたから世間におすそ分けしよう」くらいの感覚でインターネットで公開しましたから特に野望があったわけではありません。
オープンソースソフトウェア(以下、OSS)は、広まった=売上げや収入が増えるような経済的成功は伴いませんしね。
ただ、ユーザーが増えて、コミュニティが成長すると「Rubyを好きな人」とか「Rubyで人生が(ほとんどの場合良い方向に)変わった人」とかが増えて、それはそれで嬉しいですね。
確かに。
Rubyやそのコミュニティのおかげで、私自身のスキルが伸びたり、知名度を得て仕事につながったりしたのも予想外の効果でした。
もっとも他人の人生に予想以上に大きな影響を与えてしまうことは怖いことでもありますが。
やっぱりそこは怖さもあるんですね。
それとは別に、Rubyが広まるにつれ、「社会的責任」などを押し付けようとする人が多いのにはうんざりしています。
OSSは無保証のライセンスを付け、無償で自由に使ってもらっているものなのに。責任や保証を求める人が多いのは驚きです。
もしユーザーに利用者の責任を伝えるとしたら、どんなことを伝えますか?
「無保証」です。OSSにそもそも責任などありませんから。責任がほしければ、別途有償で対応してくれるところを探すしかないですね。
開発言語って一つでよくない?
ちなみに、プログラム言語の多様性って必要ですかね?
多様性…ですか?
「全部C++とかpythonでいいじゃないすか?」って言われたらまつもとさんはなんて答えるんだろーと思って。
世界中の人が一つの言葉を喋った方が便利じゃんというバベルの塔にも通ずる話で…
必要か必要でないかといえば、必要ではないですね。
えっ…
ただ、現状たくさんある言語の多様性の解消は現実的ではないと思います。
プログラミング言語の世界では、チューリング完全という性質を持つ言語ではありとあらゆるアルゴリズムが記述可能であることが証明されています。
ということは、例えばC++で記述できるプログラムは原理的にはRubyなりPythonなりでも記述できるわけですね。だから、多様性の排除あるいは言語の統一は原理的には可能です。
なるほど。
しかし、これはあくまでも原理的な話。実際に統一しようとすると困難が立ちはだかります。
具体的に知りたいです。
最初の困難は、人間の心理的抵抗です。多くの人は今使っている言語に執着して、言語間の移行を好まない傾向があります。「今まで習ってきたことを捨てて、新しいものに移れ」と言われて素直に従う人ばかりではないですよね。
第2の困難は、言語の特質です。原理的には可能と言っても、言語毎に違いや得意・不得意があります。統一すれば、不得意な部分もひとつの言語で記述する必要があります。それは結果的に生産性を下げることになり、本末転倒です。
うぅ、、、想像できます。
じゃあ、不得意のない万能言語を作ればいい、とか?
それもなかなか簡単ではありません。過去にそのような言語を作ろうという試みはありましたが(PL/IとかAdaとか)、いずれもうまくいっていません。結局、また別の言語ができて多様性が増加する結果に終わってしまっていますね。
試みはあったんですね。
第3の困難は、資産です。プログラミング言語は言語だけで成立するわけではなく、その言語に伴うライブラリ、フレームワーク、ノウハウ、コミュニティなどの「資産」があってはじめて価値があります。
例えば、Ruby on Railsやたくさんのライブラリの存在がなかったら、誰もRubyを選ばないかもしれません。
あーなるほど。
よその言語に移ったときには、今まで便利に使っていたそれらの資産を失うか、再構築するなどの苦労が発生します。今使っている言語で幸せな人にとっては、多様性の除去は余計な苦労を発生させるだけなんです。
英語で苦労したりするときに「世界中の人が一つの言葉を喋ったほうが便利じゃん」とは必ず思うことなのですが、実際に統一しようとすると困難なことだらけです。
エスペラントも成功しているとは言い難いですし。それと同じようにプログラミング言語の統一も困難じゃないでしょうか。
感情的には難しいのは分かります。ただ、AppleとGoogleがスマホアプリを書ける言語を統一して「他の言語のアプリは審査を通しません」とかやると可能なのかなぁ、、と思ったり、、
スマホアプリの世界は、AndroidはJava(またはKotlinなどのJVM言語)、iOSはSwift(またはObjective-C)で既にある程度統一していますね。
それでも、少数派ですが、それ以外の言語を使う人はいなくなっていませんし、スマホアプリ以外の世界ではいまだに数多くの言語が使われていて減る傾向はありません。実際、Rubyを使ってiOSアプリを開発している人もいます。
「感情的に難しい」とおっしゃったのは慧眼で、ソフトウェア開発では結局、純粋技術的な理由だけではなく、好き嫌いなどの情緒的な要素は無視できないのです。
情緒的な要素ですか。
結局は人間が開発しているからなんですかね。興味深いのは人間は「言語を統一したい欲」と「自分の言語に固執したい欲」の両方を同時に持つ点ですね。そして、それぞれの人が別々の「自分の言語」を持つ以上、統一のほうがうまくいかないみたいです。
私が日本語話者だからといって「世界の言語を日本語で統一しよう」と叫んでも誰も本気で相手にしないのと構図は似ているかもしれません。
人間の言語の多様性は近年減少しているようですから、何十年あるいは何百年もかければプログラミング言語も少しは多様性が減る未来があるかもしれません。
言語の方向性や哲学で、判断が難しいことってありますか?
Rubyは複数のコミッターがいると思いますが、言語の方向性や哲学とかで、判断難しいことってあったりしますか?
OSだと、モノリシックカーネルとマイクロカーネルでどちらに進むか?とか、正解があるわけではない分かれ道が、結構あるのかなぁ、、と。
言語デザインや方向性、哲学などに関しては原則として私が決めています。間違えたときの責めも私が引き受けます。
へぇ~。
もちろんいろいろな意見を聞きますが、最終判断は私がしますし、コミュニティとしてもそれを尊重してもらっています。いわゆる「優しい独裁者」モデルですね。
全部まつもとさんが決めてるんですね。失敗したなという決断とかってあるんでしょうか?
失敗した判断といえば、Perlの真似をしすぎた点ですね。Rubyを最初に設計していた頃はPerl言語の全盛期で、RubyのデザインではPerlをだいぶ参考にしました。ですが、ちょっとやりすぎてプログラムが読みにくくなってるところがあります。
もうちょっとキレイにデザインできたような気がします。あとはThreadの導入ですね。当時はまだコンピューターのマルチコア化が行われていなかったので、シングルコア前提で設計してしまいました。これは良くなかったなあと反省しています。
「優しい独裁者」モデルで不都合とかないですか?
ありますよ。私は永遠には生きられない、ということです。
後継者どうする問題ですね。
これには頭を悩ませています。なかなか「まつもとに代わってやる、下剋上だ」という人はいないんですよねえ。
そういう課題にぶつかって、委員会方式に移行した言語もありますよね?
ありますね。Rubyもそうせざるを得ないかなあと思いつつ、言語の独自性や魅力を維持するためには、個性を消しがちな委員会制度は相性が悪そうで悩んでいます。
個性とこだわりが無ければ、新しい言語を作る話にもならないですしね。
まつもとさんの考える「Rubyの個性」はどのようなところにあるんでしょうか?
プログラミングの楽しい側面にフォーカスできる点だと思います。管理よりも自由、束縛よりは解放、規律よりも試行錯誤を重視してます。
ちなみに、もともとは個性があったのに委員会制度を採用した結果、個性がなくなってしまった言語ってあるんですか?
JavaScriptとかはそんな感じでしょうね。オリジナル開発者(Brendan Eich)が手を引いて随分経ちますが、オリジナルの方向性とはだいぶ違う気がします。
一方、PHPやPythonでは委員会制になってもあまり変わってない気がしますね。
まつもとさんがいなくなったらRubyどうなるの?
後任を育てるみたいにはならないものなんすかね?
通常ならそうなるでしょうね。
ただ、
●自発参加のボランティアは手を上げる人がいないと進まない(進めたくない)
●オープンソースには「業務命令」みたいなものはない
●現状手を上げる人はいない
という感じで、どうしようかなと悩んでいるところです。
私自身、自分でプログラムを書いたり、人に任せたりするのはともかく、人を育てるのは苦手ですし。
まつもとさんが弟子募集とかやったら、すげー人数が集まりそうですけどね。
集まるかもしれませんが、そもそも弟子育成や教育に興味がないのでやりたくないんですよ。
わかるー、、育てる気にならないんですよねぇ、、
そしたらもう、聖書とかコーランみたいに「まつもと哲学」の指針が残されて教条化したりするしかないんすかね、、、
私の書いた文章は大量に存在するので、それを喰わせて学習させた「まつもとAI」にRubyの設計を任せられる未来が来るかもしれません。眉唾ですが…
~対談を終えて~
対談途中、まつもとさんへ「現在いるRubyコミッターの中で、“この人なら任せられそう”という方っていらっしゃるんですか?」と聞いたところ・・・
「頭に浮かぶ人が数人はいます。ただ、いずれも後継者になりたいと思ってはいないようで、本人にも伝えていません」(まつもとゆきひろさん)
だそうです!!!
ちなみにこの数人には日本人もいれば海外の人もいるそう(日本人のほうが多いそうですが)。勝手ながら「第二のまつもとゆきひろ」が出てくることにも期待したくなりました!
まつもとさん写真/桑原美樹、ひろゆきさん写真/赤松洋太、編集/玉城智子(編集部)
RELATED関連記事
RANKING人気記事ランキング
NEW!
日本のエンジニアは甘すぎ? 「初学者への育成論」が米国からみると超不毛な理由
なぜやりたい仕事をやらせてもらえない?「それは誰もあなたに頼みたくないから」楠木建が教える“できる人”の条件
AWS認定資格10種類を一覧で解説! 難易度や費用、おすすめの学習方法も
AWS認定15冠のエンジニアとIT起業家が明かす、「資格取得者=ただの物知り君」で終わらせない環境とは?
縦割り排除、役職者を半分に…激動の2年で「全く違う会社に生まれ変わった」日本初のエンジニア採用の裏にあった悲願
JOB BOARD編集部オススメ求人特集
タグ