Rubyist Hotlinks 【第 30 回】 遠藤侑介さん

はじめに

著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。 第 30 回となる今回は、Ruby 2.0 リリースマネージャであり、Ruby のコミッタでもある遠藤侑介さんにお話を伺いました。

では、お楽しみください。

1.jpg

プロフィール

好きな言葉
しようかな、しない方がいいかな、と迷うときはしない方がよい
尊敬する人
後先考えずにコードが書ける人
ご本人のサイト
http://d.hatena.ne.jp/ku-ma-me/

インタビュー

聞き手
ささだ
語り手
遠藤侑介さん
野次馬
たるいさん、mrknさん、遠藤さんの奥さん(hirekoke)
日にち
2012 年 3 月 25 日
場所
秋葉原ダイビル 13F (ささださんオフィス)

目次

プロフィール

ささだ 本日はお忙しいところをお時間いただき、ありがとうございます。

遠藤 よろしくお願いします。

ささだ まずはプロフィールを教えて下さい。生年月日、出身地、現住所、家族構成など。

遠藤 1981年生まれでございます。出身地は岡山県で、今は神奈川県ですね。家族構成は妻と私です。

ささだ 岡山。ああ、あの大都会岡山ですか。

遠藤 大都会岡山は、岡山市のほうですね。私の出身の津山市は岡山市の北、山の中にあります。岡山県では第三の街なのかな。

ささだ そういえば今まで奥さんを連れて来た人はいないので、今回は Rubyist Magazine インタビュー史上初めてのリア充なインタビューです。後の方で「好きな女性のタイプは?」という質問をしますので、回答を楽しみにしています。

好きな言葉、座右の銘

ささだ 好きな言葉、座右の銘。

遠藤 過去のインタビューを見ていると、みなさん格好いい座右の銘をお持ちですよね。私も考えたのですが、「しようかな、しない方がいいかな、と迷うときはしない方がよい」という言葉にしました。原文は古文で、確か授業で習ったと思うのですが、今探しても出典を見つけられないんですよね。徒然草か何かだと思うのですが。

ささだ 「明日できることは明日やれ」と同じような意味ですか。

遠藤 しようかしないかと迷ったらしないという、保守的というか後ろ向きな意味ですね。たとえば Ruby のチケットとかでも、判断に困ったら現状維持、やらない方向を選びます。

ささだ 迷うような問題はリジェクトしてしまえと。

遠藤 あとは、「設定はやめろ」ですね。まあこれは座右の銘じゃないですけど。たとえば、vim は設定不要なので好きですね。screen は嫌いです。デフォルトの設定*1がありえない。みんなよく「設定変えればいいじゃん」って言いますけど、同意できない。設定文化が嫌ですね。

ささだ なるほど。たとえば Ruby on Rails とかは設定不要ですよね。convention over configuration でしたっけ。

遠藤 そうですね。でも Rails は Rails で嫌いだったりするんですよね。

ささだ さっきから嫌いな話ばかりで、好きな言葉の話じゃなくなって来ましたね (笑)

遠藤 あと好きな言葉は「継続力」ですね。まあ僕にはないものなんですけど。

2.jpg

ささだ ちなみに遠藤さんの奥さんの座右の銘は。

hirekoke 「やられたら 10 倍返し」です。

ささだ なるほど。夫婦喧嘩とかはそういう感じだと。

遠藤 はい (笑)

ささだ 受けた恩も 10 倍で返すんですか?

hirekoke それはまた別の話ですね。

ささだ なるほど (笑)

尊敬する人

ささだ では次。尊敬する人。

遠藤 「後先考えずにコードが書ける人」ですね。これは別に悪口じゃなくて、自分の場合だとコードを書いているうちに細かいことにこだわりだして、最後まで仕上がらないことが多いんですよね。だから、ささださんが YARV を完成させたのは本当にすごいと思っています。尊敬してます。

ささだ ああ。後先考えてなくてすいません。

遠藤 いやいや、本当に悪口じゃないですよ。まつもとさんもそうだと思うんですけど、通常のユースケースしか気にしないで設計しちゃうじゃないですか。コーナーケースに気が付かない力。その割り切りができるのは、本当に強みだと思います。すごいですよね。

ささだ YARV の場合は割り切りと言うより、政治的なものがあったというか。未踏が終わって YARV が Ruby 本体に取り込まれないと、成果にならないとか、そういう。

遠藤 ささださんの場合は、確かにそうなのかも。

ささだ 中田さんとかにも言えるよね。後先考えない。

遠藤 いや、中田さんは、結構細かいケースも見落とさないかも。こう言うと、ささださんが見落としていると言っているみたいだけど (笑)

一同 (笑)

ささだ 見落としてます、はい。それは重々承知しております。

遠藤 いえいえ。とにかく、Ver 1.0 を出せる人はすごいなあと思います。うん、いいこと言った。

代表作

ささだ 代表作。

遠藤 Quine *2 のどれかだと思いますが。どれでしょうねえ。

mrkn 僕の中では RubyKaigi のスタッフロールですね。

ささだ 音まで出してたね。

遠藤 おそらく一番多くの人に見てもらえたのは、Quine リレーですね。Ruby のコードなんだけど、実行したら Python のコードが出てきて、それを Python で実行したら Perl のコードが出てきて、……と 11 言語を経て最初の Ruby のコードに戻るという……。あれは世界中のいろんな人から、各国語で「変態」とか「病人」とか呼ばれましたね。変態は中国語でも変態で通用するらしい。

一同 (笑)

遠藤 Ruby の実装では何が代表作かな。

ささだ 別に Ruby じゃなくていいですよ (笑)

遠藤 Quine 以外は、あまりちゃんとリリースしたものがないですねえ。これも Quine だけど、Qlobe。地球儀がコードに埋めこまれてて、実行すると回る。知らないうちに ruby-talk とかでも話題になってた気がする。

ささだ 海外行ってもあれは通じるので、俺の知り合いのコミッタが作ったんだぜーって自慢したりしてました。

遠藤 わかりやすいですからね。

ささだ 著作は。

遠藤 「抽象によるソフトウェア設計」という本を翻訳しました。今も販売してます。軽量形式手法 Alloy の教科書です。訳しただけで、内容はもう忘れてるけど (笑) nagachika さん*3がすごく読み込んでくれてて、自習用の日記*4にいろいろ書いてくれてる。原著のミスまで見つけてくれて。僕よりよっぽど詳しくなってる。

ささだ 修正するほど売れた?

遠藤 まだ初版ですね。

ささだ あの手の本はなかなか一般受けはしないよね。

遠藤 でも、RubyKaigi のジュンク堂出張店に置いてくれたおかげか、予想より売れてるみたいですよ。ちなみに、今別の本の翻訳が進行中です。Types and Programming Languages 。通称 TAPL 。レンガ模様の赤い本。

ささだ あの本はでかいよね。

遠藤 ええ。訳者も多めで。

ささだ あれは読みたいです。原著は買ったけど、本棚が立派になりました。

遠藤 本棚のかざりですか (笑) 輪講で使えばいいのに。

ささだ まず、読み方が分からないんですよね。英語だし。

遠藤 それは買う前に気が付きましょうよ。

mrkn 数式とかコードとかだけ見たらいいんじゃない。

ささだ 英語と数式でもうダメ。じゃあ買うなよって?

一同 (笑)

ささだ ちなみに奥さんの代表作は。

遠藤 ニコニコ動画にアップしてます。

一同 (笑)

遠藤 マイクに声を入れると、その高さに応じて自機が上下する。それで洞窟を抜けていくゲームとか。

たるい 酸欠になったとか。

ささだ 何でぐぐればいいですか。

遠藤 PitchPitch で。僕のインタビューじゃなくなりましたね (笑)

ささだ ニコニコ動画っと。(検索して)あったあった。

hirekoke 一番人に見られたのは、これかなあ。

たるい あとは遠藤さんの twitter アイコンとかもそうですよね。

遠藤 あー。

一同 (動画を見始める)

hirekoke 目の前で見られると恥ずかしい。

mrkn 絵は全部描いてるんですか。

hirekoke はい。

遠藤 僕の好きなメソッドはいつ聞かれるんだろう。

一同 (笑)

ささだ どうでもいい (笑)

一同 (笑)

ささだ この動画の声ってどうやって作るんですか?

hirekoke ゆっくり声。SofTalk ってやつで、誰でも作れますよ。

ささだ テキスト入れるだけで勝手に音声合成?

