本記事は、TechFeed Conference 2022 の開催に際しての「基調講演」コンテンツです。
先日TechFeed公認エキスパートにもご就任頂いた「Rubyの父」まつもとゆきひろさんに、TechFeedならではの切り口でロングインタビューを敢行!
TechFeedといえば技術情報収集ということで、今回はまつもとさんの技術情報収集術について伺いました。(後半ではRubyとコロナ禍、そしてコミュニティについて存分に語っていただきました)。
まつもとゆきひろ、情報収集術を語る
– まつもとさんは具体的にどのように情報収集をしてるんでしょう?
まつもと: 暇なときずっと、って感じですね。
仕事とかプログラミング以外の時間は、ずっと何かしらの情報を得ているんじゃないでしょうか。
私の情報収集はRSSリーダーがメインですが、Twitterで共有されているリンクなんかも見ますし、寝る前にKindle Unlimitedでもいろいろ読みます。Kindle Unlimitedにはテック系の記事もたくさんありますが、技術系じゃないものもあるので、そういったものもよく読みますね。
– RSSリーダーを使ってらっしゃるんですね
まつもと: 実はRSSリーダーが大好きなんです。流行りじゃないんですけど(笑)
Feedeenというサービスを利用しています。
私が以前使っていた「Livedoor Reader」が終わってしまったタイミングで、有料サービスとしてFeedeenが出てきたので、それ以来使っています。使いやすかったのはもちろんですが、「有料サービスなら、終了せずに続いてくれるかな」という期待を込めてずっと利用している感じです。
TechFeedも、RSSを出力してくれるので、早速登録しました。
– ありがとうございます。RSSリーダーはなぜ減っていってしまったのでしょうか?
まつもと: やはりキュレーションが行われていないから、じゃないでしょうか。
情報の選別が行われずに、サイトが出したコンテンツ全部が流れ込んでくる。
ただ私にとっては、情報は大量に得るのが普通なので、生の情報を全部見るというのはデメリットにならなかったんです。
「情報をあまり得てこなかったまつもと」と「情報を得てきたまつもと」を比較することもできませんし(笑)
– どれくらいの数のフィードを読んでらっしゃるんでしょうか?
まつもと: そうですね…ちゃんと数えたことはないですが、朝起きたらリンクが1,000〜2,000あるのは普通です。一日だと2,000〜3,000くらいは見てるんじゃないでしょうか。とはいえ、実際に読むのはそのうち100もいかないくらいだと思います。
– それでもすごい数です。どんな情報をよく読んでいらっしゃいますか?
まつもと: 情報系だと、やはり私が興味あるのはプログラミング言語ネタやRuby関連の情報ですね。それらだと、海外記事がほとんどで、RedditやHackerNewsなどの情報を読んでいることが多いです。
一般的なニュースとか、技術に関する解説記事とかは、日本語でもよく読みますね。私、Gitとかがイマイチ苦手だったんですが、そういうときはQiitaの記事とかを参考にすることも多いです。
– Gitが苦手というのは意外です(笑)
まつもと: そうですねえ、当初はrebaseの概念がなかなか理解できませんでしたし(笑)今は困らない程度には使えるようになりましたが、定形じゃない作業は未だに苦手ですね。
– なんでそんなに情報収集に熱心なのでしょうか。
まつもと: これほど情報が必要なのかは、自分でもわからないですね。人間は対照実験できませんから、「情報をあまり得てこなかったまつもと」と「情報を得てきたまつもと」を比較することもできませんし(笑)
情報や文章がないと生きていけないタイプなんです。インプットするのが自然というか。例えば、食べ物買うときはついラベルの成分表を見ちゃいますし、子供のときも家に百科事典があったのですが、それを「あ」から順番に全部読んでいくような子供でした(笑)とにかく情報がほしい、新しいことを知るのが大好き、そういう性格なんですね。
中3: プログラミング開始。27歳: Ruby開発開始。
– 子どもの頃からそういう性格だったんですね。それが、Rubyに関係しているというのはありますか?
まつもと: はい、それはありますね。
私は中学3年の頃からプログラミングを始めたのですが、当時はBASICというプログラミング言語しかありませんでした。しかしBASICは制約の大きい言語で、なかなかフラストレーションが溜まるわけです。
そこで、「PASCAL入門」という本に出会ったんです。読んでみるとBASICよりも良さげだぞ、と。その本がきっかけで、プログラミング言語が世の中にたくさんあることを知って、言語関連の情報は読み漁りました。
まつもと: で、言語を自分でも作りたい、作れるんじゃないかと思うようになったわけです。それが高校2、3年のころです。
– 実際にRubyを開発されたのはいつ頃でしょうか?
まつもと: 色んな事を調べていくと、言語を作るのは大変だということもわかってきまして、なかなか手をつけるに至りませんでした。実際に開発を始めたのは27歳のころです。「作りたい」と思ってから10年近くが経っていましたね。
1993年2月に作り始めて、初めて公開したのが1995年12月。着手から公開まで、2年10ヶ月かかりました。
– 言語を作るということはもちろんですが、それだけの期間コツコツと開発を続けられたのもすごいです。
「『Rubyをどうよくしていくか』に今も一番関心がある」
– まつもとさんの関心分野についてお聞かせ下さい。今関心がある分野はどこらへんでしょうか?
まつもと: 今も一番関心があるのは、やはりRubyそのものをどうよくしていくか、ですね。
Rubyは、言語のデザインについては成功したと思っています。ですが、例えばバーチャルマシンの性能を上げていくと言った点に関しては、私よりも優れた方々が関わってくださっています。
なので、そういう方々の開発を邪魔することなく、むしろ応援できるように言語をデザインしていくためにはどうしたらいいかというのが現在の関心事ですね。
– プログラミング言語全般についてはいかがでしょうか?
まつもと: やはり、プログラミング言語に関するホットトピックといえば「型」ですね。
Go、Rust、Swiftなど、静的な型が付いた言語が人気を得ていますし、DartやTypeScriptのように既存の言語に型を付けていくと言ったアプローチもある。またPythonやPHPのように、言語の中に型宣言を導入する方向性もあれば、JavaScriptにもコメントとして型を書けるようにしよう、という提案も出てきている。
そういう「型をいかに表現するか」「型でいかにプログラミング体験を改善するか」みたいなところが、ここ10年くらいホットトピックであり続けていますね。
Rubyについてはもう少し違うアプローチを取ろうかとは思っています。
Ruby 3で型を導入したのですが、ソースコード中に型を書かない。直近では別ファイルに書くという形を取っています。
マルチコアのプログラムの生産性を向上させたい
– 少し未来まで見据えて、ご興味のある分野はどこらへんでしょうか?
まつもと: そうですね、いつも勉強したいなと思っているのは、マルチコア環境での効率をいかに良くするかですね。
ただ、私の「効率良く」はむしろプログラミングの生産性の方です。「マルチコアのプログラムを効率よく書ける方法はないだろうか」ということにすごく関心があります。
例えばErlangとかElixirみたいな形の言語があり、そうしたプログラミング体験をRubyで実現しようと思ってRactorという概念をRuby 3.0で入れました。
ですがまだまだRubyの場合は粗削りなので、この辺をどういうふうに抽象化していくと人間にとって自然に記述できるか、かつマルチコア環境を活用してパフォーマンスを向上させることができるか、といったところですね。
Rails 7、GraphQL、Phoenix Framework…「揺らいで」いるところに興味がある
– ほか、言語とは少し違う分野で、ご興味があったりするようなトピックとかはございますか?
まつもと: データベースとその境界線みたいな所にはちょっと興味がありますね。
例えばRubyの場合だとActiveRecordっていうライブラリがあって、リレーショナルデータベースの中のエンティティ、一つのレコードをオブジェクトとして扱うことができる。いわゆるO/R Mapperですが、そうしたアプローチが必ずしも常に最善というわけではなくなってきたなと。例えばGraphQLみたいな形の、リクエストを送りつけるとその結果を返してくれるみたいなアプローチもある。
そういうふうに、パーシステント層とアプリケーション層の間の境界線っていうのは、「これをやっておけば間違いない」という線がちょっと揺らいできている気がするんです。
ほかにも、Webアプリケーションのアーキテクチャにおいても、どこまでをフロントエンドに置いて、どこまでをバックエンドに置くかという境界線も若干揺らいできている気がします。
– 「揺らぎ」ですか。
まつもと: はい、ここに対して何かしたいな、というふうに思ってはいます。ただ私自身がwebの人ではないので知見が足りないのと、なかなか時間が取れなくて全然手が付けられないんですけど。
(言語ではなく)コミュニティ全体としては、例えばRailsはRails7からHotwireという形で、HTMLの断片をアップデートすることによって、簡単なアプリケーションであればJavaScriptを自ら書かずにレスポンシブなシングルページアプリケーションを作れるようになりました。同じようなアプローチはElixirでもPhoenix Frameworkの中でLiveViewとして実現されています。
そのへんも非常に面白いですし、その裏側のデータベースアクセスにおいても、GraphQLみたいなものになるのか、それともまた別のMapperになるのか、そういう揺らぎが生じている気がします。
少し未来には、MVCやMVVMなどとはまた違った切り分けが生まれるのかもしれないと感じています。
後編もどうぞ:
まつもとゆきひろにRubyとコミュニティ、リーダーシップを聞く。「私の仕事は『良いとは何か』を定義すること」 - TechFeed Conference 2022スペシャルインタビュー