Rubyist Hotlinks 【第 13 回】 関将俊さん

はじめに

著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。今回は、ERB、dRuby などで有名な関将俊 (咳) さんにお話を伺いました。

今回のインタビューはまつもとさんも講演したオブジェクト倶楽部 2005 クリスマスイベントで突発的に行われました。偶然ささだと咳さんがお会いできたからです。というわけで、突発的なところ (?) をお楽しみください。

プロフィール

seki00.png 横須賀生まれ。生まれた年は秘密。

分散オブジェクトライブラリ dRuby や pure Ruby 版 eRuby 実装である ERB などの作者として知られる。 他にも一風変わったアプリケーションやライブラリを多数作成している。 著作に『dRuby による分散オブジェクトプログラミング』と『dRuby による分散・Web プログラミング』がある。また、『UNIX USER』誌への寄稿がある。

現在は栃木県の那須に在住。

好きな言葉
「無理をしない」
尊敬する人
今一緒に仕事してる人たち
ご本人のサイト
I like Ruby.

インタビュー

聞き手
ささだ (記事中「笹田」)
語り手
関将俊さん (記事中「咳」)
野次馬
須藤さん、角谷さん、伊藤さん
日にち
2005 年 12 月 16 日
場 所
国立オリンピック記念青少年総合センター

目次

プロフィール

好きな言葉、座右の銘

笹田 じゃあ咳さんに、いろいろ聞いてきたいと思うんですけども。 なかなか答えてくれる人がいない「好きな言葉座右の銘」はいかがでしょうか。

 ないですね。

一同 (笑)

 好きな言葉は「無理をしない」。

笹田 「無理をしない」。

須藤 おじいちゃん……。

一同 (笑)

 一応セールスポイントのところに必ず毎年書いてますけど。「無理をしない」。

笹田 無理をしない人生とか設計とかですか。

 (笑) 設計はわかんないですけど。

笹田 じゃあ、お仕事とかは無理しないんですか。

 そんなにしないですね。

笹田 三日間寝てませんとか、そういうことはしない?

 ああもう全然。

角谷 車で仮眠されたりとかします?

 いやないですよ、それ。

須藤 お昼寝しますよね!

一同 (笑)

 そっか。

角谷 お昼寝はどこでやってるんですか。駐車場?

 いや会社で。

角谷 あ、会社ですか。車の中とかでやってるのかなと。

須藤 冬眠はしないですか。

 しないですね。

尊敬する人

笹田 尊敬する人。

 尊敬する人か……。あんまない……。スポットでいくと、今一緒に仕事してる人たちは尊敬できる。

笹田 ああ、無難なところで。

 でも、るびまっぽくないから切っていいです (笑)

笹田 いやいや (笑) すばらしいことで。

代表作

笹田 代表作。dRuby

 eRuby ですかね。

笹田 eRuby?

 ERB とか。

笹田 そっちか。

 ユーザーベースで。

一同 (笑)

 Rails の人も間違って使ってると思うんですけど*1

角谷 Rails には dRuby も入ってますね。

 あーそうなんですか。

角谷 ええ。デバッガに使われているようです。

 あー。

須藤 デバッグしてるかどうかはわかんないですけどね。

 デバッガについてはあんまり語りたくない (笑)

笹田 irb と dRuby を重ねて、なんかリモートデバッグとかいう話でしたっけ?

角谷 そうそう。私はちゃんと使ったことないけど。

笹田 どちらもすごくたくさん使われてますよね。

 dRuby 使われてるんですかね。

笹田 dRuby は本もあるし、使ってる人も……。

 dRuby 本のレビューアが一番使ってるんじゃないか。

一同 (笑)

笹田 うーん。

須藤 レビューしたとき一回も動かしてないですよ……。

 (笑)

seki03.png

著作

笹田 著作。

 著作は dRuby の本二冊 。あとなんか雑誌があった気がするんだけど。

角谷 『UNIX USER*2』が。

 『UNIX USER』ありましたね。二回くらい書いたか。一回かな? 二回書いた覚えがあるけど*3

須藤 IP なんとか。

角谷 メッセンジャー。

 うん。ユーザー数 1 だったんですけど。

角谷 (笑)

笹田 何の話ですか。

角谷 div?

 div のネタで。

須藤 ディブって読むんですか……。

 で、IP メッセンジャーを書くやつがあって。

笹田 なるほど。

 自分用だったんですけど。なんであれが記事になったか分からない。

好きなメソッド、嫌いなメソッド

笹田 ええと、好きなメソッド嫌いなメソッド。

 好きなメソッドは、前回言ったけど inject……が使えるときが嬉しい。

笹田 あー、ツボにはまったときの。

 うん。

嫌いなのなんかあるかな、特にない……。あのフック系がよくわかんないです。メソッドが定義されたときのフックとかなんかなかったでしたっけ。

笹田 method_added とか?

 うん

笹田 inherited とか。

 覚えきれない。

須藤 ああいうの大好きです。

 (笑) ああそう。

須藤 ああいうのと eval はもう大好きで。

 eval は分かるんだけど。

笹田 YARV では eval やったら sleep(2) を一秒入れようかとかちょっと考えてるんですけど*4

一同 (笑)

笹田 お前ら使うなと。まあいいや。

咳さんと Ruby

Rubyist になったきっかけ

笹田 Ruby 関係の話を聞いていこうという思います。Rubyist になったきっかけというのは、なんだったんでしょうか。

 んと、NetNews でまつもとさんが「オブジェクト指向スクリプト言語を作りました」って言って流されたとき があって。SGI*5 でコンパイルしようとしたら全然通らなくて。しばらく寝かしてたんですけど、気がついたら普通に make できるようになってた。

