2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
まつもとゆきひろ氏(以下、まつもと):未来の話です。近い未来として、Ruby3です。今の最新のバージョンが2.5ですけれども、その次のバージョンです。「次のRuby」として、Ruby3というものを開発しています。
これの目標が高速で、分散対応で、静的解析もできるということですね。高速というのは、「より速いRuby」です。それから分散というのは、「よりスケーラブルなRuby」。解析というのは、「より賢いRuby」だと思います。
具体的なプロジェクトとして、高速化についてはMJITというプロジェクトが動いてますし、分散についてはそれだけではないんですけど、Guildというプロジェクトが動いています。Rubyのプログラムの型解析には、Steepという名前のプロジェクトが動いています。
MJITとは、JITコンパイラと呼ばれている技術です。Javaなどで有効な技法として、昔から採用されてるんですけれども、とうとうRubyでも採用できそうな見込が立ってきました。
もう3年近く前になりますけれども、「Ruby3x3」というスローガンみたいなものを立てたんですね。これは、未来のバージョンのRuby3を、5年前の20周年記念の時にちょうど出したRuby2.0というバージョンと比較して、「3倍高速化しよう」というプロジェクトです。
正直、3倍高速化するって、そんなに簡単ではないんですよね。もちろんできたばかりで無駄ばかりのソフトウェアだったりすると、ちょっと改造するだけで劇的に性能改善みたいなことはしょっちゅうあるわけです。でも、いかんせんRubyとか20年以上開発してるので、ちょっと直せばすぐ改善できるLow Hanging Fruitみたいなところって、そんなにたくさんは残ってないんですよね。
3倍速くするって言った時に、Rubyコミュニティで、とくに性能改善について専門にやってくださってる人が、「そんなんできんじゃん」みたいなことを言われて。最近ずっと、自分が3倍改善と言っても、自分で3倍改善してるわけではなく、他の人にお願いしてやってもらってるので、けっこう心苦しいところもあったんですけれども。
ただ、Rubyそのものが生き延びるためには、コミュニティというか、知的好奇心というのも変だけど、ワクワクするようなテーマが必要だと思ったんです。
アポロ計画を実現する時に、ケネディ大統領が1962年の演説で、「私たちは月に行くのだ」「簡単だからじゃなくて、難しいからこそ月に行くのだ」「1960年代のうちに人類を月に送る」って言ったんですね。1962年時点のテクノロジーで人類が月に行くことは、普通の人が考えたら無理だと、専門家の人が考えたらもっと無理だという状態でした。
途中、ケネディ大統領は暗殺されてしまうんですけれども、彼が言い出したリーダーシップは継承されて、1969年7月20日に、人類は月に行きます。
つまり、別にケネディ大統領が技術を開発して月に行ったわけではないですけれども、彼が「やるんだ」って言ったことで、人類は月に行くことができたんです。さらに言うと、彼のリーダーシップがすごすぎたので、彼がいなくなった後、人類は月に行かなくなってだいぶ経つんですけれども、まあ、それは置いておいて(笑)。
誰が見ても、どう考えても不可能なゴールではなくて、できるかもしれないけど難しいゴールを設定することが、非常に重要だったんです。そこで、他の人からのアドバイスも聞いて決めたんですが、私が考えたのが「Ruby3x3」というタイトルです。
3年近く前にこれを言った時には、自分で言っときながら、「できるも八卦できないも八卦」みたいな感じで思ってたんですけれども(笑)。ですが、言ってみるもので、去年ぐらいになって、さっき言ったJIT技術を使ったら、ものすごくスピードの改善ができました。
まだプロトタイプですが、「これがうまくいけばいけそう」と言ってくれる人が出てきて。さらにその人のアイデアを、別のかたちでブラッシュアップして取り込んでくれるような人がいました。
そうすると、明日には無理かもしれないけれども、あと1~2年とかあれば、もしかしたら最初に設定したように、2013年のバージョンに比べて3倍高速なRubyをつくることは、案外不可能ではないというところまできました。言ってみるものですね。
さらに、さっき言ったような分散とか、静的解析についても、どれ1つを取っても、あんまり簡単なことではないんですよね。
でも、「こうすべきだ」って言ったら、今回、リーダーシップを取ってくれた笹田さんが、Guildというアイデアを出してきて、分散処理の枠組みについて、非常に一生懸命検討してくださりました。このアイデアがRubyの分散処理、マルチコアとか、マルチノードとか、極端な話で言うと、マルチデータセンターみたいな分散につながる可能性が出てきました。
Steepというのは、松本宗太郎さんって、この方は私の弟ではないんですけれども(笑)、Rubyコミュニティの別の松本さんがつくっておられるプロジェクトです。Rubyの型の静的な型チェックをしてくれるようなソフトウェアになります。松本宗太郎さんはRubyの型推論で博士論文に書いたはずなんですけれども、彼の博士論文の結論は「やっぱ無理」という結論だったんですが(笑)。
(会場笑)
その後、何回か挑戦して、Steepだと、100パーセントではないけどある程度は、みたいなところまでいってる、というところですね。
あと、Kotlinとか、RubyMineというIDEとかを開発してるJetBrainsという会社があるんですけれども、そこの人たちは、実行時の情報を集めて型解析を行うようなプロジェクトもやっています。こういうのを組み合わせると、最初に言いはじめた時点は、「Rubyで型解析とか、無理じゃね?」だったのも、ある程度実現性が見えてきました。
Rubyは毎年リリースしてるんですが、その毎年リリースとは別に、こういうのを反映したRuby3を、「準備できたよ」って言って出すというのを、「2020年に出せるといいなあ」って思います。約束しませんけどね(笑)。
1つ大事なことは、今回、「連続的な変化をしよう」と思っています。つまり、巨大なギャップを付けたくないんですよね。私たちは、過去、Ruby1.8とRuby1.9の間で、非互換性のある変化をたくさん起こしました。そのせいで、Ruby1.8を使い続ける人とRuby1.9に移行してしまった人で、Rubyコミュニティは5年ぐらい分断されてました。
でも、コア開発チームはRuby1.9の改善をずっとしてきました。なので、Ruby1.8を諸般の事情で使い続けてる人たちは、ある意味、新しいテクノロジーから取り残されてしまったわけです。そのようなコミュニティ分断というのは、本当に不幸なことだと思うので、予見できる未来において、そのようなことを起こすような不連続な変化は、起こさないつもりでいます。
ですから、Ruby3というのは、ラベルになると思います。つまり、毎年出しているリリースの中に、新しい機能として少しずつ足していって、我々が目標とする水準に到達したバージョンについて、「じゃあ、Ruby3ね」って名前を付けるというかたちにしようと思ってます。
したがって、去年出したのが2.5、今年2.6、2.7とか出していくうちに、「我々の出してるゴールに到達しました」と言って、次にリリースするバージョンの名前をRuby3にする、というかたちにしようと思ってます。
さっき、いくつか名前が出たテクノロジー、MJIT、Guild、Steepとか、そういうコードネームの付いたテクノロジーを実装したら、すぐにRuby2.7とか2.8とかに取り込んでいくつもりです。
例えば、今年の12月に出るRuby2.6は、そのMJITテクノロジーの、少なくともプロトタイプは入ったものがリリースされることになります。ですから、2.6が手に入れば、その方々は、MJIT、JITコンパイラをすぐに試すことができるんです。「すぐに動く」とは言ってないですけどね(笑)。
(会場笑)
別にデフォルトでMJITが動くわけではないですけれども。さらに言うと、今年、MJITという大きな変化がありますし、いくつか変化があるので、いつもならだいぶ年の後半になってからしか出さないRelease Candidateというプレビューをこの後すぐ、出す予定になっています。
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05