hirekoke はい。

遠藤 これに影響されて、僕も一時期 FFT で遊んでました。

ささだ これのために?

遠藤 いや、この人がこれをやってるのをみて、僕もやりたくなった。

ささだ FFT とか名前しか知らない。

hirekoke 私もそうですよ。

一同 (笑)

遠藤 こういうの Ruby で作れないから悲しいですよね。

たるい Ruby で作りたい。

mrkn 何が足りないんだろう。

ささだ (動画見てる) しゃべらないとどうなるの?

遠藤 音が認識されない時は自機が大きくなる。

ささだ 歌ってる人は誰なんですか。

hirekoke フリーの野良ボーカロイドの UTAU です。お金は使いたくないので。

遠藤 そういう音声合成ソフトとかのマクロ言語にならないかな。Ruby が。っと無理やり話題を Ruby につなげてみましたが (笑) こういうのって、スクリプト処理したくなりそうな予感がします。でもそういう分野は Lua が占めてるらしいので*5

ささだ (動画見て) 技術解説すげー。これの解説をるびまに書いたらいいんじゃないですか。インタビューじゃなくて。

一同 (笑)

hirekok 最終的に「この論文読め」となってしまうので。

ささだ 論文読んだんですか。これ作るために。すげー。

遠藤 良かったね。見てもらえて。

ささだ コメントたくさんあるじゃないですか。RubyKaigi の我々の発表なんか全然コメントない。

遠藤 僕の発表には少しはコメントありましたよ。変態とか。

hirekoke 変態は褒め言葉ですよね。

嫌いなメソッド

ささだ じゃ、やっと、好きなメソッド。嫌いなメソッドでもいいけど。

遠藤 嫌いなメソッドの方が答えやすいですね。define_method 。ブロックでメソッドを定義しようという発想が嫌い。スコープが違うのに、なんで代用できると思ったのか。1.9.2 のリリースマネジメントの時にバグが出て嫌いになったこともありますが。

ささだ すみません*6

遠藤 あと、instance_eval で DSL をやるのも嫌。instance_eval の存在自体はそこまで嫌じゃないんだけど、それをドヤ顔で使う人たちが嫌。

hirekoke すごい喧嘩売ってますね (笑)

ささだ でも、DSL とか書く時に使いたくならない? 見た目を良くするために。

遠藤 それでも instance_eval まで使うのはやりすぎ。間違った方向。

一同 (笑)

ささだ 非常に感覚は近くて、「変なのまぜるなよ、綺麗な世界なんだから」って思う。逆に define_method をベースにして、def を糖衣構文にするべきなのかもしれない。

遠藤 それはそれでいいですね。

mrkn そっちのほうが綺麗だなと思う。今からできるんだとしたら。

ささだ Python なんかそうなんだよね。全てが define_method なんだよね。

遠藤 それって効率的に実装できるんですかね。

ささだ それは問題ないはず。Lispの世界でえんえんとやっていた話だから*7

遠藤 今、Proc 呼び出しが遅いじゃないですか。あれもなんとか出来るのかな。

ささだ なんとかしたいですね。Proc 大変なんですよ。

遠藤 Proc 周りの実装は、すごくアドホックですよね。意味ありげなフィールドに何かよくわからない値を代入してるようなコードが多くて、全然読めない。

ささだ 私もなんであれが動いてるのかよくわからない*8

mkrn テストコードがあってよかったですよね。

ささだ テストコードがあって大変苦労されたのは遠藤さんなので *9 。RubySpec で色々バグが出てきて。それを遠藤さんが直した。すばらしい。

遠藤 まだ直ってないですよ。変に include したら変になるやつ。

ささだ ループするやつ。2.0 では直したいと思ってます。

遠藤 がんばってください。

好きなメソッド

ささだ 好きなメソッド聞いてないよな。

遠藤 pack とか unpack とか。

ささだ なんで好きなの。

遠藤 Quine を書くときに便利だから。

一同 (笑)

遠藤 あとは Integer#[] 。整数をテーブル替わりに使える。フォントをあれで埋め込める。*10

一同 (笑)

遠藤 なので大好き。

ささだ ああいうの作る時は、先にアスキーアートを書いてからコードを埋め込むの?

遠藤 だいたいそうですね。Qlobe は全部手で書きましたが。セミコロンとか括弧とか入れて。

ささだ おー。

遠藤 普通のところでは、Enumerable は設計が好きですね。each を定義するだけで補助メソッドがいっぱいできるのが格好いい。あとは inspect 。inspect があるから Ruby を使うようになりました。今では普通の機能ですが、当時は言語組み込みでは少なかった気がします。少なくとも OCaml にはなかった。

ささだ inspect があるから Ruby に来たという話を初めて聞いた。

mrkn いいですよね、inspect 。Smalltalk にもあって。あれは便利。

遠藤 というか、本当に好きなのは p ですね。

Ruby に関して

Rubyist になったきっかけ

ささだ Rubyist になったきっかけは。いつ頃からですか。

遠藤 最初は 2003 年、大学の学部にいた頃ですね。大学の先輩からもらったスクリプトが Ruby だったんですよね。確かチャットの bot でした。それがきっかけですね。

ささだ ほほう。

遠藤 最初に Ruby のパッチを書いたのは、2005 年ですね。大学の Solaris マシンで Ruby がビルド出来なかったとき

ささだ いきなり Ruby のパッチですか。

遠藤 大学の先輩に手伝ってもらいながらデバッグしてましたね。

ささだ それは Rubyist になったきっかけというより、コミッタになったきっかけですか。

遠藤 コミッタになったきっかけは別ですね。p が引数を返すように変更してもらったやつ

mrkn あれはいつでしたっけ。Ruby 1.9 から?

遠藤 わりと最近、2007 年ですね。もう 5 年前ですか。

ささだ ああいう要望は他にもいくつかありましたよね。何で遠藤さんのだけが採用されたんですかね?

遠藤 簡単に実装できる内容だったからじゃないでしょうか。運が良かったからかも。最初に提案したときは、ぐちゃぐちゃと色んな人に言われて、半年くらいして「やっぱり欲しい」って言ったら、まつもとさんに「じゃあいいよ」って。*11

ささだ なるほど。

遠藤 それからは、ささださんが 1.9 に callcc を復活させるとか Fiber を入れるというのでバグ出し手伝ったり、パーサを SEGV させる短いコードを網羅的に探したり。そうしているうちに、次の年にはコミッタになりました。

ささだ 懐かしいな。文字列を網羅的に作って、とにかくインタプリタに食わせて、落ちるやつを探すっていう。あほなこと、じゃなくてかしこい人がいるなあと。

遠藤 あの時、Fiber#transfer は入れるなといったのに。絶対入れない方がいいと言ったのに。

一同 (笑)

ささだ ねえ。なんで入れたんだっけ。

遠藤 transfer がないと出来ないことがあるかもしれないって。

ささだ coroutine 的に使うのに必要かもしれないと。

遠藤 クラス変えろと言ったのに。混乱しか招かないと。まあ、そんなに使ってる人みないからいいですが。

ささだ call/cc と同じだよね。Fiber#resume は使ってる人いるけど。あれは、スレッド移動できないのが文句言われますね。

遠藤 スレッド移動。したいかな。

ささだ マルチスレッドで c10k をするために、という文脈が多いと思います。MRI は、Fiber が C 関数のコンテキストを持つので無理なんですよね。

現在の Ruby との付き合い

ささだ 現在の Ruby との付き合いというのは。

遠藤 基本的には、全部趣味ですね。遊びです。

一同 (笑)

ささだ 遊びだったのか。

遠藤 遊びだったんですよ。

mrkn 遊びだったのね。

Ruby の好きなところ、嫌いなところは?

ささだ Ruby の好きなところ、嫌いなところ。

遠藤 好きなところは書きやすいところで、嫌いなところは読みにくいところで。Perl ほどじゃないけれど、他人の書いた Ruby コードって読みにくくないですか。たとえば継承が多用されると、一体どのメソッドを呼んでいるのかさっぱりわからない。

mrkn Rails のコードもモジュールに分かれすぎていたり、eval とかのリフレクションを使いまくっていたり、だいぶ読みにくいですよね。

遠藤 Rails の DRY とかも、正直やりすぎだと思います。

ささだ デバッガをちゃんと作れってことなのかな。

mrkn ruby-debug があるから大丈夫ってことなんですが、今 ruby-debug 動かないんで。 *12

ささだ ruby-debug 使ってる?