笹田 ふーん。

 で、ちょっと覚えてないですけど 1.2 とかそんなんだと思いますけど。

笹田 最初からそういうのに興味があった?

 そうですね。

笹田 なんか他のをなんかやっててそれに関連してとかじゃなくて?

 他のって?

笹田 たとえば Python とかやってて Ruby もあるんだとか。

 あー、そういう意味だと ObjectPascal。

笹田 ほうほう。

ずっと C 書いてて、興味はあるけど処理系がなくて触れないっていう感じ。

笹田 あー、じゃあオブジェクト指向言語みたいなものに関して興味があった?

 そうですね。

笹田 で Ruby が出てきて、と。なるほど。 じゃあ、出てきたときすぐに? いちばん最初に NetNews のポストのときにもうすでにチェックしてた?

 うん。チェックしてた。で、ビルドできなかった。

笹田 でまあ、しばらく追ってみて 1.2 くらいでできて。

 うん。

笹田 で、動くようになったから手をつけた、と。dRuby とかはその後すぐ作られたんですか。

 多分そうだったような。

笹田 またなんかすごいですよね。分散系に話を持っていこうとするとか。

 あー。そうですね、その前に eRuby があったのかな。

笹田 すぐにそうキラーライブラリを作って。

 キラーになってないんじゃないですか。

笹田 え、だって Ruby って言ったらぱっと出てくる中に多分 eRuby は入るかと。eRuby なり dRuby なり。

 そうですか?

笹田 特徴的なライブラリなんですかって言われたら、それらを挙げたいと思います。

須藤 前からネタはあったんですか。

 dRuby はあったんですけど、eRuby はなくて。ただ、まつもとさんがこういうの考えてるって言っていたから、ああそうなんだと思って。

笹田 それで作った?

 多分最初はひどい実装だった気がしますけど。

Ruby とのつきあい

笹田 現在の Ruby とのつきあいかたというのはどんな感じなんでしょう。Ruby 使ってますか? 開発とかで。

 Ruby 使ってます。え、開発? 開発支援では使ってるけどターゲットには使ってない。

笹田 なるほど。ユーティリティー的に。

 一番大きいのが RWiki が。

笹田 あー、なるほど。自分で使う Wiki はみんな RWiki なんですか。

 そうですね。あんま Wiki として使ってないですけど。

笹田 何に使ってるんですか?

 オブジェクトデータベースみたいな感じで。

笹田 どういう意味ですか?

 RWiki に関して言うと、RD は単にオブジェクトを作るために使われているに過ぎない。RD を使ってオブジェクトを抽出して、永続させてる空間にオブジェクトを置きっぱなしにする。で、それの表現形態として HTML を返すっていうのが RWiki のコンセプトで、今は RD の構文情報とかから属性とかを取り出せるようになっていて、今でいうと YAML みたいな書き方でデータをつっこんでおける。

笹田 それを何に使うんですか。

 それを今、XP のストーリーカードの管理に使ってるんですけど、その内容だけじゃなくて中からいろんな統計情報とか、テストケースだけ取り出すとか。

笹田 ひとつのフレームワークとしてそれを使ってるってことですか。

 そうですね。

笹田 では、開発管理なんかもそれで?

 うん。

笹田 なるほど。

seki01.png

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

笹田 Ruby の好きなところと嫌いなところ。

 好きなところは、さっきまつもとさんが言ってたんですけど、ダイレクトに書けるっていうのが。

笹田 ああ、確かに言ってましたね。ダイレクトって。 嫌いなところってありますか。

 嫌いなところはあるかなぁ……。dRuby とか ERB を標準添付にしてしまったので、バージョンアップとかに付き合うのが。付き合うっておかしいんですけど、仕様変更とかずっとウォッチしてなきゃいけない。でも昔に比べるとまつもとさんがユニットテストしてくれるので、何かがあったら分かるようにはなったので、もしかしたらいいことのほうが多いかもしれない。

笹田 なるほど。添付されちゃうとリリースとかめんどくさいですよね。

 あと、機能拡張っていうか仕様変更が。Ruby のリリースとあわせて、どうしていいのかわかんないですよね。

笹田 ええ。

 もういいやっていうか。

須藤 (笑)

笹田 今は別のレポジトリかなんかで管理してるとかはしてない?

 うん。二重になっちゃうからめんどくさいんで。

笹田 なるほど。

 かといって dRuby 単体などでリリースするタイミングもないしと思って。

笹田 あー。

 自分で dRuby を fork するか? っていうと、なんだかなぁ、とか。

一同 (笑)

須藤 dRuby3.0。

 fork するのもいやだし。

笹田 xdrb とか。

須藤 HEAD と ruby_1_8*6 の方に二回 commit するの嫌じゃないですか。

 そうそう、それも嫌だよね。でも仕様が違うので。__send__ が変わりましたよね、HEAD のほうで。

須藤 funcall*7 ですね。

 うん。

須藤 いつのまにか変わってた。

 うん。私言ってたときはなんか全然スルーだったのに (笑) 突然変わっててびっくりしちゃって。

笹田 「咳さんが変えてって言ったんじゃん」ってやつですね。

 (笑) 知らないうちに変わってた。

Ruby を使った成功事例

笹田 では、Ruby を使って成功だった事例みたいなのはありますか。これは Ruby でよかったとかっていう。

 事例? 事例ってなんですかね。製品ってこと? システムとか。

笹田 まぁ、なんでも。

 本書けたとか (笑)

一同 (笑)

