2017.07.05 水.

まつもとゆきひろ氏 × 寺本昌弘 対談【前編】まつもと氏が実感するRubyの歴史と今 / RubyistとしてAI・VR時代を生き抜くには

RubymrubyMatzまつもとゆきひろAIVRRoboticsIoTRubyist企業
2017年7月5日、福岡県東総合庁舎5階Rubyコンテンツ振興センターにて行いました、Rubyの生みの親である、まつもとゆきひろさんと、Vareal株式会社 代表取締役 寺本昌弘の対談の模様を2回に渡りお届けします。 今回は、この対談の目的と主旨、Vareal株式会社 代表取締役の寺本のRubyとの出会い秘話、そしてまつもとさんの目から見た、世界中に広がりを見せるRubyの歴史と今、AIやVR、ロボティクスなど続々と発展しつつある新技術時代、その中でのRubyの存在意義や関わり方、「RubyistとしてAI・VR時代を生き抜くには」等、多岐に渡って語っていただきました。
まつもとゆきひろ

Ruby開発者
まつもとゆきひろ

プログラミング言語「Ruby」の生みの親。1993年頃からRubyの開発に着手し1995年にフリーソフトとして公開。NPO法人軽量Rubyフォーラム理事長を始め、株式会社ネットワーク応用通信研究所フェロー、一般社団法人「Rubyアソシエーション」理事長、米Heroku Chief Architectなど、肩書多数。三女一男一匹の父である。温泉好き。鳥取県出身、島根県在住。牡牛座。O型。

寺本昌弘

Vareal株式会社代表取締役社長
寺本昌弘

京都大学工学部工業化学科卒。2006年05月に京都市左京区にてVareal株式会社を創業、設立。2011年02月 福岡市に本店を移転し、2014年04月にはRubyに特化した開発を開始。東京・福岡を中心にICTコンサルティング、ICTソリューションの提供、システム・ソフトウェア開発などの事業を展開している。美味しいもの、日本酒、ワインが好き。好きな言葉は「今やらねばいつできる、わしがやらねばたれがやる(平櫛 田中)」。福岡県北九州市出身。

この対談の目的・主旨


寺本昌弘寺本

改めましてよろしくお願いいたします。

まつもとゆきひろMatz

どうも、よろしくお願いいたします。

寺本昌弘寺本

今回、まつもとさんにこの対談をお願いした理由からお話します。
現在弊社でRubyitBizというメディアを立ち上げようとしていて、その目的が、我々はRubyを主体に受託、あるいはラボ型でシステム開発をしており、Rubyに関する「人」の課題、「人」がなかなか集まらない、開発者がいない、開発のリソースが足りないというところですごく困っているということなんです。
そして、もう一方では、Rubyに対する理解をお客様にもっと深めていただきたい、という想いもあります。
我々のクライアントは現在、Rubyのことを十分理解していただいた上でご依頼をいただいています。
しかし、このプログラミング、あるいはシステム開発の市場の規模を考えるとまだRubyのパイはおそらく全体の5%もないのではないか、と私は捉えています。
使い手からするとRubyは本当に素晴らしいので、是非、ビジネスの人間にも分かっていただきたい、そういう側面もあって、このRubyistBizを立ち上げることにいたしました。そこでまず、その第1回の対談として、Rubyの父、ゴットファーザーである…

まつもとゆきひろMatz

ゴットファーザー(笑)

寺本昌弘寺本

はい、まつもとさんに是非、お話を伺いたいと思っています。
テーマは、ビジネス寄りになりますけれど、なぜ、このRubyがいいのか、使うべきだ!ということを…

まつもとゆきひろMatz

使うべき(笑)

...
 
 
寺本昌弘寺本

はい、我々も推進する立場なので、是非そのような形でやりたいと思っています。
そして、「Rubyを好きなエンジニアの特徴」あるいは、「そのエンジニアをうまく使いこなすポイント、気をつけた方がいいよ。」というところと、以前まつもとさんにお話を伺った際にプログラマーの育成というのは、正直難しいところがあるという話をされていたので、その辺りを伺えたらなと思っています。

まつもとゆきひろMatz

はい。

寺本昌弘寺本

その前に1つだけいいですか?

まつもとゆきひろMatz

何々?

寺本昌弘寺本

私とRubyの出会いというのをみなさんにちょっと…

まつもとゆきひろMatz

ははは…!(笑)じゃ、どうぞ(笑)

Rubyとの出会い


寺本昌弘寺本