mrkn 使ってますけどね、バックトレース表示したら落ちてしまう。1.9.3 だと。

遠藤 なんでだろう。

mrkn なかださんが把握しているのでいつか直るはずですけど。

ささだ それはやっぱり使いたい?

mrkn 使いたいですね。特に Rails だと使いたいんですよ。

ささだ デバッガ誰もいらんだろうと思って、なかなかちゃんとサポートできないんですけど。

遠藤 人のコードはあまり読まないから問題ですね。あと、Ruby の不満点としては、ツリー構造がとても扱いにくいこと。パターンマッチが欲しい。最近前田さんがブログで言ってて

mrkn case 使ってるやつですよね。入ったら便利ですよね。欲しいですよね。

ささだ 扱いたいのは、配列の組み合わせのツリー?

遠藤 それに限らず、struct でも class でも。

ささだ 一般化して対応できるものなんだっけ。

遠藤 Scala が頑張ってる。p に対する inspect みたいに、match 構文の中で内部的に使われる unapply とかいうメソッドがあって。そんな感じに一般化して実装してるみたいですね。ちゃんと調べてないですけど。

ささだ その辺は遠藤さんが提案してくれるという事で。

遠藤 前田さんがやってくれるんじゃないですかね。

Ruby を使った成功事例

ささだ Ruby を使って成功だった、うまくいったという事例はありますか?

遠藤 Ruby だったから成功した、という例ですか。全く思いつかないですねえ。

自分にとって、これはキラーアプリ(ライブラリ)というのは?

遠藤 screen が嫌という話をしましたが、screen や tmux の alternative を自作して使ってます。

mrkn それは公開してないんですか?

遠藤 してないんですよね。設定機能とか作り込んでから公開しようと思うと、いつまでたっても完成しない。

hirekoke 設定はしないんじゃないんですか。

遠藤 自分で使う分には設定要らないようにしてる。

hirekoke デフォルトが自分の設定というだけね。

遠藤 F1 や F2 や F3 で対応する窓に飛びたい、もしまだなければ作って欲しいとか。タブをマウスクリックで選択したいとか、右クリックしたらコンテキストメニューが出てほしいとか。昔の Turbo C の IDE みたいな。

たるい 古き良き時代の感じだ。

遠藤 いつか公開したい。

たるい もう公開できるじゃないですか。

mrkn いいですよこれ。github に上げればいいですよ。

3.jpg

ささだ これは curses を使って作ってるんですか。

遠藤 curses は使ってないですね。ruby-terminforuby-termios 。信頼できる gem しか使わない。akr さんのプロダクトは信頼できる。あと eventmachine 使ってますね。

ささだ 自分で使っている分には問題ない?

遠藤 時々表示崩れますね。

一同 (笑)

遠藤 そういう時は大抵、tmux で同じ事やってみても、やっぱり崩れる。

mrkn screen でも起きますね。難しいのは、全角文字と半角文字の幅の管理で。日本語のフォントの時だけダブル幅になる文字があって。

遠藤 CJK モードとかありますね。

mrkn 一番はまるのが、縦に切ったときですね。左のペインで変な文字を書くと、右のペインに影響が及ぶ。

遠藤 あとは、Project Euler の回答集もキラーアプリですかね。これも公開できない。

ささだ 公開するのはまずいの?

遠藤 問題のネタばらしになるから。顰蹙を買う。

ささだ 何問くらいあるの?

遠藤 350 問は超えてたと思う。今のところ 314 問解いてる。

ささだ ほー。全部 Ruby ?

遠藤 全部 pure Ruby 。

ささだ あ、そうなんだ。

たるい Ruby で書くと難しいこととかありますか。

遠藤 大量のメモリを必要とする問題とか。1GB のメモリが必要なときとか、単純に Ruby の Array で確保すると、GC が起きるたびにマークフェーズでイテレートが起きるのですごく遅い。Array の中身は全部 Fixnum だから、マークは要らないってわかってるのに。

ささだ そこで NArray

遠藤 いや、ダメ。pure Ruby で書かなきゃいけないルールでやってます。拡張ライブラリ使っていいなら、なんでもありじゃないですか。

たるい ストイックな。

mrkn Bignum で代用できないんですか。

遠藤 エラトステネスの篩の拡張版なんかで、破壊的変更も必要なんですよね。GC.disable とか使って戦いです。あ、でも openssl は使っちゃってるな。素数判定のために。

ささだ Prime じゃないんだ。

遠藤 (コードを見て) あ、NArray も使ってた。

一同 (笑)

遠藤 きっと古いコードだ。最新版では使ってないに違いない。

Rubyの習得

ささだ Rubyの習得は簡単でしたか? 何かひっかかったところなどは?

遠藤 定番のはまりポイントにははまったと思いますね。gsub でバックスラッシュに置換できないとか。配列の参照が思いがけず共有されていて、ある配列に代入したら、別の配列 (だと思っている配列) が変わったとか。一度ははまるタイプの問題だと思います。

プログラミングの話

初めてコードを書いたのはいくつぐらいのときですか?

遠藤 4 歳。

mrkn おー。

遠藤 生まれたころから PC-8001 が家にあって。もちろん自分でプログラミングしてたわけじゃなくて、本やベーマガ *13 に載ってるコードを打ち込んでたと思いますが。

ささだ 4 歳はアルファベット読めないよね。

遠藤 LINE とか CONSOLE とかそんな単語ばっかり読めるようになりましたね。

ささだ えーー。だってひらがなも読めない歳なのに。

たるい それは理解できてるんですかね。

ささだ 「Line ってやったら線が出た、やったー」って記憶があるの?

遠藤 たぶん。

ささだ すげー。

遠藤 1981 年生まれならそろそろいてもおかしくないでしょう。

ささだ 2 歳とか 3 歳とかが Youtube で自分でアンパンマンとか iPad で見るとかいう話は聞きますけど。BASIC とかはすごいなあ。

mrkn キーボードを打たないといけないですしねえ。

遠藤 同じ記号を探して打つだけじゃないですかね。

mrkn それをまずやりたいっていう興味をもったところがすごいなと。

ささだ 誰かにやれと言われたんですか。

遠藤 たぶん違うと思うけど。

ささだ でもベーマガと PC があってもやらないでしょ。

たるい それが何かって分からないし。

ささだ そうそう、PC どうやって電源入れるのとか。

遠藤 その前からゲームはやっていたんですよ。親が持ってたゲームを。

ささだ でも PC-8001 用のゲームでしょ。4 歳かあ。だって 4 歳って幼稚園前?

遠藤 ですかね。本に載ってたプログラムを入力して、入力ミスを探して見つけて直して、「動いた!」っていう記憶ははっきり残ってるんですよね。

hirekoke 嫌な 4 歳だ (笑)

たるい おかしい。

遠藤 あれは嬉しかった。

ささだ こういう人が Quine 書くんですね。

一同 (笑)

4.jpg

Ruby 以外のプログラミング言語は何を使いますか? 何が好きですか?

ささだ Ruby 以外のプログラミング言語は。

遠藤 仕事は最近は C が多いですね。ちょっと前は C# とか。Ruby はあんまり使わない。

今まで読んだ中でもっとも美しいソースコードはなんですか?

ささだ 今まで読んだ中でもっとも美しいソースコードは。

遠藤 あんまり人のコードを読まないですね。

ささだ じゃあ、俺の書いたコードより美しいコードはないと。

遠藤 Python の実装は Ruby の実装より美しい。ちゃんとドキュメントやコメントが書かれてる。

ささだ それは美しさなのかな。

遠藤 読みやすさって意味では。見栄えの美しさなら、IOCCC はみんな美しい。*14

一同 (笑)

遠藤 IOCCC 知らない? International Obfuscated C Code Contest 。

mkrn ひどい C コードのコンテストですよね。

遠藤 大変美しい。あと、最近見かけたコードだと、Rubinius は綺麗だったかな。

ささだ Ruby で書かれた部分を読んだの? C++ の部分じゃなくて*15

遠藤 Ruby で書かれた部分。特にコメントが多いわけじゃないけど、なぜか読みやすい。CRuby の実装は、どこに何の関数があるのかわからないことが多い。追うだけなら、ctags とか使えばいいんですけど。

今興味をもっているテーマはなんですか?

遠藤 2.0 のリリース。

たるい なるほど。

遠藤 仕事しないリリースマネージャを目指す。怖くないコミッタを心がける。

一同 (笑)