笹田 Ruby 使ってよかったことかな? よかったことっていうか、Ruby がうまくはまったこと。

 Ruby がはまったことってあるかな。

笹田 こういうことを書こうと思ったら Ruby でならうまく書けた、みたいな。

 あるかな、思いつかないな。dRuby は Ruby じゃないと書けない気がしますけどね。

笹田 あー、なるほど。

 RWiki は他でもできそうな気もするけど。Squeak でもできる気がする。

笹田 えー?

 できないのかな。

須藤 いやできるでしょうけど……。イメージ立ち上げるのが嫌です (笑)

Ruby のキラーアプリ

笹田 自分にとって、これはキラーアプリというかキラーライブラリとか、なんかそういうものはありますか? Ruby の。

 自分にとって?

笹田 うん。よく使うとか。

 irb。

笹田 irb 使いますか。

 足し算とかでもすぐ使う。

笹田 あ、計算機のかわり?

 まずは。ふだんもう立ち上げっぱなしで。

須藤 えーっ。そうだったんですか。

 irb 端末が一個。

一同 (笑)

笹田 じゃあ、Ruby がどうのっていうわけじゃなくて?

 Smalltalk の workspace みたいなかんじで繋げっぱなしで、例えば今のイテレーションの状況とかって計算するときに irb から直接 RWiki に繋いで結果ばーって。

笹田 あー、なるほど。すげーかっこいい。

須藤 かっこいい。

角谷 かっこいい。

笹田 じゃあ、それはシェルを irb にしてるような感じ?

 そんなことはないですけど (笑)

角谷 咳さんの本もずっと irb を。

 そうです。

角谷 二つ上げて。

 あれで Windows で動かないとは思ってもみませんでした (笑)*8

笹田 (笑)

須藤 動かないんですか?

 HEAD は動くんでしたっけ。gets が固まっちゃうので irb がマルチスレッドにならないっていうのが。

笹田 えぇ。まあ、うささん*9の努力の結果変わったらしいので。

 じゃあうささんネタと。

Ruby の習得について

笹田 Ruby の習得は簡単でしたか。

 え? 習得?

笹田 習得。

 特に苦労はなかったです。

笹田 特に困ったこととかもなかった?

 いまだに class variable とかよくわかんない。

笹田 (笑)

 クラスのインスタンス変数とクラス変数と。

笹田 あー、なんか違うみたいですね。

 違いますよね。

笹田 俺もわかんねー、とかいって (笑)

須藤 実装できないじゃないですか。

笹田 いやあのへんはもう全部今あるやつを使っちゃってるんで。関数呼ぶだけ。問題なし*10

須藤 あー。

笹田 この間ちょっと調べてみたら、クラス変数を取る Ruby の API ってなんか引数を二つ取るんですけど、あ、三つかな、三つ取るんだけど、その三つ目がどうやら現在の Ruby では使われてないらしくて (笑) それどう使えばいいのか……。なんか盲腸みたいに。

須藤 (笑)

笹田 いやまあ、いいんですけど。

 それは直さないんですか。

笹田 きちんと私が仕様を理解したらということで (笑)

ちょっと違う話でしたね、すいません。 あとさっき言ってたフック系の話とかですか。他は。よく言われるイテレータとかその辺とかは。

 イテレータは特にないです。Smalltalk とかでやってたんで。

笹田 Smalltalk やってたんですか。

 ちょこっと。遊びで。

Ruby 以外のプログラミング言語

笹田 では、そんな感じで他のプログラミング言語の話も聞いてみたいと思うんですけど、はじめてコードを書いたのは? いつくらいで何を書きました?

 何を書いたら覚えてない……。ああ、何って言語ですか? 言語は BASIC でした。

笹田 言語は BASIC で。

 なんだっけな、SP-5030*11って書いてあった気がする。シャープの MZ というやつに入っているテープで提供されてた BASIC があって。

笹田 それ、いつぐらいですか。

 中学ぐらいかなぁ。

角谷 ほー。

須藤 学校で触れたんですか?

 学校でやったわけじゃないですけどね。

笹田 おうちに?

 うん、借りて。

笹田 なるほど。

そのへんは生い立ちのほうでもうちょっと聞くとして、Ruby 以外のプログラミング言語では何を使われていますか。

 C が一番多いような気が。

笹田 お仕事がそういう C でシステム開発?

 そうですね、C とか C++ とか。

笹田 好きとかいうのはなんかありますか。

 好き? C が好き。

笹田 あ、C が好き? どのへんがとかってあります? 簡単なところとか。

 C++ よりもオブジェクト指向っぽく書ける。

一同 (笑)

 抽象データ型とかは結構あっさり書けるっていうか。

笹田 継承とかなんとか考え出すとめんどくさいかなーとか。

 そうですね。late binding*12 さえ考えなければ十分抽象的に書ける。

笹田 なるほど。まあ、C が好き、と。

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

 そんなに勉強してないんですよ。

笹田 じゃあスルーで。

えーと、今プログラミング関係で興味を持っているテーマ。何かありますか。

 プログラミング関係か……。Groovy の来年のプレゼンが見たい。とか。

一同 (笑)

角谷 意味わかんないそれ。

seki04.png

須藤 Groovy の来年のプレゼンを Rabbit で見たい (笑)

一同 (笑)

 どんなふうに奇妙な冒険なのかを (笑)

あとなんかあるかな、プログラミングって、なんかあるんですかね。

笹田 なんだろう、dRuby の次のテーマとか。

 あー。

結局、流行ってるものがなんか苦手みたいなんですよね。去年 DI*13 よく分かんないとか言ってたんですけど。今 Rails よく分かんない。きっとすごいんだと思うんですけど。