この本『オブジェクト指向スクリプト言語 Ruby』という、著者まつもとゆきひろさんって、まぁ当然ですね(笑)大学生の時で確か2年生当時、プログラミングは当時から好きで、何気なく生協にある本棚を見ていて、こういう風に(表紙が見えるように、面だしで)飾られていたんですよ。

...
 
 
...
 
 
まつもとゆきひろMatz

平積みじゃなくて、表紙が見えるように…

寺本昌弘寺本

はい。それで、聞いたことないなと思って読んでみると、非常に面白い!
それまでは、CとかC++、JAVAを独学で勉強していたんですけれど、Rubyの方がすごそうだな、と思ったのが最初の出会いでした。
それで、2006年の5月に起業して最初に使った言語もRubyなんです。
私とRubyはそうやって出会い、会社を設立して、最初からRubyを使わせていただいています。
というわけで、この場をお借りしてお礼を申し上げます。(笑)

まつもとゆきひろMatz

あははは…!(笑)いえいえ…

世界中で広がりを見せるRubyの普及の歴史と今


寺本昌弘寺本

それでは本題に戻りますけれど、今世界中でRubyが使われていますよね?
毎年、シリコンバレーミッションを一緒に行かせていただいていただいて、現地ですごく使われているなぁと感じるんですけれども、まつもとさんが開発されて25年経って、2007年くらいにRailsができて、それ以降の爆発的な普及があると思うんですけれども…

まつもとゆきひろMatz

Railsの最初のバージョンが出たのが2004年で、広まったのが2005年、日本でも注目されたのが2006年、2007年ですね。

寺本昌弘寺本

えぇ、それまでも2000年くらいから、Rubyの書籍は大量に発行されて広がりを見せる中で、さらなる爆発、まるでカンブリア紀のような、普及の様子を見せてきているんですけれども、最近はいかがですか?世界各地に呼ばれて行かれてると思うんですけれど、広がりという観点は…

...
 
 
まつもとゆきひろMatz

広がり…。そうですね…

もう本当に世界各地、アメリカだけでなくヨーロッパなんかも行ってます。最近はアジアでもカンファレンスが開かれたりしましたし、先月はシンガポールに行きました。今年はもうすでに3回のカンファレンス、国際カンファレンスに出ているんですけれど、インド、フィリピン、シンガポールと全部アジアで、アジアでの動きというのがすごく大きいなぁという風に思っています。
そういう意味でいうと、実感するのは、そのRailsのお陰もあってWEBアプリケーションの開発における、まぁ、非常にスタンダードになってきている、っていうのをすごく強く感じますね。
逆に感じるのは、WEB的に掘ったところが、例えば機械学習みたいなところに流れてて、そこはRubyはあまり強くないので、そういう意味でいうと、まぁ定番技術なんだけど、最先端からは遠ざかっているという印象を持たれやすいポジションに今いるのかなぁって気はしています。

寺本昌弘寺本

なるほど、なるほど。
言語としては魅力的だけれども、機械学習、AI絡みだと、今はPythonがすごく強いということがあると思います。

まつもとゆきひろMatz

そうですね。

RubyとAIについて


寺本昌弘寺本

弊社でも本年度から、AIに関しては積極的に取り組もうと考えています。
それで、実際に、どうやってそのRubyを絡めてやるかっていうと、数値計算のライブラリなんかは、あるいはAIのエンジンなんかはもうPythonベースでできているので、とりあえずそれを使う、と。
ただ、その周りのアプリケーションのところはもうRubyでどんどん書いていこうという風なスタイルでとりあえず考えています。
まつもとさんは、今後、AIがらみで、Rubyを活用するといった際に、どいういった形でやるのがいいっていうお考えはありますか?

まつもとゆきひろMatz

短期的にいうと、まぁ実際、その、Rubyとかっていうよりも、pythonの方がライブラリ含めレジスタが充実しているので、それをわざわざ全く同じ働きをするものをRubyで開発するっていうのは現実的ではないだろうなという思いはあるんですよね。
というのはコミニティサイズが違うので、同じものを作っても、利用量からいっても、ユーザ量からいっても、開発スピードからいっても、追いつけないところがあるので、そういうアプローチは、当面は難しいと思っていますね。

我々の世界、つまりRubyコミュニティ全体としてアプローチを取る方法っていうのは二通りあって、一つはその、今スペインにいらっしゃる、むらけんさんがやっているPyCall(パイコール、ピーアイコール)というライブラリで、これはRubyからPythonのライブラリが呼べるっていう、wrapperなんですよね。
なおかつ、例えば、アカンダスのデータフレームみたいなものは、メモリ共有した状態で、両方の世界、つまり、Rubyの世界でも、Pythonの世界でも見えることができるので、そうすると、Rubyの世界とPythonの世界でデータのコピーが発生せずにやり取りができるので、そうするとデータを準備する、あるいはそのWEBとしてプレゼンテーションする部分はRubyで書いて、実際のその機械学習の判定をしたりとか、そういう部分は、あるいは、そのデータフレームでデータ処理を行う部分は、そのPythonを処理をして、Rubyを使ってPythonを操作して、っていうことができるので、それは一つのやり方ですね。