遠藤 コミッタには怖い人多いですよね。

ささだ ねー。

遠藤 ささださんはその中でもかなり怖くない方で。最近まつもとさんがかなり怖くないですか。

ささだ 疲れてるんですかね。

遠藤 ねえ。なかださんも sigh とか書いてたし。

mrkn モヒカンの集まりですからね。

生い立ち

幼少期

ささだ 4 歳で PC がある環境。ご両親がそういう仕事をしていた?

遠藤 父親がメーカーの研究員でしたね。生い立ちらしいことをいうと、岡山県で生まれで、生後すぐ東京いって。

ささだ あとは東京?

遠藤 父親の転職で、小学校 2 年で岡山に戻った。

小学校

遠藤 ベーマガとかゲームとか。

ささだ ベーマガの対象読者って小学生なの?

遠藤 当時の大学生とかですかね。

ささだ そうなんだ。

遠藤 体系的にプログラミングを習ってなくて、とにかく試行錯誤で覚えた記憶がありますね。例えば、配列を知らなかった。

mrkn 配列を知らない?

遠藤 もちろん BASIC にも配列はあったんですが、その存在も概念を知らないので、ゲームとか作る時に敵を n 個同時に動かすことができない。敵を n 個出したかったら、変数もコードも n 回書いてた。x1, x2, x3 みたいなのを敵の数だけ書く。

ささだ わかるわかる。俺も変数たくさん書けばいいと思ったもん。高校の時だけど。

遠藤 それから配列を知って。なんてすばらしいものだと。いつ知ったのか覚えてないけど。

たるい 配列は最初から知ってた気がする。

遠藤 生まれた時から?

ささだ DNA に埋め込まれてる。

たるい ポケコンがあったので。Aだと配列が自動で入るのがあって。

遠藤 ああ、なるほど。

たるい BCDEFってずっと割り当てられるみたいな感じで。

ささだ 教育用言語にはそういう専用の名前があるといいんですかね。型と変数。

遠藤 そうすると最初から色々覚えないといけなくなりますね。どっちがいいんだろう。

mrkn BASIC が一番簡単なんじゃないかという気もしますけど。

たるい そうですね、BASIC は楽ですね

ささだ なんか LINE って書いてぱっと出るというのはすごくいい。

遠藤 インタラクティブなのがいいですね。Ruby にも、インタラクティブなグラフィカル環境が欲しいですよね。

ささだ ずっと小学校とかはそういうコンピューター少年だったんですか。

遠藤 家にいるときはそういうのをやっているけど、外でも普通に遊んでいた普通の子供だったと思いますよ。

ささだ リア充だ。

遠藤 小学生が外で遊んでいるだけでリア充なら、リア充ですね。

ささだ 家に帰って The BASIC*16 読んでいる小学生、嫌だなあ。

たるい The BASIC はあったなあ。

ささだ コードダンプとか自分でやって。

遠藤 今では、雑誌の大量のコードを打ち込むなんて根性ないですね。特にマシン語のダンプとか打ち込むなんて、大人のほうが無理ですよね。子供の集中力がないとできない。

ささだ 今じゃ僕あれ打ちたくないですね。OCR とか使いたい。

遠藤 横着をする方法を考えちゃいますね。

中学

遠藤 中学校も似たような感じですかね。

ささだ 部活とかやってなかった?

遠藤 卓球部でしたが、全然強い所でもないし、適当だった。

ささだ 学校で卓球をやって帰ってコンピューターをやる。

遠藤 そんな感じでしたね。

ささだ ファミコンとかスーファミとかは。

遠藤 親の方針で、ゲーム機はなかったんですよ。その代わりパソコンで遊びなさいって言われて。

ささだ 英才教育だ。

遠藤 ある意味そうですよね。

ささだ そうか、だから今だと iPad を渡しちゃいけないんだよ、きっと。これ以上作ろうという気がなくなってしまう。

mrkn ああなるほど。たしかに。

遠藤 今は、何を与えたらいいんですかね。

ささだ PC-98 でいいんじゃない (笑)

一同 (笑)

mrkn DS で BASIC 書けるやつがありましたね。

遠藤 なんだっけ、最近流行っている。名前忘れた。*17

ささだ NTT 研究所の人が自分の子供に触らせるためにプログラミング環境を作ったという話をしていて*18、モチベーションがかっこいい。

mrkn へー。

遠藤 教育用のプログラム言語とかは色々研究されていますよね。

ささだ よくあるけど、自分の子供のためにというのが格好良かった。数年前の話なので、今本当にそれで育っているのかどうか知らないけど。

遠藤 子供に将来どういう環境を与えればいいのかって、全然見当つかないですよね。まずインターネットさわらせたくない気がしません?

mrkn 僕も触らせたくないですね。

遠藤 小学校も高学年とか、中学生になったらいいのかもしれないけど。

hirekoke その頃が一番危ない気がします。

たるい 罪悪感をもってやってもらわないと。

遠藤 ツイッターで馬鹿発見機に引っかかりそうな。最近の子供はプログラミング環境に恵まれていないですよね。

ささだ 環境はすごいリッチになったけど。

遠藤 動機付けが弱そう。そういう意味では sorah くん*19とか、なんでやってるんでしょうね。

mrkn 本当、不思議ですよね。

遠藤 意味わかんないよね、あの人。

高校

遠藤 文化系の物理部というのに入って、物理部というけど天体観測してたりパソコンいじってたり。

遠藤 あ、中学生くらいから C 言語に移ったのかな。

ささだ BASIC が許されるのは小学生まで。

mrkn そんなもんじゃないですかねえ。僕もそんな感じです。中学入ったら Z80 ですね。

遠藤 C じゃないじゃん。

mrkn C は本で読んでいたくらい。コンパイラがなかったので。

ささだ C 言語を知ったのは高校以降ですよ。

たるい Z80 で C ってないですよね。

mrkn MSX にはあったんですよ。

一同 (笑)

たるい MSX でダンプ打ち込んでアセンブラとか。

mrkn Forth のコンパイラはあったんですね、MSX に。やった記憶がありますね。

ささだ それはメディアは何で持ってくるんですか。カセット?

mrkn フロッピーですよ。TAKERU から持ってくるんですよ。

ささだ ああ、あったなあ。

大学

遠藤 大学に入って理論科学グループというパソコン系のサークルに入ったんですね。

ささだ 大学で何をしたいとかあったんですか。とりあえず大学?

遠藤 とりあえずな感じですね。入れたので入ったみたいな感じ。

ささだ これやるぞ、という感じじゃなくて入って? コンピューターやろうと思っていたんですか。

遠藤 その頃はたぶんそこまで考えてなかった気がしますね。

ささだ ほかに興味があった? 理系に入ったんだよね? いろいろ選べた中で。それこそ物理部だったら物理の研究しよう、とか。

遠藤 いやいや、物理部と言ってもパソコン班だったので。

ささだ それで入ったサークルはコンピュータ系。

遠藤 そうですね。2 つ迷ったんですよ。奇術サークルかパソコンか。

ささだ 面白そうだから?

遠藤 面白そうだったし、会社に入ったときに芸をやれと言われて困らない。

一同 (笑)

遠藤 先に行ったのがパソコンのほうのサークルで、そこが居心地よかったから、そのままって感じですね。

mrkn 奇術かパソコンか。なんかねえ、Quineに通じる選択肢。

一同 (笑)

遠藤 そうかもしれない。人を驚かせるのは好きですね。

hirekoke でも会社で芸をやれって言われても Quine は使えませんよね。

遠藤 入社した時の新人研修で、自分にしかできないことをアピールしろって言われて、プログラミング言語 40 種書けますって言ったらうけたよ。

一同 (笑)

遠藤 結構ずるいカウントした気がするけど。ろくに書けない bash とか、Pascal と Delphi を別にカウントしたとか。

ささだ なるほど。

遠藤 大学まで、プログラムを書ける知り合いが周りにいなかったんですよね。

ささだ じゃあ、一人だけでやってた?

遠藤 ほとんど、というか完全に。

ささだ 遠藤さんの頃だとインターネットとかまだですか。

遠藤 あるにはあったけど、うちの父親の方針で入らなかったですね。教育に悪そうという気配があったんですかねえ。

ささだ なるほど。では、家にはスタンドアロンのPCだけがあったと。

遠藤 パソコン通信はやっていた気がしますけどね。でもフォーラムには入らなかった。

たるい ニフティとか?

ささだ ニフティサーブ、懐かしいですね。

