Rubyist Hotlinks 【第 37 回】村田賢太 さん
初稿:2018-08-26
はじめに
著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。第 37 回となる今回は、村田賢太さん。
では、お楽しみください。
インタビュー
- 聞き手
- 卜部さん (@shyouhei)
- 語り手
- 村田賢太さん (記事中「村田」)
- 野次馬
- 遠藤さん、柴田さん、そらはーさん
- 日にち
- 2017 年 12 月 12 日
- 場所
- 株式会社Speee
- 写真提供
- 柴田さん
目次
プロフィール
- 村田
- こういうのは何を聞かれるのでしたっけね。
- 卜部
- まず、プロフィールについて。いずれも差し支えなければ、出身地、住所、家族構成など。
- 村田
- 私は、コミッターの中では恐らく一番多い世代ですね。81年生まれですね。遠藤さんのときも話題になっていましたけれども。
- 卜部
- ですね。多いですね
- 村田
- 多いですよね。須藤さんのときもそうですよね。話題になっていましたよね。
- 卜部
- それより下の世代もちょっと増やしていかないと。
- 村田
- 増やしていきたいですね。ぽつぽつとは増えていますよね。
- 卜部
- うん。
- 村田
- ばっと増えるといいですね。われわれが全員、引退すると、もう大変なことになる(笑)。
- 卜部
- そうですね。
- 村田
- 出身地は北海道ですね。
- 卜部
- 北海道といっても広いですが。
- 村田
- 苫小牧市という、下のほうにある。下のほうと言うと、みんな、函館を思い浮かべる。新千歳空港の南側にある都市ですね。港があって、工業都市というところで、そこで生まれ育って、高専を出るまではいたのかな。高専を出て、一瞬、旭川に行ってから、北大の大学院に入るときに札幌に移って、就職も札幌でしたけれども、クックパッドに転職するタイミングで東京に移ってきて。その後、一瞬だけスペインに行っていたけど、結局は東京に戻ってきて、ずっと東京。そういう感じです。
- 卜部
- じゃあ、人生の中では、北海道が長い感じ?
- 村田
- 北海道は一番長いですね。北海道時代は30年いましたね。そうですね。ちょっとずつ住む場所がグレードアップしていったという感じですね。
- 卜部
- グレードアップ。
- 村田
- グレードアップしていきましたね。次。現住所は東京都に住んでいます。家族構成は、私と妻と娘の3人家族です。
好きな言葉、座右の銘
- 村田
- 好きな言葉・・・座右の銘というのはないです。好きな言葉。科学が好きなので、それ系の言葉は、科学っぽい感じの名言は大体好きですけれどもね。
- 卜部
- なるほどね。
- 村田
- 何だろうな。逆に、非科学的なことを言っている人たちはみんな嫌いですね(笑)。
- 卜部
- これまで生きてきて、こういうふうに。
- 村田
- 生きてきて。思いつかないということは恐らく、これというものを持っていないんでしょうね。ただ、何かそういう書物を読んでいて、いいことを言うなみたいなのは何度も出合っているので、思い出したら言いますね。常にこの言葉が私の人生の中心にありますみたいなものは恐らく私にはないですね。
出身地について
- 卜部
- 出身地、北海道について一言。
- 柴田
- 北海道ですか。
- 村田
- 北海道の、この話は後で恐らく出るけれども、(柴田と) 同じ高専なんでね。
- 柴田
- そうですね。都市の距離が広いですかね。遠いか、広いというか。
- 村田
- うん。そうそう。
- 柴田
- 室蘭と苫小牧ですか。
- 村田
- 室蘭と苫小牧はもう近所みたいなもんですよね(笑)。
- 柴田
- バスで1時間みたいな。
- 卜部
- その距離で近所扱い。
- 村田
- だから、(北海道感覚で) 比較的近くで生まれ育ったほうであるけれども、基本的に全然分からないです。苫小牧と室蘭は、あっちはどういう感じなのかとか、全然想像つかないので、全然分からん。札幌で育った人はまた全然違う。
- 卜部
- 札幌には札幌の文化が。
- 村田
- 札幌には札幌の文化があるんでしょうねというのはあって。
- 柴田
- そうですね。
- 村田
- 室蘭は歴史的には、苫小牧よりは昔は栄えていたんでね。いい大学がありますよね。
- 柴田
- 駒沢?
- 村田
- いや、あれ。室工、室工じゃないか。大学じゃなくて高校、室蘭栄高校か。
- 柴田
- 室蘭?
- 村田
- うん。
- 柴田
- 室蘭は、一応、室工大と。
- 村田
- うん。栄の理数科があって。
- 柴田
- 栄の理数科というのが割と。
- 村田
- なので、苫小牧にいて、すごい優秀な人は札幌の高校に行くか、室蘭栄の理数科に行くかみたいな。私は高専に行ったので、そっちの町には行かなかったけれども。
- 柴田
- 北大にステップアップするならそこという感じですね。
尊敬する人
- 村田
- 座右の銘がなくて、尊敬する人ですよね。尊敬する人は、僕はいっぱいいるんですよね。すごい業績を残した人はみんな尊敬していて、具体的に一人挙げろと言われるとクヌースになりますね。この人は、私の人生においてだいぶ影響を受けていますね。あとはファインマンかな。
- 卜部
- クヌースについて、最初に知ったのはいつぐらいですか。
- 村田
- 奥村晴彦先生の『アルゴリズム事典』を高専の1年生か2年生ぐらいのときに買って読んでいたら、アルゴリズム事典なんだけどTeXという項があるのですよ。
- 卜部
- 奥村先生の。
- 村田
- そう。「この本はTeXで書かれている」みたいな話が書いてあって、数式が美しいみたいな。僕はきれいにタイプされた数式を見るのが昔から好きで、なるほど、TeXというのを使うとこういうのが書けるのかみたいな。TeXについて調べていくとクヌースの話が出てきて、研究を辞めて10年間TeXを作り続けたみたいな話が出てくるわけじゃないですか。この人、面白いなと思いながら、クヌースの作品とか本とかを読み続けていくとどんどん好きになっていく、どんどん尊敬していく、という感じで一番尊敬している人はクヌースになった。
- 卜部
- 他の人がぜひ、これを読めばいいみたいな。
- 村田
- どれを読んでほしいかな。クヌースで一番読んでほしいのは、今だと、いや、『TAOCP』とかは絶対。
- 卜部
- 『TAOCP』はいいんだけれども。
- 村田
- 長すぎるし。
- 卜部
- 何か初心者が読むにはちょっと。
- 村田
- ちょっとつらいですね。そういう意味で、初心者が読んで、何か良さそうな本がクヌースにはない(笑)。
- 卜部
- ない(笑)。
- 村田
- なので、取りあえず、あれですかね。結城浩さんの本をかじってから、クヌースの『Concrete Mathematics』とか『TAOCP』とかに行くというのが恐らく一番良いんじゃないかなと。
- 村田
- 遠藤さんはどうですか。クヌースの本については。
- 遠藤
- 本で読んだことがない。
- 村田
- 読んだことがないんですか。あら、珍しい。
- 遠藤
- 何か概要は知っていますけれども。MIXとか何かよく分からないアセンブリ言語を使うんでしょう?
- 村田
- そうだね。MIXは、あれは歴史的な流れで。
- 遠藤
- どうでもいいところしか知らないです。
- 村田
- でも、今はMMIXという、64bit RISCアーキテクチャーのやつに変わっていて。あの人 (クヌース) は面白くて、自分が死ぬことを考えていなくて。
- 遠藤
- すげえ。
- 村田
- MMIXで、ボリューム1を書き換えるという計画を立てているのですよね。まだ、全部できていないのに。という話とか、すごく面白いなと。
- 遠藤
- 85ぐらいですかね。
- 村田
- 今、85歳ぐらいですよ (※正確には80歳でした)。
著作
- 卜部
- 次、著作。
- 村田
- 著作は、本は1冊ありますね。札幌にいた頃、Ruby札幌というのがあって、そこで5人ぐらいのRubyistたちと一緒に活動していたんです。島田さんが代表で本を書くというお仕事を持って来てくれて、Ruby札幌のメンバーで書いたものがあります。タイトルが『Ruby逆引きレシピ』です。
- 卜部
- 『逆引きレシピ』ですね。
- 村田
- 翔泳社さんから出たやつで、いま買って読むとRuby1.8と1.9の間ぐらいの状況が分かる歴史的な書物ということで。
- 卜部
- あれはRuby札幌のみんなで書き直す?
- 村田
- そんなことあるんですかね。何かレシピ系か、誰かが書いているという話をどこかで聞いたことがあるけど、いま書くとなると結構、どういう話になるんですかね。ほとんどRails関係のレシピになりそうですよね。あの頃はまだRailsという感じではなかった。
- 卜部
- まだちょっと。あったけれどもね。
- 村田
- いろいろgemを組み合わせて頑張って作るという感じの時代だったので、そういう内容になっていましたね。
Ruby について
- 卜部
- 次、Rubyについて。いつ頃からRubyに関わり始めましたか。
- 村田
- 私は、初めて触ったRubyのバージョンは1.4。
- 卜部
- 結構、昔ですね。
- 村田
- そう、1.4の最後で、触り始めてすぐ1.6が出たんですよね。きっかけが『C Magazine』というのが昔あって、それにごとけんが連載していたんですよ。それをたまたま見ていて、Rubyというのがあるのかみたいな。後藤謙太郎という著者の名前が書いてある。学校のシラバスを見ると、後藤謙太郎という名前が出ているんですよね。
- 卜部
- あれ?みたいな。
- 村田
- あれ?みたいな。この人、もしかしてと。何か話を聞くと本人だったみたいな経緯があって、Rubyというのはこういう (詳しい人が近くにいる) 言語なのかみたいな。もう一つ、別の軸でKondaraというLinuxディストリビューションが昔あって、私はそれの開発プロジェクトに参加していたんですけれども、Kondaraが幾つかのシステムツールをRubyで書いていて、それもRubyを触るようになったきっかけの一つではありますね。
- 卜部
- それは、何かKondaraのツールを自分でメンテナンスしていた、書いていたとか?
- 村田
- 途中からそうなりました。パッケージビルドツールの動作が遅かったので、改良しようという話が出ていて、私もそれに参加しました。その書き換えをやりながらRubyを触るようになった。もう1個きっかけを挙げるとするとtDiaryですね。tDiaryとHikiを使うようになって、その中身をいじくる。僕はあの頃は、tDiaryとかHikiに、裏でTeXを呼び出して数式の画像を描いて埋め込むためのプラグインを書いて、パッチを投げるといったことをやっていました。
- 卜部
- 当時、まだMathJaXとかはない。
- 村田
- そうですね。MathJaXとかがないから、裏でTeXを呼び出していろいろ、具体的にどうやったか忘れてちゃったんですけれども。確かdvipsなんかを呼び出して、PNGを吐かせるみたいな、そういうプラグインを書いて「作りました」と言って、そして採用してもらうみたいな流れでオープンソース活動をやっていた時代でした。
- 卜部
- それは、でも、何か『C Magazine』とかよりちょっと後の気がするけれども。
- 村田
- 結構、後ですね。『C Magazine』は、あの頃はRubyと出合った初期みたいな感じ。そこまで何かRubyでプログラミングをばりばり書くみたいな、そういう時期ではなかったですね。
- 卜部
- だから、書き始めたきっかけ。知ったきっかけと書き始めたきっかけがちょっとあってという感じですね。
- 村田
- そうそう。それで、なぜRubyに興味を持ったかというと、私にはきっとPerlがつらかったんですよね。Perl5の時代で。
- 卜部
- Perlがつらかった時代。
- 村田
- 何だっけな。Perl4で書かれた人工無脳のプログラムを読もうとして読めなかったという挫折経験があったのと、でもPerl5は読み書きはできたけれど何か結構いろいろまどろっこしくて分からないところがあったりして。それで、もっと分かりやすいのはないのかよと思っていたところに出てきたのがRubyだった。もし、あの頃にたまたまPythonと出合っていたら、Pythonをやっていたかもしれないですよね。そういう感じです。それがきっと98年とか99年とかですかね。年数とかは正確に覚えていないですね。そのぐらいですかね。
- 卜部
- それは、でも、1.4という時期だったのが99年とか00年の初頭ぐらい。
- 村田
- そんな感じですよね。
Python などについて
- 卜部
- 数学は特に名前空間などという発想はあまりないので。
- 村田
- なので、レシーバ.関数名みたいな書き方をすると、データサイエンスの文脈では結構不自然ですよね。
- 柴田
- Pythonもそうなのですか。
- 村田
- Pythonもそうですね。サイン、括弧、関数名とか、np.maxとか書くじゃないですか。
- 遠藤
- np.?
- 村田
- np.max括弧で配列を渡したりするではないですか。
- 遠藤
- npと書いているでしょう?
- 村田
- np、あの、NumPyのモジュール。
- 遠藤
- いや、npって書いているじゃん(笑)。
- 村田
- npはモジュールのprefixなので、レシーバじゃないので。
- 遠藤
- いや、それはそうなんだけれども。
- 村田
- ああいう。僕はどっちかというとそっちの……。
- 遠藤
- じゃあ、Array.maxだったらいいのか。
- 卜部
- それは……。
- 村田
- どうかね。
- 遠藤
- 長さの問題。
- 村田
- それはそれでいいんじゃ。それは、ArrayはArrayで、エイリアスを付けられればいいので。私がRubyでどうしてもやらなきゃいけないときは、ローカル変数に長いクラス名を代入して、Pythonみたいに、それ経由で呼び出したりしますけれども。
- 遠藤
- その話自体は、別にRubyでも書けますよね。
- 村田
- いや、書けるかと言われたら書けるんだけれども、Rubyコミュニティー全体でそういうやり方を良くないというふうにしているので、Rubyでやるとあんまり良いと思われないでしょうね。
- 遠藤
- Pythonはその場合、モジュール性はどうなるのですか。グローバルっぽい関数がいっぱい。
- 村田
- Pythonの場合は。
- 卜部
- from何とかとか、import何とかで。
- 村田
- そうそう、importするんですよ。
- 遠藤
- includeすればいいんじゃないの。
- 村田
- ファイルスコープで。
- 卜部
- Rubyのincludeだとmodule全部来ちゃうじゃない?
- 村田
- そう、全部。ファイルスコープとかはないので、includeの場合はもう全体に影響するんですね。このmoduleが見えるところは、どのファイルから、どのスコープからも全部見えちゃうんです。
- 遠藤
- includeするときに、どのメソッドをincludeするかというのが指定できるようになったら、それだけで解決?
- 村田
- それだけじゃなくて、このファイルのこのスコープだけに見えるみたいな、そういうのがPythonのimportなので、それができないと駄目ですね。
- 遠藤
- でも、別に、それは本当に決め手になるぐらい重要な違いだと言うんだったら、それは……。
- 村田
- いや、その仕様が決め手というよりは、僕の中では、使う側として書くときの自然さが重要ですよね。
- 遠藤
- 書くときの自然さ。いや、なので、同じように書けるように、Rubyの言語自体はほぼできるようになっていると思うので。
- 村田
- 何かrefinement使うとね。
- 遠藤
- 多少の機能不足は、それが本当に重要なのであれば、機能提案をすれば、通る程度の話だなと、今、聞いていて思いました。
- 卜部
- できますよ。あれだよね。requireしたライブラリの中で、refinementを生やしておいて、using Kernelとかすればいいのだよ。
- 村田
- うん、そうだ、そう。
- 卜部
- using Kernelではない。refine Kernelだ、ごめん。
- 村田
- そう。refinementである程度、対応できるなと思ったけれども。
- 卜部
- ただ、そういう使い方を、みんな、今、していないという現実はあるね。
- 村田
- というのと、何かが駄目だった。何かが違ったわけだよな。何かちょっと細かいことは忘れてしまったので。
- 卜部
- その辺は後から直してください。
- 村田
- そうそう、後々、ちゃんと提案できるようなものにしちゃおうかなと思いますけれども、何かいくつかRuby。今のRubyをそのままデータサイエンスで使おうとすると、結構、何かもやもやするなというところがありますなというところというのと、あと、何かやっぱり言語ごとに得意分野が変わるというのは普通なので、いいんじゃないかなと思っていますけれどもね。駄目ですかね。
- 遠藤
- 知らない(笑)。
- 村田
- 結局、Pythonも、Pythonでデータサイエンスをしているといっても、全部、Pythonで書いているわけじゃないんでね。呼び出しているだけなので。RubyはPyCallを使わなきゃ駄目だけれども、Pythonの場合はPythonが用意しているCのFFIで特定のライブラリを呼んでくるだけなので、変わりはしないですよとは思っていますけれどもね。
- 卜部
- だいぶ次の話に来ているけれども、Rubyの好きなところと嫌いなところ。今、話していたのは、向いている、向いていないみたいな話だったので、もうちょっと好き嫌いの方向に行くと。
- 村田
- 僕はRubyを使っていて好きなところは、ちゃんとオブジェクト指向をしているところですかね。そこはPythonなんかよりも全然良いところで、Pythonのオブジェクト指向はPerlよりはましだけれども、そうは言っても何か中途半端ですよね。だから、どっちかにしなよみたいな感じがありますけれども。
- sorah
- そもそも関数が多いのは、あまりオブジェクト指向的ではないですよね。
- 村田
- そうそう。逆に言うと、だから、オブジェクト指向がそういう科学技術計算に向いていないパラダイムなんだろうとは思っていますけれどもね。
- 卜部
- Juliaはどうなっているの?
- 村田
- Juliaはオブジェクト指向じゃないです。
- 卜部
- 何か型総称関数みたいな感じになっているんじゃないですか。
- 村田
- そうですね。あと、C++の多重関数的な、多重ディスパッチの仕様があるので、それである程度、オブジェクト指向っぽい書き方はできますが、第1引数がレシーバみたいな、そういうやり方ですよね。
- 村田
- だから、作ろうと思えば作れるという感じですよね。ただ、Juliaが言語仕様としてオブジェクト指向的なパラダイムをきちんと表現できるようにしているわけではないですと。狙いも、Juliaの場合はFORTRANの置き換えとかMATLABの置き換えかな、を狙っているというところがあるので、オブジェクト指向言語の置き換えは特に目指していないはずですから、いいんじゃないかなと思う。なので、Rubyは今後もまともなオブジェクト指向言語として、ぜひ生き続けてほしいなと思っています。恐らくオブジェクト指向は今後、数十年以上はパラダイムとして生き残るんじゃないかと思うので。たまにディスられたりしますけれどもね。
- 遠藤
- そうですか。
- 村田
- 何かオブジェクト指向は駄目だみたいなことを言う人が時々出てきますよね。
- 卜部
- 言う人もいるね。
- 村田
- でも、あれはちょっと、何かオブジェクト指向と言いつつも、何か攻撃対象が可視性だけだったりとか、あとは何だ。
- 卜部
- ちょっとこれはるびまの趣旨にそぐわない内容になってきたのでちょっと(笑)。
- 村田
- やめましょうか(笑)。
- 卜部
- やめておきましょうかね。
Ruby の嫌いなところ
- 卜部
- Rubyの嫌いなところ。
- 村田
- 嫌いなところか。何だろうな。あまりないんですよね。Rubyという言語自体の嫌いなところはあまりなくて。相当良くできているという言い方をすると上から目線になっちゃうから駄目だな。こんな素晴らしい言語になってくれてありがとうみたいな感じですよね。
- 遠藤
- Pythonとの比較で言うと、Lisp-1、Lisp-2はどうですかね。
- 村田
- Lisp-1、Lisp-2というのがよく分かっていなかったのですけれども。
- 遠藤
- 括弧のないメソッド呼び出しを書いたら、メソッドオブジェクトを得られるのがLisp-1、みたいな。
- 村田
- それですね、そうそう。そういう話で言うと、歴史的な経緯でもう変えられないと思うんですけれども、doブロックと、ブロックの扱いがちょっと一貫性がないですよね、Rubyの言語仕様で
- 遠藤
- 一貫性がない。
- 卜部
- ブロックだけ特別扱いになっているという感じ?
- 村田
- そうです。特別扱いになっているんですよ。Elixirのほうが何か一貫性のある言語になっているかなという気がしていて。
- 遠藤
- 確かに。
- 村田
- あの辺を、もうちょっとうまくすると。
- 卜部
- というか、うろ覚えだけれども、Elixirのブロックっぽいやつは、最後の引数がラムダだったら、ちょっと違った書き方ができるみたいな。
- 遠藤
- ブロックっぽいって何でしたっけ。
- 卜部
- 書き方だけの問題だったね、確か。
- 村田
- Swiftと同じですよね。
- 卜部
- うん。
- 村田
- あとは、関数とブロックの違い、メソッドとブロックの違いとかも、何かレシーバがバインドされているブロックがメソッドみたいなのにしても良かったのかなと思うのですけれども、それは後付けの理由なので。歴史的にブロックはそういうものじゃなかったから、しょうがないかなと思うのですけれども。そういうのが何か。そうか。これは座右の銘の話につながるかもしれないですけれども、オッカムの剃刀が僕は好き。だから、僕はLISPも好きだし、Smalltalkも好きなんですよ。超小さい言語じゃないですか。特別扱いするものが少ないという。
- 遠藤
- それは、でも、Rubyにはあまり適用されないような気がするんですけれども(笑)。
- 村田
- 適用されないです。適用されないので、そういうところを何か意識しちゃうと何かちょっと気になる。けど、普段使っているときは気にならないので、恐らく嫌いなところはあんまりないんじゃないかなとは思います。
- 村田
- あと何か・・・そうそう、この間、誰だかのブログを、遠藤さんが貼っていましたけれども、エモい系の話で。
- 遠藤
- ああ。shinh さんの。http://shinh.skr.jp/m/?date=20160616#p01
- 村田
- そうそう。こういうの (エモい系の話) より技術の話が好きなので、こういう文化はそんなに好きではないけれども、嫌いというほどではないので、みんな仲良くやっていきましょうという。
- 遠藤
- どっちなのと(笑)。
- 卜部
- shinh さんの日記がかつてあったと。あったね。あったねと言ってしまう。
- 遠藤
- 言うほど昔じゃないですね。2016年。
- 村田
- エモい人が多いみたいな話をしていますね。
- 遠藤
- また荒れる(笑)。
- 村田
- 僕は、だから、今のRubyKaigiが大好きです。
- 村田
- そういう側面があるところはRubyコミュニティの良いところなんだろうけど、一方でそういうのを見てキモいと思う人が存在するのはしょうがないかなと思ってはいます。
- 卜部
- だから、Ruby言語そのものじゃなくて、ちょっと周辺の話ですかね。
- 村田
- そうですね。言語そのものに関しては、そんなに大きな欠点もないですし、これだけダイナミックで複雑な言語なのに、意外と速く動くし、Rubyの処理系はすごいですよね。こんなダイナミックでこんな速いのかみたいな。
- 遠藤
- Rubyを遅いと言ったのは、一昔前の話ですからね。
- 村田
- そうなんですよ。Pythonは、逆にPythonに輸出できるところはいっぱいあると思うんですよね。Pythonの処理系に。
- 遠藤
- 何をやるにも「Rubyは遅いから」と言われていて。もちろん、今でも適応分野によってはそうなんですけれども、では、何でPythonは今、こんなに盛り上がっているんだよ。
- 村田
- となりますよね。大体、みんな、遅いところはCで書かれているからですよね。みんなが使う部分で、相当遅い部分は大体Cで書かれていて。
- 遠藤
- 言語処理系本体の遅さなんてどうでも良かったという。
- 村田
- どうでも良かったということですね(笑)。
Ruby の好きなメソッドと嫌いなメソッド
- 卜部
- Rubyの好きなメソッドと嫌いなメソッドを教えてください。
- 村田
- これは難しいですよね。
- 卜部
- 昔はmapとかcollectとか言っていた。
- 村田
- 今、何だろうな。最近、導入されたので、やったと思ったのは、Array#sumですかね。
- 卜部
- Array#sumは自分で作ったやつじゃないですか。
- 村田
- そうですね。ああ、やったと思って。こういうのが入る時代になったんだなと思いました。それは置いておいて、好きなメソッドは何だろう。いや、やっぱりpですかね。一番世話になっているかな。これは便利だなと普段思わないけれども、改めて考えると超便利だなと思います。
- 遠藤
- 思わない?この言語を使うたびに毎回思いますけれども。
- 村田
- Pythonでは、printかみたいな(笑)。ただ、Pythonのprintは若干便利なんです。後ろ側にSTDERRを渡せるのが便利ですね。これは……。
- 卜部
- 出し先が選べる?
- 村田
- そうそう、出し先をね。pは確かできないですよね。
- 卜部
- できないですね。
- 村田
- それがちょっと便利。だから、IOにpを生やせばいいのかなという気が、今、した。
- 遠藤
- IOにか。
- 村田
- それも、でも、Rubyのしょうがないところとして、(書いてる) 途中でSTDERRに吐かせようと思ったときは、行頭に戻って、STDERR.と書き直さなきゃいけないのが面倒。
- 遠藤
- 変えたい出し先は99%STDERRなので、STDERRにだけpを生やすというのはありのような気がしますね。
- 村田
- 確かにそうかもしれないですね。そうですよね。STDOUTに、わざわざ.pと書くことは恐らくない。
- 遠藤
- STDERR.puts何たらinspectって書かなきゃいけないのは、確かに嫌だ。
- 村田
- でも、その出し先のIOを変数に入れておきたいという人はいるかもしれません。pしたい先のIO。Pythonのprintは、後ろにfile=で出し先を書ける。だから、プログラムを書いていて、途中で、これはSTDERRに出すべきだなと思ったときに、戻らないで、そのまま書けるという。ただの怠慢ですね。
- 卜部
- Rubyでも似たような話はあって。Marshal.dumpとかJSON.dumpとかは、最後に引数でIOを渡せるので、JSON.dumpを使っている限りはSTDERRには吐ける、やったみたいな。インデントしてくれないから、超見づらいけれども。嫌いなメソッドは?
- 村田
- 嫌いなメソッドは何かな。嫌いなメソッドなんてあったかな。
- 遠藤
- ないのか。すごい。
- 村田
- だって、嫌いなメソッドは恐らく使わないと思うんですよね。だから。
- 遠藤
- どうでもいいと。
- 村田
- どうでもいい。これはチーム開発をほとんどしていないことの表れなのかな。
- 卜部
- 普段使わざるを得ないけれどもというものはあまりない?
- 村田
- そうですね。これは嫌いなんだけれども、これがないと書けないんだよなみたいなものがもしあったとしたら、恐らくこれのおかげで実現できているんだからと思って、好きになる気がするね。
- 遠藤
- さっきのProcの話に関連して、define_methodとかは?
- 村田
- define_methodは逆に、僕はdefine_methodだけでいいと思っている派なので。
- 遠藤
- それはそれでいいという感じですね。
- 村田
- define_methodは好きですね。逆にdefine_methodがあるならdefは要らないじゃないかと思ったりしてね。
- 卜部
- ちょっと挙動が違うんだよね。
- 遠藤
- スコープがね。
- 村田
- スコープがね。ブロックのスコープというのがあるんで。嫌いなメソッド・・・ぱっと出てこないですね。何だろう。
- 遠藤
- evalとか。
- 村田
- evalは・・・僕、嫌いじゃないですね。
- 遠藤
- 僕も嫌いじゃない。
- 村田
- evalは最高じゃないですか。でも、あれのせいで静的解析ができないという話をされると、本当、そのとおりだなとは思う。でも、Juliaはどうなっているんだっけな。その辺をちゃんと調べたことない。
- 卜部
- PythonとかJuliaとか、僕はそんなにシリアスに使わないから、普通にPythonと起動したり、Juliaと起動したりすると、CUIが立ち上がって、大体、そこで完結しちゃうんですよ。スクリプトが分かっていることをシリアスに使わないから。何かスクリプトの中で、何か、Lintとか、そういうことをしたいという需要を何か知らなかった、相当数も知らないみたいな感じですね。でも、でっかくなったけれども、当然必要だよね。
- 村田
- そうですね。Juliaも速いとか言っているけれども、普通にダイナミック言語なので、evalもあるし、evalするソースの中にちゃんとマクロも書けるので、すごいですよね。何であんな速いんだろうみたいなこと、すごい謎なんですけれども。ちゃんと読めよという話ですよね。それから、RubyのevalとPythonのevalで1つ違いがある。Pythonがいいなと思うのは、Pythonはevalするときに、evalじゃなくてexecだった。execでグローバルの名前空間とローカル変数の名前空間をそれぞれ渡せるのです。それをうまく利用してグローバルの名前空間で見えるものを制限して、外からもらってきたコードを……
- 遠藤
- サンドボックスみたいなことができると。
- 村田
- そう、サンドボックスみたいなものを簡単に実現してて。これはすげえなと思ったことはあります。
- 遠藤
- へー、知らなかった。
- 村田
- あとは、ソースを解析して、すぐ実行しちゃうんじゃなくて、Pythonはいったん何か、コンパイルした結果だけをコードオブジェクトとして取り出して持っていくこともできるはずです。それはそれでなかなかいいなと思ったことはあります。
- 遠藤
- なるほど。へえ。
- 村田
- この辺の仕様は何でそうしたのかなというのが分からなくて、謎なんですけれども。Pythonは何でそうなっているんでしょうね。ここにPythonに詳しい人はそんなにいないから……
- 遠藤
- 一番詳しいのは村田さんじゃないですか。
- 村田
- そうかもしれない。そういうところの違いをいろいろ調べていくと、これはRubyでできたらいいなと思うことがあるので、ちょっとずつ還元していこうかなとは思っているところです。なので、嫌いなところはないけれども、PythonとかJuliaを見ていて、こうなっているほうがいいんじゃないかなと思うところはぽつぽつ見えているので、そういうところは何とかしたいなと思っている、という感じです。そういうので最近見つけたのは、Rubyは自分で作ったスレッドしかGVLを取得できない制限が実はあったということに気付きました。何か出所不明なネイティブスレッドがGVLを取得して、Rubyのインタプリタを呼び出すとかできないのです。
- 卜部
- 難しそうかも。
- 村田
- でもPythonではできるんですよ。
- 遠藤
- あんまり組み込みとして使うAPIとかの整備は進んでいないですよね。
- 村田
- 笹田さんに聞くと、単にそうなっていないだけで意図してはいない、という話だったので、そこは直せるなと思いました。いろいろ他の言語を見ていると面白いですよ。
- 遠藤
- 割と、デスクトップアプリに組み込む場合の話ですね。
- 村田
- そうでしょう。あとは他のプログラミング言語に組み込むとか。僕いまPyCallをやっているから、これはRubyからPythonなんですけれども、逆方向もやりたいです。でも、この制限でPythonからRubyを呼び出そうとしたらできないということが分かったので、そこを何とかしたいなと。
- 遠藤
- そういう需要は減っていきそうですかね。クラウドの時代。
- 村田
- 今、一番悩みが大きいのが、Dockerが主流になってきて、1つのイメージにRubyとPython一緒に入れたりしないらしいんですね。それが絶対というルールの場合は、PyCallが使えないので、つらいなと思っています。
- 遠藤
- いや、絶対にやる、絶対という、そういうルールがあるんですか。
- 村田
- 何か人によっては、もうRuby用のコンテナ、Pythonのコンテナみたいなのがあって、そこは混ぜたくないらしいですよ。
- 遠藤
- 気持ちは分かるけれども、依存ライブラリを入れるわけでしょう? その場合、Pythonが……。
- 村田
- そうそう、だから、Pythonが、Rubyの依存ライブラリですよと認識してくれればいいのですけれども、何かそこが人によっては駄目らしくて、PythonはRubyと対等みたいな、何か別物。
- 卜部
- 昔のRubyみたいに、インストールすると、しれっとtcl/tkがある。
- 村田
- うん。なので、gemインストールでPythonまでインストールされれば、恐らく解決するのかなとかという、ちょっと考えたりはしているのですけれども。
- 遠藤
- gem install anacondaとか。
- 卜部
- 何か、でも、dockerを使っていて、OSからインストールして、頑張ってRubyまで入れようとすると、何かの依存でPerlとPythonは入る気がしません?
- 村田
- そうなんですよ。PythonはOpenSSLをソースからビルドしようとすると入るんですよ。Pythonじゃない、Perlだ、Perl。
- 遠藤
- Perlは、何か元々必須とされてきた歴史的経緯がありますからね。Debianとかで。
- 村田
- どれだったかな。wgetをソースからビルドしようとすると、PerlかPythonか、どっちかが必要だった気がします。
- 卜部
- 何か、何だかんだで。
- 村田
- うん。どっちも入るんですよね。
- 遠藤
- ubuntuのapt関係の拡張コマンドとかも、結構Pythonで書かれたりするので、もうPython自体は入りますけれども、ここでPythonと言われているのは、SciPyなどのエコシステム全体のことを言っている気がするのですけれども、その辺は入らないですね。
- 村田
- そうですね。
- 卜部
- なるほどね。
- 村田
- 時代的に、いろいろ悩ましいですね。
Rubyを使ってうまくいった事例
- 卜部
- 次は。
- 村田
- 次は何でしょう。
- 卜部
- Rubyを使って成功だった、うまくいったという事例はありますか。
- 村田
- 使って成功だった。Rubyを使っていて成功だったのは……。
- 卜部
- でも、さっきの話だと、MomongaではなくてKondaraのパッケージシステムとか。
- 村田
- あれは、Kondaraの頃は、恐らくRPM系だとKondaraしか持っていなかったと思うので。良かった。でも、あれをPythonで作っていたら、RedHatか採用してしちゃったかもしれないなと思うとまたまたあれですよね(笑)。
- 卜部
- でも、そのときはうまくいっていたわけですよね。
- 村田
- そうですね。Kondaraの時代はうまくいっていたと思います。恐らく私の個人的な話で言うと、Speeeでフルタイムコミッターとして働けているのが一番の成功だったのではないですかね。
- 遠藤
- 職を得た(笑)。
- 村田
- 職を得た。Rubyで職を得られたというのは、クックパッドに転職したときは、あともう1社ぐらいしか候補、Rubyを使った仕事ができそうな会社がなくて。
- 遠藤
- 入った時点で、もう、Rubyコミッターだったのでしたっけ。クックパッドに。
- 村田
- あのときは、そうですね。確か2010年の2月にRubyコミッターになったので、クックパッドに入った時点ではもうコミッターでした。だから、あのときと比べると今はすごいですよね。Rubyを書きたいと思ったら、いくらでも仕事がある。
- 卜部
- いくらでもとは言わんけれども、ありますね。全然増えているね。
- 遠藤
- 特別なコネをたよらなくても、転職サイトとかで普通に見つかりますからね。
- 卜部
- そうですね。周辺の成功はたくさんありますね。
- 村田
- そうなんですよ。なので、めでたいなと思うのと同時に、まつもとさんとDHHには頭が上がらないという。死ぬまでこのお二人に感謝し続けなきゃいけないと思いながら生きています。
キラーアプリ
- 卜部
- 自分にとって、これはキラーアプリだったというというのは何ですか。
- 村田
- これは、何だろう。自分にとってのキラーアプリですよね。まずはtDiaryですね。あと、Hiki。この2つはすごい長い間使っていたと思います。HikiとtDiaryをずっと使っていて、でも何かをきっかけに使わなくなった。何だろうな。ちょっと覚えていないんですけれど・・・恐らくブログとかを書かなくなった、面倒くさくて書かなくなって、ずっと使わなくなってから、やっぱりまた始めようかなと思ったときはもうはてなダイアリーとか、はてなブログとかの方がメジャーだったから、そっちを使ったという感じだったような気がしますね。
- 村田
- それで、その次は何でしょうね。アプリじゃないけど、Active Recordはすごい便利ですね。
- 卜部
- Active Record。
- 村田
- あれがあるから、Rubyを使っているんじゃないかと思うぐらいの存在だと思いますね。ライブラリも対象ですもんね。
- 卜部
- うん。ライブラリも。
- 村田
- 今だと一番はActive Recordですかね。Rubyの中でもキラーアプリ、キラーライブラリは。
- 遠藤
- 世間的には多分そうだと思います。村田さん自身にとってもそうですか。
- 村田
- うん。何かDBとやりとりをするときは、僕は生のSQLを書くときもActive Recordを使いますね。コネクションアダプターを取ってきて、execみたいなことをしますね。
- 卜部
- だから、大体Rails consoleから。
- 村田
- そうですかね。ええ。
- 卜部
- DB consoleはあまり使わない?
- 村田
- DB consoleを使うときは、普通に、デスクトップのアプリケーションを使います。だから、それでいろいろ手で頑張りつつ、ちょっとずつコードにしていこうとするときは、割とActive Recordですね。でも、それはActive Recordの機能はほとんど使っていないけれども、要は、コネクションを得るまでが楽というのが一番重要ですね。接続先のDBMSのことを特に気にせずにハッシュを渡せば、それでコネクションをもらえるので超便利です。他は何だろうな。結構難しいですよね。Rubyで・・・数カ月前までは (PyCall の実装で) RubyFFIが超便利と思っていたんですよ。でも、もう使わなくなった。
- 卜部
- FFIは単に使わなくなっただけですか。
- 村田
- Fiddleだけにしようとした。RubyFFIをずっと使っていて、めっちゃPyCallを開発しやすかったんですけど、いろいろ、結局、欲しいオブジェクトを手に入れるまでにいろんなオブジェクトを作ってしまうので、そういうのを全部やめて最適化しようとすると結局Cでいろいろ書かなきゃいけなくなったんですよね。そうするんだったらRubyFFIを使わずにFiddleでライブラリを開いてハンドルをC側に持っていって、あとは全部Cでやったほうが速いじゃんみたいな。
- 遠藤
- Cで書く?
- 村田
- Cで書く。要はライブラリをdlopenして、dlsymを呼ぶところまではRuby側でやって、あとはC側で全部やるという。
- 遠藤
- C側でやるほうが速い。そうですか。
- 村田
- そうですね。僕はC言語書き慣れてるというのもあるのですけれども。
- 卜部
- 普通に拡張ライブラリで良くない?という気もするけれども。
- 村田
- それをやりたくないのは、リンクしちゃうからですね。libpythonを直接リンクしちゃうのが嫌で。pyenvとかを使って複数のPythonのバージョンに対応させたい。
- 卜部
- そこは一段かませたい。
- 村田
- 一段かましたかったというのと、恐らくまだPython 2を捨てられない人もいると思うので、Python 2にも対応するにはそれが必要だったというのが理由です。もう一つは、Python側の何か、そういうCのライブラリも、大体、FFIを使って作っているんですよね。直接Cで書かずに。なので、例えば最近やっているのだったら、mxnetとか、あとはXGBoostのRubyバインディングを作ろうとしているんですけれども、基本的にPythonのやつをそのままRubyに書き直そうとすると、Python側がFFIだったらRuby側もFFIになるという、そういう感じでやっています。Fiddleだと、ちょっと書きにくいとこがあったりするので、僕がFiddleに慣れていないだけかもしれないですけれども。だから、基本的にはハンドルを取ってきて、アドレスをC側に渡して、あとは全部Cでやるみたいなことをやっています。
- 遠藤
- それが書きやすいんだ(笑)。
- 村田
- 書きやすいですよ。C言語が最初に覚えた高級言語・・・Cじゃないか、BASICか。BASICの次がCだからというのもあるのかもしれないですけれども。だって、結局、C側の関数を呼び出すわけですよね。
- 遠藤
- そうですね。
- 村田
- だとしたら、Cのほうが書きやすくないですか。
Ruby習得にあたって
- 卜部
- 次の質問にも絡んでくるんですけれども、Rubyの習得は簡単でしたか。習得に当たって、何か引っ掛かったところはありましたか。
- 遠藤
- それは何、村田さんはまだRubyを十分習得できていないんではないか、という(笑)。
- 卜部
- いやいや。
- 村田
- Rubyの習得は意外とつまずかなかったと思いますね。みんながイテレータとかで悩んでいたっぽい話をよく聞きますけれども、僕は意外とイテレータはすんなり理解できてましたね。
- 卜部
- Cからやり始めたときに、多分、Rubyで新しく登場するコンセプトというと、イテレータとかですかね。
- 村田
- イテレータですよね。ただ、イテレータは僕の中では、C++のイテレータと何かリンクして。あれは、でも、外部イテレータだけれども。
- 卜部
- C++でイテレータと呼ばれているものとだいぶ形が違うね。
- 遠藤
- for文ですね。外部イテレータとか。
- 村田
- 何かで外部イテレータと内部イテレータの説明をしている公式ドキュメントがあったじゃないですか。あの初期の頃に。
- 遠藤
- ああ。
- 卜部
- それもごとけんが書いたやつかな。
- 遠藤
- かな。昔のwikiにあったやつ。
- 村田
- それを読んで、外部イテレータはC++のあれか。それを要は隠すようにしたものがRubyのイテレータかと思って、納得したという感じですか。
- 卜部
- 当初の理解としてはそうだった?
- 村田
- その後、クロージャーになったという。
- 卜部
- 逆に何か引っ掛かったところ。
- 村田
- 引っ掛かったのは、恐らくprivate/protectedのところとかは、初期は引っ掛かっていたんじゃないかと思うんですけれども、時間が解決したと思います。もう、使うときはprivateしか使わない。
- 卜部
- そうね。protectedはみんな、使わなくなりましたね。
- 村田
- そうですね。そんなとこですかね。あんまり何か複雑なことをして、プログラムが読みにくいみたいなことは、特にRailsの実装を読んでいるときとかよくありますけれども、ああいう作り方をするとしょうがないよなという感じなので。
- 卜部
- そこは慣れで何とか。
- 村田
- 慣れですよね。そう、あれも、Rubyの場合、動的言語だから (エディタの機能で) ジャンプがうまくできないとかがあるから読みにくい。でも、Mozillaのコードを読んでるときもジャンプとかできない。
- 卜部
- できないですね。
- 村田
- ですよね。だから、(Ruby を使い始める段階で) ああいうのを一通り経験していたので、そういうもんだと思って読んでいると、そんなに大変じゃないなという印象です。
- 卜部
- そんなもん?
- 村田
- そんなものですかね。
プログラミングとの出会い
- 卜部
- じゃあ、次のところに行って。プログラミング全般のことというやつなんですけれども、BASICとかCの話をしていたんですけれども、初めてプログラミングそのものを体験したのはいつ頃ですか。
- 村田
- 他人のプログラムを見て打ち込んだのは、恐らく小学校4年生ぐらいの頃だと思います。MSX2が家にあって、親が『MSX・FAN』を買ってきて、それに載っているコードを打ち込むとゲームができるみたいなことを教えてもらったので、それを見ながら打ち込んで、ゲームで遊んでいたのが最初ですかね。
- 卜部
- じゃあ、それがしばらくやっていたと。
- 村田
- そうですね。小学校4年生からずっとやっていて、小学校5年生か6年生ぐらいの頃にZ80のアセンブラを始めて。
- 卜部
- 意外に。
- 遠藤
- 一気に飛びましたね。
- 村田
- でも『MSX・FAN』もこう、投稿プログラムとかを見ていると、もう16進の羅列がいっぱい載っているんですね。
- 遠藤
- 分かる、分かる、分かる。data コマンド(笑)。
- 村田
- そうそう。それをマシン語だということまでは知っていて、ちゃんと説明も書いてあるので、ある程度はでは理解しているんです。あとは、じゃあ、これを実際に自分でやるにはどうするのかみたいなところを、実際に持ち出してやり始めたのは小5か小6ぐらいの頃ですかね。それをやり始めてからは、何かずっとノートにZ80のアセンブラコードを書き続けるみたいな感じの生活をしていました。
- 遠藤
- いい話。
- 村田
- いい話ですよね。
- 遠藤
- いい話ですね。
- 村田
- ノートに手書きというのは基本ですかね。
- 卜部
- 苫小牧のいい話。
- 村田
- 苫小牧のいい話。そう。あとは、いつか忘れた・・・恐らく中学へ入ってからだと思うんですけれども、本屋でたまたまC言語の本を見つけて、親に買ってもらったんですよ。
- 卜部
- でも、Cは本だけではできないじゃん。
- 村田
- そのときはコンパイラを持っていなかったから、本を読むしかなかったんです。『MSX・FAN』が終わるぐらいの頃に、半年ぐらいC言語の連載があって、MSXには10万円ぐらいする中途半端なCコンパイラがあったんですけれども、さすがに買えないですよね。だから、その連載を読みつつ。
- 卜部
- きっとこういうふうにすれば。
- 村田
- そうそう。こう書くとこう動くと書いてあるというのが頭の中にインプットされて、本屋で買ったCの教科書みたいなものを読みながら、ずっと頭の中で、頭の中の処理系を動かしながら、本を読み、コードを書くみたいなことをずっとやっていた。
- 遠藤
- 処理系なしにそんなにC言語に興味を持つというんがよく分からないんですけれども。
- 村田
- プログラミング言語に興味があったからじゃないですかね。BASICそのものにも興味があった。
- 卜部
- その頃、多分、選択肢がそんなになかったと思う。
- 村田
- ないですよ。だから……。
- 卜部
- BASICに飽きて、次、どこに行くのというと。
- 村田
- MSXの場合は、マシン語に行って、その次、僕はForthかな。Forthに行ったんですよ。だから、もう全部、手に入ったものを使うしかない。
- 遠藤
- Forthは処理系があった?
- 村田
- Forthの処理系が『MSX・FAN』の付録に入っていたか何だかで手元にはあったんですよね。それと、あとはあの当時、電気屋さんにTAKERUというのがあって。
- 遠藤
- うん、ありました。買うやつ、買うやつ。自販機、自販機。
- 村田
- そうそう。フロッピーディスクが出てくる自販機があって。それで、何か手に入れた何かディスクマガジン的なものに、誰だかが作った無名の言語とかも入っていて、そういうのを手当たり次第に触っていたのですけれども、結局、手になじんだのはForthだった気がしますね。Forthが面白くて、Forthを使ったりしていて。でも、結局、Cのコンパイラは手に入らず、高専に入るまでは手に入らず。だから、Cはずっと読書でしたね。意外と読書をするだけでも何とかなって、高専に入って、IBMのPCとVisual C++を買ってもらったら、その瞬間にもうプログラムを書いてコンパイルできたので、意外と読書だけで何とかなるというのが私の体験です。
- 遠藤
- いや、何か手元に1個も処理系がなかったら、それはいろいろな本で入ってくる情報を何か全力で吸収するというか、楽しむのは分かるんですけれども、BASICなりForthなりがあったんですよね。
- 村田
- 一応、BASIC、Forthはあったんですけれども、情報源としては、これほど豊富じゃないんですよね。やっぱりその雑誌に連載があって、定期的に情報が入ってくるのはC言語とBASICとマシン語だけだったし。
- 遠藤
- そうか。中学校、高校ぐらいの話なんですね。
- 村田
- そうです。中学校ぐらいですね。周りにそういうのを知っている人は1人もいないし。
- 遠藤
- そろそろBASICの雑誌とかも。Cが増えつつあった頃ですかね。
- 村田
- そうですね。BASICの雑誌はもう『MSX・FAN』しかなかったと思いますね。
- 遠藤
- 『マイコンBASIC Magazine』はありますよ。
- 村田
- 『ベーマガ』と『MSX・FAN』のどっちが最後だったか、覚えていないぐらいです。『ベーマガ』はその頃、まだあったのかな。
- 遠藤
- 『ベーマガ』は、だいぶありますよ。
- 村田
- ありましたっけ。
- 遠藤
- 2000年を越えているはず。
- 卜部
- とか言っても、だから、今と違って、主な情報の入手源は雑誌。
- 村田
- 雑誌ですね。
- 卜部
- 雑誌の中で何が書かれているかというとCだった。
- 村田
- Cだった。マシン語かCだった。しかも、マシン語もZ80だったという。それで、唯一、手元にあった、よく作られた処理系はZ80のアセンブラだったというので、そういう生活でしたね。あとは、そうそう、モニターという名前のソフトウエアがあって、それでBASICのBIOS部分をダンプさせたり、ディスアセンブルさせたりしてみたりして遊んでいた頃でしたよね。
- 遠藤
- モン、MON。
- 村田
- そうそう。モン、MONですね。あれもあれで面白かったですね。
- 卜部
- じゃあ、高専入ってからはずっとCですか。
- 村田
- そうですね。しばらくの間、ずっとCですね。授業でもやるしというのもあって。だから、Cをずっとやって、授業はCだけれども、僕はVisual C++を買ってもらったので、MSDNのドキュメントを見ると、C++というのがあるということは分かったので、C++もやっていました。
- 村田
- なぜか苫小牧という田舎なのに、ストラウストラップの『C++第3版』が本屋に1冊だけあったんですよ。それをバイト代で買って、家で読みふけるみたいな、そういうことをしていました。あんな分厚い本を、今じゃ絶対読めないなと思うんですけれども、あの当時は、あれが楽しかったというのはありましたね。でも、つらかったのは、当時あの本に書いてあるC++がちゃんと動くコンパイラがないんですよね。
- 卜部
- そうね。
- 村田
- だから、テンプレートとか書いてあるんだけれども、家にあるVisual C++では動かねえなみたいな、そういう苦い思いをした記憶がすごい残っていますね。
Ruby以外の好きな言語
- 卜部
- 今ではRuby以外のプログラミング言語をたくさん使うと思いますが、何が好きですか。
- 村田
- Ruby以外で言うと、PythonとJulia。Juliaのほうが好きなんですけれども、でも、Juliaでまともにプログラミングができるほど、僕はJuliaをまだ使い慣れていないので、Rubyでできないことがあるときは、まずPythonを使います。
- 卜部
- Rは?
- 村田
- Rも全然使わないですね。何かRじゃないとできないことをするシーンがほとんどないので、僕はRはあまり使わないですね。ただ、だから、僕は、Rのスキルとしては、Rでライブラリを自分で書けるほどのスキルはないけれども、読めるくらいなんです。Rをデータ解析用に使うぐらいならできるみたいな。R Studioとかでデータを読み込んで、分析して可視化するぐらいならできるけれども、自分で何かR向けのライブラリを作るために必要な、何かパッケージマネジメントシステムの知識とかはないという、そういう感じですね。ほぼ日常的にRが必要なシーンがないので、Rはあんまり使わないです。でも、一応、インストールはしてあります。
- 遠藤
- 何か統計関係の新たなモデルの提案とか、そういうのは大体Rで、まず提供されるという印象が。
- 村田
- みたいですね。誰かから聞いたんですけれども、Rで実装されたものがないと、論文が通らない。
- 遠藤
- そうそう。
- 村田
- そういう論文誌があるらしくて、それはみんな、R使いますよねという気がします。それもしょうがないような気がしますけれどもね。(論文を) レビューするときに知らない言語で書かれていたら、(正しさを確認する) コストが高いし、あとは比較対象のモデルもRで書かれているとか、そういういろいろな事情があって、Rに統一せざるを得ないんだと思うんです。なので、Rcallを作るとそういうのがRubyから読めるので、便利になるんだろうなと思うけど、いま私自身が日常的にRを使うことがないので、あんまり必要としていないです。ただ、Ruby Confで、僕のトークを聞いていた人の中に、1人「俺はPythonは使わないけれども、R使っているから、似たようなことをRでやりたい」と言われたんですよ。言ってきた人がいて、だから、Rcallは (いつか) 作ろうと思っています。その人がいるので。
- 遠藤
- おまえが作るじゃないんだ(笑)。
- 村田
- 「一緒に作りましょう」と誘ってはいるんです。それで、ゼロから作るのは難しいと言っていたので、じゃあ、「踏み台になりそうな状態までは僕がやりますよ」と言ったら「やります」と言っていた 。Ruby以外のプログラミングというと、あとはC言語。C言語は、結局、死ね死ねといろんな人が言っているけれども・・・いろんな人は言っていないですか。卜部さんだけですかね。
- 卜部
- まあね。
- 村田
- 死ね死ねと言われていて、確かにCが死ぬと、みんな、幸せになるんだろうなと思うんだけれども、いまだにCは便利だなと思いますね。いろんな意味で、いろんなシーンで。これもおっさんだからなんですかね。どうなんでしょうね。
- 卜部
- いや、どうなんでしょうね。その、今、村田さんがやっているような、データ解析のシーンだと、ちょっとやっぱりPythonとかRとかでずっとでっかいデータを使い続けるのは結構つらいので。
- 村田
- 厳しいですね。だから、Cじゃなくて、C++ですけれども、Apache ArrowとかはC++で実装されていますよね。だから、C++は今でも必須な言語なんだろうなとは思っていますね。そこを、Juliaだ、全部、ばっと広まってJuliaに代わると、みんな、ハッピーかもしれないですけれどもね。
- 遠藤
- それは今のC++のマーケットをJuliaが取っていくということですか。
- 村田
- データ回りが。
- 遠藤
- データ回りだけ? それは分かる、それなら。
- 村田
- それ以外は、Rustとかが得意な分野もあると思うので、Rustに代わってもらうとか、そうやってやっていくと、みんな幸せになるのかなと思いますし。
- 遠藤
- Juliaでブラウザーを書くとかそういう話かと思った。
- 村田
- いや、Juliaでブラウザーなんか書けない。Juliaは最適な適用範囲は恐らく狭いので、科学技術計算とデータ解析以外では恐らく使わないと思いますね。
今まで読んだ中で最も美しいソースコード
- 村田
- 次、今まで読んだ中で最も美しいソースコードは何でしょうか。そうですね。Ruby1.8の処理系のソースはすごいきれいだなと思った記憶が。
- 卜部
- 1.8のというのは、今と共通していない、消しちゃった部分ということ?
- 村田
- ですね。あれはすごい読みやすかったという記憶がすごいありますね。あとは、いろいろ最適化が入る前のarray.cとか。
- 卜部
- まあね。今は結構、最適化をしちゃったという。
- 村田
- 今、すごいいろいろ、何か事情を知らないと理解できない実装が結構入っているので、以前から見ていないとつらいですけれども、1.8の初期ぐらいのarray.cとかstring.cとかは、もう上から順番に読んでいけば、全部分かると。
- 遠藤
- 素朴な実装でしたね。
- 卜部
- そうそう、すごい良かったと思います。あれはもう言語処理系の入門コードとしては最高ではないかなと今でも思っています。
- 遠藤
- そういえば、RHGとか読んだんですか。
- 村田
- RHGとかはウェブで読んでいますね。僕が欲しいと思ったときは、もう市場から消えてきた(笑)。ウェブでは読みました。
- 遠藤
- 絶版ではないのか。あるんですかね。分からないや。
- 村田
- 売っているのですかね。
- 遠藤
- あまりよく知らない。
- 村田
- 売り出したら、高値で売れるでしょう。
- 柴田
- RHGはWeb公開、あれが簡単に手に入る唯一のものに近いんじゃないですか。
- 遠藤
- この間、金子さんが何か買っていたので。
- 柴田
- 中古本屋に行くとあるのかもしれないですね。
- 村田
- 何か読んだ中で、これはつらいなと思ったコードはEmacsとVimのソースコードですか。昔ながらの#ifdefがいっぱいあって、mainを読み解くだけでつらいみたいな、何かそういう。
- 卜部
- でも、何か、Rubyも似たような感じの話には近づいている可能性はあって。要は何か、長時間にわたってメンテナンスされ続けてきているからというところはあるよね。
- 村田
- そうなんですよ。だから、いま絶対この#ifの部分は誰もコンパイルしないだろうなというのは、EmacsとかVimの、十何年か前に僕が読んだときの頃にあって、これは読むのが大変だなと思った記憶があるんですね。
- 卜部
- このOS、誰か使っているのみたいな。
興味を持っているテーマ
- 卜部
- 今、興味を持っているテーマは何ですか。
- 村田
- データサイエンスなんですよという話は、言わなくても、皆さん、ご存じかもしれない。
- 卜部
- でも、さっきの話の流れからすると、データサイエンスというのは、ちょっとこう、これまでの生い立ちからはつながっていないですよ。
- 村田
- 実はつながっていて。学生のときはもうデータサイエンスをしていたようなもんですよ。シミュレーションをして、その結果を解析してみたいな感じなので、やっていたことはデータサイエンスのようなことだったんですよ。データサイエンスという呼び方をするとちょっと語弊がある。ただのデータ解析ですね。
- 卜部
- その頃は、だから、シミュレーションおよびその系。何かこう。
- 村田
- そうですね。結果を統計分析して。統計分析といっても、何かすごい凝ったことをしていたわけではなくて、平均を出したり、分散を出したりとか、そういうことばっかりですけれども。でも、何かどういうやり方をすると正しくない結果にならなくて済むのかとか、そういうのは一応、ある程度、勉強はしていたので。
- 卜部
- その頃は何を使っていたのですか。
- 村田
- あの頃は、Rをデータ解析で使っていました。Rに生のシミュレーションのデータをRubyで加工して、Rに入れたい表形式に変換することをやっていたのです。
- 卜部
- クレンジング?
- 村田
- そうです。クレンジングですね。データ加工して、Rで読み込ませて、合計処理が必要だったらRで統計処理して、可視化もRでやっていたという感じですね。あの頃はRの情報源が少なくて、すごい大変だった記憶があります。RjpWikiしかないみたいな感じ。
- 卜部
- つらい。
- 村田
- つらい。あと、Rは検索できない。ググれないです。
- 遠藤
- R Language。
- 村田
- そうだ、あの頃はRがすごいいいと思って、研究室内でみんながgnuplotを使っている中で「R、すごいいいよ」と言って布教をしようと思って頑張っていたのを思い出しました。みんな、Javaを使ってプログラム書きます。そこに「Ruby、超いいよ」と言っても、誰もRubyを使ってくれないと。Rはすごいきれいなグラフが出るよとか言って、説明はするけれども、みんなgnuplotから離れないとかというのを経験していた時代でした。
- 卜部
- その後。
- 村田
- その後。何の話?
- 卜部
- データサイエンスの関わり。
- 村田
- データサイエンスに関しては、あとは北大に入る前の高専時代に強化学習とか、ニューラルネットワークとかを応用する研究をしていたんですね。その頃、人工知能とかにも興味があったんだけれども、北大入ったら、複雑ネットワークの研究をすることになって、しばらくその分野から離れていた。ただ、そっち (人工知能) のほうの話はすごい好きだった。そして、最近になってすごい流行りはじめて。
- 卜部
- そうですね。だから、僕らが大学にいた頃とかはそんなに。
- 村田
- 冬の時代ですから。
- 卜部
- 冬の時代ですよ。
- 村田
- 完全に冬の時代で、ニューラルネットワークなんて、ニューラルネットワークのコンセプトがすごい好きだったのだけれども、あの頃はもうみんな、駄目だと言っていて、サポートベクトルマシンだという感じの時代だったんですけれども、それが1周回って、なぜかすごいはやって、ニューラルネットワークが全てを解決するみたいな感じの流れになりつつありますけれども。
- 卜部
- 大学ではそういうことをやらずに、複雑系をやっていた?
- 村田
- そうですね。複雑系。複雑ネットワークの分析をやっていましたね。それでも、理論が好きでウェブの解析とかにあまり興味が出なかったので、ネットワーク上の同期現象のシミュレーションの研究をテーマに選んでやっていました。しかし、今ではもう、その頃にやった研究の内容もほとんど忘れてしまって、せっかく苦労して手に入れた学位があんまり役に立たずみたいな、感じにはなっています。
- 卜部
- 大学だから、そうですね。
- 村田
- ただ、データサイエンスとか、データ解析、そういうのが社会の役に立つということは分かったので、そっちのほうに、ちょっとずつ足を踏み入れて、そっちの分野で働く人間に今後なりたいとは思っています。なので、できればRubyを使いながら、そっちの仕事ができるとうれしいので、Rubyでデータ処理のモデルを呼び出しやすくしたいなということで、今の仕事をやっているという感じですかね。その辺の下回りの整備がある程度終わったら、できれば私自身がデータを解析する立場になりたいので、そっち側に移っていこうかなとは思ってします。
- 卜部
- いい話だ。今、興味を持っているテーマとしては、だから、データ解析を、今は下回りをやっているけれども、やがて解析そのものを。
- 村田
- そうですね。あとは理論とかが好きなんですけれども、最近は何かベイズ統計系の話を追うようにしていて、それはそれで面白いですね。渡邊澄夫先生という東工大の先生の教科書を時間があるときに読んでいるんですけれども、あの辺の情報を。統計的学習理論ですね。ベイズ統計と、あとは統計力学と、機械学習とが合わさったような感じの分野なんですけれども、あの辺の話がすごい、僕にはヒットして、面白くて、その辺の教科書とか論文とかを見つけて読んだりしている感じですね。
生い立ち
- 卜部
- では、次に行って、生活のこと。でも、生い立ちとかは結構、今までもう語られたと思うんですが、あと、何か言っておきたい生い立ちのお話とかある?
- 村田
- 生い立ち。
- 卜部
- 子どもの頃、苦労したんですよみたいな。
- 村田
- 子どもの頃の苦労という。あんまり、でも、そんなに何かつらい思いとかはしていないよな。苦労……。
- 卜部
- いや、別に特になければ、特にないでいいです。
- 村田
- 特にないですね。高専かな。
- 卜部
- 働き始めてからとか。では、高専の話を聞きますか。何か多分、Ruby……。このインタビューで多分、高専を出た人は初めててなんですよ。
- 村田
- マジですか。
- 卜部
- 多分。
- 村田
- あら。探すと、意外といると思うんですよね。高専出身の人は。
- 卜部
- たまたま回ってきていないだけと思うんだけれども、初めてなんだと思うんですが、高専はどうですか。
- 村田
- 高専は、僕は……。
- 卜部
- そもそも何で高専に行こうとしたの? 近くにあった?
- 村田
- それは、単純にコンピューター買ってもらえるという餌を与えられたことと、近くにあったので。苫小牧を出ずに家から行ける。
- 卜部
- 通い?
- 村田
- そうです。通いです。苫小牧を出ずにいいところに行くとしたら、理系では高専がトップだったんですよ。だから。というのと、あと、私の成績。あのときの私の成績だと、学校の先生が高専をお勧めしてくるような感じだったので。
- 卜部
- なるほどね。
- 村田
- これ (成績で高専を勧められること) もまた不幸な話ですけれどもね。今は分からないですけれども、成績のいい人には高専を勧めるみたいな感じの。
- 卜部
- 当時?
- 村田
- 当時、あったっぽくて。僕はもう中学生の頃からコンピューターが好きで、プログラミング、プログラムを手書きでノートに書くぐらい好きだったから、自動的に高専を勧められても不思議じゃなかったと思うんですけれども、そういうそぶりを見せていない人にも「おまえ、頭がいいから高専」みたいな感じのことを言われたという人は同級生で結構いましたね。
- 遠藤
- 不幸なんですか。
- 村田
- そうそう。
- 卜部
- 難しいよね。中学卒業時点で、どこの高校に行けば、一番向いているかなんていうのは、本人にもなかなか分からない領域だからね。
- 村田
- そうですよ。普通高校と違って、高専は入学してすぐに専門教育が始まって、それがちゃんとできないと卒業できない。だから、(専門分野に) 合わない人は相当苦労していましたね。
- 卜部
- これはどうやって通っていたのですか。
- 村田
- 僕はチャリで通っていました。
- 卜部
- チャリで通える距離だった?
- 村田
- はい、僕はチャリで通える距離でした。僕はチャリで行っていたけれども、僕は歩いても全然行けるぐらいの距離でしたよ。
- 卜部
- そうなんですか。それは良かった。
- 村田
- そういう近さということもあり、あとは、僕の行っていた中学校の先輩とかも行っていて。成績のいい人は勧められて行くということと、でも、一番の決め手は「情報工学科に入れたら、パソコンを買ってあげるよ」と (親に) 言われたので、それに上乗せをして「じゃあ、Cコンパイラも必要だから買ってくれ」という条件を付けたら「買ってやるよ」みたいな話になったから、これはCコンパイラを手に入れるチャンスだと思って、頑張って入学しようと。
- 遠藤
- 買ってやるよというのは親御さんですか。
- 村田
- 親です。
- 柴田
- なるほど。
- 卜部
- 入ってみたところ?
- 村田
- 入ってみたところ、私には向いていましたね。というのも、好きなことをやっていりゃ、それが専門の勉強になるから。そうは言っても、僕が好きだったのはプログラミングだけだったので、初めの頃はいろいろと面倒くさいことが多かったですね。あの頃はまだ数学とか特に興味もなかったので。基礎数Aのテストとかすごい嫌でした。数学とか物理に興味を持つのは4年生とか3年生の終わりぐらいの頃だったので、初期の頃は、相当、テストの点が悪くて、つらかったです。
- 卜部
- 中学校の続きぐらいのつもりで行って。
- 村田
- そうですね。中学校の続きぐらいの気分。中学のときは特に真剣に勉強しなくても、(私が) 勉強に向いていたっぽくて、点数はそれなりに良かった。そのつもりで、その流れで (高専入学後も) 過ごしていて、しかも、中学のときと違うのは買ってもらったコンピューターが目の前にあるわけですよ。
- 卜部
- 時間が無限に。
- 村田
- 無限の時間をVisual C++で遊ぶことに費やしてしまうわけ。そうなるとね、勉強しないから。テストの点が上がらず、成績が悪くなっちゃった。途中で頑張ったような記憶はないんだけれども、どうなんだろうな。恐らく焦って頑張ったというのもあるとは思います。ただ、学年が上がると専門科目の比率が多くなるんですよ。それによって自動的に成績が上がっていったというのもありました。高専に行って、僕が今から振り返って良かったなと思うのは、情報工学科といってもプログラミングだけやっているわけではなくて、ネットワークのことも習うし、DBのことも習う。そういうソフトウエア方面の話だけでなく、論理回路とか、電子回路とか、そういうハードウエア、弱電系のハードウエアの話もちゃんとやる。一番低レイヤーな話で言うと、マクスウェル方程式まで出てくるような専門科目もあって、そういうのは意外と私の中では今の自分をつくっているなという気はしています。信号処理とかも。
- 卜部
- 意外に、なんかのはずみで使うんですよね。
- 村田
- 意外に。そうなんですよね。意外に役に立つ。そうは言っても、今まで仕事で直接役に立ったかと言われると役に立っていないけれども、ぽつぽつと出てくる新しい技術トピックとかを理解しようと思ったときに、その当時、手に入れた知識がすごい役に立つんですよね。いま例えばFPGAで機械学習だみたいな話が出てくるわけですけれども、FPGAをいざ使わなきゃいけないとなったとしても、僕はFPGAを既に使ったことある人間なので。
- 卜部
- ちょっとアドバンテージが。
- 村田
- アドバンテージがある。すごい便利だな。高専、便利みたいな感じ(笑)。
- 遠藤
- なるほど。
- 柴田
- 苫小牧高専の情報工学科は、電気科から分離したんですよね。
- 卜部
- ちょっと電気系のやつも、カリキュラムも残っている?
- 村田
- そうですね。そうそう。
- 柴田
- 高専ごとに、科をどうやってつくったかというものがあって。苫小牧高専は情報科が作るぞといったときに、電気の先生のうち、コンピューターを触ったことある人を引っこ抜いて、情報科の先生にしたので、自然とカリキュラムが電気実験みたいなのが多めになっている。信号処理とか。
- 村田
- うん。その後、僕、旭川高専の専攻科というところに行ったのですけれども、旭川高専の情報系は制御情報工学科という名前だったんです。あそこは機械系の先生たちが、ロボットの制御をやっている人たちが分離して情報系を作っていたので、機械色が強かったです。そこで私が入った研究室で、ロボット制御のスケジューリングとか、スマートエンジニアリングと当時いわれていたロボットの思考エンジンをうまく作ろうみたいな話とかをニューラルネットワークとか、遺伝的アルゴリズムとか、あの当時、存在した機械学習アルゴリズムを使って頑張るみたいな、そういうことをやっていて、そこで機械学習、強化学習とかそういうのを勉強していました。あれも今になって生きているので、結構よかった。
- 遠藤
- 高専から高専へ転校した?
- 村田
- そうです。苫小牧高専に、専攻科がなかったんですね。僕は北大への編入に失敗してて、次どこへ行こうかというときに、専攻科に行ってから大学院に行けるという話を聞いたので、じゃあ、専攻科へ行こう。でも、苫小牧高専には専攻科ができなかった。
- 柴田
- 今はありますよね。何年か前に。
- 村田
- 今はあります。あの後、2年後かな、そのくらいにできたんですよ。あの年は苫小牧高専に専攻科ができなくて、代わりに沖縄高専ができたんだったかな。そういう感じで、何か、全国の高専で、どこに新しいのを作るかみたいな (おそらく予算の) 取り合いをしていたらしいです。それで、その当時、家から近くて、専攻科があったのが旭川だ。
- 遠藤
- 旭川は近いのですか。何か。
- 村田
- 一番近かったのが旭川です。函館にも専攻があったけれども、函館より旭川のほうが近かったです。
- 柴田
- 180キロぐらいですね。
- 遠藤
- もちろん、寮とか。
- 村田
- 寮にいました。2年間、寮にいて。
- 卜部
- 函館と旭川、直線距離は多分、そんなに変わらないんだと思うんだけれども。
- 柴田
- 旭川は高速道路でつながっているので、近いんですけれども、函館は高速道路がつながっていないので、当時は。今もつながっていないけれども。
- 村田
- 今も途中までですよね。森かどこかまで。
- 柴田
- そうそう。ほぼほぼ函館みたいな。
- 村田
- 僕は、だから、実家と旭川高専の間は特急を乗り継いで。スーパー北斗という、札幌まで行く特急があって。
- 卜部
- ありますね。
- 村田
- あとは、旭川まで行くのに、何という名前だったか忘れたな。あるんですよ。それに乗り継いで。旭川まで行く特急の名前を忘れちゃったな。
- 柴田
- あるけれども、あんまり使わないからね。
- 村田
- うん。今は使わないですからね。
- 柴田
- みんな、車を使うから。
- 卜部
- 旭川時代は何をやっていたんですか。
- 村田
- その研究。研究の話?
- 卜部
- うん。
- 村田
- 機械学習や強化学習を応用して、ロボットの制御の仕組みの基礎研究をしていた感じです。
仕事
- 卜部
- では、最近、普段、仕事って何をやっているのですか。
- 村田
- またさっきの繰り返しになっちゃう気がする。最近は、Speeeでフルタイムコミッターとして雇ってもらってはいるんですが、フルタイムコミッターということでRubyの中をいじっているわけではありません。Rubyの外側、特にデータサイエンスで使えるようなRuby向けのツールを作るということを主な仕事として今年はやりました。来年もこれを続けようと思っています。できればRuby本体のほうも、データサイエンスに使いやすくなるような、機能提案とかをできればいいかなとは思っています。
- 卜部
- 幾つか提案もされているし、いくつか入ってもいますよね。
- 村田
- そうですね。今まではずっと、前職も、その前も、Railsアプリケーションを何とかするという仕事だったので、RailsにあるメソッドをRubyの中に持ってこようみたいな提案が多かったんですが、ちょっとずつ、例えばPythonにあるスライス記法っぽいものをRubyでやりたいという提案を今年はしました。そういう感じのものは今後は増えていくんじゃないかなと思っています。
- 遠藤
- Pythonっぽいスライス記法って何ですか。
- 村田
- Arrayのスライスを取ってくるときに、Rangeでは飛び飛びで取れない。そこでステップつきのRangeが必要になるんだけど、Rangeにステップという概念がないからそれを生やしましょうねと。
- 遠藤
- なるほど。
- 村田
- あれもちょっとずつ段階を踏んで、最終形はこうしたいなと思っているやつに近づけようとして、小出しに提案しているのです。
- 遠藤
- でも、最適化されていない?最近、まだ。
- 村田
- まだされていないですね。2.6でいいやと思って、あまり急いでいないんですけれども。
- 村田
- 普段の仕事、今はそうですね。あとは、Speeeから求められている話としては、エンジニア採用につながるようなことをいっぱいしてくれと言われていて。なので、私が……。これも実はSpeeeの。
- 卜部
- 10周年記念。
- 村田
- 10周年記念のTシャツを、たまたま今日、着てきたんですけれども、外でしゃべるときは大体、Speeeのロゴ付きのシャツを着てしゃべるとか、Speeeという会社があってねみたいな話を最初のほうにちょっとだけするとかということをしていると。今のところは私がやりたいこと、私が興味を持っていることを楽しそうにやって (成果を上げて) くれればいいだろうと言われているので、今のところはそうしています。個人的にはもうちょっとSpeeeの事業に私の仕事が活きてくれればいいなと思っています。将来的にはそこまで狙っているところですが、今のところはうまく絡めるポイントをまだ見つけられていないので、探し中というところですかね。
生活スタイル
- 卜部
- 次、普段、生活スタイルはどんな感じですか。
- 村田
- 生活スタイルは、今日で言うと、朝、起きて、子どもを保育園に連れていって、出社する。帰宅は普通に定時で、大体、定時で帰って。
- 卜部
- じゃあ、迎えにい行くのは奥さんの仕事?
- 村田
- そうですね。(ふだん) 迎えにいくのは奥さんです。奥さんが迎えにいけないときは、私が早退して迎えに行きます。そんな感じですよ。同じような感じですわ。
- 遠藤
- まあまあ。
- 村田
- まあまあ同じですよ。
- 遠藤
- お迎えはあまり行かないですかね。
- 村田
- どっちがいいかなと話し合ったんですけれどもね。私が迎えにいくというパターンとかも考えたんですけれども、結局、Speeeは9時半、18時半というタイム。
- 卜部
- コアタイム?
- 村田
- コアタイムというか、時間が決まっているので、私が早退しちゃうとどんどん削られていくのでね、給料が、手取りが 。
- 遠藤
- なるほど。
- 村田
- 奥さんもそうですけれどもね。奥さんも早上がりすると減っていくけれども、その減る割合が私の分のほうが大きいので。だとしたら、私は送りを。送りの場合は、ちゃんと時間どおり送れれば、私は定時より前に出社できるので、そうすれば、私はフルでもらえるからいいみたいな。
- 遠藤
- 在宅はしないのですか。
- 村田
- Speeeは、在宅制度はありません。でも、私はSpeeeの事業の仕事をしていないので、どこで仕事をしていても何も問題はないと思うんですが、一応、会社の中にいたほうが他の社員とのコミュニケーションも取れるし、特にSpeeeはおいしいコーヒーが飲めるんです。今日もこの後、開発者会議でおいしいコーヒーを提供してくれるらしいんですけど、それが飲めるというのが一つと、家より会社の設備のほうがいいという2つ目の理由で、僕は絶対出社します。
- 遠藤
- 分かる。家にいるより会社にいるほうが楽という環境を、何かバックオフィスの人たちが頑張っているというのを、クックパッドですけれども、転職して、何かすごく感じます。
- 村田
- クックパッドもそうでしたね。
- 卜部
- 仕事とプライベートの両立をどうしていますかというのが次の質問なのですけれども、大体、だから、仕事は仕事、職場でやるという感じですかね。
- 村田
- そうですね。何か、カンファレンスが近くて時間が足りないってなっちゃったときは家でやりますが、そうじゃないときは家では基本的には子どもと一緒に遊んでいるみたいなスタイルにしています。あとは本当に時間があるときは、(極稀に) 私が料理をしたりとか。
- 卜部
- お子さんがいると、お子さんがやっぱり生活の中心になっちゃいますね。
- 村田
- そうですね。なりますね。
普段のこと
- 卜部
- 次の質問は、普段、家で何をしていますかですが、お子さんを見ている?
- 村田
- そうですね。子どもと遊んでいるが今のところ、最近の1番で。
- 卜部
- お子さんとどこか行ったりします?
- 村田
- 公園に行くことが多いですかね。公園に行く。あとは、最近だと東京ドームの近くにある「アソボ~ノ!」、子どもが楽しいものばかりが集まっている施設があるんですね。そこに連れていって、めっちゃ遊ばせる。ボールがたくさん入っているプールみたいなのとか、あと、トランポリンみたいなやつとか、おもちゃがいっぱいあったりとかしていて、そこに連れていって、トランポリンぴょんぴょんしたりとか、あとはシルバニアファミリーでしたっけ、ウサギの。
- 遠藤
- 何だろう、おままごと用の?
- 村田
- おままごと用のやつとか、メルちゃんとか、そういうので遊ばせて。それでも、ご飯の時間になったら、帰らなきゃいけないので、嫌がっているところを無理やり連れ出すみたいなことをするみたいなのをたまにやったり。あとは、動物園、水族館というところでは定番ですかね。まだ、2歳なので、ディズニーランドとかそういうところはまだ行っていないです。
- 遠藤
- それは毎週行くんですか。
- 村田
- 毎週は行かないですよ。月に1回も行かないですね。2カ月、3カ月に1回ぐらい。ただ、何かレパートリがなくて。親が飽きるんですよね。同じところばかり。公園に行って。子どもは公園に連れていくと。
- 卜部
- 子どもは飽きずにずっと遊んでいるけれども。
- 村田
- そうそう、ずっとブランコに乗っていても面白いし、同じ行動をずっと繰り返しても、子どもは面白いんですけれども、親、特に私は全然駄目で。
- 遠藤
- 公園は結構厳しいですよね。
- 村田
- 公園も、砂場とかも私が楽しいのは最初の10分くらいで、もう砂場、いいんじゃないかなと思いながら。
- 遠藤
- でも、「アソボ~ノ!」みたいな屋内遊園地は結構行けません? 僕は、あれは結構行けますよ。
- 村田
- そうそう、僕もあそこは結構面白いですね。だから、あそこはすごい良くて。もしかしたら親の都合で頻度が上がる可能性があります。それが最近の定番ですかね。
- 卜部
- 子どもと遊んでないときは何をやっているんですか。
- 村田
- 私はプログラミングをしているか。プログラミングを家ですることが最近減ってきていて、読書ですかね。読書は数学の本、物理学の本、あとSFが主な対象。
- 卜部
- 最近だと?
- 村田
- SFは、あれですね。
- 卜部
- SFじゃなくてもいいですよ。数学の本。
- 村田
- 数学の本は、さっき、ちょっと名前を出した渡邊澄夫先生の教科書を読んでいるのと、物理だと、培風館から出ている統計力学の教科書なんですけれども、最近、あれを読み始めました。
- 遠藤
- すごい。
- 村田
- 面白いですよ。
- 遠藤
- 全然向いていない。
- 村田
- そうなのですか。
- 遠藤
- すごい。
- 村田
- ただただ面白いから読んでいるだけなので、特に何か目的があるわけじゃない。
- 卜部
- でも、教科書なんですね。
- 村田
- そうですね。教科書です。あとは論文ですかね。何か本当にこれは絶対読んでおきたいなと思う論文を見つけたら読むぐらいですけど。本当は深層学習系の論文とかをちゃんと読んだほうがいいなとは思っているんですけれども、毎日毎日、山のように出ているので、私には追えないです。
- 卜部
- 大変そう。
- 村田
- 岡野原さんのツイッターを読んでいるだけみたいな感じですね。私は。
- 遠藤
- SFは?
- 村田
- SFは、この間、早川SF何とかのKindle祭りがあったじゃないですか。あれで買ったやつを消化している感じですね。あと、『ローダンNEO』というやつを最近見つけて。
- 遠藤
- ローダン?
- 村田
- 『ローダンNEO』というSFがあったんですよ。それを見つけて、読んでみたら面白くて、それを出るたびに読んでいますね。
- 遠藤
- 読書家ですね。
- 村田
- 僕は昔、全然を小説読めない人だったんですよ。だから、僕の学生の頃のツイッターとかをあさると「小説読めない」というツイートしているのが見つかると思います。
- 遠藤
- 今は読んでいると。
- 村田
- 本当に読めなくて、何かちょっとずつ読めるようになってきて。それでも、読めるのはSFだけですね。たまに『カラマーゾフの兄弟』とかを読もうとするんですけれども、2ページぐらいで、もう無理と思って閉じてしまう。なぜ読めないのかが分からないですけれども。きっと (私には) 面白くないんですよね。
- 遠藤
- そうでしょうね(笑)。
- 卜部
- 興味がある領域かどうか。
- 村田
- そうそう、面白くなくて読めないです。でも、『カラマーゾフの兄弟』とか、めっちゃ面白いとみんな、言っているじゃないですか。よく分からないなと思って。あれが理解できる日がいつか来るのかどうか。
- 卜部
- それは、だから、いきなり、だから、いきなりクヌースをぽんと渡しても読めないみたいな話なんじゃないですか。
- 村田
- そういうことなんですかね。まだ、『カラマーゾフの兄弟』を理解できるほど、僕の脳は発達していないということで(笑)。
- 卜部
- 本以外は?
- 村田
- 本以外だと、これ (インタビューをしながら見ているリスト) であるのだと映画。映画は僕、本当に……。
- 卜部
- 映画はお子さんがいると、なかなか行きづらいよね。
- 村田
- 行きづらいですね。だから、頑張って時間を捻出してでも行こうとするのは「スターウォーズ」ぐらいですね。
- 卜部
- 「スターウォーズ」。
- 村田
- なので、今年の「スターウォーズ」はいつか行くつもりです。おととしも何か、何らかのタイミングで有給を取って行った気がしますね。有給を取らないと行けない。
- 卜部
- そうだね。
- 村田
- だから、チケットを買えたときを有給にして行くみたいな感じですね。それと、音楽でいうと、私はヘビーメタルしか聴かない。ヘビーメタルっぽいクラシックやジャズも聴くことはある。
- 卜部
- クラシック、ジャズとヘビーメタルは大体、隣接ジャンルなので。
- 遠藤
- そうなんだ。へえ。
- 村田
- 私がよく聞くのは、日本のバンドでいうと、LOUDNESS、聖飢魔II。本当にこの2つばかり聴いています。外国のでは、オジー・オズボーンとか、メタリカとか。あと何だろう。大昔はインペリテリとか聴いていましたが、聴かなくなってしまった。若い頃はギターのすごい速い曲が好きで、初めて友達に紹介されて聴いたのがインペリテリだったんです。そこからイングヴェイとかも聴くようになって、どんどん手が広がっていったんですけれども、最近、めっきりそういうのを聴かなくなっちゃいました。
- 卜部
- 読んでいる人にメタルの良さを語っていただけると。
- 村田
- 聴いていて鳥肌が立つ曲がたまにあるんですよ。それだけを聴くようにしていて。だから、メタルの良さというか、私にとって良いのがメタルだったという感じですね。
- 卜部
- なるほどね。同じ曲をリピートする派か。
- 村田
- そうです。同じ曲、同じ曲1曲だけじゃないですけれども、聴いていてぞくっとするような感じの曲をためておいて、そればっかりずっとリピートしている感じです。だから、僕は新しいのを探索するタイプの人間じゃないので、誰かに紹介されたりしないとレパートリーが増えていかなかったんです。最近、Spotifyとか、Apple Musicとかが、僕の知らないものを出してきてくれるのはすごい良いです。そうそう、さっき、名前が出なかったけれども、アイアン・メイデンとかも大好きです。で、Apple Musicがアイアン・メイデンっぽい曲のバンドのを出してきたことがあって、それがすごい良かった。恐らく僕が良いと思ったのは、アイアン・メイデンっぽいから良いということなので、そのバンドが好きだったわけじゃなくて、アイアン・メイデンが好きということなんです。ホワイト何とか。ホワイト・・・ホワイトウィザードだ。これは今年、Apple Musicの中で知って、これもたまに聴きます。「このバンドが」という感じの傾向、例えば「LOUDNESSだから好きか」というと、そういうのは若干あるけれども、どちらかというとLOUDNESSに僕が鳥肌が立つ系の曲が多いから聴いている、そういう感じです。あと、メガデスとか、そういう有名なヘビーメタルのバンドは一応聴いているはずですが、全部を制覇できているわけではないです。
- 遠藤
- 制覇とかあるんですか。全然知らないですけれども。
- 村田
- 分からないです。でも、僕、でも、メタリカは、学生の頃はメタリカ (の曲) がすごい好きだったから、ずっと最初のアルバムから順番に、ぽんぽんぽんと買っていって。現役じゃなかったから、毎月買うみたいな感じでしたけれども。それでメタリカを集めてましたけれどもね。だから、メタリカは制覇しています。
- 遠藤
- すごいね。
- 柴田
- 松田さんが来ないと、まったく分からんみたいな(笑)
- 村田
- ヘビーメタルの話は松田さんが詳しくて。松田さんが、僕がこういうのが好きだと言うと、松田さんはそれにぴったりのやつをちゃんとお勧めしてくれるんですよ。すごいなと思います。
- 柴田
- AI。
- 村田
- AI。そうですね。松田さんはすごい。恐らくApple Musicよりは確実に、ヘビーメタルのリコメンドしてくれる、松田さんは。
- 遠藤
- いいお勧めをする人は、AIと言われちゃうんだ(笑)。
- 柴田
- リコメンデーション。人工じゃないけれども。
- 村田
- 次はゲームですか。ゲームね、僕……。
- 卜部
- あまりやらない派?
- 村田
- そう。
- 柴田
- 「ゼルダ」をやっているのではないの。
- 村田
- 「ゼルダ」はもうしばらくやれていなくて。僕のハイラルは、まだ平和ではない。
- 柴田
- そうなの(笑)
- 村田
- うん。「ゼルダ」は始めるハードルがちょっと上がってしまったので、なかなか始めにくいんですよ。今は、積みゲーが幾つかあって。「スプラトゥーン」はもう積みゲーと言えるような状態じゃないな。買って、3回プレーして、もうやっていない。楽しかったんだけど、あれをやるのはちょっとハードルが高い。あとは「マリオ」。「マリオ」は、都市の国に行く手前で止まっている。
- 柴田
- まだまだだね(笑)。
- 村田
- まだまだなんでしょうね。
- 柴田
- まだまだ遊ぶ余地が残っている。
- 村田
- すごい面白そう、面白い要素がいっぱい待っているんだなと思いつつ、最近、「ゼノブレイド2」が出てしまったので、いつ買うかというところで悩んでいる。
- 卜部
- 基本的には、だから、スイッチとか、コンシューマーゲームなんですね。
- 村田
- そうですね。
- 卜部
- PCゲーム?
- 村田
- PCゲーム系は全然やらないですね。何か面白そうという話は聞くし、僕のツイッターのタイムラインでもそういう話をよくする人はいるんですけれども、なかなかハードルが高くて。というのと、あとはPCでゲームをする習慣が (いまは) ないというのもあります。なかなか、ゲームをPCでやるふうには行かないですね。ただ、「Steam」のアカウントは持っています。
- 卜部
- 今時だと、何かVRとか。
- 村田
- やったことがないんですよ。何かVRを楽しめるアミューズメント施設があって、それには行ってみたいなと思っているんですけれども、子どもがもうちょっと大きくなってからだなという気がしています。
- 卜部
- そうね。ちっちゃい子がVRできるかどうか、よく分からないですね。目の成長とかにどういう影響あるのか、分からない。
- 遠藤
- 何か、DSは駄目と言いますよね。
- 村田
- 15歳とか過ぎるまで駄目と書いていなかった?
- 卜部
- じゃあ、相当、先まで駄目ですね。
- 村田
- だから、子どもがいても、大人だけ楽しめればいいといって連れていくというのもあるんですけれども、だから、VR専門のところだと行けないですね。子どもも楽しめる要素もありつつ、VRができるところもあるみたいなのが恐らくいいんじゃないかなとは。
- 卜部
- そういうアミューズメントパークみたいなところに行くというのは結構やるんですか。
- 村田
- いや、全然。ゲーセンとかに行く習慣が子どもの頃からなかったので。
- 卜部
- 子どもの頃にゲーセンが周囲にあるかどうかというのが大きいよね。
- 村田
- 一応、市街地にはあって僕の友達とかは行っていたけれども、親が許さなかったので僕は行けなかった。あとは、バイトをし始めたとき、もうインターネットが始まっていた時代だったので、私の場合バイト代は全部インターネットに消えていったというのもある。だから、高専に入ったぐらいの頃からもうゲームもしなくなってしまって。ゲームよりインターネットとプログラミングのほうが楽しくなっちゃったので、私の場合はゲーセンに行くという欲求がなかったんですね。なので、そういう習慣が育たずに大人になってしまったから、全然行かないです。スポーツもそう。スポーツは学生の頃、小学校の頃から剣道をやっていて、中学が終わるぐらいまではちゃんとやっていました。高専に入っても剣道部に入っていたけど、1年、2年ぐらいで辞め……。辞めたわけじゃなくて、もう行かなくなった感じですね。担当の教員に辞めると言ったけれども、何か言いに行って部費も払わなくなったけれども、なぜか名簿からは名前が消えていなくて。
- 卜部
- 緩い感じ。
- 村田
- 恐らく部員が少なくて、私の名前を消すと部の存続に関わるという、そういう状況だった可能性もあるんですけれども。何か結局、やらなくなった感じです。スポーツより楽しいことがあるから、やらなくなった感じですね。今はどうなんでしょうね。今の小学校、中学校というのは、スポーツができないとつらい時代なんですかね。
- 遠藤
- 知らない。
- 村田
- もう高専はすごく良くて、体育の授業とかもいい加減なんですよ。
- 村田
- やりたい人だけ楽しめばいいみたいな感じの授業で、幾つかテニスコートとか、体育館とかが解放されていて、そこでバレーでも、バドミントンでも何でもやったらいいよみたいな感じの状態で放置。僕はずっとステージの上で座ってだべっていたかな。
- 遠藤
- 体育は確かに高校から楽になる感じがしますね。中学校で結構厳しい先生とかいたりするイメージです。
- 村田
- ただ、学校によっては何かマラソン大会がある学校とかもあってね。苫小牧の高校では支笏湖まで走っていくらしい。
- 卜部
- それは結構な距離があるんじゃない?
- 遠藤
- どこまで?
- 村田
- 支笏湖という、何か千歳空港の裏側ぐらいにある。
- 卜部
- そう。だから、千歳空港の裏側ぐらいまで。
- 村田
- 走っていって、戻ってくるみたいなことをやっているらしいという話を聞いて、いや、それは無理でしょう(笑)みたいな。僕は小学校の頃から長距離が苦手で、校庭を1周するだけでも地獄だと思ったぐらい。高専に入って一番良かったのは・・・一番じゃないけど、高専に入って、良かったと思ったのは、そういうのがなかったということが私にとっては救われた要素でもありますね。
- 卜部
- 観戦もしないですか。
- 村田
- 観戦、そうですね。実家に住んでいた頃はプロ野球を親の影響で見ていました。でも、旭川高専の寮に入ってからテレビのない生活が始まって、テレビを見る習慣が消えたんですね。それから、プロ野球を見るという習慣もなくなり、元々、観戦の対象だったスポーツはプロ野球だけだったので、スポーツを見る習慣もなくなり、今はもう何も見てません。オリンピックのようなものも特に興味もなく、あんまり見ず、という感じです。ハードルが高いですよね、そういう習慣のない状態で始めるのはね。
- 卜部
- そうね。
- 村田
- 昔は有名な選手について、親が見ていたというのもあって、選手のことを何か知っているような感覚になるんですが、今は誰とか全然分からないし、知らない人がスポーツしているところを見ても楽しくないし、なかなかね。
- 卜部
- 分かっている人が隣にいて解説してくれると面白いみたいな、ありますよね。
- 村田
- それはありますよね。僕が今でも見て楽しいのは剣道ぐらいじゃないですかね。自分で理解できる。この人はうまいとか、(試合を) 見てすぐ分かる。剣道の試合をYouTubeで、まぁほとんど見ないんですけど、何かニュースで剣道の話とかが出てきていて、そういう映像が流れていると、おおっと見てしまう感じがしますね。
使っているマシンなど
- 卜部
- 話ががらっと変わって、今、使っている計算機は何ですか。
- 村田
- これなんですけれども、MacBook Proですね。
- 卜部
- もう、ずっとMac?
- 村田
- そうですね。2008年に初めてMacBookを買ってから、ずっとMacですかね。今のところ、まだ不満がないので。よくできているなと思いますよ、本当にこれは。
- 卜部
- PythonとかJuliaとかを入れるのに、そんなに困らないですね。
- 村田
- 困らないですね。UNIXなので、ちゃんとしたUNIXなので、そういう使い方をしている分には全然困らない。逆に、Windowsマシンは難し過ぎて、私にはもう恐らく買って使えないかなという気がしますね。どうやって自分の作業環境を作ればいいのかが全然分からない。
- そらはー
- Hyper-Vを入れて、Linuxを動かす。
- 村田
- それならこれ (Mac) でいいじゃんと。
- 卜部
- よく分からないけれども、普段の仕事は、だから、ソースコードを書く以外のことでは。
- 村田
- Officeが使えればいいので。でも、うちの会社はExcelファイルとかはたまにありますけれども、大体、全部Googleドライブ、Googleスプレッドシートとか、そういうのを使ってファイルのやりとりをしているので。そういう仕事だったら、Chrome bookでしたっけ、ああいうのでも全然いいぐらいなので、要らないのではないかなと。だから、Macで十分ですね。最近の新しいHigh Sierraのセキュリティーのバグとか、ああいうのが出てきちゃったのはちょっと残念という感じがします。
- 遠藤
- 便利じゃん。便利、便利。
- 村田
- 便利だけれども。あれは、あれこそ普通の、本当のソフトウエアエンジニアリングのミスなので、何とかしろよという感じがしますけれどもね。まず、会社を心配しちゃいますね。
- そらはー
- Mac、完全につらい。何か。
- 村田
- そう?
- そらはー
- つらい、つらい、何か。使っていて常につらい。突然、ロードアベレージ入るし。
- 卜部
- このハードウエアはどうですか。あれだよね。
- そらはー
- タッチバー?
- 卜部
- タッチバーが付いているやつ。
- 村田
- タッチバーが付いていることに関しては、私は、普段はこのキーボードを使っていないから、全然苦にならないですね。外付けキーボードで。
- そらはー
- キーボードは、 Touch Barになってから、すごい、自分の、私のほうの。
- 遠藤
- 良くなった。
- そらはー
- めちゃくちゃよくなった。
- 村田
- このキーボードはいいと思います。ここは分からない。
- 卜部
- 薄くてぺらぺらしたキーボードが好きな人は好きだよね。
- そらはー
- そう。
- 遠藤
- キー自体はいいんだけれどもな。僕もVimを使っていると、もうエスケープが押しにくくて、もう本当。
- 村田
- これですよね。
- 卜部
- エスケープが遠い?
- そらはー
- エスケープはリバインドしているから、特に困ってない。
- 村田
- だとしたら、12インチのMacは恐らくすごい使いやすいんじゃないですかね。
- そらはー
- いや、あれは薄すぎる、硬い、つらい。
- 卜部
- 新しいMacBookというやつですね。
- 村田
- これが出た後の12インチは、キーボードも変わっているでしょう?
- そらはー
- えっ、そうなの、へえ。
- 村田
- うん。2015年のやつではなくて。
- そらはー
- これと同じになった?
- 卜部
- 2017年のやつは変わったらしいですよ。
- そらはー
- へえ。
- 村田
- だから、Apple Storeで触ってみるといいです。
- そらはー
- マジか。気付いていなかった。
- 村田
- Touch Barの、確かにエスケープが触った感覚がないとかというのは、結構、たまに、このエスケープを連打したら、消えるはずのものが消えないとかというのがあって、ちょっと、心配にはなるのですけれども、普段これでやっていないので、私はあまりキーボード自体に文句はないですね。
- 卜部
- エスケープをあまり使わない派だからとかそういう話ですか。
- 村田
- それもありますね。
- 卜部
- エディターがVimではないとかそういう?
- そらはー
- Chromeじゃ困らない?Touch Bar。
- 村田
- 困らない。そもそも、あれ……。
- そらはー
- すごいいい感じの場所にリロードボタンが設置されていて、フォームの内容が消えるというのを、何かいつもやっているので。
- 遠藤
- トラップ、トラップ。
- そらはー
- 住所とか入力していて、数字を入力していると、4とかの真上、自分の住所の真上に何か、リロードボタンがあって。
- 卜部
- つらい(笑)。
- そらはー
- 間違えて押すと、フォームの内容が飛ぶ。
- 村田
- 結局、ここを僕、普段使っていないというのが、不満がない理由なのかもしれないですね。
- 卜部
- そうかもね。
- 村田
- 毎日、ここで作業をしていたら、やっぱり何かあるのかもしれないけれども。
- 遠藤
- 普段どんな?キーボードを付けるということですか?ディスプレーも別に付けて。
- 村田
- そうです、そうです。ディスプレーもこれの他にあって、会社の環境ですよね。会社の環境でしか、普段はコンピューターをいじらないので。家だともう、何かやるときはiPadかiPhoneで、プログラミングしなきゃいけないときだけこれを出す感じなんですけれども、そのときも僕、Vimだけれども、エスケープキーを使わないので。
- 遠藤
- コントロールなんだっけ。クローズブラケットだっけ。
- 村田
- そうですね。Ctrl+[ですね。実はCtrl+3がエスケープなんですよ。知っているんだけれども、私のCtrl+3はスクリーン切替に割り当ててしまっているので使えないです。そういう感じなので、このマシンの Touch Barに関しては、私は特に使っていないから不満がないという、そういう感じですね。
- 遠藤
- 出張先とか困りません?
- 村田
- 出張先でそんな、何かめっちゃプログラミングします? 出張……。
- 遠藤
- します。
- 村田
- するんだ、するか。
- 遠藤
- 僕は。
- 村田
- でも、結局、ここを使わないから、あまり気にならない。
- 卜部
- プログラミングはそんなに使わないかもね。
- 村田
- 逆に、これだから便利になったと言っている人は逆にいますよね。イラストレーターでしたっけ、そういう系の。
- 卜部
- Touch IDが便利という話はよく聞きますね。
- 村田
- それはありますね。ここが便利。だから、僕は普段、これをスタンドに置いてあって、ここにキーボードがあるので。(手を伸ばしながら) こういうふうにしなきゃいけないのはちょっと不便ですね。ただ、これは恐らく本体から取り外せないものなので。
- 卜部
- 取り外したらあまり意味ないよね。
- 村田
- だから、しょうがないです。あとは、将来の展望、夢とかですか。
- 卜部
- はい。
- 村田
- これねえ。
好きな女性のタイプ
- 遠藤
- 好きな女性のタイプは飛んだ。今、ないの?
- 卜部
- やってもいいよ。好きな女性のタイプ。
- 遠藤
- 聞くまでもないって。
- 村田
- 奥さんと子どもが、かわいくてしょうがないですよね。でも、好きな女性のタイプというところで子どもを出すのは良くないから。
- 卜部
- 奥さん?
- 村田
- 奥さんはいいですよね。
今後の展望
- 村田
- 今後の展望としては、Rubyで書かれたアプリケーションがちゃんと、データを使えるような、そういう下回りをちゃんと整えられるのが一つの目標なのと、仮に私がいなくても、それがうまく回るようにしなきゃいけないはずなので。その辺のコミュニティーがちゃんとつくれるといいなと思いますね。ただ、私はコミュニティー運営が一番不得意な仕事なので、誰か他の人にやってほしいですね。
- 村田
- 将来の夢というのは難しいですね。何を言えばいいんでしょうね。将来の夢は不労所得を得て、毎日、好きな数学の論文とかを見ながら、飲み食いするみたいな、そういうことを言っておくんですか。
- 卜部
- 不労所得じゃないけれども、大体、達成されているような気もしますけれどもね。今ね。
- 村田
- 今はそうですよね。ただ、私のこのポジションはあれですよ。個人的には任期付きのポジションだと思っているので、いつまで続けられるか分からないです。任期は特に設定されていないですけれども、さすがにこのポジションを定年まで続けられるとは思っていないので。だから、任期付きの、アカデミアでいうところの任期付きポジションだと思いながらやっているので。さすがにこの状態を永遠には続けられないでしょう。
- 遠藤
- Ruby3まで、とは、あまり、関係ないですよね、村田さんの活動は。
- 村田
- そうですね。何かかんか、でも、フルタイムコミッターじゃないとできなそうな仕事があるとは思うので。SpeeeがRubyと縁がなくなったら、さすがに続かないでしょうし。なので、Rubyは今までどおり、アプリケーションを書きやすい言語であり続けてほしいとは思いますよね。じゃないと、使う人が減っちゃうと思うんですよね。(Speee で) 僕と親和性の高い事業は実はRubyはあんまり使っていない。Goで書いてある部分と、Pythonで書いてある部分と、ダッシュボードでRで書いている人がいるし、Rubyの出る幕があんまりないんですよね。
- 遠藤
- Webアプリは作らなくてもよい?
- 村田
- Webアプリという感じではないので。何か広告を配信しているんですけれども。もうたくさんリクエストをさばかなきゃいけないからGoで書いている。
- 卜部
- 自分たちで見るところはわざわざWebにするほどのこともないみたいな。
- 村田
- そうですね。まだそういう状態ですね。だから、データサイエンティストがRで書いたダッシュボードがあるのと、リコメンデーションエンジンはPythonで作られているし、リクエストをさばくところはGoで書いてあるし。管理ツール、管理画面の一部で確かRailsが使われているんだったかな。そういうところでしか使えるシーンが今のところない感じです。将来的にはRubyもGoと同じぐらいの速度でリクエストをさばけるようになったりするのですかね。それだといいですけれどもね。そうなると、わざわざGoを使う人がいなくなるんじゃないか。
- 卜部
- どうですかね。Rubyでプログラミングをしてみたいな話になると、Rubyそのものよりも、その上の乗っかっているフレームワークの部分のほうが、多分、厚くなってきそうだよね。
- 村田
- 僕はGoはあまり好きじゃないので、Goをめっちゃいいと言っている人の気持ちが分からないのですが、そういう人はやっぱり逆に私がいいと思っているRubyはあんまりいいと思わないのかな。直接聞いてみないと分からないですね。
- 卜部
- 将来の夢はそんなものですか。
- 村田
- そうですね。あと、死ぬまでプログラミングをしたり、数学をしたりする余裕を持ち続けられるといいなというのが、私の持っているささやかな夢ですかね。
- 卜部
- ありがとうございます。じゃ、その他。前回のインタビューは古いんだけれども、前回のインタビューの須藤さんとの関連。
- 村田
- 須藤さんの関連で言うと、同じRubyコミッターであるということと、同い年というのもあるし。最近は……。
- 遠藤
- みんな、同い年。
- 村田
- そうですね。ここは同い年だ。最近は須藤さん、月1回、Speeeに来てくれていて、Speeeのオープンソースソフトウエア活動みたいなものの支援をしてくれているんですよね。こういう考え方でやると、自分の仕事をOSSに還元できますよとかというその考え方とか、開発の進め方とかを指導してくれているのです。その……。
- 卜部
- メンター業みたい?
- 村田
- メンター業みたいなやつをする枠の中で、私がやっているデータサイエンスの基盤をつくるみたいな活動と一緒に、Red Data Toolsとかを一緒にやっていきましょうねみたいな話もしているので、そういうところでは結構近いですかね。須藤さんも、Red Data Toolsプロジェクトをやって、Rubyでデータ処理ができるみたいのを作ろうとしているので、そういうつながりは結構ありますね。
- 村田
- 実は近かった。元々はあまり近くなかったですけれども、やっていることは。
- 卜部
- 最初に知り合ったのいつ頃ですか。
- 村田
- 最初に知り合ったのいつだろう。
- 卜部
- もうだいぶ前だから、あんまり覚えていないぐらい?
- 村田
- だいぶ前ですね。覚えていない。恐らく、直接会ったのはRuby会議とかだと思います。
次は
- 村田
- 次のインタビュー。
- 卜部
- 誰にしますか。
- 村田
- 前々職の同僚の国分さんにしたいと思います。今ここにはいないですけれども、もう許可は得ているので。
- 卜部
- 国分さんに何か、質問とか一言でも。
- 村田
- そうですね。国分さんは、akrさんと同じ研究室出身ですよね。
- 遠藤
- へえ。
- 村田
- 遠い後輩なのです。同じ研究室で、どうでしたかというのはちょっと聞いてみたいですけれども、あんまり関係ないから。
- そらはー
- 確かにそうか。確かにそうだ。
- 卜部
- でも、同じ研究室といいつつ、かぶってはいないのに。
- 村田
- かぶっていないです。
- そらはー
- さすがにかぶってはない。
- 村田
- そうです。彼は東工大なのね。国分さんは。akrさんはどこでしたっけ?
- 遠藤
- JAIST。
- 卜部
- JAISTか。北陸のほうですね。
- 村田
- JAIST時代ですよね。でも、先生は一緒なのですよね、指導教官は。
- 遠藤
- 渡部先生。違う?
- 村田
- 国分さんは何をきっかけに、今みたいな速度を求める活動をすることになったのですかみたいな質問をしてみたいですね。クックパッドにいた頃は、最初の頃は、そういう素振りを全然見せていなかったので。
- そらはー
- そうかな。
- 村田
- アルバイトしていた頃とかね。
- そらはー
- 何か最初の頃は何かよく分からない、多分、興味もあったのだけれども、めちゃくちゃ多分、普通に任された、バイトとして任された仕事をやるのに精いっぱいだったという印象があるから。
- 村田
- そうですね、元々そうだった。
- そらはー
- 最初はそもそも、元々、彼は今みたいな仕事をしていたわけじゃなくて、普通にうちの会社のWebアプリを書いていたので。
- 村田
- そうですよね。だから、Webアプリを書いていて。
- そらはー
- そうそう、余裕がなかった。やる余裕がなかった。その後、うちのチームに入ってきて、何かいろいろやるようになって、さらに何かますます精を出すようになったという印象が。
- 村田
- その辺を直接、本人に聞きたいなという。
- 卜部
- その辺の具体的なエピソードは本人に聞きたいなと。
- 村田
- あとはトレジャーデータをどうするか。すごい聞きたい。
- 卜部
- それは普通に聞きますね。
- そらはー
- アプライする理由がないらしい。皆さんが、なぜに会いたいのか分からない(笑)。
- 村田
- そうですよね。言っていましたよね。次は?
- 卜部
- 次、若手へ一言。
- 村田
- 若手へ一言は、何か、あれですよね。面白いものを見つけて頑張ってくださいぐらいで。
- 卜部
- 面白いのを見つけて頑張ってください。
- 村田
- 楽しめる、無心で楽しめるものを見つけたら、それに全力投球するのがいいですよという感じですかね。
- 卜部
- 高専の人たちとかに。
- 村田
- そうですね。何か中学生で技術系が好きな人は高専に行って、苦労するけれども、高専に行くことを。
- 卜部
- 苦労するけれども(笑)。
- 村田
- 高専のときにやらされた苦労は、今、すごい生きているので、やったほうがいいと思います。高専以外であの苦労をさせられる場所は、恐らく日本にはないんじゃないかなと思いますけれどもね。
- そらはー
- ないでしょうね。
- 村田
- 外国の大学に行かない限り、ああいう苦労はさせられないんじゃないかと思うので。
- そらはー
- 聞いている限り、何かその辺の大学生より圧倒的に苦労している印象がある。
- 村田
- いや、でも、高校2年生で毎週、実験をやらされて、その実験のレポートとして、1本の論文みたいなものを書かされるわけですよ。
- 卜部
- いわゆるレポートだよね。
- 村田
- いわゆるちゃんとしたレポートを書かないと、再提出とか言われて。再提出になると、その週の新しい実験のレポートとその再提出を両方やらなきゃいけない、そういうのが毎週あるんですね。あれはすごかったですね。あれのおかげで今があると言っても過言ではない。こんな感じですね。
- 村田
- 次は、読者へ一言ですね。
- 卜部
- はい。
- 村田
- 読者へ一言。何かるびま存続の危機みたいなのがあるそうなので、ぜひるびまが面白いと思っている方は記事を書いてください。おまえが書けよと言われそうですけれどもね(笑)。
- 村田
- その他にこれは言っておきたいということ。何だろうな。いや、そんなのはないですね。何か仲良くやっていきましょうと、そういう感じで。Rubyistとして仲良くやっていきましょうということで。これからもよろしくお願いします。
- 卜部
- よろしくお願いします。でいいですか。
- 村田
- いいです。大丈夫です。
- 卜部
- お疲れさまでした。
- 村田
- お疲れさまでした。ありがとうございました。