...
 
 
まつもとゆきひろMatz

もう一つのアプローチは、クリアコードの須藤さんがやっておられる「Arrow(Apache Arrow)」だったかな?ていう、今度はそのデータを、共通のデータを持つ枠組みというのがあって、例えば、C++であるとか、例えばPythonであるとか、例えばJuliaであるとかで、計算をした結果を、その、言語を超えて、そのデータをシェアできる、データフォーマットをメモリフォーマットと、メモリ内のデータフォーマットとファイルのデータフォーマット、両方が定義しているんですね。
そうすると、今度はそのpythonで計算したその結果を「Arrow(Apache Arrow)」で書いたものをRubyで読むとかですね、そうすると、データをゼロコピーで持ってきたりすることができるとか、あるいはそのファイルに書いて、Pythonで書いた「Arrow(Apache Arrow)」のファイルをRubyで読み込んで、っていうようなことができるようになるんで、それもその複数の言語を共存することができる、効率よく共存することができる。
どちらが勝つか、まぁどちらもこう、短期的にRubyが、Rubyから機械学習を現実的に扱うための有効な手段になり得るかなと思いますね。

寺本昌弘寺本

なるほど。
そうすると一般的なそのアプリケーションのイメージでいうと、もう完全にその、API経由でやらないといけないと思っていたけど、実はそうではなくて、ほぼもうダイレクトに近い形でそういったライブラリを活用できると。

まつもとゆきひろMatz

可能性があります。はい。

寺本昌弘寺本

なるほど、うーん、それは我々Rubyistにとっては非常にありがたいですね。

まつもとゆきひろMatz

そうですね。
まぁ、普通に考えると、例えばそこだけを何かマイクロサービスみたいなので切り出してみたいなやり方を考えがちではあるんですが、それ以外のアプローチもあるよっていうことですね。

寺本昌弘寺本

なるほど。
じゃぁ、そういったものをライブラリで呼び出せばもうほぼ違和感なく使えちゃうということですね。

まつもとゆきひろMatz

そうですね、はい。

寺本昌弘寺本

なるほど、ありがとうございます。

RubyとVRについて


寺本昌弘寺本

今、AIの話をしました。
また、VRが今流行ってきているな、と思っています。
VRだとJavascriptベースで作っていたりするものがあり、その一方でUnityのような専用の環境で、C#、あるいはJavaScriptでコードを書くところがあるんですけれども、我々はこの世界に入るつもりなんですね。
ここでRubyを使いたいと思っています。
mrubyのように、その中に組み込んじゃって、できるんじゃないかなと思っているんですが、その点、いかがでしょうか?

まつもとゆきひろMatz

そうですねぇ、やり方は一つじゃないので、どれが正解かと言っても分からないです。私も自分で使っているわけでもないので。
まぁ、やり方の一つとしてはそのmrubyを組み込んでしまって、callbackをmrubyで書けるみたいなやり方するのもいいですし、あるいは、Opal(オパール)っていう、RubyとJavaScriptのコンパイラがあるんですけれども、それを使って、そのRubyでプログラムを書きました。
それで、Opalを使ってJavaScriptにコンパイルしてUnityをコントロールするとか、そういうアプローチも考えられますし。何が正解かっていうことは一概には言えないですね。

...
 
 
寺本昌弘寺本

まぁ、一つ言えることは、Rubyを使って、結局ほぼその他言語経由で使うことができると。

まつもとゆきひろMatz

どういうアプローチが最適かはちょっとわからない。

寺本昌弘寺本

うーん、なるほど、ありがとうございます。

まつもとゆきひろMatz

だから難しいところは、やっぱりその言語の違いが決定的じゃないことが多いんですよね。だから、その無理してRubyを使わなくてもいい、…って、僕がいうのもなんですけど(笑)
むしろRuby使わなくてもいいかなと思うこともあるんですよね。
で、そこはその、コストがかかるんで、まぁ、何にしても、それがどれくらい正当化できるかっていうのはよく考えないといけないと思うんですよね。

寺本昌弘寺本

うーん、まぁ、確かに。
我々も結局、Rubyを使いながら、フロントエンド側でJavaScriptを使いながらという風な形でやってますし、結局今後もそういったことは当然ながらいっぱいあるんですね。