遠藤 懐かしいですね。今から思えば知り合いを作ったほうが良かった気がしますけど。それで、大学に入って初めてまわりにプログラムを書ける知り合いというのがいっぱいできて。

ささだ サークルに入って。

遠藤 そう、サークルで。初めてハッカーとか、ハッカーの文化、オタクの文化に触れて。すごくカルチャーショックでしたね。あれはびっくりした。

ささだ ちなみに一人暮らしだったんですか。

遠藤 そうですね。寮に。

ささだ 寮があるんだ。

遠藤 あの時期が一番通勤・通学時間が長かった。1 時間弱なので、東京の中では普通レベルだけど。それ以来、満員電車に乗りたくないのでなるべく職場に近いところに住むようになった。

ささだ で、学部 3 年になって、コンピューターの専門に行ったと。

遠藤 行っちゃいました。

ささだ それがもうコンピュータやるぞと。まわりがそうだったから?

遠藤 その頃になると、とりあえず食いっぱぐれることはないかなくらいのことは考えて。

ささだ なるほど。で、その頃に Quine をはじめた?

遠藤 うーん、そのころはまだ普通の人程度にしか嗜んでいなかった。

mrkn 普通の人程度 (笑)

遠藤 変な見た目のものを作ったりしてなかったですね。

ささだ なるほど。

5.jpg

遠藤 あの学科の環境はときどき shinh さん *20 に批判されるんですよ。学科内引きこもりが多すぎ、みたいなことで。確かになぜか、周りの人に見てもらったら満足してしまう環境だったんですよね。そのせいで、外に公開するということをほとんどやらなかった。もったいないことをしていましたね。

ささだ 外に出さないというのが、浜地くんの批判? Googler なのに。

遠藤 最近はそうでもないみたいだけど。でも、会社に入って周りに「同好の士」みたいな人がぐっと減った。それでブログを始めたという感じですね。

ささだ ブログは会社入ってからだっけ。

遠藤 ブログを始めたのは会社に入ってからですね。

ささだ ああそうか。研究はなんでしたっけ。Java がどうのというやつだっけ。

遠藤 卒論の頃は、アスペクト指向プログラミング (AOP) を VM レベルでサポートする JavaVM をやってました。OCaml で Java の VM を作った。OCaml を 2 万行くらい書いたかな。それでも、なんとかサンプルプログラムが動く程度の張りぼてでしたけどね。

ささだ 修士論文は?

遠藤 ラムダ計算をアスペクト指向で拡張した言語に対して形式的な意味論を書くというのをやりました。その上で、さらなるいくつかの言語拡張がこんな風に表現できますね、という議論をまとめて。指導教官の先生に感謝してもしきれない。

ささだ 楽しかった?

遠藤 楽しかったですね。すごく勉強になったし。

ささだ そういうのの楽しさは、どのへんにある? 延々とそういうのを考えるんだよね、ずっと。

遠藤 他の概念との間の対応を見つけたときは面白いですね。この意味論だと、アスペクト指向のこの機能は実は部分継続で表現できるんだ、とか。まあ、ヒントは先生にもらってたんですけど。何か部分継続がどこかに関係しそうな気がするからちょっと調べてみてとかって。

ささだ なるほど。なるほど。そこらへんの理論的な枠組みというのは、今の AOP の世界に。

遠藤 いえ。AOP 自体も主流とはちょっと違う形式で導入するものだったからですかね。学会で AOP の第一人者の Gregory Kicziles に neat って言われた*21思い出があるくらいですね。

ささだ サークルは何をやっていたの?

遠藤 何をやっていたかな。

hirekoke MAD 動画見てた。

遠藤 ハッカー文化、オタク文化ですよね。何が面白いのかわからなった。

たるい その頃はまだニコニコ動画がない?

遠藤 ないですね。

たるい 普通の MAD 。

hirekoke Flash が流行るよりちょっと前くらいかな。

ささだ そういうのを作るとか、そういう感じではない?

遠藤 うーん、学園祭で展示物を作るくらいのことはやっていた気がします。シューティングを作ったんだけど、コードはどこかに行ってしまった。

普段の生活

仕事

ささだ 普段、仕事って何してるんですか?

遠藤 某大手電気メーカーで、研究開発職をやっております。

ささだ お仕事でも数式とかの理論系をやっていると。

遠藤 そういうのはやっていなくて、アスペクト指向を実用的に使うための研究とかをやっていました。

ささだ 今は何をやっているんですか。

遠藤 すみません、ちょっとそれはご勘弁を。

ささだ そうですか。では次行きましょう。

普段の生活スタイルってどんな感じですか?

遠藤 9 時に起きて 9 時半に出社して。

ささだ 早いね。

遠藤 早いでしょう。

ささだ 早いって、30 分で行けるんだって意味で。

遠藤 ああ。10 分あれば行けるくらいの距離に住んでいるので。起きて顔を洗って頭適当に直して荷物を持って出る。

hirekoke それ服着替えてないよ。

一同 (笑)

遠藤 それで、最近は 19 時くらいには帰っているのかな。

ささだ すごい。非常にホワイトな感じで。生活スタイルはまあそんなんで。ちゃんと朝起きて夜早く帰ると。

遠藤 まあ、家帰ってからも仕事しますけどね。

ささだ そのあとに自分のプログラミングとか。

遠藤 ええ、夜中まで。

仕事とプライベートとの両立は?

ささだ 遠藤さんってすごく、仕事とRubyの趣味の話を、くっきり分けていますよね。

遠藤 IRC は昼休みしかしない。

ささだ そうそう。あれはすごい偉いよね。

一同 (笑)

遠藤 家でしかログインしていないので。会社は http proxy の中なのでそもそも IRC できない。

ささだ えっ、昼に家に帰っているの?

遠藤 10 分なんだから帰りますよ。

ささだ そうなんだ。それすごいなあ。

遠藤 12 時のチャイムがなったら家に帰って 13 時に間に合うくらいに出る。

ささだ お昼は自分で作るの?

遠藤 最近はいい加減ですね。一時期ちゃんとやっていたこともありますけど。最近だいぶコンビニに頼っちゃっています。

ささだ それなら帰らなくていいんじゃないの?

遠藤 テレビ見ながら横になって。いいですよ。

ささだ なるほど、なんかそれやると行きたくなくなっちゃうからよくないですね。戻りたくなくなっちゃう。

mrkn 一眠りしてしまいそう。

ささだ 遠藤さんはメリハリがついていてすばらしい。

普段の生活

ささだ 家では何してるんですか?

遠藤 テレビ。全然見てなかったんですが、地デジ化対応でテレビを買い換えたら、結構見るようになりましたね。番組表が見れるのがいい。新聞とっていないので。

一同 (笑)

ささだ 何を見るんですか。

hirekoke 朝ドラとか?

遠藤 ああ、朝ドラみてるね。

hirekoke わざわざ録画して見てます。

ささだ 朝の連ドラ。そう、朝の連ドラを昼に帰ってみる。

mrkn 面白いらしいですね。高井さんが朝ドラ見てから来るんですよ。すごい面白いって言っているんですよ。

ささだ へー。間に合うの?

mrkn 間に合うというか、うちはエンジニアはフルフレックスなので定時がないんですよ。

ささだ 1時間半くらいかからないの? すごい大変そう。まあいいや。違う話だよね。

mrkn そこは高井さんのインタビューの時に。

ささだ 本とかは。

遠藤 読まないですねえ。

ささだ 論文を読んでいる?

遠藤 論文は読みますけど。本はめったに読まないんですよね。yhara さんに献本してもらった難解言語本 (Ruby で作る奇妙なプログラミング言語) と、authorNari さんの GC 本 (ガベージコレクションのアルゴリズムと実装) 、を読んだ、かなー?

一同 (笑)

たるい 記憶にないくらい?

遠藤 いや、nari さんの書いたところじゃないところだけ読んだ。前半だけ。

一同 (笑)

mrkn 実装じゃないほう?

遠藤 必要になったら読もう、と思ってるけど必要にならない。本買わないんですよね、全然。自腹で買った本って何があったっけ。

hirekoke 漫画、漫画。

ささだ 漫画は?

遠藤 漫画だと、最近買ったの、高橋留美子か。

ささだ いま何書いているの?『犬夜叉』終わったっけ?

遠藤 『犬夜叉』は終わって、『境界のRINNE』。また伝記物かぁ、と思っていたんですけど、普通のコメディっぽい。数話で完結するのがいい。ああ、漫画でも何でも、一話完結が好きです。Quine とかも。小さくて、完結するものが好き。

