2018年2月24日に25周年を迎えたプログラミング言語Ruby。それを記念して開催されたイベント「Ruby25」の基調講演でまつもとゆきひろ氏は、Rubyの未来について語った。
目次
Perlの次の言語を目標にRubyを開発
昨年2017年来、まつもと氏は講演で「Rubyのこれまで」を振り返ることが多かったという。しかし「今日は未来の話をしたい」と語り、講演をスタートさせた。
ウィキペディアによると、ソフトウェアの誕生は公開された日となることが多い。Ruby 0.95が公開されたのは、1995年12月25日。「作っている本人としては、それより前から作り続けているので、誕生という気がしない」とまつもと氏は語る。
では、RubyはいつからRubyなのか。
「哲学的な問いだが、Rubyという概念が誕生した日。つまりRubyという名前を付けたとき誕生日にした。それが1993年2月24日である」(まつもと氏)
名前を付けるときに相談したのが「オブジェクト指向スクリプト言語Ruby」の共著者である石塚圭樹氏だ。
Perlにならい「宝石の名前をつけよう」と思ったものの、最終的にはRubyとCoralで迷ったまつもと氏は、「Rubyの方が短くて、高級感がある」ということでRubyに決めた。
そのほかにも偶然的な産物として、6月の誕生石はPerlで、7月がRubyと並んでおり、フォントサイズも5ptなので、5.5ptのPerlと並んでいる。「つまりPerlの次の言語としてふさわしい名前だ」と自己満足したという。
「Perlの次」の言語を目標に開発されたRuby。しかし「正直やりすぎた。現状のRubyはPerlの次ではなく、Pythonの隣や斜め後ろとかそういう感じ」と、まつもと氏は会場の笑いを誘った。
25年間の技術の変化は驚くほど小さかった
では、Rubyの今後はどうなるのか。
「すごく悩んだが、当たるも八卦、当たらぬも八卦なので、無責任なことを言っても許されるだろうと思い、私が考える今後25年の話をしたい。
過去25年の変化は驚くほど小さかった。例えばOSはUNIX系に収斂しつつある。MacOSはUNIXそのもの、WindowsもWSLとUNIXっぽくなっている。クラウドのサーバサイドOS、スーパーコンピュータのOSはLinuxが席巻している。
つまり、プラットフォームのOSはほぼUNIXになったということ。CPUもx86系となるなど、この25年間プラットフォームはまったく新しいことは起きなかった上に、多様性も減った」
さらに、Rubyの初期の開発環境も劇的には変わらず、「Rubyの安定性の一部はこの安定性に救われた」とまつもと氏は述懐する。
もちろん、変化したこともある。例えば性能や容量は向上したことで、プログラマは開発が楽になった。価格が安くなり、台数が増えたことで、コンピュータを入手しやすくなった。
Webという横にも縦にもスケールしやすいアーキテクチャの採用、モバイルがデバイスとして普及したことで、Beyond Server sideの時代は終わりつつある。
さらにマルチコアにより、分散・並列実行環境が実現。データサイエンス分野では機械学習、AI、IoT、IoTなどのキーワードが注目されるようになっている。
「変化の傾向はスケーラブルになっているということだ」と、まつもと氏は言う。データ規模やコード規模、チーム規模はどんどん大きくなっている。それを分散するため、マルチコアやマルチノード、マルチDC(データセンター)が登場した。
言語の開発方向性は「より早く」「より安く」「より速く」
まつもと氏は「これらの状況を踏まえて未来のRubyを考えたい」と続ける。
言語(文法)はあまり変わらない。プログラミング言語にはチューリング完全性があるからだ。
「たとえ25年後のプログラミング環境で要求されるアルゴリズムでも、現在のRubyでも書こうと思えば書ける。それを考えると、Rubyのコアに関しては劇的な変化は必要ない。
文法的な限界は近づいており、これ以上文法は変えられない。したがって、まったく異なった言語にはならない。
RubyがRubyであり続けるには、まったく異なった言語になることはない。もしそういう言語ができたら、それはRubyではない」
1954年に最初のプログラミング言語「FORTRAN」が誕生して以来、様々な言語が生まれてはそれに取って変わってきた。
プログラミング言語の進化は、「生産性の向上」を目的としていた。つまり「より早く」「より安く」「より速く」を目指してきた。
より早くとは、より短時間で開発できることである。簡潔な表現で、高い抽象性があり、直接的な表現でイメージに近い表記ができること。
つまり、優れた抽象モデルを提供するかどうかだ。しかしそれだけではなく、保守性もある程度必要となる。
「現状のRubyの良さは完結で直接的で優れたモデル」(まつもと氏)
次の「より安く」は、より短い開発期間、小さなチーム、より小さなチームで開発できればより安くなる。Amazonの創設者ジェフ・ベゾス氏のピザ2枚の法則に通じる。
ソフトウェアは小さなチームでより広い範囲を解決し、そして最後の「より速く」というように、開発サイクルを高速に回すことが重要になる。
2004年にアジャイル開発宣言が出された。その宣言を書いた人の中に、「プログラミングRuby」を書いたデイブ・トーマスがおり、またアジャイル宣言のサインをしたオピニオンリーダーの内、過半数がRubyを使っていた。
「Rubyを作ったとき、ソフトウェア開発を楽しくしたいと思って作った。アジャイルという開発手段が素晴らしいと思っている人たちの共感を得ることができたという点、間違ってなかったという思いがあった」(まつもと氏)
より早く、より安く、より速く。これを未来の言語に当てはめると、高度な分散、高度な抽象、高度な支援が求められるようになる。
近い未来に向け、Ruby3の開発を進める
近い未来に向け、今開発を進めているのがRuby3である。「Ruby3に向け、高速(速いRuby)、分散(スケーラブルRuby)、解析(賢いRuby)という3つのプロジェクトが動いている」とまつもと氏は話を続ける。
速いRubyプロジェクトとは、20周年の時にリリースしたRuby2.0を3倍高速化するというプロジェクト(Ruby3×3)。
「正直、高速化するのは簡単ではない。だが、Rubyがこれからも生き延びていくためには知的好奇心、ワクワクするようなテーマが必要だと思った。だから無理を承知でこの3倍高速なRubyを作ろう。そこでRuby3×3(スリー・バイ・スリー)というスローガンを掲げた」(まつもと氏)
だが、無理だと思っていたが、MJIT(JITコンパイラ)を使うことで、スピード改善されそうだという。「あと2年ぐらいかければ、2013年のバージョンに比べて3倍高速なRubyを作ることは不可能ではないところまできた」とまつもと氏は誇らしげに語る。
そのほかの分散や解析についても容易なことではない。しかしRubyのコアコミッターである笹田耕一氏が「Guild(ギルド)」というプロジェクトで、分散処理の枠組みを検討しているという。
「この枠組みを使うことで、マルチコアやマルチノード、マルチDCの分散につながる可能性が出てきた」(まつもと氏)
静的解析については、「Steep」というプロジェクトで静的型推論の実装が進められており、「型解析は無理だと思っていたが、それも実現する可能性が見えてきた。これらを反映したものをRuby3として2020年に出せればいいなと思っている」と展望を語る。
Ruby3へと進化する上で大事なことがあるという。それは「連続的な変化をすることだ」とまつもと氏。それはRuby1.8とRuby1.9の間で、非互換性の変化がたくさんあり、Rubyコミュニティは5年ぐらい分断されていた経験による。
「コミュニティ分断を起こすような不連続な変化は起こさないつもり。だからRuby3はラベルになる。毎年リリースの中に新しい機能を付け足していき、我々が目標とした到達した時がRuby3とする。
すでに今年リリース予定の2.6にはMJITが付加されているが、デフォルトでMJITが動くわけではないが、ぜひ試してほしい」(まつもと氏)
25年後のRubyはどうなる?
ではさらに遠い未来、25年後のRubyはどうなるのか。まつもと氏は「開発効率と保守性の向上、大規模分散環境対応、非均質計算環境対応について考えていかねばならない」と言う。
第一の開発効率と保守性の向上を図るにはどうするか。動的型言語に対応する、新たな技術の開発が必要になる。
「スタイルガイド(Rubogoop)や静的型推論(Success Based)、プロタイル型解析なども登場している。これから登場する技術を含めて、未来のソフトウェアの開発はもっとインタラクティブになる」(まつもと氏)
その例としてまつもと氏はテディベア・プログラミングを挙げた。これはソフトウェアを開発するときに、テディベア(ぬいぐるみ)を隣に置くとなぜか生産効率が上がるというもの。
もちろん、テディベアにコードを相談しても、テディベアは教えてくれない。しかし、会話することで、人間の思考を助けてくれるというのである。
まつもと氏がRubyの開発を始めた25年前、まつもと氏には生後半年の子どもがいた。その子どもを寝かしつけながら、「今度デザインするRubyの機能ってどうしたらいいと思う」と尋ねていたという。
「Rubyのブロック機能は赤ちゃんとの対話から生まれたもの。未来のコンパイラはテディベアが付いてくるかもしれない」と会場の笑いを誘った。
第二は大規模分散環境対応である。これまでコンピュータはムーアの法則で性能が向上してきた。しかしいずれ物理的な限界はくる。
例えばパソコンはすでにその兆候は見えており、CPUではマルチコア活用にシフトしている。「システム全体を複数のコンピュータで構成することで性能向上しようという流れが出てきた。マルチノードに加え、マルチDCという選択肢も今後、当たり前になる日も近い」とまつもと氏は言う。
そのときに重要になるのがコンカレンシー、分散処理の抽象化である。それを実現するスケーラブルなアーキテクチャが求められる。WWWはそれに近いが、Webは万能ではない。
25年先のコンピュータアーキテクチャは、現代のFaaS(Function as a Service)が近いのではないかとまつもと氏はイメージする。
「その時にはGuildも進化し、マルチノード、マルチDCのようなシステムを、あたかも一つのコンピュータとして扱えるロジックをRubyでかける未来になっているのではないでしょうか」
第三の非均質計算環境対応とは、複数の種類のコンピュータが混在し、それらのコンピュータが役割ごとに分担して働く環境を指す。
GPGPUもその一例。元々グラフィックのレンダリングに使っているGPUを汎用目的に使うという技術である。
機械学習などでGPUを使うことは流行っているが、これもコンピュータのコアで難しいロジックを実行し、単純なロジックをGPUでオフロードして計算させている。
FPGAも同様である。これらの技術を活用する上で重要なのが、「コンカレンシー抽象だ」とまつもと氏。
「大規模分散を簡単なRubyで書くことで、ものすごく大きなことがシンプルに、安全に、楽しくできるという未来が来てほしい。またそうできるようにすることで、Rubyを開発する価値があると思っている」
人類は25年ではさほど変わらない。だが、文化は変化する。
「コンピュータは難しい」ものから「コンピュータは楽しい」ものへと変化し、その楽しいが当たり前のものになってほしいとまつもと氏は言う。その変化を促すのがRubyの役割でもある。
なぜなら、Rubyは人間のためのRubyだからだ。コンピュータのためではない。「25年後も変わらずそうあってほしい」とまつもと氏は願う。
「25年間、文化の変化、テクノロジーの変化をキャッチアップし、人間と共に育ってきた。これからもそういうRubyであり続けたい」
まつもと氏もRubyも、これからも「サバイバルしていく」。それが価値を提供し続けることにつながり、Rubyが生き残ることにつながるからだ。
まつもと氏の基調講演が終了後、Rubyの機能開発にもその存在で貢献したまつもと氏の二人のお嬢さんが登壇し、花束贈呈が行われた。まつもと氏のいつもとは違う表情も見られ、Ruby25周年のイベントに華を添えた。
Rubyによって、コンピュータが難しいものから楽しいものへと変わっていく。誰もがソフトウェア開発を楽しいと思う未来。そんな未来がすぐ、そこまで来ている。そういうことを実感できるイベントだった。
※本記事は「CodeIQ MAGAZINE」掲載の記事を転載しております。