笹田 DIV でいいじゃん?

 誰か説明してくれっていう。

笹田 Rails は自分では使わない?

 適用する要求がないっていうか、思いつかない。ブックマークだったら SQL つかわなくていいじゃん (笑)

あ、今、分散じゃなくてオブジェクトデータベースを、ファイルベースのやつを書いてるんですけど。

笹田 ほぉー。

 それは OR Mapper って本当はなんだか分からないので、なんでそれが必要なんだろうっていうのがあって。永続化とかって何に使うのかなーって思って、書いてみようかなと。

笹田 え、今だいたいできてるんですか。

 動いてるんですけど、アプリケーションが思いつかない。

須藤 PRb でしたっけ。

 Koya

須藤 あー。

 いちおう一通りのことはできてて、で、一番底にはなんだっけ、SQLite*14 をストレージとして使ってるんですけど。スキーマなんかは一切なくて、そのまんまオブジェクトが突っ込める。それだけ。

笹田 なんかけっこう、ありそうでないですよね。Ruby でオブジェクトデータベースって。

 PStore がすばらしいのではないですかね。

笹田 いやオブジェクトデータベースというよりはかなりあれ明示的に使うじゃないですか。

 うん。

笹田 クラスを継承したらなんか勝手に永続化クラスになってしまう、とかが簡単でよさそうですけど。

 そうですねえ。ただ、果たしてシームレスなのが本当にいいことなのか、とか。

笹田 あー。

 誰がコードを持つべきなのか、ストレージにあるべきなのかプログラムがコードを持つべきなのか、とか。

笹田 今度のやつは? 全部シームレスにできちゃうやつですか。

 今はストレージの中に入れるとこは一見シームレスです。けど、コードはアプリケーションが持っている。

笹田 明示的に突っ込まないと入らない?

 オブジェクトの生成のときに、明示的に作る。それ以降はもう見えない。

笹田 なるほど。

 ただしあらゆる操作が誰かのトランザクションに入ってなきゃいけないので、明示といえば明示。

笹田 なるほど。面白そうですね。

須藤 あれ重いんですか。そんなことないんですか。

 前に作ってた PRb に比べれば圧倒的に速い。前、それを Postgres で書いたんですけど、Postgres なんだけど意地でも標準 SQL だけで書いてやろうと思って。

須藤 (笑)

 Ruby のオブジェクト空間をそのまま SQL にマップしたんですよ。

須藤 あの 1 がなんとか*15とかそういうのまで。

 そそ。ObjectID が何が false とかあるじゃないですか*16。あれそっくりそのまま移植して。

笹田 なるほど。

 結局一次元の巨大な空間でしかないですよね。だからそれをそのままシミュレートした PRb っていうのがあったわけです。でも、RWiki の RD 木を突っ込むのに何分もかかるので、これはもうダメだろうっていうか、真面目にやってたのは面白いけど面白いだけみたいな。

笹田 普通のオブジェクトとか ID 変わってもそれなんとかするってことですか?

 いや……。

笹田 プロセスが変わった時点で多分 ID 変わるじゃないですか。

 そうですね、だからその ID じゃなくて、データベース上にある ID がその ID になるのね。だから dRuby でいうと dRuby のリファレンスの数字が、中に入ってる SQL 上の数値、インデックスを示しているので、どのプロセスから見てもストレージの中に入ってる n 番は同じオブジェクトであり続ける。

笹田 なるほど。

 で、それをやってもいい事が起こらない。

笹田 ちなみにガーベジコレクションとかその DB には。

 入ってますよ。

笹田 じゃあ適当なタイミングで?

 いや明示的に今呼んでますけど、適当なタイミングを作るのはアプリケーションかなと思ってるんで。

笹田 なるほど。

 保護されてなくて参照されてないオブジェクトはきれいに消えるように書いてある。

seki02.png

生い立ち

年齢は不詳

笹田 ちょっとこれを話してると時間がなくなっちゃうので、生い立ち。

 生い立ち?

笹田 どこで生まれてどこで死んで。いや死んでない。

 年齢とかいいたくないんですけど (笑)

須藤 えー。

 (笑)

須藤 そんな歳でしたっけ。

笹田 まあ 20 代前半ということで (笑)

 (笑) そうですね。

笹田 生まれたのはどのへんですか。

 横須賀っていうところで。

笹田 ずっとそっちで?

 そうですね。

笹田 小学校とか中学校とか興味を持ってたこととか。

 もう思い出せません。

須藤 二十歳そこそこですよね (笑)

笹田 文系理系というか、なんだろうな、体動かすのが好きだったとか本を読むのが好きだったとか、そういう傾向みたいなのは?

 乗り物系好きだったかもしれないですね。

笹田 乗り物系?

須藤 働くなんとか? (笑)

 チャリンコとか載ってましたね。なんか高いやつもらって。

笹田 チャリンコで自分探しの旅に。

 自分探しはしなかったかな。

須藤 オブジェクト探しの旅に。

一同 (笑)

笹田 じゃあ比較的体動かす感じの?

 そう。でもみんなでやるのいやなんですよね。一人でやることばっか (笑)

中学校で BASIC

笹田 で BASIC とかって、なんで興味持ったんですか? さっき中学校でっていう話でしたけど。

 いやなんだろ、流行ってたんじゃないですかね、パソコン。第一次パソコンブームだったりとかしないですかね。

須藤 「流行が嫌い」って……。

一同 (笑)

 いや NEC じゃなかったですよ。

一同 (笑)