ささだ 音楽、ゲーム、スポーツ。

遠藤 毎週沿線をウォーキングしてます。

ささだ 歩き出したのはいつくらいなんですか。

遠藤 2007 年からかなあ。最初は、山手線をなんとなく。朝 9 時から夜 7 時まで。

hirekoke 稲葉くん *22 が山の手線を一周したっていうブログを書いていて、それをみてうらやましいって言って。

ささだ すげえ、10 時間歩きっぱなしですか?

6.jpg

遠藤 鶯谷で昼ごはん休憩したけど、他は歩きっぱなし。それから、京浜東北線を歩いて、東海道線を歩いて、ってはじめて。このあいだ福島に入りました。

一同 (笑)

ささだ 歩いて行けるんだ。

遠藤 スタート地点まで電車で行って、だいたい一日 30 〜 40 km くらい歩いて、電車に乗って帰る。というのを繰り返して、常磐線を上野から北に向かって、千葉を抜けて茨城を抜けて。

mrkn ああ、なるほど、前行ったところから、また歩きはじめて。

遠藤 そうそう。福島まではのべ 10 日くらいかかった。まだいわきまでいってないんだけど。なかなか終わらないんですよね。

ささだ ゴールはあるんですか?

遠藤 ルールがあります。東京駅から、Suicaだけで、新幹線を使わずに行ける範囲。

たるい 西の方は、だいぶいけるんじゃないですか? 名古屋とか?

遠藤 そんなには行けない。

たるい 静岡は?

遠藤 熱海、伊豆までですね。それより先には行けない。

たるい 在来線でもいけるんでは?

遠藤 JR 東海と JR 東日本の切り替わりで切れているんですよ。

たるい そうか。

ささだ 名古屋でも Suica 使えるでしょ?

遠藤 1 駅間だけ、Suica も TOICA も使えない区間があるんですよ *23 。なので東京駅からは行けない。

たるい 熱海で。

ささだ そのうち使えるようになるんじゃないの?

遠藤 そうなんですよ。2020 年までに JR 東日本の範囲全部、Suica で行けるようにする、って方針だったらしいです。でもどうなるんでしょうね、震災で。

ささだ なるほど。

遠藤 仙台区間とマージされたらもう無理。

ささだ じゃあ、そうなる前に。

遠藤 終わらないと、終われなくなる。

ささだ ゲームとかは、買わないと。

遠藤 ゲームはやらないですねー。A 列車 DS やってたけど、飽きちゃった。

使ってるマシンのスペックとか

ささだ 使ってるマシンのスペック。

遠藤 今のところ、Thinkpad しか買ったことがない。別に大好きなわけではないんですけど。

ささだ なんとなく?

遠藤 最初に買ったのが ThinkPad で、それ以来、何となく。それも X シリーズしか買ってない。X24 、X60 、X200 。1 台だけデスクトップ機を自作したことがあったけど、それ以外は。

mrkn ThinkPad 以外に選べるものがないですよね。

遠藤 ThinkPad が Lenovo に売られたとき、多くの人は Mac に行ったんじゃないの?

mrkn Mac である必要のない人は、Let's Note に行っているんじゃないですか?

遠藤 そうなんだ。

mrkn 今だと、軽いと言ったら、Let's Note か、MacBookAir 。

hirekoke Let's Note 、全然軽くない!

mrkn 軽くないですか?

hirekoke ものすごっく重い!

mrkn Let's Note 重かったら、他のなんか、ぜんぜんだめでしょ。

たるい R2 とかめっちゃ軽いですよ。

hirekoke いちばん小さいのは軽いですけど、小さすぎる。

mrkn 1キロしない。

遠藤 家にある Let's note は、Thinkpad と同じくらい。

たるい 最近のやつは重いですよね。

mrkn 重いですか?

たるい R7 とか。

mrkn へー。

たるい 全部インテルが悪いんですよ、あれは。

mrkn なるほど。

hirekoke 自社製品は買わないんですね? (笑)

遠藤 買わないですね (笑) キーボードが嫌い。

hirekoke 私は買ったんですけどね。

遠藤 そのお下がりをもらって、Windowsが必要なときだけ使う。

mrkn Windows を使う分には全然悪くないんですけどね。Ubuntu入れて失敗して。

hirekoke 相性が悪いっていいますよね。

遠藤 BIOS が独自ではまるんですよね。まあ実際のところは、ハードウェアにこだわりはあまりないです。あ、でも TrackPoint じゃないと嫌なんだ。そういう意味では、ThinkPad くらいしか、今は選択肢がない。

mrkn ああ、なるほど。

好きな女性のタイプは?

ささだ 好きな女性のタイプは?

匿名 この状況で妻以外言えない (笑)

hirekoke いやいや、言っていいですよ。

遠藤 いやあ、それって、後で 10 倍返しじゃないですか。……何だろうなあ、コンピューター関係の話が通じない人とかは、考えられないですね。

ささだ なるほど。

遠藤 「スラッシングしてる」とか言っても、通じないとねえ。

hirekoke 何だっけ? (笑)

遠藤 「キャッシュに乗ってる」とか、日常生活でもパソコン関係の用語でたとえることが多いので。それが通じないとものすごくストレスですよね。大変助かっております。いつもありがとうございます。

ささだ 歩きはじめたときにはもう付き合っていた?

遠藤 大学時代からなので。

ささだ サークルで?

hirekoke サークルで会いました。

ささだ つきあい始めたのは?

遠藤 大学院に入る前くらいかな?

hirekoke うん。

ささだ 同じ専攻? 専攻じゃなくて同じ学科?

遠藤 同じ学科で、専攻は違う。

hirekoke 専攻同じだよ!

遠藤 専攻は同じで、研究室が違う。

ささだ 何かきっかけとかあったんですか

遠藤 ……なんだろう、院試?

ささだ 二人で一緒に勉強しようとか、そんな話ですか?

遠藤 別に……みんなでやってたよね。

hirekoke 全く覚えてない。

遠藤 覚えてない? あっそう (笑)

一同 (笑)

ささだ じゃあ、だんなさんが覚えているきっかけは?

遠藤 何だろうね、なんとなく、ね。

ささだ なんとなく?

hirekoke 覚えてない。

遠藤 まあ、そんなもんですね (笑)

ささだ ええっ。なんとなく、いつもいっしょにいたと。

遠藤 うーん……、うん。

ささだ ふーん、あっそう。

一同 (笑)

たるい 心からの声!

mrkn 心からの声が出ましたね!

ささだ プロポーズは?

夫妻 (ハモって)そんなこと書いてない!*24

遠藤 いやいや。予定にない質問項目増やさないでくださいよ。

ささだ こっちには書いてあるので。

一同 (笑)

遠藤 いやあ、これもなんとなく。

hirekoke 「なんとなく」ね。

遠藤 そろそろ結婚しようかあみたいな感じで

hirekoke 「そうすんべえ」って感じで。

遠藤 なんとなく入籍。4 月 1 日に。

たるい エイプリルフールネタにしか思えない…。

hirekoke そう、ネタにしたくて、4 月 1 日に。

7.jpg

遠藤 結婚しましたって言っても、たぶんみんな信用しない。

ささだ お互いこう、エイプリルフールネタにしようぜって感じだったんですか?

遠藤 その話はしたよね。

hirekoke うん。

ささだ なるほど。

遠藤 まあ、そんなもんで。

今後について

今後の展望、将来の夢など

ささだ 今後の展望、将来の夢など

遠藤 将来の夢、とりあえず 2.0 をリリースさせてパーティーをやりましょう。

mrkn いいですねそれ。

ささだ 帝国ホテルとかで。

一同 (笑)

ささだ 記者会見とかして。でも日曜日だから、まつもとさんいませーん (笑) って。

mrkn 財源さえあれば、帝国ホテルでもなんでもね。

遠藤 財源、あるのかな。あるなら、プレスリリースというか、広告を打つとか。CM 。ラッピング電車。

hirekoke 誰が見るの? (笑)

遠藤 1年後ですね。

ささだ もう一年ないですけど、リリースのあとは?

遠藤 あと? 人生いい加減だよね。

hirekoke 私に同意を求められても (笑)

ささだ とりあえず電車ですか。

遠藤 それは今年中くらいに終わりたいですね。あともう、数えるほどなんで。

ささだ あ、そうなんだ。