まつもとゆきひろMatz

そうですね。
それで、Opalを使えばフロントエンドもバックエンドも両方ともRubyで書けるので、アプローチはもちろん可能なんですが、それだけのコストをかける意味があるのか無いのか、ってのはよく考えないといけないですね。

寺本昌弘寺本

うーん、なるほどなるほど。

mrubyの普及について


寺本昌弘寺本

今、mrubyの話が出ました。

まつもとゆきひろMatz

はい。

寺本昌弘寺本

まつもとさん、今かなりの時間をmrubyに費やされていると思います。

まつもとゆきひろMatz

そうですね。

寺本昌弘寺本

広がりはどうですか?

...
 
 
まつもとゆきひろMatz

うーん、何だろう。いくつかあります。

一つは、2010年にこのプロジェクトを始めたんですが、2010年に始めた時には、マイクロコントローラーの性能がもっと伸びると思ってたんですね。
つまり、一番安いマイクロコントローラーって今メモリ2KBぐらいしか詰んでないんですよ。
それで、これがですね、2010年に考えた時には、5年経ったら、例えば、最低でも256KBとか512KBとか詰んでて、メガ単位でメモリ詰んでるマイクロコントローラーが普通の値段で出るとなると思ってたんですね。そしたら意外と出なくてですね(笑)。
一番安いのが、何百キロとか何百メガとかメモリつんでたら別にmrubyの世界でも何の抵抗もないので。
そういう世界が来るかなと思っていたら意外と遅くて。
そういう意味でいうと、なんかちょっと期待よりも遅かったなっていうのがありますね。
だから、最初2010年に想定していた未来は、普通に何とかってところで1個100円ぐらいでマイクロコントローラー買えます、と。
メモリ1メガくらい詰んでるんでmruby楽勝で乗りますっていう世界を考えてたんです。
だから、家電とかのソフトもいちいちアセンブラとかシリアル(シリアル通信)とか面倒臭いから、1個100円ならこれでいいやっていって載せるっていう未来を考えてたんですけど、意外と遅くてね(笑)未だにマイクロコントローラーでも16KBとかしか伸びてなくて、っていうのが一つですね。

ただ、予想外だったのは、例えば、ペパボさんのやってるような、ngx_mrubyとか、あと、モデムRubyとか、それから、昨日(第9回フクオカRuby大賞授賞式で)大賞とった「haconiwa」みたいな、デバイスに組み込むんじゃなくて、ソフトウェアに組み込んでmrubyを活用するっていう領域は、全く想定していなかったわけではないんだけれど、逆にそっちの方が伸びるとは思わなかった。
国内で伸びるとは思ってなかったですね。
それで、正直に言うと、もちろんアプリケーションの組み込みも想定してデザインはしているんですけれども、デバイスの方をもうちょっと、こう来るかなって思ってたのは確かですね。
そしたら、どっちかっていうと、そのアプリ組み込みの方が結果的には…。

で、今年の「haconiwa」もそうですし、去年のCADの「siren」っていうのもmrubyでしたし、その前の年は ngx_mrubyの松本 亮介さん、という感じでmrubyが伸びているので、で、そっちの方にそれだけ伸びるっていうのはだいぶ意外ですね。

寺本昌弘寺本

なるほど。ありがとうございます。
組み込みの方は、今、IoTデバイスがすごく注目を浴びていて、孫さんもARMを買収して、これから何十億とか兆単位で配るぐらいの勢いでおっしゃってますよね。
なので、まつもとさんの考えられている未来が、まぁ、5年ぐらいで来てくれたら…

まつもとゆきひろMatz

そうですね、5年遅れくらいで来てくれればいいですね(笑)
それで、現時点のテクノロジー、ハードウェアの状況だと、mrubyが使えないケースが結構あるんですよね。
マイクロコントローラーが小さすぎて、メモリが足りなすぎてmrubyが使えない、というのがまず1点。mrubyの普及の障害になってるのがいくつかあって、それと、組み込みの人たちというのは、ISOの開発プロセスの安全保障スタンダードISOの61とかいうのがあって、その認証プロセスがオープンソースとめっちゃ相性悪いんですよね。
それで、こういう開発体制でこういうドキュメントを用意して、こういう開発をしているメンバーをこういう風に管理して、みたいな認証プロセスなんで、オープンソースソフトウェアにそんなのないじゃないですか。
それで、すっごい相性悪いんですよね。
だから、事実上、例えば、認証の必要な、車とかに、オープンソースソフトウェア使うのはほぼ不可能。

寺本昌弘寺本