笹田 ちょっと違うんだ。で、ずっとそこからパソコン少年というわけではなかった?

 どうですかね、そんなにやってなかったかな。

高校でパソコン

笹田 その後高校とかで部活とかは。

 高校とかでパソコンを買った覚えがありますね。

笹田 何買ったんですか。

 やっぱシャープのでしたね (笑) テープはクイックディスク*17になってました。

笹田 なるほど。20 代前半で (笑)

 (笑)

笹田 部活とかは?

 部活はやってないです。

笹田 じゃあなんだろ、パソコンもやったりとか。何やってたんでしょうか。

 思い出せない (笑)

笹田 じゃあそういうことにしておきましょうか。

須藤 GC されちゃいました…… (笑)

笹田 そのあと大学。

 そうですね。

大学で画像認識、パターン認識

笹田 大学のほうは何をされてたんでしょうか。

 大学は経営情報学部とかいうところで。

笹田 いわゆるプログラミングとか関係ない?

 プログラミングもやりましたよ、そこで結構……。なんだっけな、ADT*18 とか……。

笹田 あ、そんなことやるんですか。

 そういうの好きな先生がいて。あと、普通に情報っぽいやつがそれなりにあって。

笹田 ふむ。

 Lisp の課題に Smalltalk で出しちゃった (笑)

須藤 その頃から Smalltalk を。

笹田 え、いわゆる文系ですよね、その学科は。

 一応分類すると文系になるんですけど、やってることは理系に近い。

笹田 あ、そうなんだ。なんか経済の歴史とか経済の理論とか。

 経済と経営はまた違うみたいですね。

笹田 違うんですか。

 よく知らないですけど。経済知らないので (笑)

笹田 へー。で、そんな感じで大学のその後は。

 それで、画像認識とかパターン認識とかやってたんですよ。

笹田 研究室で?

 うん。ひとりで。

笹田 その頃は何使ってたんですか。

 その頃は ObjectPascal。

笹田 あ、その頃に。

 Apple のほうの ObjectPascal*19

笹田 ふーん。

 ときどき VAX*20 で C でっていうのもありましたけど。

笹田 すげー。

角谷 いつから Mac?

 Mac はねぇ、大学の頃から。

笹田 その頃だと、機種はなんですか。

 SE/30*21 とかですね。

笹田 あー。

須藤 二十歳……。

一同 (笑)

就職〜現在

笹田 で、そのまま大学を出られたんですか? それとも大学院などに行かれたんですか。

 大学で卒業で就職して。

笹田 就職は今のところへ?

 そうです。

笹田 その後はずっと今と同じ仕事をされている?

 うん、ずっと同じ。

笹田 ちなみにシステム系? 詳しく言うとどんな感じっていうのは。

 どんな分類があるんでしたっけ (笑)

笹田 (笑) なんだろう、何作ってるとか。

 組み込み?

笹田 あ、そうなんだ。

 組み込みですけど、でも実際には多分想像している組み込みよりもずっとアプリケーションよりの組み込み。装置に入れて売るソフト。

笹田 ほう。どんな装置? 言える範囲で結構ですので。

 医用機器とか。

須藤 Ruby はどこで動いてるんですか?

 どこでって?

須藤 あれ? 動いてるんでは。

 製品には載ってない。

須藤 でも会社で。

 うん。開発用の環境とかで動いてる。製品には載ってない。

笹田 じゃあ、分散とかっていうのは全然本当に関係なかったんですか、お仕事とは。

 ただ、その製品の中ではプロセス間通信がものすごく多いので、感覚としては。分散オブジェクトをするわけじゃないですけど、協調するとかそういうのは。

笹田 なるほど。そういうのは興味あった?

 うん。

普段の生活

生活スタイル

笹田 えーっと、普段の生活スタイル、ってどんな感じでしょうか。

 生活スタイル? 生活スタイルってどんなのなんですか (笑)

笹田 昼寝?

 (笑)

笹田 例えば、昼に起きて会社に着くのが 14 時とか。

 あー、8 時くらいには会社に。

笹田 早いっすね。

 で、6 時か 7 時には会社を出る。

笹田 なんかすごい健康的な……。でもちょっと長いのか。

 どうですかね、8 時間勤務と 1 〜 2 時間残業。

笹田 でもすごく健康的っぽいですね。

須藤 朝会やってるんですか。

 やってます。それが 9 時なんで。

笹田 号令出すほう?

 いや、今は見てるほう。

笹田 で、昼寝?

 (笑) それは恒常的にしてるわけじゃないですけど、たまに眠いだけ。

笹田 で、帰って、普通に趣味の時間?

 そうですね。

笹田 趣味の時間とかは何をしてます?

須藤 自転車?

 自転車はもうやってない。

笹田 ごとけんさんもそんなようなこと言ってた気がするんだけど。

 ごとけんさんはよくパンクするらしいんですけど (笑)

笹田 咳さんはパンクしない?

 いちおう。

笹田 自転車乗ってどっか行くんですか。

 え? いや自転車もう乗ってないですよ。怖くて。

横須賀にいたときは車が遅かったんですけど、栃木の車は速いので、とても一緒には走れないっていうか。

須藤 併走してるんですか! (笑)

笹田 なるほど。

須藤 ドライブも行くんですか?

 ドライブは結構行きますね。車生活できて快適。

須藤 それ仕事終わった後とかですか。平日でも?

 結構朝とかに。今日遠回りしようかなとか。50km くらい。

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

笹田 仕事とプライベートの両立とかは、じゃあきっちり分けてるという感じですかね、お話聞いてる限りだと。

 そうですね。