遠藤 泊まりがけなのは 2 本くらいかな。あとは日帰りで行けそう。その後、範囲を広げることもできるんですけどね。一都七県の範囲を通っている線路とか。谷川岳っていう、遭難事故数ギネス記録の山を超えなきゃいけないですが。命がけになってしまう。

ささだ なるほど。「こうしていきたい」という何かは、ないんですか。それこそ、自分の言語を作りたい、とか、そういうの。

遠藤 ああ。そのためにも最初の方に言った、「後先考えずに作れる能力」が欲しいですね。細かいことを気にせずに、ガッと作れればいいんですけど。

ささだ なるほど。

遠藤 もっと長期的なプランも考えねば。

ささだ 長期的な、Quine のプラン (笑)

mrkn Quine のネタについて。

遠藤 一話完結が好きなので、あんまり長期的な構想や作業が必要なものには興味を持てない。

hirekoke ライフタイム Quine。人生をかけて、一個の Quine を完成させる。

ささだ このあいだ、あの Arduino で投影するやつ、やってましたよね。あれ何日くらいなんですか?

遠藤 あれはアイデア一発で、作るのは Arduino の中で LED チカチカさせるだけなので簡単。

ささだ 構想は。

遠藤 構想って、いつからいつまでのことなんでしょうね。考え詰めて出たアイデアじゃなくて、一瞬で思いついたものなので。

ささだ 一瞬で思いついて、さあやろうと。思いついてからやるまでの間は、どれくらいだったんですか?

遠藤 1 ヶ月くらいあった気はしますが、その間に何かしてたわけではないですね。半田付けする準備や気力がわかなかっただけなので。

ささだ なるほど。

mrkn でも、どうやって Quine を表に出すかってことですよね。出力のネタだけなので、そのネタが尽きたら厳しいですよね。

遠藤 ですね。

mrkn どうするんでしょうね、今度は。

遠藤 もう普通の Quine とか作ってられない。

前のインタビューイーとの関係は?

ささだ 松田さんが紹介してくれたという風になっているんですけど、「何をどうやったらああいうプログラマになっちゃうんだ」、というのは、今の話でだいたい分かったような気がしまして (笑) 。まず 4 歳から。

mrkn 4 歳で LINE って打って。奇術かコンピューターかで迷った、そこのセンスですよね、きっと。

ささだ なんか「エンターテイメント」が好き?

遠藤 ああ、そうなんですかね、多分。

ささだ そういうのは、なんかあったんですか。さっき高校の頃とかに、ほかにコンピュータやる人がいない、っていう話でしたけど、コンピュータを使って誰かを楽しませる、みたいなのは?

遠藤 当時何かやっていたかというと……あんまし、なかったですね。パソコン通信にアップロードしたことも、ついぞなかったですし。

ささだ なるほど、じゃあ本当にデビュー、というかアウトプットが出てきたのは、大学以降と。

遠藤 会社入ってからですね。

ささだ ああ、なるほど。じゃあ、某大手電機メーカーは素晴らしい会社だ、と。

遠藤 いや、今の流れだと逆ですね (笑) 。周りの人に見せるだけでは満足できなくなったということなので (笑)

ささだ そういう人がいない会社だと。

遠藤 会社の中で「Quine 作ったんだ」って言えるほど、Google みたいな雰囲気ではないですね。

8.jpg

mrkn でもねえ、研究所ってそういうのがあってほしいというイメージありますよね。勝手な妄想ですけども。まあ。

hirekoke いやあ、でもうちの部署けっこうやってるよ。*25

遠藤 遊んでる?

hirekoke 適当に作って「こんなの作ったんだ見てみて」って。

遠藤 Quine 作る人はいないでしょ。

hirekoke Quine はいないよ (笑) 。一応、実用的な。

ささだ 音声でゲーム作ってみたり。

遠藤 それは、見せればよさそうなのにね。……「前のインタビュイーとの関係は」、じゃなかったんだっけ?

ささだ 関係は、コミッタ?

遠藤 このインタビューのきっかけは、去年の Google Developer Day で松田さんと会ったことかな。ちゃんと松田さんと話をしたのはそれが 2 回目ぐらいかな。1 回目は、RubyKaigi 2008 だったかな? 僕が初めて RubyKaigi に参加した年。そのとき既にコミッタになってたけど、顔を知ってる知り合いがいなくて。懇親会で右も左もわからずうろうろしていたら、隣に松田さんがいて、名刺をもらった記憶があります。記憶違いでなければ、「Asakusa.rb をやろうと思っているんですよ」っていうような感じのことを言ってて。まだやっていなかったんじゃないかな、多分。

ささだ よく覚えていますね。

遠藤 RubyKaigi で初めてまともに話をした人だったんですよ (笑) 。松田さんがそのときのことを覚えているかどうかわからないですけど。でも、こっちからみたら、髪型ではっきり覚えています。

ささだ 2008 はつくばですか。

遠藤 1 回目のつくばですね。

ささだ そうですか。なるほど。

次のインタビューイーは?

ささだ 次のインタビューイー、は、誰にしましょう。

遠藤 どうしましょう。

たるい なんか前、関西のほうの誰かとか…。

遠藤 ああ、usa さんとかって言っていたけど。でもインタビューに行くのが大変じゃない?

ささだ いや、関西の人に投げるので、そうなれば。

遠藤 mrkn さんってやったっけ。

mrkn たるいさんもやってないよね。

遠藤 なぐりあって決めてもらいましょうか。

hirekoke 勝った方? 負けた方?

遠藤 勝ったほうが選ぶ権利を得る。……他の候補は、naruse さん。sorah くん。卜部さんもやってないよね。

ささだ あの人、ぜんぜん露出ないよ。コミッタに寄っているので、コミッタ以外の、いわゆる Ruby プログラマの方でも。

遠藤 コミッタ以外の Ruby プログラマに知り合いが全くいない。

一同 (笑)

ささだ いや、別にどなたでも構いません、はい。

遠藤 うーん、sorah 君はないですね。

たるい かわいそうに、ネタ的に「sorah 君はないですよね」「sorah 君はないですね」って永遠に……。

遠藤 だって、あんなにインタビューして欲しそうな人には振りたくないじゃん。

一同 (笑)

遠藤 じゃあ、mrkn さんかたるいさんのじゃんけんで。

mrkn×たるい さいしょはグー。じゃんけんぽん (笑)

ささだ ……まじでこれで決めるんですか?

遠藤 じゃあたるいさんで。

ささだ じゃあ次は、たるいさんでお願いします。

たるい 何もネタがないです。いつどこでやるんでしょうね。

次のインタビューイーへの質問は? もしくは、一言

ささだ 次のインタビューイーへの質問。

遠藤 回答メモに「黒歴史」って書いてある!どういう意味で書いたんだろう、自分。

ささだ 「黒歴史を教えろ」と。

たるい まじで?

ささだ じゃあそれで。

たるい 言った後に、「カット」っていいそう。

一同 (笑)

若手へ一言

ささだ 若手にひとこと。

遠藤 若手って、どれくらいなんですかね?

ささだ 遠藤さんが思う若手。4 歳とか (笑) 。

遠藤 自分の反省から考えると、「英語をがんばってください」とかですね。Ruby より、英語絶対がんばったほうがいいですよ。

一同 (笑)

ささだ じゃあ、コンピューターどうこうするよりまず、お子さんをジンバブエに。

遠藤 当然なんじゃないですか、前回の松田さんのインタビューを見ても。

mrkn ジンバブエですからね。

hirekoke 親のほうが耐えられなさそう。

ささだ Ruby コミッタになるよりは英語がんばれよ、と。

読者 Rubyist へ一言

ささだ 読者の Rubyist に、ひとこと。

遠藤 プログラミングコンテストに参加しよう! あんまり、Ruby 関係でプログラミングコンテストに参加する人っていないですよね。Python は、シェアでは上位に食い込むことが多い。順位で上位に食い込むのはあんまし見ないけど。

ささだ Rubyist って、絶対数がいないんじゃないですか?

遠藤 そうかなあ。

ささだ Rails でコンテスト出ようと思わないから……。

遠藤 Ruby という言語じゃなくて Rails という言語だと。

mrkn 遅いから使いたくない?

遠藤 Python と Ruby はそんなに変わらない。

たるい コンテストだと立ち上げの速さが重要。

ささだ そうなの?

たるい 制限時間の長さによる。一日程度だと、プロトタイピング力が生きる。

ささだ Ruby は向いているはずだと。