そうなんですね。

...
 
 
まつもとゆきひろMatz

それで、例外が linuxとGCCで、両方とも億単位のお金をかけて、第三者機関にお願いして認証構造(年間認証構図)取ってるっていう。今更mrubyに億単位のお金をかけてわざわざ…っていう話にならないんで、そういう意味で、発展するのが難しいっていうのが2点目です。
3点目が、一番最初の、マイクロコントローラーの性能の伸びがイマイチっていうのが関係するんですけれど、エッヂコンピューティングがイマイチ伸びなくて。
今だと、ばら撒くたくさんのコンピュータは本当に安い。Arduino(アルデュイーノ)よりもっと小さい、2Kしかメモリがないもので、消費電力が小さくて、何秒、何分間に1回センサーを叩いて、そのデータをネットに送るみたいな、ロジックも何もないような感じのものをばら撒いて、そいつをクラウドに集めて、クラウドで計算するっていうスタイルのIoTが非常に多いんですよね。
そうすると別にそのデバイスにプログラムいらないからmrubyもいらないって世界になるわけですよ。
それでクラウド側は、普通のサーバコンピュータなので、別に、mrubyは要らなくて、普通にRuby使ってもいいし、RubyじゃなくてJavaでもなんでもいいしって話になって、mrubyの出番はないんですよね。
そういう、プアなエッジを使ってる、クラウド系OS、Iotていうのは、例えばこれからマイクロコントローラが伸びるとか、あるいはその、やってることが単一のものをたくさんばら撒くんじゃなくて、 one offにする、つまり一つ一つのものが処理が違うとか、あと、エッヂコンピューティングって言って、その、端っこのノードで計算してから、結果を送りつけるみたいなトレンドが、まだ来てないんだけど、来てると言われてて。本当に来るんだったら、そこにはmrubyの出番もあるかなっていう感じですね。
それで、やっぱマスプロダクション100万個同じのを作るとかになると、コストが1円違うだけで100万円変わるとですね、1円でも安くっていう話になるのはしょうがないと思うんだけど、 マス(mass:一塊りのこと)じゃない部分で、例えばセンサーも含めて1個10,000円です、みたいなところに、じゃぁ、そのためにそれをコントロールするソフトウェアのためにマイクロコントローラーに500円高くしても大丈夫っていう世界は多分あると思うんですよね。

寺本昌弘寺本

確かに…。
まぁ、その、エッヂコンピューティングのところで、例えば農業用のIoTのデバイスを作って、一つの畑だけでも何百何千とかかるような世界では、確かに1円のコストは非常に大事だと思います。

...
 
 
まつもとゆきひろMatz

そういうタイプのIoTもあるし、あるいは、土壌のSEPとかショートとか全部いっぱい、センサーに1個3万円くらいするんですって。
3万円、何もしなくてもセンサー3万円するんだったら、そのコントローラーが100円だろうが200円だろうが誤差だろうっていうのはあり得る世界ですよね。だからどういうアプローチを取るかによってまた変わってくる。

寺本昌弘寺本

うーん…。なるほど…。

まつもとゆきひろMatz

例えば、メニーカラスさんのやっておられる、なんだっけ…。

寺本昌弘寺本

enziですか?

まつもとゆきひろMatz

そう、養殖用のenziを使って、養殖用のセンサーを使ってらっしゃるんですよ。水温はどうかとか、水がキレイか汚れてるかとか、そういう風なことも含めたセンサーと、 3Gモデムと太陽電池、ソーラーパネルで何時間かに一回データを送るみたいな、プログラムをmrubyで書いてるやつがでるんですけども、そいつはその養殖場にこういうので計算…とかなんとか、マスプロダクションはないんですよね。なので、そこにはmrubyを使う。

寺本昌弘寺本

なるほど。

まつもとゆきひろMatz

現時点だと、プロトタイプに使うか、エッヂコンピューティングに使うか、エッヂの値段がすごい高い場合に使うか、っていう…どれかぐらいが、今のが現実的ですよね。
先程言いましたが、今後、100円のマイクロコントローラーにメガ単位のメモリ詰んでますよっとかいうのが出れば、またちょっと話が変わってきますよね。

あと最近の流れ見るとゲームがありますよね。ニーアオートマタにmrubyが乗ってるとか(笑)。

寺本昌弘寺本

(笑)。確かにゲームだと、先ほどのソフトウェアの中に組み込むと言った話がありましたけど、そう言った形でシナリオをスクリプトで書いたりとか、そういうところで適用は非常にしやすいというところはありますよね。

...
 
 

【前編】はここまで。
お話はまだまだ続きます。