笹田 仕事は会社できっちりやって。

 きっちりやってるかどうかは分かんないですけど (笑) みんながきっちりやってるので大丈夫。

須藤 (笑)

笹田 なるほど。

須藤 もうコードとか書く立場ではない?

 いや書きますよ。ただなんていうのか、率先しては書いてないかも。

笹田 マネジメント系?

 じゃなくて。

須藤 教育的に?

 「困りました」っていう人が来るようになってて、困ったっていう人を別の人へ連れて行く (笑)

須藤 トイレの裏ではない? (笑)

 だから、なんかトラブルがあったら歩く人。っていうか、トラブルありませんかって歩く人。

笹田 へー。

いろんな趣味

笹田 普段家では何をしているんでしょうか。さっき自転車が出ましたが。

 自転車もう乗ってないってば。

笹田 なんか趣味みたいな。

 今『どうぶつの森』やってますけどね。

笹田 DS*22? おもしろいですか?

 いや、まだ二日目なんでなんとも (笑)

笹田 ゲームはよくするんですか。

 最近ちょっとしてますね。

須藤 ドライブにも行きますよね (笑)

 後はたまにコーディングとかしてる。

須藤 プラモとかも作ってるんでしょう。

 (笑) プラモ作りますね。

笹田 何のプラモ?

 ガンプラ (笑)

笹田 他は何だろう、本とか音楽とか。

 音楽は……。なんかのときにはかかってるって感じ。

須藤 テクノですか。

 テクノなのかな、テクノってこともないような気がする。

笹田 で、スポーツは自転車と。

 自転車しないってば (笑)

笹田 ええと、他は特にじゃあない? 何か見るのでもいいですけど。

 見ないですよね。

笹田 そうなんですか。

 テレビも見ないですもん。あんまり。

笹田 なるほど。

 言われたら見るけど。

須藤 家ではメガネはかけていない?

 かけてますけど (笑)

笹田 じゃあなんだろう、PC がずっとついてる環境とかそういうわけではないんですね。

 ついてはいるかな。

笹田 ついてはいる。見る気はしない?

 そんなことはないけど (笑)

使ってるマシン

須藤 家でも Mac なんですか?

 iMac 買ったので。

須藤 小さくないですか。

 iMac、何がいやってフルキーなのが許せないんですけどね。フルキーっていうんですかね、テンキーついてるの。ずっと 5 年くらいノートだったので、マウスどこに置くのかわかんないです。ここにテンキーあるでしょ、するとマウスがずっと右に来る (笑) 肩凝るんですよ、すごく。

須藤 でも、Happy Hacking 派だっていう噂も。

 いや、iMac では意地で無線キーボード使ってるんです。それじゃないとボリューム変えられないので。

笹田 Mac って何を? 型番というか。

 G5 とかいうやつ。最近のやつ、17 インチの。スペックとかよく知らないですけどね。はてなでプレゼントしてたじゃないですか。

笹田 あれ?

須藤 あたったんですか!

 あたってない (笑)

質問いろいろ

好きな女性のタイプ

笹田 では、本番の質問で、好きな女性のタイプ。

須藤 ……本番なんですね、ここでようやく。

笹田 やっと本番が来ましたが。

 どうなのかなー。動的な型って感じ。

一同 (笑)

角谷 難しい。

須藤 型チェックはあるんですね (笑)

 実行時に (笑)

笹田 何の実行やねん (笑)

須藤 でも型エラーはそんなに重要な問題じゃない? (笑)

 ……。

笹田 そうか Agile か (笑)

伊藤 いやなんか、女の子の好みは、で「動的」って、すごく Rubyist らしい。

須藤 ちゃんと動的でも型はあるんですか。

笹田 型はある。

伊藤 実行時にいちおうなんか。

笹田 テストを書けば大丈夫 (笑)

 書きにくいじゃないですか。

須藤 書きにくいですね (笑)

笹田 何を言ってるんだか (笑)

須藤 やっぱメガネは必要なんですか?

 え?

LASIK ってどうなんですかね。目を手術するやつ。

須藤 え? 視力がなおるんですか?

 そそ。知らない?

須藤 全然知らない。

 レーザーメスみたいな。

須藤 怖くて。

伊藤 コンタクトができなくなるらしい*23ですよ。

 え。

須藤 そうなんですか。

伊藤 目に傷つけるから。

須藤 でもよくなる?

伊藤 よくなる。

須藤 よくなるけど……。

Rubyist のファッションについて

笹田 えーと、るびま編集者から質問が来ています。Rubyist のファッションについて一言。

 Rubyist のですか? かずひこさんの、じゃなくて?

笹田 ちょっとこう、なんとかしろよっていう。

 いや、全然ないです。

笹田 他の人を見て。

 あー、ごとけんさんが着てた、なんでしたっけ、JUNET 10 周年だか 20 周年だかのは……。

ファッションか……。Rubyist だからって、そんなに傾向があるんでしたっけ。

笹田 いやまあ……。

伊藤 だれが代表なんですか。

seki07.png

笹田 咳さんとか須藤さんとか。

 え、かずひこさん系じゃないよね。

須藤 じゃないよね!?

笹田 同じ方向じゃないの?

伊藤 でも、レディースとか、以前かずひこさんの日記に書いてあったような。

 あー。

須藤 これもレディースですけど。でも馬場さんにサブカル系って呼ばれてたり、よくわかんない。

seki08.png

 じゃあかずひこ派と須藤派があるんだ。

須藤 咳派もあるじゃないですか。ハイネック。

笹田 で、まつもとさんみたいな*24、ああいう。

須藤 びっくりしました、あのパーカーつきフリース。

須藤 ダウン派作らないんですか。

 ダウン (笑)

