著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。第 34 回となる今回は、夫婦ともに著名な Rubyist である大場光一郎さん、寧子さん。
せっかくのご夫婦ですので、お二人同時にインタビューさせていただきました。長時間のインタビューとなったので、前後編に分けております。今回は前編 (Rubyist Hotlinks 【第 33 回】 大場さん夫妻 前編) に続く後編になりますので、まだお読みでない方は前編も合わせてお読みください。
では、お楽しみください。
卜部 自分にとって「これはキラーアプリだった」というものは?
nay3 Rails ですね、ベタですけど。
koichiroo そういう意味では tDiary ですかね。
卜部 意見が分かれましたね。「そういう意味」とはどういう意味ですか?
koichiroo tDiary が最初にまとまった Web アプリケーションのお手本と感じたので。MVC への分割やオブジェクト指向を Ruby で Web アプリで作るときのいわゆるセオリーを作ってくれたのが tDiary かなと。ほとんど構造を踏襲した Hiki も似たような構造ですよね。そういう意味ではとても勉強になったなと。
卜部 べた褒めですね。Rails 以外はやってないんですか、Sinatra とか。
nay3 自分ではやってないですね。
松田 たとえば、Scala でもっと新しいものが出ていますよね1。こういったものはどう思いますか。
nay3 良さそうならやるかもしれないけど。
koichiroo 意外と新しいものに飛びつかないんですよ (笑)
nay3 私は多分、個々の要素技術を面白がって皆がやっていないことを探す、というようなタイプじゃない。自分は例えば“家計簿を作りたい2”みたいな思いがある。作りたいものを作るのに一番ラクなものを選ぶみたいな感じですね。Scala とかこれから出てくる新しいもので作ったほうがいい理由があればそれを使うと思うんですけど 、“いつまでも Rails でいてはいけない”と思う感じはあまりないですね。
松田 なるほど。良い話を聞けた。
nay3 性格ですね。だから色々新しいのが出ている中で、ずっと Rails にしがみつくかどうかはその時の問題。でも私はわりと同じゲームをずーっと遊んでいて何の不都合もない性格なんです。
koichiroo エンジニア同士の夫婦だけど、エンジニアとしての質というか得意分野の違いで、全然競合しない感じですね。
nay3 個人の性質としては「どんどん飛びつく」ではないですが、会社をやるぶんにはよくないので他の人の意見を入れたりして是正しています。
koichiroo 新しいライブラリ出たよとか、こういうフレームワークあるよとか、見つけてくるのは僕の方が得意ですね。この人は今覚えたやつをうまく使うみたいなところとかが得意だったり、自分で作りたい派。ハッカーマインドというか。たとえばこの人が作ろうとしている Rails のプラグイン「似たやつあったよ」みたいなことを言うとすごい不機嫌になる。作ろうと思ったのに、って。
一同 (笑)
nay3 似たようなことを言ってくる人は社内にもいてよくお世話になっています。で、ぶつぶつ言いながらも見て、詳しくなってくるとまた好きになってくる。
koichiroo 案外やりはじめればね。新しいことに取り組むという障壁がめっちゃ高くて。なかなかやらないですね。僕はどちらかというと新しいものが好きだし、プラグイン活用とか最後の仕上げを綺麗にするのとかすごい好きですよ。付き合って初めの頃は一緒にアプリ作ろうみたいな話をよくしてた。ペアプロとか。
nay3 だけど最近は、作りたいものが違うので、なかなかできないということを悟ってきました。いつもペアプロしよう、とは言うんですけど、何作りたい? と言った時点で全くお互い興味がなくて、ふーん、みたいな。
一同 (笑)
卜部 じゃああんまり、新しい言語を触ることはない?
松田 Elixir とか。
nay3 うん。触ってもいいけど、触ること自体にあんまり魅力を感じない。好きじゃないんでしょうね、きっと。それよりも、いつも自分が困っている問題を、アプリで繰り返してしまうイライラする問題とかを、どうやったらエレガントにできるんだろうっていうのを考えているのがいい。
卜部 エレガントな問題解決。
nay3 そうですね。労力を減らす工夫を考えているのが好きです。それを実現するのが今使っている Ruby や Rails だけど、言語自体は本質ではなくて、どういう言語を使えばいいだろうか、というよりは、それを使ってどういう構造物を作ったら楽しいだろうか、みたいなことを考えるのが好きです。
卜部 お客さんから何を使ってもいいよ、と言われたら、新しい要素技術を使うのではなくて、ありもの、自分が慣れているものを使う?
nay3 基本はそうかなと思うんですが、使ったことなくても Rails とかはなるべく新しいものにしたいとか、あきらかに利益が見えているものは、そうしますね。見えてなくても知っている人からこうだよって言われたら、なんかぶつぶつ言いながらもそれを使う感じ。
koichiroo テンプレート言語とかを新しく使ってみるのは? Haml とか。
nay3 ちょっと鬱陶しいけど、簡略化できる、労力を減らせるなら使ってもいい。
松田 Haml 鬱陶しいですか?
nay3 Haml が鬱陶しいのか、「Haml がいい」と言っている人が鬱陶しいのか分からない。
一同 (笑)
koichiroo Haml コミッタを前にしてそういう3 (笑)
nay3 すいません (笑) でも別によく使うし、自分で一から作るときも選ぶ……かもしれない。そんな感じです。すいません。4
koichiroo うちの作ったリリース管理のやつ5、全部 Haml です。Haml と Sass です。
卜部 そういう意味で言うと、内製のシステムで新しいものをガンガン使っていくのは、それはそれでリスクもあるじゃないですか。
koichiroo でも使いやすいし、ガンガン新しいのを使っています。Ruby 2.0 入れて、アプリケーションサーバは Puma で。ライブストリーミングやるから実践投入した。作るのは簡単だけれど、デバックや稼働が大変。
卜部 そういうノウハウの話とかは、別記事とかで読みたいですね。
koichiroo ライブストリーミングはすごいいいですよ。Aaron にこの間お礼を言ってきました6。デプロイしてジョブが実行しているログ情報の tail を Web 上にぱーっと出すと、すごく喜ばれました。でもチューニングが難しい。そんなに負荷はないんだけど、まともに動かすためにもチューニングが必要。熱い機能だから (笑)
松田 確かに開きっぱなしになっちゃうから7。
koichiroo 開きっぱなしでコネクション張りっぱなしだし、いまの Rails の仕組みだと HTTP リクエストが DB のコネクションまでつながるので、MySQL のコネクションチューニングと Web のチューニングと Rails のコネクションプーリングのチューニング。全部バランスを取っていかないとすぐ落ちるサイトになってしまって。けっこう大変。ロングポーリングは、外のサービスに使うのは結構厳しい感じ。 あと、Ruby 2.0 はすごいいい。よくできてる。
卜部 SystemTap が何気に便利で。今こいつ回っているの、何をやっているのかがすぐ分かる8。
松田 ささだ系ですか9。DTrace とか。
卜部 そうそう。普通にライブプロダクションでふつうに動いている Fluentd とか何うごいてんのこいつ、みたいな気になる。かつ、回っちゃっててどうにもならないし、落としたら再現しないだろうってときに横から眺めることができて超便利ですね。
nay3 あ、あと Ruby 以外のプログラミング言語ということであれば XSLT も好きです。
卜部 XSLT 好きですか?
nay3 好きですね。私は最近 Ruby ばっかり使っているけど、元々は BASIC でしょ、VB10 やって、C11 やって、C++12 やって。Perl もやりました。PHP もやりました。
松田 Java も。
nay3 そう、Java も。
卜部 XSLT は Java でエンジンを書いていた?
nay3 というか、XSLT そのものがプログラミング言語で。再帰をもりもり書いて、パズルのように解くのがすごい楽しくて。好きが高じて専務にまでそれを強要して。専務が泣いてた (笑)
卜部 そういう使い方をする人はなかなかいない。そんな複雑なものを作っていたんですか。ふつうは XML から HTML を生成しましょう、くらいのことしかやらない。
nay3 目的はそう。XML 作りましょうなんですけど。変数が持てない、再帰ならできる。
卜部 純粋関数型っぽい話になってきた。
koichiroo そう、XSLT は純粋関数型言語ですよ。
卜部 すみません、存じ上げませんでした。
nay3 いえいえ (笑) あと、直近でやったのは Objective-C13 ですね。iPhone アプリ開発。
卜部 Objective-C どうでした。
nay3 メモリ管理が辛い。今さらメモリのこと考えたくない。
卜部 GC14 がないとね。
nay3 あとは世代が分かれていて、文字列を扱うにも、地層のように降り積もっていて、どれを使えばいいの、って。
koichiroo NSString て何だよ、みたいな。NeXTSTEP15 というものがあってだな、と。
nay3 あとは、ほとんど対照的な名前なのに、片方はマクロで片方はクラスで、みたいな。勘弁して、というようなところはありましたけど。でも楽しいですよ。
郡司 RubyMotion16 とかは。
nay3 やったことないです。何か理由があれば。今度 iPhone アプリを作るから、みたいな。
卜部 これまで読んだ中で最も美しいソースコードとか。
nay3 「美しい」ってなかなか難しい。「感動した」なら、Rails の scope のところを読んだときは感動しました17。Rails 2 くらいの scope だから、そんなに綺麗というわけではないのかもしれませんが。まだ Named Scope と呼ばれてて。
松田 一番最初のやつですね。今の scope は結局クラスメソッドで定義しちゃっているんですが、当時のやつは lambda の形で持ったやつを最後に動的につなげて実行。
nay3 あれは感動しました。なんかこう、繋げて繋げてファイヤー、って感じで。おおー、って (笑)
koichiroo 僕が見た美しいコードか。難しいですね。
卜部 Ruby じゃなくてもいいですよ。Meadow をやられていたのであれば、Emacs Lisp とかでも。
koichiroo Emacs は巨大なので (笑)
卜部 確かに。Emacs って、まず Emacs Lisp のインタプリタを実装するコードがあって、その Emacs Lisp を使って実装されているんですよね。
koichiroo そうそう。言語をパースするところと、実際に実行するところを分けてあって。こうやってプログラミング言語って動かすんだ、というのは Emacs で最初に学びましたね。美しい、というと「動いているプログラムは美しい」かな。自分はレガシーコードとずっと付き合っていて。結構みんな「レガシーはもう駄目だから何とかしないと」って言うんだけど、動いて使われている。それってすごいですよね。文句だけ言っても「動いている」という厳然たる事実には太刀打ちできない。
nay3 最近コードレビューをよくするんですけど、一番ぐっとくる瞬間が、適切なコメントがあった時なんです。それはコードの一部なんですけど、コードを見ていて少し不自然な流れがあった時に、そこにすかさずその不自然さを説明するコメントがある。それを私は美しいと感じます。
卜部 いいですね。コメントもコードだと。
nay3 そうですね。それってけっこう難しくて、レビューをよくするようになってみんな上手くなったんじゃないかな、って感じていて。レビューアーを意識しているので、コードを書いているときに、ここはツッコミが来るな、というところでコメントを入れる。そういうリズムが見えた時にガッツポーズって感じになります。
koichiroo (万葉社員の方々に向けて) 上手くなった?
五十嵐 なりました。僕も万葉のコードで、ここはツッコミを入れようと思ったらちゃんとコメントが書いてあって。ああ、これは美しいなって思いました。
nay3 それはコメントでしか表せないことなので、美しいし、そこだけコメントがあるというのが無駄がない。
卜部 僕はコメントを書きすぎる派なので、精進したいですね。
卜部 初めてコードを書いたのはいつぐらいですか。
nay3 見よう見まねだったら、たぶん小学生の頃です。ポケコンで数当てゲームみたいなのを一行で入れていくようなのがあって、あれを見よう見まねで入れたりしてた。そういう意味では小学生ですけど、自分で意識的に書いたのは、たぶん中二くらい。
卜部 さっきお話されてた。
nay3 そう、百人一首をやるちょっと前に、一番最初に BASIC を覚えて、GOTO と IF くらいを教えてもらって、もうすかさずゲームブックみたいなものを作り始めてたのが最初です。
koichiroo 妹のためにテスト勉強用のプログラムを作ってなかったっけ。
nay3 それはもっと後ですね。受験のツールとか。受験しないといけないんですけど、コードも書きたいので。折衷案として受験ツールを作った。
一同 (笑)
卜部 試験対策ツールを自分で作ったと。勉強にもなるし、コードも書ける。
koichiroo 僕の最初に書いたコードは、小学校四年生の時ですね。学研の科学を毎月取っていて、それの付録に「プログラミングしてみよう!」という感じの「漫画で解説する BASIC」みたいなのがあったんですよ。その当時からゲームが好きだったけど、裏側がどうなっているか全然知らなくて。その漫画を読んだら「あ、結構簡単なんだ」って勘違いした。簡単な数当てゲームとか PRINT 文を GOTO でぐるぐる回して、画面に「うんこ」とか埋めつくしたり。おお、俺すごい、って。それを電気屋に仕掛けたり。
一同 (笑)
卜部 展示されている PC ですか。自宅には PC がなかったんですか。
koichiroo うん、しばらく買ってもらったりできなかったので。
郡司 学研の科学を読んで、電気屋でコーディング?
koichiroo そうそう。ノートのプログラム書いて。紙で書いてました。友達のうちで打ち込んでみて「動かない!」って。セーブできないからまたノートに書いて。で、また遊びに行って。あんまり行き過ぎて「もう来るな!」って言われて。
一同 (笑)
卜部 自宅にプログラミングができるようなものが来たのはいつぐらい?
koichiroo それがけっこう後で、近所の電気屋に通い詰めてました。そこのバイトのお兄さんが「僕が新しく MSX 買うから古いのを君にあげるよ」って。
nay3 そんないい話があったの? それは知らなかった。いい話じゃん。
郡司 多賀城にいた頃ですか?
koichiroo 多賀城のデンコードーです。そこのお兄さんに MSX 1 をもらいました。それが最初で、小学校 6 年とか中一とかそれくらいだと思いますね。でも MSX 1 って保存する媒体が何もない。ディスクもないし、当時の保存媒体はデータセーブ用のラジカセみたいなカセットテープが主流だったんだけど、それも高くて買えなくて。うちにあった普通のラジカセをケーブルでつないでプログラムをセーブしてみたけど、ノイズがひどすぎて一回もセーブ成功できなかった。結局、友達の家に行っていたのと同じで、ノートに書いて毎回打ち込んで。疲れましたね。保存ができるようになったのは中二かな。もらった MSX 2 で。
郡司 またデンコードーのお兄さんからもらったんですか?
koichiroo いや、友達から。安く譲ってもらった。初めて自分で新品のパソコン買ったのはだいぶ後で、高校二年ですかね。バイトして x68k。それまではお下がりとか。
卜部 じゃあ、最初の頃は MSX の BASIC だったと。
koichiroo 僕は MSX でしたね。次は友達が FM-TOWNS 買ったのがあって。時代が下ってきましたね。CD-ROM 標準装備。そこで NIFTY-SERVE とかやって。僕はその時パソコン通信をその友達のうちでダウンロードしまくって怒られた。もう来るなって。でも今でも付き合いあるから。
松田 市内にアクセスポイントないですよね。そうすると電話代もかかるし。
koichiroo テレホタイムまで粘って。人の家で。GCC ダウンロードできたーって18。感動しました。
一同 (笑)
郡司 テレホタイムって夜 11 時以降ですよね。そりゃ怒られますね (笑)
卜部 FM-TOWNS ではゲームはしなかったんですか。
koichiroo FM-TOWNS は僕のじゃないから。でもあの当時、どんなパソコン雑誌を買ってもプログラムが掲っていて、それを打つとゲームできたじゃないですか。マイコン BASIC マガジンとか、MSX Fan とか。ああいうのをたまにやってましたね。自分でも中学の時にシューティングゲーム作りたくて。
卜部 シューティングはむずいよね。BASIC でやろうとすると、まず当たり判定が。
koichiroo そうそう。自機をスプライトで表示して、カーソルキーで自由に動けるようにして。弾を出すくらいの。中学のときは、そこで終わり (笑)
一同 (笑)
koichiroo でもすごい勉強になりました。ゲームを動かすための画面の同期とゲームの中のメインループ、パッと見、全部同時に動いているように見えるけど、プログラムの中ではちょっとずつ、こうやって全部動かしているんだなと。
卜部 nay3 さんの中学校より後の話は。
nay3 中学校の時に何でそれを書いていたかというと、父が 98 LT というラップトップ機を買ってきたことに起因するんですね。非常に微妙な互換機で。一太郎とか BASIC は動くんだけど、ろくなゲームがなくて。黒白で、画像を出すのがつらいんですよ。その結果何が起きたかというと、自分でゲームを作ろうと思って。BASIC をいじるということになり、画像とか出すのも大変で、それを通じて二進数とか親しんで。
一同 (笑)
nay3 二進数と 16 進数の親和性みたいなのが、ある日突然目覚めたことがあって。8 と 8 でこう、16 なのね、みたいな。電車の中で。すごい嬉しかった瞬間ですね。
koichiroo 降りてきたと。
nay3 中学受験の時に n 進数が苦手だったんですけど、初めて生活に役に立つということを感じた瞬間でした。
卜部 あー、はいはい。たしかに。n 進数、2 進数とか 10 進数とかしかやらないからね。
nay3 ですね。そんな感じでいろいろ作ったものがあるんですけど、かるたを皮切りに、ゲームを作ろうと思って。で、何かアドベンチャーっぽいものを作ろうとして。高校卒業までで一番上手く行ったとおもうのが、メニューシステムですね。どんなアプリもだいたいメニュー出すじゃないですか。そのメニューを可変数で適当に下のほうに綺麗に出してページングもして、ちゃんとアプリに組み込んで機能するみたいなライブラリを QuickBASIC で作りこんで。何個かに使ってかなり使い勝手が自分的にはよかったので。これは上手く行ったと思いました。
卜部 それはライブラリみたいなものですか。すごいですね。
nay3 あとはマルチペイントというお絵かきソフトがあるんですが、あれで絵を描いたのを自作の BASIC のゲームに使いたかったので、そのフォーマットを解析するやつを書いて。遅かったけど、ちゃんとロードできるようにして、それでフラグという言葉を覚えて。フラグって何だろうって思っていたんですけど、二、三日うろうろしていたら、自然に分かっていて。懐かしい思い出です。
松田 それを koichiroo さんだったら NIFTY-SERVE でダウンロードできたんじゃないですか。
koichiroo そうですねえ。アップされていれば、その可能性はありましたね。
nay3 仕様書を一生懸命読んで作りました。それはそれで勉強にはなったからいいんですけど。あとは自動的に迷路をランダムで作って遊ぶ、というのを作っていました。そうやって一生懸命やっているうちに、98 LT が壊れてきて。
卜部 ずっと 98 LT でやってたの?
nay3 高校 2 年生くらいで 98 LT が壊れてきて、大学で、9801 FA、もうちょっとましなのを買ってもらって。そっちが QuickBASIC とか。Quick C も使ったんですけど。マルチペイントとかは大学の時にやってました。
五十嵐 386 から 486 になる頃の時代ですね。
nay3 嬉しかったですね。画面の層が 2 面になって画像とか出せるし。すごい、なんでこんなに簡単なんだって。今までの苦労は何だったんだって。カラーだ、って (笑) それでようやくまともなゲームもできるようになって、いろいろゲームもしました。三国志とかプリメ (プリンセスメーカー) とか。
koichiroo そういう意味では白黒の 98 では僕もプログラムをちょっとやっていて、学校で配られたマシンが 98 N というマシンで。白黒ですごい非力なやつ。当時 Windows 3.0 が出た頃で。
卜部 まぼろしの 3.0。
koichiroo そう、まぼろしの Windows に付いてきたマインスイーパーがすごい面白くて、マインスイーパーやりたいんだけど、98N が白黒で非力で Windows が動かないからできない。なのでキャラクター組み合わせて。マスを表示して、どこかに爆弾を埋め込んで。マインスイーパーのプログラムを LSI-C で書いて。
郡司 フリーの C コンパイラですね。
koichiroo 友達に配ったら、こんなゲームがあるんだ、ってすごい喜ばれて。それは完成形まで書いたゲームのひとつ。面白かったのが、C でパネルをめくるところのロジック。マスを配列で持っていて、めくっていくときにどこをクリックされたかで四隅をぐるぐる見ていくから、再帰になるんですよね。再帰というのをマインスイーパーで覚えた (笑)
一同 へー。
koichiroo あとは、競馬のゲームとか作った。高校の時。学校の N5200 という NEC の端末で。COBOL が動く。
松田 汎用機ですよね。 オフコンか何かですか。
koichiroo そうですね。学校に入っていて。授業で触れたので。ディスクも 8 インチとかで。それで「馬」っていうキャラクターを並べて。
松田 それで競馬ゲーム (笑)
卜部 コンピュータ以外はどんな感じの子供時代でした? 何をやっていましたか?
nay3 本好きでしたかねえ。本を読むのが好きで、歩きながら本を読んでいました。あとは図画工作が大好きで。絵を描くのも好きだし。紙で切った貼ったが大好きだったので。だいたいいつも何か適当に紙を組み合わせて物を作ってました。プログラミング好きなのも工作好きの延長ですね。紙と違ってゴミが出ないので、片付けが楽。セーブしたところから始められるし、検索もできるので。そういうところが私にとっては便利な工作、みたいな位置づけです。
卜部 なるほど。ご主人のほうは。
koichiroo 僕はレゴは大好きでしたね。当時アメリカのドラマを日本でやっていて、ナイトライダーとか。エアウルフとか。エアウルフをレゴで再現するというのをやってました。
卜部 それはけっこう難しくないですか?
koichiroo すごい心血注いで、自分としては納得できる出来のものを作りました。
nay3 あとはゲーマーなのでゲームやってましたよ。愛するのはドラクエ 3 とウィザードリィ。
卜部 媒体は?
nay3 ファミコンですね。あとはもちろん信長の野望とか三国志とか、そのへんずーっとやってましたね。あと私、小説書くのが趣味だったので。中高ずーっと原稿用紙をカリカリカリカリ書いていました。かなり長い時間。いっぱい書いたものが家にあります。封印されているような感じだけど。
卜部 まあ中高はそうだよね。それは手書きなんですか。
nay3 そうですね。かなりの分量。
松田 ジャンルは?
nay3 ファンタジー系ですね。私、栗本薫の大ファンなのでそういう感じに。
松田 ここでささださんがいれば栗本トークになる予定だったのに、残念ですね。
nay3 残念。うちの本棚、栗本さんだらけだもんね。
卜部 冊数だけはありますからね。
nay3 「だけ」は失礼ですよ。
一同 (笑)
koichiroo あとは 2D 格闘ゲーム、すごいはまって。ストリートファイター。ネオジオ、僕持ってたんですよ。ネオジオ本体手に入れた経緯は、学校の文化祭でやったスト 2 大会で優勝して。
郡司 え、賞品がネオジオだったんですか。
koichiroo 賞品はディズニーペアチケットみたいなので。10 万円分の旅券みたいなのだったんですよ。学生でそんな、オタクの独り身ですよ。これはゲームに投資するしかない、ってチケット屋に行って。換金したら 7 万円くらいになった。お、ちょうどネオジオ買える、って。リア充っぽい友達から呆れられました。
一同 (笑)
koichiroo うちにみんな呼んでサムスピ19やって対戦してましたね。
nay3 私はカードゲーム好きで、ナポレオンとかを高校 2 〜 3 年の頃に仲間内でずーっと昼休みやってて。昼休み中に終わらないと、配られた札を持ち帰って 5 時間目の休み時間に戻ってきてまたやる。
卜部 カードゲーム好きな人で集まっていたんですか。
nay3 そうですね。というか、元々仲良しグループで布教して。嫌な人は抜けて。やってもいい人たちでやっていた、みたいな感じですかね。だからそういうカードゲームのプログラムも作りたいなとずっと思って、たまにトライしたこともありますけど。
卜部 そういう流れからかるた?
nay3 そうですね。その一環ですかね。かるたはでも家でたまたま源平とかで少しやったりとか。大学行くとみんなプロばかりでこれは面白い、という感じになる。
koichiroo かるたマンと素人は、全然相手にならないみたいで。素人が手を伸ばしてハンディをつけても取られちゃう。
nay3 だからちょうど大学に行って、ライバルがいっぱいいる、みたいな。戦ってもらえる、みたいな感じ。
卜部 大場さんご主人のほうは、何か作るものはやらなかったんですか。小説書くとか。
koichiroo 小学校の時、よく漫画書いていた。でももうないです。津波で流されました。
nay3 適当なこと言ったでしょ。多分その前にオカンに捨てられてるでしょ。
koichiroo バレたか (笑)
nay3 しっかり浸水しましたね。一階のかなり上の方まで。
koichiroo そうですね。川が近いので。けっこうどばーっと、しっかり水が来て。家はまあ、半壊みたいな。
卜部 水に浸かった以外の被害は?
nay3 あとは車は流されちゃった。3 台あったのに全部流された。
koichiroo そうですね。車は流された。近所に引っかかってました。親父が流されゆく中古の BMW を連続写真で撮って、震災当日に送ったのが通信障害のために何日か後に送られてきて。「どうすることもできない」って書いてありました。
nay3 結局、家は建て直しました。Ruby コミッタの藤岡さんが「福島から避難するので車いらなくなるから」って 車をうちに提供してしてくれた。すごい重宝しました。車 3 台なくなっちゃったので。すごい助かりました。めちゃめちゃ感謝しています。
koichiroo みんな無事だし今やっと新築で建て直しできて良かった。娘を見せに先月かえりました。
:
卜部 じゃあ、ちょっと戻って。大学に入るときに、たぶん進路の話とかをしたと思うんですが、どこに行きたいとか思ったとか、ありました?
nay3 まあ私はもともと古文が好きだったので、大学はそれ系がいいなと思ってそのまま東大の国文学に。
卜部 国文学って何ですか。るびまの読者の人には、たぶん国文学って言っても分からないと思うので。
nay3 要するに日本の文学です。時代はすごい昔から現代まで色々あります。私は古文がもともと好きだったので、平安より前の上代って言う、奈良とかそういう感じのところ。卒論は日本書紀で書きました。就職につながるとか、そういうことはみじんも考えなかった。あとは何だろう、私もともと物理や理系っぽいのが苦手で情報処理に進まなかったんですね。でもまあ趣味ではやっていたので、行っても良かったのかもしれないですけどね。
koichiroo 僕のほうは、大学行ってないので。専門学校ですね。中学校はだいたいプログラミングとゲームが青春だったので、これ以外できないなという感じで。早く働いた方がいいかなという感じで、それでもすぐに社会に出るよりはまだ学校に行こう、ということで情報系の専門学校に入った。地元の、仙台の専門学校に行きました。家からすごい遠かったんですが、自然にあふれていて、いい学校でした。
卜部 その頃はどんなことやっていたんですか。
koichiroo その頃に全員にノートパソコンが配られて。情報系の専門学校なので。それが PC-9801N で、マインスイーパーを作って配った。あまり授業はまじめに受けていなくて、プログラムしてました。その時、国家試験の情報処理試験を。第二種とか第一種とかの時代で、それの対策の授業とかでみんな CASL っていうアセンブラをやってて。
郡司 ああ、CASL ありましたね。でも確か言語は 4 つくらいから選べましたよね。
koichiroo そうですね。BASIC と COBOL と CASL と C から選択できて。僕は高校の時に「これからは C じゃないとゲーム作れない」という危機感を勝手におぼえていて、C マガジンを第一号から買っていて。で、学校の授業とは全然関係なくて、試験は C 言語で受けて。ちゃんと受かったんですけど。結果出た後に先生から首を絞められて「俺の授業は何だったんだ」って。
一同 (笑)
卜部 まあ CASL でゲームはやらないですよね。
五十嵐 逆に C で受けて落ちて、そのあと CASL で受けて通ったんですけど。CASL は問題の後ろにリファレンスが付いているんですよ。分からない問題はテスト中に調べて答えられたので。C は調べようがなかったので、難しかった覚えがあります。
koichiroo CASL そのものの記述能力が低いから問題も難しくできようがなくて。レジスタくらい分かっていれば何とかなる。C はポインタぐらいはちゃんと分かってないと大変かもですね。
nay3 わたしのほうは、あんまり真面目に勉強していませんでした。その中で印象に残っているのは、中世のくずし字を使った原本みたいなのを読んでいくゼミです。くずし字辞典を買って少しでも自分でくずし字を読めるようにしたのが面白かったですね。得意ではなかったし、ものすごくがんばったわけでもないけど、記憶に残っています。
郡司 それをやると博物館の展示物が読めるようになったりするんですか。
nay3 やっぱり効果は多少あって、江戸時代の書簡とかも少しは読みやすいっていうのはあると思います。
郡司 そういう実益はあるんですね (笑)
卜部 大学は全然違う方面だったけど就職はプログラミング?
nay3 そうですね。先生になるっていう選択肢はあったと思うけれど、漢文がわりの中国哲学の単位を落とし続けて、教職取れなかったし。本当にそれしか思いつかず。プログラミング系だけ。でジャストシステムに入ったって感じですかね。ちょうど自然言語処理とかあって、もともと国文でそういうの興味があるし、プログラミングも好きだしっていう。
nay3 ジャストシステムにいて、自然言語処理ということで最初は VC、C++ ですね。そこでオブジェクト指向と出会って、C はやってたけど C++、オブジェクト指向は初めてだったんでそこちょっと勉強して。すごい楽しくて喜んでやっていた。そのうち Java の波が押し寄せてきて、ジャストは結構 Java を初期から推進していたので結構早い時期から Java の波が来て、で Java を勉強し、インターフェースとかを知り、大好きになり、で、Java で Web アプリみたいなところをやったあたりで転職。
卜部 そのころにはもう全然言語処理とか関係ない感じ?
nay3 そうですね。まあでも最後の方まで結構言語処理していました。だからサーブレットとかもそれをやるのは隣の部署で、こっちはエンジンで自然言語処理系の何かを作ってる、みたいな感じでした。 最初に一生懸命作った Web アプリは 、Perl でドライドン酒場という栗本薫の小説に出てくるさいころゲームみたいものですね。
koichiroo 今も熱心なファンがいるやつ。1999 年から動いてる。
nay3 それは定期的にさいころを振るんだけど、Web だからそれができないから、最初にアクセスした人がさいころ振るようなイメージで作って。で、DB とか使ってなくて全部テキストファイルなんで定期的にテキストファイルが多すぎて止まるんですよ。それを吸い上げないとシステムが動かない。ジャストにいたころは VC とかやっていたので、Windows で動くかるたのアプリケーションを 3 つくらい作って。初心者用の練習ソフトとか作っていました。
松田 ジャストシステムって、全然把握していないんですけど一太郎と花子以外になにか作っているんですか?
nay3 いろいろありますよ。最近の製品は知らないのですが、当時の話で、Web アプリケーションみたいなやつとか、Java のプロダクト、グループウェアみたいなやつとか。メーラとか、Java で動く一太郎 (一太郎 Ark)、ATOK もあるし。
卜部 だんなさんのほうは。
koichiroo 僕は就職したのは最初仙台の小さいソフトハウスに入って。当時ファクシミリをモデムでパソコンで受信してパソコンの中に画像データとして取り込んで、でそれを OCR って言って文字を読みとってキャラクタデータにして端末入力や受発注を助ける、みたいなアプリやドライバーを作っている会社。で、プログラマーやってて、Windows とか MS-DOS とかのプログラミングで、C とか VisualBasic とかやってたのがそのあたりですね。東京の仕事を請けたりとか、東京に出張で働くことが多くて、こっち来て働いてたらいつのまにか自分の名刺が東京の名刺に切り替わって。切り替わったせいで出張手当が出なくなって。あれ? みたいな。そしたら転籍してた。帰れなくなった。
卜部 東京の仕事の割合が多かったんですか?
koichiroo そうですね。仙台の会社の社長が東京の会社の営業部長とつながりがあって、そのために東京の仕事を請けていた感じですね。
卜部 でもまあ自社開発なんですよね。
koichiroo そうですね。オリジナルソフトを作るという点では面白かったですね。文字を解析するドライバーとかも自分達で作ってて。色々、画像を白と黒を強調して分離するとか、そこらへんが面白かったり。そこから出てきたデータを、どのようにオペレーターに画面表示すると直しやすいかとか。今で言う UI/UX みたいなところを直接ユーザーと相談しながらやったりとか。小さい会社なんでなんでもやらないといけない。そういうところは面白かったですね。
卜部 そのころだとまだ、画像を機械学習でどうこうって話にはならないんだ。
koichiroo そうですね。ビックデータとか無理ですね。パターン変換するための辞書を保管する領域くらいで精一杯。あとは一番うまくいった仕事としては、某全国的な乳業会社の仕事があって、そこの入力支援の受発注、配車処理までまわす。みたいな。
郡司 FAX で受けたものをテキストにして発注までやる、みたいな。
koichiroo もともと入ってるオフコンの方に画像を回して返ってきたのを配車システムに回して、みたいな。これはすごく評判が良くて、全国 6 支社に配布みたいな。これがうまくいったやつですね。でもそれやって燃え尽きて。もうこれ無理だな、と。
郡司 燃え尽きた理由は何ですか。
koichiroo 納期的な。カツカツだったんですよ。ぐんま Ruby 会議でも話したんですけど、トリプルプログラミングで作業をしていたという。どういうことかというと、パソコンを 2 台並べて 3 人が座って、2 人がコーディングしていて一人はその後ろでダンボール引いて寝る。
郡司 なるほど (笑)
koichiroo 二時間交代で。
郡司 ぐるぐるまわすんだ。長篠の戦いみたいじゃないですか (笑)
koichiroo これ 2 週間位すると腰が立たなくなる。でもコードのシェアとかすごく進んで。だれでも、どこでもわかる。ハードコア系アジャイルプラクティス (笑)。でも辛かった。
郡司 まさにエクストリーム、XP ですね (笑)
卜部 ってことはプロジェクトは 3 人プロジェクトだったってことですか。大きいプロジェクトで炎上するのに比べて、3 人だとコミュニケーションコストでガーっと炎上するようなことはない?
koichiroo そうですね。ただ、営業部長がおかしくて。俺が取ってきてやったんだー、みたいな。エンジニア側には相談なく、ほかとの競合で一番短くて安く、みたいに取ってきて、すごい偉そうに言われて。こっちはこっちで死ぬし、品質も悪くなる。みたいな誰も得しないサイクル。
:
koichiroo 6 社導入決まったし、自分の中ではやりきったという思いと燃えつきもあって。やめますって言ったら、すごい引き止めにあって、課長にするからって言われて、そこで残ったのが失敗でしたね。結局 4 年くらい居たのかな。1997〜9 くらいのころかな。CTC 入ったのが、2001 年 5 月頃なんで。
卜部 課長と言いつつ、課は 3 人ですか?
koichiroo その後、新卒取ったりとかしたけど、そんなに増えずに。
郡司 入れたシステムはうまくはいったんですか?
koichiroo 全国展開。もう一人右腕みたいな優秀なエンジニアが居て、彼が全国行脚して 全国入れた辺りで某事件が起きて。システムも全部白紙。札幌本社、東京九州くらいですかね。
koichiroo その後、会社の中の仕事してても燃え尽きてあまりパフォーマンス出ないので、ちょっと社外の仕事に手を出して。開発で入ったエンジニアのリーダーが CTC の課長さんで。僕の仕事ぶりを見てもらって、いま会社辞めようと思ってんだけどって話をして。そこから CTC ですね。CTC は結構居ました。 2001 年から 10 年ですね。
nay3 その時私もジャストにいたんですけど、いまいち先が見えない感じがあって、結局ベンチャーに転職して。その会社に移る時に面識が出来たのが、話に出てきた CTC の元マネージャー。そこに CTC さんからの要員を頼んだら彼が来たという。これが出会いですかね。
koichiroo 比較的最初のころの仕事の話ですね。CTC 入社して最初の仕事で JavaOne っていう Java のカンファレンスに、サンフランシスコに行って来いってのが、入社して最初の仕事で。入って一ヶ月で、こんなやらしてもらってすげぇ会社だなぁってびっくりして、日本帰ってきたら、奥さんのベンチャーの仕事がアサインされてて。
nay3 私は、ベンチャー入りたての時なんで。お互い新しい仕事に就いて初期みたいな状態でした。
卜部 じゃあ最初は、仕事上のつきあいある人みたいな出会いだったんですね。
koichiroo そうですね。お客様ですよね。お客様の開発本部長。結構、納期とかも厳しくて、僕は開発もやってたけどソースレビューもやってて、定例会とかで彼女の書いた Java のソースレビューをしたり。
nay3 人が締め切りに追われて間に合わせたコードを面白そうに「これはこう直せる」みたいな。今でもその話題が出てくるとムカッとくる。レビューと称して「リファクタリングとしてはこうしたほうがいいよ」とか 。黙りましたね。私は怒ると黙りますから。 結局、イライラするのもある種裏返しっていうところもあると思うので。言っていることがまともなのはよくわかっていて、そういう議論とかは好きなんですけどね。だからより悔しいわけです。
一同 (笑)
卜部 昔のレビューと今のレビューはだいぶ違いますよね。GitHub が出来る前は、レビューって何やればいいのって感じだった。
nay3 なんていうか、とりあえず広げたやつを折りたたむ仕事って楽しいじゃないですか。その楽しいところだけを、残業も手伝わずにとっていったっていう恨みが。
koirhiroo 最悪の出会いですね。
卜部 そのプロジェクトはすんなり終わったんですか。
koirhiroo お客様ついてたわけじゃないし、火を吹いたって事もないですが、巨額の赤字を作った感じですね。回収は出来なかったですね。
卜部 そのときで、付き合いは一旦終わりなんですか?
nay3 その案件の時に、私も彼もコーディングが好きで話が合ったという事もあるし、リファクタリングとか色々勉強していて教えてくれるのでまぁグッと来たって感じですね。
卜部 その頃リファクタリングってあったの?
koichiroo ありましたね。マーチン・ファウラーのリファクタリング出てて。2002, 3 年くらいですね。
nay3 あとは、2003 年にはもう結婚してるんですが、そのベンチャーでの仕事については、技術者をうまく使えない経営に疲れ果てて。これ以上元気が無くなる前に逃げ出さねばということで辞めました。
卜部 久保さんは?
nay3 久保さんはベンチャーにいた頃に私が誘いまして。お茶汲み兼 XML でテストデータつくってよ、みたいな話で。彼女はそんな感じで最初は、半分事務で、半分テストデータづくり。そのうちに事務は別に入ってきて完全に開発要員になって。開発の名刺になったから Java も書きなよって 、そのうち人が足りないから PM をやって、段々上がってきて (笑)。Java を書かされ、PM をやらされているうちに、そのうち会社をつくろうよみたいな話になって。気がついたら取締役。技術のわかる営業専務になってました。完全に巻き込まれています (笑)
nay3 ある日突然、私が「会社をつくろうと思うんだけど」って言ったんですよね。
koichiroo その時は冗談だと思って、バカじゃないの?って(笑)
nay3 本当にそっくりそのまま「バカじゃないの」って言いましたよ (笑)
koichiroo 僕はその時、会社の立ち上げっていわゆる起業みたいな感じで、なにか世の中に出したいビジネスモデルとか、スタートアップとかそういうイメージがあったんで、そういうの何にもないときに「なに言ってんだこの人は」みたいな感じで一笑に付したんだけど、へこたれることもなく。
nay3 「だが作る」みたいな感じで淡々とつくった。実はそのベンチャーをやめた後に、個人事業主として働くのを経験したんですね。その延長で、起業できるんじゃないかっていうイメージを持つようになってた。で、ちょうど久保さんも他の会社でご縁がなくなったところだったので、ここで会社をつくっておこうぜ、みたいな。本格的にやるのはあとでもいいから、みたいな感じでとりあえずつくったという感じでしたね。で、そのころは、個人事業主から起業へシフトしつつ、平行でもう一つ別のベンチャーを私も久保さんも社員として手伝ってるというような形になっていたのですが、その後、その会社を辞めて万葉一本でいくということになりました。
koichiroo 結構今までの彼女が経験していた会社組織が色々ひどくて。対して、万葉は組織づくりがしっかりしていて。そういうのを横から見ていて、そういう会社の作り方もあるんだな、それでいいんだな、というのを勉強させてもらった。
nay3 こうでなくてはいけない、というところからスタートしていなくて、我々はこうしたいというのと、これしかできないというのを通してきた感じですね。個人事業主の経験の延長線上で、その時のお客さんを会社の契約にもちこめるんじゃないかという見通しで。あと、小槌とか Award on Rails があって少し名前が売れたので、その線で仕事を取ることはできそうだという感触があったので、ちょうどいい時期だったというのもあって。
koichiroo 実際、万葉つくるということになったら僕もいろいろお手伝いを。
nay3 そうそう。すごい手伝ってもらって。当初うちは Windows マシン使おうと思っていたんですけど、彼に絶対 Mac にしろって説得されて、しぶしぶ Mac をつかうことに。大正解だったんですけど。
卜部 なんで、そう思ったんですか。
koichiroo RubyKaigi のせいですね。RubyKaigi 行って、振り返ったらみんな Mac で。Ruby の会社として売っていくなら、標準 PC は Mac にしておいたほうがいろいろ便利では、と。始まってすぐぐらいに iPhone アプリの仕事の話も来たりして、これは Mac じゃないと出来なかった。 あとは初期小槌の運用とか立ち上げとか。開発もちょっとコミットしたし、実際やるとなったら手伝いたいタイプなので。
nay3 私はコーディングは好きだけど、偏っていて、例えばアンテナを張って今の流れをキャッチアップするとかインフラとか得意じゃない。彼はそういうところを得意としているので、初期の万葉のインフラ系は全部手伝ってもらって。助けるのが好きなタイプというのはよく分かっていました。
koichiroo そうそう。これは仕事なんじゃないか、みたいに思いつつ。
nay3 だから代表作は万葉なんじゃないかな、と思ったり。
koichiroo でも、俺が万葉作ったっていったらちょっと差し障りありますよ (笑)
nay3 今じゃ手を離れて、会社の中で専門的にやってくれる社員たちでしっかり回るようになりました。
卜部 なれそめって?
nay3 カラオケかな。その頃深夜までコーディングして、飲みに行って、さらにカラオケとか行って、夜明かしするみたいなのを日常的にやってまして。青春ぽい。で、その日常的なカラオケで、私と彼以外が全員寝倒れていて、最後に二人で残ってジュース飲んだみたいなあたりで意識した。
koichiroo 最後、エヴァンゲリオンを絶叫とか。みんなバタバタ寝ちゃってて。プロジェクトでのレビューの話の 1 ヶ月後とかそれくらい。
卜部 一緒にいようと思ったのはだいたいどれくらい?
koichiroo 会って 3 ヶ月ぐらいですかね。
卜部 ご主人が転職したのは?
koichiroo CTC で僕は受託開発から離れて経営企画とか新しいことをやるところに行って、サービス開発してたんですね。そこで、JRuby 使ってクラウドのサービス作って、楽しくてやってたんですけど。これをどんどん強化して良くしていくんだろうな、と漠然と思っていたら、次の年になったら「もう完成したから人いらないだろう」って言われてプロジェクトが解散していて。SI の論理でサービス開発ができていた。色々方々説得して「いやそうじゃなくてね」みたいな。ユーザー動向を見てとか、競合の動向を見ながら機能強化していかないと流行らないよって説得して。偉い人が「よし大場の言うことは分かった」と。じゃあ増員するとして「あと何人月必要なんだ」みたいな。ピントがずれてる。
一同 (笑)
koichiroo SI 用語と思いのギャップが埋めきれなかった。翻訳した SI 用語だと伝わらない、満足するところまでやり切れないなと。半年くらいサービスのために動いたけど、期中の増員は認められない、年度ごとにしか組織が動かない、みたいな。そういうところに引っかかって。まあ、だいたい CTC でやれることはやったかなと。サービス開発自体は面白かったので、そういうふうに自社でサービスを作っているところ、という軸で転職しよう、と。で、探したのが今の会社。
卜部 中に入ってみてどうでしたか? 継続的にシステムを改善していくみたいな、まさにやりたかったことがやれているかと思いますが。
koichiroo レガシーやばい (笑) コードだけじゃなくて、レガシー環境がやばい。リプレースが大変です。
nay3 でも楽しそうですよね。やりがいはありそう。
koichiroo なんかこう、人数多いですけど、全社で一つの GREE というサービスのシステムを作っているような一体感がある。毎週月曜日に朝会、全社がヒルズのフロアに一同で会して情報共有とか20。そういう一体感が今の組織のサイズでもあるのは面白い。継続的なサービス改善みたいなところに、まさにどんぴしゃに取り組むことができているので今はすごい楽しいです。
:
卜部 今からちょっと先くらいどういったことをやっていきたい?
koichiroo 今これをやらないと死ぬ、みたいなことは、ちゃんとこう継続的なインテグレーションが人の手をほとんど介さずに回せるというシステムを実装していかないといけないなと。いろんな方面でそれを実現するために取り組んでいるところですね。
郡司 レガシーコードの CI ですか?
koichiroo レガシーコードを新しい環境に移していくのと、ただ移すだけじゃなくて出来るだけ自動で回せるような仕組みというのを中に入れ込みたい。たとえば Chef を導入したりして、システム構成を自動化とか、そのあとのアップグレードも Chef でできる、みたいな。そういうツールやフローを、今のレガシー依存の環境でどこまで自動化できるかがテーマです。
卜部 奥さんの方は。
nay3 会社をやっているので結局自分の関心というかテーマというのは如何に儲けるか。たくさん儲けるかではなくて、我々が楽しく暮らせるようにどうやってうまく価値を生み出して対価をいただくかというところがやっぱり一番気になるところ。
卜部 これはこれで一種の継続的インテグレーションだよね。
nay3 そうですね。メインとしては結局各案件でいかにうまく開発を回していくかというのももちろんメインなんですけども、案件って、終わったように見えても実際には終わっていなくて、古くなってメンテしたくなったり、機能追加とか、そういった中でさっきも言った「Rails 古くなっている問題」とどういうふうに付き合うのが一番トータルでうちのビジネスとしては美味しいか、というのが今一番悩んでいて、うちとして美味しく、社会的に合理的なのはどういう形なんだろうか。そういうのが一番興味ありますね。
卜部 難しいですよね。結局、自分たちだけ良くてもしょうがなくて、継続して発展していかないと。
nay3 そうなんですよね。作るところしかやらなくて、常に最新で作ることをしてやり捨てていくという選択肢ももちろんあるとは思うんですが、うちとしてはやっぱりお客さんとは継続しておつきあいしたいし、それは合理的でもあるし。でもそうしていくとやっぱり古いシステムを新しくしていかないといけなくて。どういうスキームでやると上手くいくんだろうというのが今熱い。
郡司 サポートビジネスみたいな感じのものはやらないんですか。今までのお客さんは、作っておさめてしまったら基本は終わり?
nay3 いやでもやっぱり保守はありますよ。アプリ保守。保守があって、それがまた社内でも問題を引き起こしたりもするので。ずっと同じ人を張り付けておくことはできないので人を交代して、安定した保守ができる状態を作っていきたいけど、なかなか難しい。どうやっていくか、本当に今考えているところです。
郡司 そこはなかなか自動化できない?
nay3 そうですね。そんな中で私も個人的にけっこう面倒くさがりで動いたらそれでいいじゃんみたいな感じだったんだけど、最近はもっと積極的に環境を更新しなくてはという思いが高まっている状態です。RubyKaigi の影響かな。それが第一歩だみたいな。
koichiroo あんまり更新しないから、更新しておいてあげるとちょっと設定変わって動かなくなったりして、すごいキレられたりして。
nay3 最近は自発的にするようになったので、そういうことがその世界の一環だなとやっと思っている次第です。自分がやろうと思った作業に取り掛かれないのがストレスで、今日はこれをやろうと思ったのにその前段階で一日格闘したりとか発生したりするじゃないですか。そういうのがすごく嫌いなんですけど、それは必要なコストなのかなと。すごい反省した。
郡司 難しいですね、自分の作ったところと、環境の部分と。環境の部分って、悪く言うと楽をしちゃっている部分、さぼっている部分なんですよね。本当なら全部含めてシステムなので、すごい正論を言うと全部見ないといけないし、不具合があったらちゃんと (お任せしている環境部分の開発元に) フィードバックする。でもそうは言ってもね、と。
nay3 上手くいかなくなると途端に見なければいけなくなる。さぼる前提で全部スキームを組んでいる、というのもありますね。
郡司 見えていなかったコストがあとから見えてきちゃうという感じですね。そこは本当に悩ましくて、そこのコストをだれが払うのが一番幸せなんだろう、というのは問題意識としてありますね。
nay3 そうですね。アプリを作るってレベルから見ても、何年か放置すると、結局その問題を避けては通れないので最近反省しきりなんですけど、そこには何か活路があるような気がしていて。ニーズもあるし面白い。
koichiroo あとフリーソフトウェアについてですが、C Magazine に載ってた、ストールマン21が言ってることの和訳みたいな連載があったりして、あと、Unix User についてきた CD-ROM に、GNU のソフトがてんこ盛りに入ってて、そういうの使ってた世代、って言うのが、ま大体こう、フリーソフトウェアの、プロパガンダにあてられた、「ソフトウェアはすべて自由でないと!」っていう……。
卜部 でも BSD (笑)
koichiroo でも BSD。GNU は OS が長らくなかったので、BSD が直接フリーソフトウェアじゃないですけど、gcc と emacs 使ってる、っていうのは、フリーソフトウェア財団 (Free Software Foundation) に賛同している (笑) みたいなところはありましたね、当時は。coreutils もコンパイルしてましたね。X68000 上で。
卜部 BSD についてくる普通のコマンドと、使いかたが、かなり違うじゃないですか。cp の引数が違っててうわー、とか。
koichiroo さいしょに使ってたのは X68000 上でコンパイルした GNU ソフトウェア群なので、GNU のオプションで、ずっと。
郡司 遍歴の中に X68000 って出てこなかったような気がするんですけど。いつごろ使っていたのですか?
koichiroo X68000 が、高校 2 年で (2 年ぐらいバイトして) はじめて買ったマシン。新聞配達と、スーパーのレジのバイトでためて。はじめて買ったマシンで、スプライトがすごいたくさん表示できて、感動。それで C (gcc) を覚えました。そこで UNIX で動く emacs がそのまま動いて。さいしょは MicroEMACS22 っていうサブセットがあったんだけど、そのうち emacs がそのまま動くようになって。X68000 で動かす emacs は、むちゃくちゃ重かったんだけど。起動のとき、ロードしてるミニバッファが見えたりして。 一回立ち上げればずっと立ち上げっぱなしだし、遅いエディタをうまく使うのが快感で。
卜部 emacs-client は。
koichiroo ウィンドウシステムが出てきたのが、だいぶ後なんで。しばらくは、ターミナルで使ってましたね。emacs の中から eshell 23 で立ち上げたり。で、ストールマンがこう言ってるから、っていうのを、すごく意識したのは、Meadow24 の中。宮下さん25が、フリーソフトウェアにすごくこだわっていて、当時、DLL26 に対応する機能っていうのを、ほぼ作ってたんだけど、ストールマンに出したらキレられたりして。「フリーじゃないソフトと簡単につながるような機能はまかりならん」みたいな。結局入らなかったりしたこともあって。自由に生きるのはたいへんなんだな、と。
卜部 そのころは、Windows も使ってたけど、Meadow も使ってた感じ?
koichiroo そうですね。仕事とか、ぜんぶ Windows だったんで、Meadow が無いと、何もできない。
卜部 仕事だけど、エディターは選べたわけですか。Cygwin27 とか使ったりはしてました?
koichiroo Cygwin は、その当時は、そんなに完成度が高くなくて。Cygwin は Cygwin で、Windows じゃないですからね。入れてはいたけど、何かに使う、という感じでもなかったですね。
koichiroo JRuby は CTC にいるときですね。Dave Thomas のキーノート28があったとき、JRuby を作ってた Thomas29 とか Charles30 も来て発表してて、そのときの懇親会で、JRuby 仲間、みたいな。
nay3 そのとき、もうちょっとやってたんだよね。Tom が、「もうリリースしたいんだけど、こことここが埋まってないんだよー助けて」みたいなの書いてて。日本語関係の文字コードがらみということもあって手伝ったんだよね。nkf を Java で再実装、みたいな。
卜部 なるほど。面倒くさそうな (笑)
koichiroo 外国人は、あんまよくわかんなそうなとこ。それが JRuby との付き合いの始まり。
nay3 私にとっても大きくて、彼は JRuby の人たちと話しに行きたいんだけど、英語が今いち苦手なんで、私は内容が全然わからないけど英語のほうをお手伝いするうちに、彼らとも仲良くなって。友達増えたし、英語も使えるようになって、一石二鳥でした (笑)。今年もみんなで菖蒲見に行ったり。我が家にお招きまでしたり。
koichiroo CTC で一度だけ JRuby 使った。あとは翻訳。プロダクションに投入して、いまも JRuby で動いてるやつで、バックエンドのミドルウェアとのやりとり。SDK が Java で出来ていて、それを Ruby から呼ぶのに JRuby が必要で。JRuby 前提のラッパライブラリ書いて、投入したって感じですね。
卜部 それ JRuby でも初期の頃かと。
koichiroo そんなに古くなくて、JRuby 1.5 とか、1.6 とか。でも、よく動いてますよ、Rails 3 とかで。初期の JRuby は、Ruby を解釈するだけで、ライブラリとか全然なかったんですけど、今はもう、すごいですね。あそこまで Java で再実装するとは。正規表現部分は鬼車を Java に移植しちゃうし。I/O まわりは 3 回くらい、全面書き直しされていて。
卜部 だいたいのところは書き直してますよね。パーザも書き直してるし。最初は自前で書いてたんだけど。
koichiroo すごいですよね。チャレンジしながらやってるな、と。
卜部 そうそう、あとなんか、さいきんの koichiroo さんは Git の人という感じがありますよね。
koichiroo GitHub の営業として、いろんなところから引き合いがありまして (笑)。特にお金はいただいてません。
卜部 git の前は、何を使ってたんですか?
koichiroo 基本、subversion ですね。
卜部 それは会社で統一的に決まってるとかじゃなく?
koichiroo CTC は、まあ、だいたい subversion でしたね。それ以前はバージョン管理してないとおもう。
nay3 わたしは VSS から CVS、そのあと subversion でした。
koichiroo emacs がらみのオープンソースのバージョン管理とかが CVS だった。むかしはみんな CVS でしたね。
卜部 いまは、emacs も Git なんですかね?
koichiroo いま、いちおう Git のリポジトリはあるみたいだけど、あれはミラー。
卜部 savannah だっけ?
koichiroo savannah は、Bazaar。Bazaar は開発やめるし、最近 Git 使えるんですよ。
卜部 まあ、subversion だけ、とかじゃなくて、Bazaar とか Git とか、いろいろ出てきているのはいいですね。さいきんは Git 一人勝ちだけど。
koichiroo バージョン管理システムは、けっこう好きですね。で、須藤さんが subversion の Ruby バインディングやってたけど、あれが出る前に、SWIG 使ってラッパー生成するやつとか、ちょっといじってましたね。で、会社で、バインディング経由でサーバーに上げたりできるように。
卜部 自分のやってることが趣味だけで終わってなくて、仕事につながってるところがすごいと思いますけど。そこは、仕事に使う用事が先にあったから、はじめたんですか?
koichiroo 仕事、かなあ。仕事が先ですかね。Web サービスとかも。
卜部 それのおかげで、るびまは今、ちゃんとバージョン管理できてます31。
卜部 次のインタビューは誰に回しましょう?
nay3 候補としては、しまださん (えにしテック社長)。あとは、すとうさん。
koichiroo 大場家から次、となると、しまださんがいいんじゃないかな。
卜部 じゃあ、しまださんに話をしてみます。
卜部 次のインタビュイーへの一言。
koichiroo じゃ社長から社長へ。お子さんお誕生おめでとうございます、とか。
nay3 それもですけど、今後のご活躍を、心から応援している、っていうことを、ぜひ。
koichiroo このあいだ (2013 年)、万葉.rb っていうのをやって、publichtml さんが実行委員長、しまださんが基調講演だったんですけど。
nay3 しまださんが、すごい、いい話をしてくださって32。
koichiroo 「万葉っていうのは、ただのふつうの会社じゃない。コミュニティとしての性格も兼ね備えている。」縁側というテーマで。会社の縁側がコミュニティという風に分析してくれた。えにしテックも、そういう側面があると思う。
nay3 すごく強い会社だと思うし、これからの話を聞きたい。
卜部 じゃあ、若手に一言。
nay3 「好きなことをやれ」って感じですかね。
卜部 「好きなこと」とは。
nay3 好きなことも自分で分からないような人のことは、どうでもいいです。
卜部 好きなことが沢山あって、自分で何してったらいいか分かんないような人だって居るかなと。あるいは、「好きなこと」って一体なんだろう、って思っちゃう人とか。一つのことに打ち込むべきか、それとも色々やってみるべきだろうか。
nay3 年齢によりますよね。若いんであれば色々やってみたらいいと思いますけど。でも「心から」というところを問うてみるとランク付けできると思うんですよね。「すっごい好き」「とりあえず、好き」、「やってもいいか」「これをやらないと、つらい」みたいな。そういうのを篩 (ふるい) にかければ、おのずとある程度は絞り込めるんじゃないかなと思う。
卜部 今すごいいい話を聞いた!
郡司 そうやって絞り込んだ上で、残ったやつを、やれ、と。
koichiroo CTC のときは、十年いたけど、十年ずっと下っ端だったんですね飲み会の幹事とかを十年やらされたりして (笑)。転職して、こんどは周りがみんな若くて、しかもすごい優秀で、僕なんかがそんな優秀な若者に何かひとこと言うのはおこがましい (笑)。若い子でも、レイヤーがすごく低い――パケットのサイズがこうとか、ウィンドウのサイズがどうとか、Apache のモジュールの中を見ていたりする子もいて。
郡司 バイナリアン?
koichiroo バイナリアンだったり、ですね。でも、ぐんま Ruby 会議で話をしたことなんですけど、ソフトウェアエンジニアリングって、縦にも横にも、すごい拡がりがあって、いま好きなことが見つからなくても、ソフトウェアエンジニアになったからには、必ずどこかに、何か「響く」ところがある。そういう好きなところを追求するのが、自分の「やれる範囲」を拡げるのに、いいんじゃないかと思うんです。
卜部 新卒に対してどうさせてます? 好きなことをやらせるか、いろんなことをとりあえず振ってみたりするか。自分のところにも新卒が入ってきていて、どうしたものかと。
nay3 基本、仕事なんで、好きなことやらせるとかは、ぜんぜん考えてません。会社の色んな仕事をどんどんこなせるようにするために、効率の良さそうな道筋で色々振ってる。
koichiroo 僕も、下積みからがいいな。自分も長かったんで (笑)。まずは、サーバー管理からですね。
卜部 雑巾がけみたいなことは、もちろんやらせなきゃいけないんだとして、でも適性みたいなものもありますしね。
nay3 もちろん好きなことは、やってもらうけどね。好きなことと、会社が提供できるキャリアパスみたいなものが、ある程度一致している、って前提ですけど。一致してるのであれば「あなたが好きなこのことをやるためには、今はこうですよ」「今は直接にはつながってなくても、こういう風につながっていくんだよ」という道筋を書いてあげる感じですかね。
卜部 道筋を見せてあげる。「黙って付いて来い」みたいな感じじゃなくて。
nay3 違いますね。「今の仕事があなたの行きたい場所に行くために、必要なんだ」ってことを、言ってあげたほうが、やっぱり本人もやりやすいんじゃないかと思う。
五十嵐 万葉は、やりたい方向性みたいなのを聞いてくれますよね。
nay3 そうね。希望と、会社が提供できるものとの一致がある限りは。一致しないとどうしようもないんですけど。
五十嵐 最初配属されたときに、Objective-C だったと思うんですけど、Rails の会社で Rails やりたくて入ってもらったんだけど、Objective-C やってもらっていいかい? って訊かれた覚えがあります。
nay3 まあ、やりたくもないことをお願いして、すぐ会社やめられても、つまんないし。やりたいことやるのが、パフォーマンスも一番いいし。万葉は“そこそこ楽しく”開発をする、が前提なんで、楽しくないんじゃしょうがない。
:
卜部 読者の皆さんへ一言。
nay3 こんな前・後編にわたったクソ長いインタビューを読んで下さって、ありがとうございます。
一同 (笑)
卜部 まあ、二人分だもんね。
nay3 あと特に言いたいのは、私、Ruby コミッターではないし、Ruby には後から入ってきて、ユーザーとしての立場で、みなさんの作ってくれたものから、恩恵をすごい受けている立場なんですけど、そんな立場なのに、こんなインタビューで話をしている。こうやって身近に感じてもらって「一緒にやろう!」みたいな感じを読者に伝えられたらいいな、と思うんですけどね。
koichiroo Ruby コミッターでも何でもないし、普通の人なんで、それでも読んでもらえているってところが懐の広さ、とか、多様性とかを感じるね。「次は、君の番だ!」みたいな。
郡司 でも、たまたまですよね、このところコミッターが続いたのは。
卜部 ささださんがそろそろ飽きてきて (笑)。今回はどうも、ありがとうございました!
今回は大場さん夫妻にインタビューをさせて頂きました。
次回の Rubyist Hotlinks は、しまださんにお話を伺う予定です。お楽しみに。
(インタビュー:卜部、テープ起こし&編集:すぎむし、小西、小林、荒井、郡司)
Scala では Play framework というのが人気らしいです http://www.playframework.com/ ↩
松田さんは Haml のコミッタです。 https://github.com/haml?tab=members ↩
現在は Haml 大好きです。 ↩
Aaron Patterson 氏が実装した ActionController::Live により Rails でライブストリーミングができるようになったため。詳細は Aaron Patterson 氏のブログ記事を参照 http://tenderlovemaking.com/2012/07/30/is-it-live.html ↩
ActionController::Live では Server-Sent Events という仕組みを利用しており、サーバ側は任意のタイミングでレスポンスを返すために HTTP のコネクションを終了せず開きっぱなしにしている ↩
詳細は「[[0041-200Special-dtrace]]」を参照 ↩
ささださんにより、Ruby 2.0.0 ではいくつかデバッグ機能が強化されました。詳細は「Ruby 2.0.0 の注意点やその他の新機能 - デバッグ機能の強化」を参照 ↩
Microsoft Visual Basic のこと ↩
C 言語のこと ↩
C 言語の (ほぼ) 上位互換のプログラミング言語 ↩
C 言語の (ほぼ) 上位互換のプログラミング言語。現在では主に Apple 社の OS (iPhone の iOS や Mac の OS X など) 向けアプリケーション開発に用いられる ↩
Garbage Collection のこと。るびまの記事であれば「[[0025-RareAreGCTalk]]」等を参照 ↩
Mac OS X の前身になる OS。 ↩
RubyMotion については、るびまの記事「[[0043-RubyMotionKaigi2013Report]]」も参照 ↩
松田さんも以前のインタビューで同様のことをおっしゃっていました ↩
当時の 2400bps で 10MB 超の GNU GCC をダウンロードするのは回線と時間とガッツが大いに必要。 ↩
サムライスピリッツという SNK が出した和風対戦格闘ゲーム ↩
インタビューうけた 2013 年 7 月時点の制度です。2013 年 12 月以降には別の形の朝会になりました。 ↩
Richard Stallman のこと ↩
Emacs ライクなテキストエディタ。 ↩
M-x eshell ↩
Emacs を日本語環境等を意識して MS Windows に移植していたプロジェクト ↩
Original meadow の作者 ↩
Dynamic load library ↩
MS Window の DLL を使った UNIX のエミュレータ。Windows 上で自由に使える C コンパイラというと Cygwin 上での gcc が一つの定番。 ↩
RubyKaigi 2007 http://rubykaigi.org/2007 ↩
Tom こと Thomas Enebo ↩
Charles Nutter ↩
本当にありがとうございます! 中の人より。 ↩
『There are no more islands (仮)』 ↩