たるい Ruby だけじゃつらいかも。

ささだ おすすめのコンテストは?

遠藤 ICFPc 。*26

ささだ ICFPc か。

mrkn TopCoder は?

遠藤 任意の言語でできるんでしたっけ。やったことないから知らない。言語制限のあるコンテストは嫌い。

たるい TopCoder はダメだった気がする。

mrkn C++ でしか参加したことない。

ささだ どれも参加したことない。

mrkn 参加してくださいよ。

ささだ 怖くて怖くて。

たるい 自前でライブラリを用意したほうが強いのでやる気が無くなる。

mrkn TopCoder はそうですよね。

遠藤 Ruby 関係はアルゴリズムにあまり興味ない人が多いですよね。だから Array#bsearch とか入れにくいんだよ。*27

一同 (笑)

遠藤 ああ、そうそう。Web 系で Ruby って将来あると思いますか? Javascript に置き換えられてしまうのでは、と思っているので、Ruby プロジェクトが Web 系のための機能を実装していくのはよくない、と思ってる。

ささだ じゃあどのへんに投資しましょう。

遠藤 科学技術計算関係は難しいかなあ。Python はやってるけど。

mrkn 多いですよね。

ささだ Python プロジェクトは積極的に投資しているわけではなくて、単に Python 全体のシェアが大きいから、科学技術計算やってる人も Python 使おうと思うだけだと思う。

mrkn その分野は、R の方が充実してますよね。

ささだ えー。スパコンで R 動かすの?

mrkn スパコンなら Fortran ですかね。

ささだ Ruby 動かしてるよ。Ruby でマネージするというのを BioRuby のひとが すごい前に言ってた。

遠藤 何にせよ、Web のサーバサイドの Ruby コードはどんどん減っていくと思う。ほとんど Web アプリ書かないけど、この先 HTML5 が成功して。

mrkn クライアント側の比重が高くなりますよね。

遠藤 JavaScript を書く時間が嫌でも多くなる。そうなると、JavaScirpt だけでやりたくなるのは当然でしょう。Web サーバは、ajax のクエリに対してひたすら JSON を返すだけのものになるんじゃないかなあと。

ささだ プログラマは今なにを目指すべき? Web 系以外で。

遠藤 Web 系やってるプログラマがダメって言ってるわけじゃ全然ないですよ。Javascript 中心に移行するだろうというだけで。で、他に目指すべきところは……僕も知りたい。

一同 (笑)

hirekoke 自然言語処理で使いやすくして欲しい。その業界の人は Perl の人が多い。Ruby でできるようになるといいなあ。スピードが足りない。

ささだ スピード!

遠藤 Perl で足りてるのに?

hirekoke Perl でも足りてない。

mrkn 統計処理に向いてない?

ささだ クラウド化! ビッグデータ!

たるい クラウド、Ruby 対応しましょう。

一同 (笑)

mrkn でも、どうやれば対応したことになるんですか?

ささだ EC2 に乗れば。使ってるじゃん。

mkrn fluentd ってのを使ってます。 *28

たるい ひとつのスクリプトを書いたら勝手に並列に。勝手でなくても明示したら並列に。OpenMP みたいなの。

遠藤 MVM*29 が生きてくるんですか。

たるい モデル的に OpenMP なのかな。Shared メモリのモデルじゃないですか。どっちがいいのかな。MPI にしないと。Rubyで勝手に全部共有しないといけない。

mrkn だから副作用なくすしかないんですね。

一同 (笑)

たるい メッセージパッシングしかないかな。

mrkn 限られた区間は副作用のないという区間を作れるととうれしいかも。

たるい Ruby って環境を定義できているんですか。

mrkn あんまりできてないですね、きっと。

たるい クラスの定義がいまどうなっているかとか。

ささだ 意味論を定義せよと。

mrkn ダイナミックなんで、いつどうかわるか分からないから。

遠藤 オープンクラスがある状態でかっちりしたのは難しい。

ささだ それと環境の定義は別だと思う。触れる、と環境定義は別。それがきっちり今わかれてることを記述できるとか。

たるい 明記して保存して復帰させるとかできると、すごい嬉しい気がする。

ささだ はい。

遠藤 クラウド対応っていうか、分散対応ですよね。今の話は。

ささだ まあそれをやって喜ぶ企業がどれくらいいるかよくわからないですね。

mrkn Heroku ですよね。

ささだ 今ほとんどのユーザーにとっては、Rails が速くなったらうれしいわけですよ。なので、個人的にはまずは地味にデバッガとかプロファイラをがんばろうかと。……なんか違う話になってきた。他になにかありますか。

遠藤 いえ。お粗末さまでした。

ささだ 本日はどうもありがとうございました。

終わりに

次回の Rubyist Hotlinks は、Windows 対応をやっている貴重な Ruby コミッタの一人である、たるいさんにお話を伺う予定です。お楽しみに。 (インタビュー:ささだ、編集:郡司、すぎむし、編集協力:インタビュー参加者各位)

Rubyist Hotlinks 連載一覧


*1 デフォルトのメタキーが Ctrl+A で、各ユーザが設定で変更することが常識になっている。

*2 実行したら自分自身を出力するプログラムのこと。http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AF%E3%82%A4%E3%83%B3_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)

*3 Ruby コミッタ。毎日 Ruby の更新を解説する ruby-trunk-changes を書いている偉いコミッタ。http://d.hatena.ne.jp/nagachika/

*4 http://d.hatena.ne.jp/morning_reading/

*5 先日公開された mruby も組み込み分野を狙っている。

*6 YARV で気にせずに作って後悔したコーナーケースの 1 つ。遠藤さんが修正をした。

*7 笹田注:ここでいっているのは、メソッドとはどういうものか、という話。Python は Ruby でいうブロックに名前をつけたもの、といったような感じ(違ったらすみません)で Scheme の関数っぽい。Ruby は、メソッドごとに独立したスコープを持っており、そういう意味で C なんかに似てるんだろうか。define_method で定義されたものは、そういう意味で仲間はずれ。実際、どっちがいいかは諸説あるんじゃないだろうか。ちなみに処理系開発者にとっては例外的な存在は敵なので統一して欲しい。

*8 笹田注:すみません。

*9 遠藤さんは一時期 Ruby のテストカバレッジを上げる活動を行なっていました。http://www.nicovideo.jp/watch/sm3820775

*10 http://www.slideshare.net/mametter/quine-10290517 の 28 ページを参照。

*11 機能提案で議論が発散したら、時間をあけて再提案するのは良い方法だと思われる。提案を冷静に見直せるし、一時の思いつきでないことの証明にもなる。

*12 ruby-debug から fork した debugger を使うと良い。 http://rubygems.org/gems/debugger

*13 マイコン BASIC マガジン。 http://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3BASIC%E3%83%9E%E3%82%AC%E3%82%B8%E3%83%B3

*14 C コードの読みにくさ・汚さで競うコンテスト。http://ja.wikipedia.org/wiki/IOCCC

*15 Rubinius は C++ で書かれた小さなコアと、Ruby で書かれた大部分で構成されている。

*16 技術評論社が刊行していたプログラミング雑誌。

*17 プチコン。http://smileboom.com/special/petitcom/

*18 ビジュアルプログラミング言語Viscuit

*19 中学 2 年生で Ruby コミッタになった人。

*20 はまじしんいちろうさん。すごい人。http://d.hatena.ne.jp/shinichiro_h/

*21 整っている、小奇麗な、という感じの意味。

*22 kinaba さん。すごい人。http://www.kmonos.net/wlog/

*23 熱海駅〜函南駅。http://ja.wikipedia.org/wiki/%E7%86%B1%E6%B5%B7%E9%A7%85

*24 あらかじめ、インタビューする人にはこんなこと聞くからよろしく、という資料を渡してあります。

*25 hirekoke さんも遠藤さんと同じ会社にお勤めです。

*26 International Conference on Functional Programming という学会が主催する毎年 6 月頃に行われるプログラミングコンテスト。使用する言語は自由、使用する計算機も自由、チーム参加可、出題から締め切りまで 72 時間、という形式が多い。http://d.hatena.ne.jp/keyword/ICFP

*27 二分探索。なんとか matz に accept されたので、後はコミットするだけ。http://bugs.ruby-lang.org/issues/4766

*28 http://d.hatena.ne.jp/secondlife/20120307/1331094643

*29 1 つの Ruby インタプリタ上で複数の VM を稼働させる機能。