笹田さんは着やせするタイプですよね。

須藤 脱いだらすごいんですか (笑)

笹田 いやホントね、体重計乗るの怖くてさぁ。

「咳」の由来

笹田 次の質問。いつから咳と名乗ってるんですか?

 あー、ruby-list の最初の投稿

笹田 ふんふん。じゃあ、誤変換だったとかそういうわけじゃなく。

 きっといるだろうと思って、違うのにしとこうかなと。

須藤 「かん*25」って呼ばれるのもいやだし。

 そうね、すどうって言われちゃったり。

須藤 ……いいんです……。

笹田 なるほど。じゃあ他のところでは使ってなかった?

 使ってないです。

笹田 ふーん。じゃあ Ruby 専用ハンドル?

 うん、ていうかあんまり投稿したことなかったし。

車の話

笹田 次の質問。車は、今は走行距離何キロメートルくらい?

 今の車は……25,000km くらいですかね。ちょっとよく覚えてません。

笹田 燃費はどれくらい?

 燃費はですね、11km/l くらいですね。

笹田 なんでこんな質問あるんですかね。

 これは買い替えじゃないですかね。買うの?

須藤 あ、現実的な問題なのか。

 かずひこさんが新車買いたいとかそういうのだったりして。

笹田 これうささんの質問みたい。

 へー。

笹田 え、オープンカーですか。

 いや違いますよ。Golf だからか?

笹田 あのひとたちはオープンソースでオープンカーの会っていうのをやってて。

 あーそうだ、MR-S なんですよね、うささん。

須藤 あれ、かずひこさんとうささんも?

 プジョー派。

須藤 そうなんですか。

笹田 へー。

みんなで車乗りたいときでも二人しか乗れないから使えないという……。

須藤 島根行くぞって言っても一人しか連れて行けない。

笹田 そそ。数年前の Ruby 温泉ミーティングのときもそうだったんですよ。で福井さんの車に乗せてもらったんだったかな。

好きな芸能人

笹田 えーっと、好きな芸能人は? 初めてだな、この質問。

 好きな芸能人……。

須藤 テレビ見ないんですよね。

笹田 特になければいいですけど。

 野宮真貴とか……。

笹田 わかんない。誰かレスポンスを……。

 じゃあ芸能人ネタ削除ということで (笑)

笹田 まあ調べて注釈をつけるということで。

須藤 寒いだけですよ (笑)

RWiki の次のバージョン

須藤 聞きたいことがあるんですけど、RWiki の 2.2、2.3 について。

 「いつリリースするんですか」かな?

須藤 いつリリースするんですか! 先に言わないでくださいよ (笑) ドキュメントが必要なんですか?

 ……。

須藤 (笑) 動くコードがあればいいんじゃないですか。

 インストールできないから (笑)

笹田 まだ大変なの?

 いや、はるかに楽になったんですけど。

須藤 インストーラもちゃんと書きましたからね。

 ただ gettext あたりが。

須藤 なくても動きますよ。依存関係減ったはずですよ。

 gettext のアプローチっていうのは正しいんですかね。

須藤 なんか毎回 init するんですよね、リクエストするたびに。

 そうなんだ。リテラルだけが国際化されるのってどうなんだろうとか時々思うんだけど。

須藤 あれがあるだけでもだいぶ違いますよね。

 まあそうだね。いやそうなんだけど……。

須藤 え、自動翻訳?

 いや、リテラルだけって結構一部だよなぁっていう気もするっていう。別に解決策があるわけじゃないんだけど。

笹田 まあ、乞うご期待ってことで。

いつからメガネ?

須藤 あとメガネはいつからしてるのかというのを。いつからメガネっ娘なんですか?

 高校か中学かな。

須藤 そのころからもう斑?

 斑? 最初はセルじゃなかったかもしれない。

髪と髭

須藤 いつからロン毛なんですか。

 (笑) 9 月から切ってないっていうだけなんだけど。

須藤 髭はいつ剃ったんですか。

 ゆうべ剃りました。

須藤 ああ、やっぱ剃っちゃったんですね。

 両方長いのはかっこ悪いから……。あまりにも貧相だったんで。

今後の展望、将来の夢

笹田 今後の展望とか将来の夢とかは。

 将来の夢は特にないですけど、さっきの話の、オブジェクト指向データベースというか OR マッパーとか SQL っていうか、なんであんなの使うのっていうか、何が嬉しいんだろうっていうのを知りたいなーと思っているのが短期のやつで。

笹田 なるほど。もっと長期的なのは特にはない?

 働かなくても遊んで暮らせるようになりたい (笑)

須藤 とりあえず夢を買いますか。

笹田 みんなそうですよね。

えっと、その他なんか喋りたいことはある?

須藤 転職はしないんですか?

 あー、新幹線通勤できるとこととかないですかね。

笹田 ……どうなんでしょう、学生に聞かれても。

 今の会社は、会社はともかく仕事は面白いので。

笹田 会社はともかくなんだ。

 じゃあ仕事は面白いと。

Rubyist の輪

後藤兄弟との関係

笹田 じゃあ、前のインタビュイーとの関係。後藤兄弟との関係は?

 後藤兄弟との関係……。

笹田 実は兄弟だったとか。

 (笑)

須藤 従兄弟?

笹田 ではなくて。

 ごとけんさんと秘密 IRC つながりで。

笹田 じゃあ、Ruby 関係以外であった?

 いや Ruby 関係は関係なのかな。ごとけんさんホットラインみたいなのがあって。

笹田 へー。

須藤 ホットライン……。

笹田 「たすけてごとけんさーん」っていうと助けてくれる?

 あ、それに近いですね。

笹田 へー。今もあるんですか? そのホットラインは。

 うん。某所に。

次のインタビュイー

笹田 次のインタビューどうしましょうか。(須藤さんを見て) 次いつ来る?

須藤 (笑) しばらく来ない。

笹田 あ、ホント?

 じゃあ Groovy (角谷さん) に行く?

笹田 (笑) では、次回は角谷さんということで。

若手への一言

笹田 若手へ一言何かあれば。

 若手? 失敬な。

須藤 二十歳そこそこなのに (笑)

笹田 もっと若い人がいると思うので。

 Ruby のほうがなんか……。「流行りものに注意」

seki06.png

読者への一言

笹田 ええと、あと読者へ一言何かあれば。

 読者ですか。

……ありがとうございました。

笹田 じゃあこんな感じでいいですかね。

須藤 ああはい。もう満腹です。

笹田 お忙しい中ありがとうございました。

おわりに

今回は那須に住んでる咳さんでした。突然のインタビューのお願いにも関わらず快くお引き受けいただきました。本当にありがとうございました。

次回は角谷さん (紹介は後で書く) にインタビューします。お楽しみに。

(インタビュー:ささだ、編集:卜部)

Rubyist Hotlinks 連載一覧


*1 使ってる : Rails はビューからDBアクセスまで、一貫して Ruby で記述できることを売りにしており、ビューの記述には eRuby を使用する。これには ERB が使われている

*2 UNIX USER: 2003 年 9 月号「分散 Ruby+IP Messenger=divip」http://www.unixuser.jp/magazine/2003/200309.html

*3 二回書いた : もう 1 回は、2002 年 2 月号、「Ruby で Wiki Wiki Web サーバーを構築しよう」http://www.unixuser.jp/magazine/2003/200309.html

*4 eval やったら sleep : eval があると、処理速度の最適化をするのがとても難しいので、使わせないようにするにはどうすればいいか検討中 (ささだ)

*5 SGI : Silicon Graphics, Inc. ワークステーションとかスーパーコンピュータを製造・販売している会社。一時期は MIPS とか Cray Research を所有していたこともある (現在は両方とも SGI 傘下にない)。ソフトウェアの分野では OpenGL の前身である IRIS GL とか、ファイルシステム XFS の開発元としても有名

*6 HEAD と ruby_1_8 : 現在の Ruby では trunk(HEAD と呼ぶこともある) と ruby_1_8 という二つの branch が平行して開発されている。現状ではそれぞれ ruby 1.9.0 と ruby 1.8.x に対応している

*7 funcall : private なメソッドを呼ぶにはこれまでの __send__ に変わって funcall を使わなくてはいけなくなった……んだけど、現在ではさらに名前が変わって __fcall__ になっている。ああややこしい

*8 Windows で動かない : Windows 版の Ruby では、特定の IO 待ちが発生すると、他のスレッドに処理が移らなくなる。開発版では動くようになったらしい

*9 うささん : なかむら (う) さん。Ruby mswin32 版のメンテナ

*10 問題なし : 実はそんなに単純な話じゃなかったらしい。少し違いがあります (ささだ)

*11 SP-5030 : シャープ製 BASIC 環境。「ハイスピード BASIC」らしい。どの辺が? と思うが、どうやら一旦スクリプトを中間表現にコンパイルしてから評価する方式だったようだ。当時の一行ずつ解釈と実行をインターリーブする他の実装よりは速かったのかもしれない

*12 late binding : 呼び出すメソッドを実行時に決定すること

*13 DI : Dependency Injection (依存オブジェクト注入) パターン。オブジェクトの利用と生成とを分離するためのデザインパターン。当初は IoC パターンとも呼ばれていた。RLR 第 1 回の「IoC コンテナ」も参照。咳さんが「DI がわからない」と発言しているのは「インターフェースに対するプログラミング」や「遅延バインディング」はオブジェクト指向として「ふつう」なのに、それがチヤホヤされることが理解できない、という意味だと思われる

*14 SQLite : クライアント・サーバ型ではなく、1 ファイルに納まるデータを読み書きするタイプの SQL データベースエンジン。ライセンスが public domain だったり、構文解析に lemon parser を使っているところなども興味深い

*15 1 がなんとか : Ruby の 1 は C 言語で書くと、「((1 << 1) | 1)」 としてメモリ上に表現されている

*16 false とか : Ruby の false は、C 言語で書くと 0x00

*17 クイックディスク : QD。MZ 以外にも、有名なところではファミコンのディスクシステムでも使われていた磁気メディア。フロッピーとは違い CD のように渦巻状にトラックが切ってあることが特徴

*18 ADT : 抽象データ型

*19 Apple のほう : 長らく Mac のプログラミングは Pascal が主流だった

*20 VAX : 旧 DEC による 32bit マシン。ミニコン史上最も成功したシリーズと言われている。2000 年に販売中止が発表されたときにはほとんどの人が「まだ売ってたのか!」と驚いた

*21 SE/30 : Macintosh SE/30。往年の名機。Classic MacOS で起動時に表示されてたいわゆる Happy Mac は SE/30 を図案化したものらしい。今でも一体型 Mac といえばこれを思い浮かべる古参ユーザーは多い

*22 DS : ニンテンドー DS

*23 コンタクトができなくなる : 術後数週間からコンタクトレンズの利用可能な場合もあるようです。いずれにせよ実際の利用に際しては専門家へ相談してください

*24 まつもとさんみたい : 先ほどの講演で着ていた服装を指している

*25 かん : 本名は「関」だから