Rubyist Hotlinks 【第 36 回】 須藤功平さん

はじめに

著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。第 36 回となる今回は、須藤功平さん。

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

プロフィール

25021352632_6be375ca03_n.jpg Matz も使うプレゼンツール「Rabbit」の作者であり、株式会社クリアコードの代表取締役社長。

好きな言葉
「なんか」
尊敬する人
咳さんを尊敬していた頃はありましたね
ご本人の (会社の) サイト
http://www.clear-code.com/

インタビュー

聞き手
角さん (@kdmsnr)、卜部さん (@shyouhei) (お助け役)
語り手
須藤さん (@ktou)
野次馬
角谷さん (@kakutani)、咳さん (@m_seki)、喜多さん (@kitaj)、大場さん (@koichiroo)
日にち
2016 年 2 月 19 日
場所
目黒雅叙園 (デブサミ控室) 24843939760_7297188cb7.jpg

目次

プロフィール

なんの挨拶もなかったんだけど

今回は須藤さんのインタビューということで呼ばれましたが、僕はあんまり聞くことがなくて……ね。

須藤 (笑)

角谷 まあ、今回はるびまの読者のためにね。

じゃあ、プロフィールからお願いします。

卜部 差し支えない範囲で。

いやいや、ダメですよ。全部ちゃんと答えてください!

須藤 (笑) 1981 年生まれで、卜部さんも同じですね。

1981 年生まれって、他にも結構いるんですよね。

須藤 そうですね。yugui さんとか、mrkn くんとか、遠藤 (mame) さんとか、柴田 (hsbt) さんとか1

みんな若かったのにね。今年いくつ?

須藤 今年 35 になりますよ。

喜多 みんなそろって年取ったね。

昔はトガっていた人たちが……。

須藤 みんな丸くなってオジサンに (笑) 25139611395_67482ae244.jpg

結婚したときも知らなかったし、子どもが生まれたのも知らなかったし

出身地は?

須藤 青森のむつ市です。

むつ市って、先のほう?

須藤 そうですね。いちばん先の「クイッ」ってなってるところですね。

……この話、あんまり広がらないんで、次行っていいですか?

卜部 (見かねた様子で) どのくらいまでそこにいました?

須藤 高校までですね。

卜部 で、大学からは?

須藤 岩手大学で。ずっと、むつの外で暮らしてますね。

今は?

須藤 杉並区ですね。

喜多なみすけ」とか言わなくていいの?

須藤 あ、なみすけ。なみすけが好きです。

……はい。

須藤 なんなんですか (笑) 角さんも杉並区でしょう?

そうだけど…… (面倒くさいと思いながら) じゃあ、家族構成。

須藤 妻と子ども。

エッ! (絶句) ……そ、そうなの? いつ生まれたの?

須藤 去年の末。

え、マジで?

ALL おめでとうございます。 24771910059_cec0dacae3.jpg

えー知らなかった。結婚したときも知らなかったし、子どもが生まれたのも知らなかったし (不満の表情で)。

角谷 同じ杉並区なのに。

そう、杉並区なのに。なんの挨拶もなかったんだけど。男の子?

須藤 女の子です。

卜部 それは (記事に) 載せないほうがいいかも。お子さんの情報を載せるかは、議論があるところですよね。

そのへんどうですか? 言っとかないと、載っちゃうから。

須藤 女の子の子どもがいるくらいは、ぜんぜん大丈夫です。

卜部 大場家のお子さんの露出はどうですか?

大場 うちは一緒にタレントになろうかと (笑) イベントに一緒に登壇したりね。

卜部 そういうのはいいですね。

会社行かないで、子育てしてます

須藤さんは子育てしてますか?

須藤 してますね。会社行かないで、子育てしてます。

喜多 それ書いていいの?「会社行かないで、子育てしてます」って。

須藤 語弊がありますね、確かに (笑)

角谷 ちゃんとした言い方しとかないと (笑)

在宅? リモートワーク?

須藤 テレワークを導入して、活用してますね。

何か大変なことあります?

須藤 大変なことは……特になく、楽しくやってますね。

ふーん。

卜部 このインタビューに Amazon のリンクを貼っておきましょう↓

http://www.amazon.co.jp/gp/registry/wishlist/2TFPADJXD6S00/

角谷 これで欲しいものが手に入る。

オムツとかね。ずっと必要だから。ずーっと、ずーっと。

角谷 しばらく要りますよ。

S、M、L とだんだん大きくなって、枚数も減っていくんだよ。下手したら、3 年とか使うから。

須藤 使用期限とかないんですか?

だって、紙だよ。千年くらい行けんじゃない?

須藤 (笑) 歴史に残る。

卜部 布オムツ派もあるけどね。つらいよね。

須藤 そうですね。替える人がつらいですね。

そのためだけに札幌に行くぞ、っていう関係

好きな言葉や座右の銘はありますか?

卜部 クリアコードの社訓でもいいよ。

できればインターネットに載ってないやつがいいな。

須藤 それって「いま考えろ」って意味ですよね……。

他のインタビュー記事と同じのだと、るびまを読む価値がないからね。

須藤 じゃあ、「じゃあ」。

「じゃあ」いいね。

須藤 なんか最近、そういえば「なんか」が口癖みたいで。

なんか?

須藤 「なんか」って言ってから、言い始めちゃうんですよ。だからそれが座右の銘なんだろうなって。

それは好きな言葉?

須藤 好きじゃないけど、出ちゃう。

それは、なんでですか?

須藤 なんか知らないんですけど……。

喜多 言ってる (笑)

須藤 途中から気づいてるんです、自分でも。「なんか」って最初につけちゃったなって。でも、使っちゃってる。止められない……好き。

…… (真顔)。

須藤 なんなんですかァ? (泣)

大場 「なんすか?」は?

須藤 「なんすか?」は島田さんのパクりだから。

前回のインタビューは島田さんだったけど、島田さんとの関係は?

須藤 るびまのインタビューに呼び出されたら、そのためだけに札幌に行くぞ、っていう関係です。

卜部 あの時はそのためだけだったんだ。

須藤 そのためだけですよ。ついでに「マッドマックス」見たくらいで。

卜部 マジか。

「来い」って言われたら、「はい!」っていう関係?

須藤 「え、いつやるんですか?」「再来週」みたいな。角谷さんも一緒でしたよね。

角谷 同じメッセで呼び出されました。 25139605935_f0dfa6ec90.jpg

過去形 (笑)

尊敬する人はいますか?

須藤 咳さんを尊敬していた頃はありましたね。

ALL 過去形 (笑)

咳さんからもコメントがあれば。

須藤さんのことを尊敬していましたよ。

ALL 過去形 (笑) 25021353052_4f55ddff49.jpg

まあ、お互いにね。

卜部 でも、どのへんが?

須藤 なんだろう。咳さんが作っていたものがカッコいいと思ってた時期があったんですよ。

卜部 プロダクトが尊敬できるっていうのはいいよね。

今は尊敬する人はいないんですか?

須藤 私はあんまり「尊敬」っていう概念がない人みたいで。

じゃあ、好きな人。

須藤 角さんは結構好きですよ。

あ、ありがとうございます (笑)

すごーい。過去形じゃなかった。

僕も須藤さんを好きだったことはありましたよ。

ALL 過去形 (笑)

須藤 なんだよこれ (笑)

Ruby Conference のスピーカー全員に Rabbit を

代表作は何でしょうか? やっぱり『Ruby de XML』?

須藤 Rabbit! Rabbit、Rabbit (慌てながら)。 rabbit.png

卜部 Rabbit ね。使われているし、結構いいですよね。使いやすい。

須藤 使われてるかって言われると、それは微妙かも。

でもね、他のインタビューを見たら「Matz を Rabbit に乗り換えさせる」を目標にしてたよ。

喜多 もう目標達成してる。

須藤 どうしよう。

卜部 今後どういう風にしていきたいんですか? もう完成されてる感じ?

須藤 え、細かな話ですか? 大きな話ですか?

卜部 どういう方向に作っていきたいとか。

Matz に使ってもらった次の目標みたいな?

須藤 Ruby Conference のスピーカー全員に Rabbit を使ってほしい。

ALL 全員 (笑)

須藤 オフィシャルテーマみたいなのがあって、全員それを使ってくださいっていう。そうなるといいですね。

あんまり文章書くの好きじゃないんですよ

著作はありますか?っていうか、ありましたよね? ありますよね? (しつこく)

ALL (『Ruby de XML ― Ruby で始める XML!』のことか!)

須藤 (何もなかったように)『リーダブルコード』の「あとがき」。

卜部 あれ、いいよね。

須藤 でも、「あとがき」って著作に入れていいんですかね。

Amazon の著者データには入ってるけどね。「あとがき」の反響はどうですか?

須藤 あんまり「あとがき」がいいって聞かないですね。本体のほうの評判はよく聞くんですけど。「あとがき」に触れる人は身内しかいない。

喜多 「あとがきはいい」とか、そもそもそんなに聞かないよね。身内だけでも言ってくれるだけマシじゃないの?

卜部 「あとがきはいい」って言うと「本体はクソ」って言ってるみたいじゃないですか。

そういえば、リーダブルコードについては、学生さんに教えたりしてますよね。

須藤 そういうときは書籍に関わってるって、箔がついていいですね。でも、角さんがいちばんやりやすいじゃないですか。私が訳してますって言えるから。

でも、僕はリーダブルなコード書いてないから。

須藤 あー。

「あー」ってなんだよ (笑)

卜部 会社のブログは結構書いてますよね。

須藤 書いてますね。

卜部 あれも著作なんじゃないですかね。

個人の日記やブログは書いてないね。

須藤 私、あんまり文章書くの好きじゃないんですよ。

インターネットであんまり見かけませんね。

須藤 いや、コミットしてる。コミット。

あ、なるほど。

卜部 コミットと日記書くことが同じ活動っていう人と、別もんですっていう人がいますよね。

須藤 別もんなんですか? すごいですね。

卜部 僕は結構同じほうなんで、日記なんか書くとあーもう疲れたーみたいな感じで、日記に「日記書いてました」って書いて終わることになる。

須藤 そこまでして日記を書きたいとは思わないですね。

卜部 ですよね。なんだかんだでコード書くほうが楽しいしね。コミットコメント見ればわかるじゃんみたいな。

須藤 コミットに日記みたいに書くということですね。

卜部 今日やっていたことは何ってわかる。

須藤 コミットが日記になる。

それ「好きな言葉」にしたらいいんじゃない?「コミットが日記になる」。

須藤 でもそれ、卜部さんの話だから (笑)

Ruby に関して

覚えてないですね

ここから本編ですね。Ruby について。いつ頃から Ruby に関連した活動を始めましたか?

須藤 始めたのは、大学の 3 年くらいから。

卜部 いつ頃? 2003 年?

須藤 ですね。

2002 年じゃない?

須藤 2000 年入学だから……そうか。2002 年か。

卜部 その頃は何をやってたんですか?

須藤 大学入ってから、パソコンとかプログラミングっていうのを始めたんですね。どれがいいとかわかんなかったので、最初の 1~2 年はいろんな言語の本を読んだり、処理系をインストールして Hello World を動かしたり。そういうのをいろいろやってたなかで、「よし、本腰入れるか!」って思ったのが、たまたま Ruby だったっていう。

卜部 何かグッときたプログラムがあったとか?

須藤 ないですね。

角谷 Hello World の次が何かあったんですか?

卜部 ぶっちゃけ、Hello World だけで Ruby と Perl を比較するのつらくないっすか。

角谷 あんま変わんない (笑)

須藤 本に書いてあることは知ってたので、知識だけはすごくたくさんあって。でも、なんでなんですかね。日本人作だったからですかね。覚えてないですね。喜多さん、私何か言ってましたっけ? 25021350932_9b5c9651e2.jpg

喜多 ええっ?

外部記憶か (笑) Scheme と Ruby はどっちが先でした?

須藤 Ruby ですね。

そしたら、大学の先輩に教えてもらったっていう話があったような。

須藤 そうだ (笑) 大学 1 年のときにいろんな研究室に行って触れ合うっていうカリキュラムがあって、そのときに先輩から「Ruby いいよ」って教えてもらったのが、Ruby を知ったきっかけでしたね。

その先輩は「須藤はわしが育てた」みたいな?

須藤 そういう感じでもない。その話を聞いたのは 1 年の頃で、Ruby に絞って使い始めたのは 3 年の頃なので。

それから、Ruby で何を作ってました?

須藤 私が RWiki やってた時期って、咳さん覚えてますか?

COZMIXNG やってたのはいつだっけ?

須藤 あれは大学 3 年くらいからですね。RSS にまだみんな希望を持ってた時期で。

卜部 「ウェブログ元年」とか言われてた時期だ。

須藤 何回目かの元年 (笑)。

卜部 そうそう。

須藤 RWiki に RSS の結果を入れたいと思って、RSS Parserってのを作ったんですね。

卜部 RSS で取ってきた結果を RWiki のページに表示したかったってこと?

須藤 そうですね。

角谷 2003 年に RSS Parser をリリースしてますね (クリアコードのサイトにある PDF を見ながら)。

須藤 そしたら私、2003 年くらいから咳さんとやり取りしてたんですね。

やり取りしてたんだね。

角谷 この Rabbit の資料、clear-code.com にあります (笑)

須藤 便利!

便利だね。その頃に RWiki のクラスの分析とかしてもらってた。

須藤 分析? してましたっけ。研究室で定期的に何か紹介するみたいなコーナーがあったので、そのときにやったのかもしれないですね。覚えてないですね。

ALL (覚えてないことばかりだな……)

(オーム社の) 森田さんがウェブのメーラー作ってる人がいるんですよ、って教えてくれて。

須藤 あああ……。作ってた (小声)。

あれはフレームワークがダメだもんね。

須藤 咳さんが作ってた Tofu と Div を使ってました。その頃はまだ咳フリークだったので。

まだ好きだったときね (笑)

須藤 まだ好きだったときに、咳さんのやつで何か作らないとって思って、作ったのがそのウェブメーラーってやつで。

名前ついてますか?

須藤 つけてたんですけど、覚えてないですね。

コードは残ってる?

須藤 残ってる……かもしれないですね。サーバーにログインした人のなかだけでやり取りができる、今でいう SNS のメッセージ機能みたいな感じのものでした。

卜部 そのバックエンドが Tofu とかになってると。

須藤 そうそう。

数少ない唯一の (笑) 咳フリーク

咳さんとはどういうつながりなんですか?

須藤 当時は「RWiki 作ってる人だ」って思ってた。

会ったことは?

須藤 なかったですね。岩手から出たことなかったから。

角谷 でも、LL Weekend のときかなんかに会ってますよね。

須藤 あれは大学院の頃ですね。私、大学までは岩手から外に出てないので。

それまでは青森と岩手の行き来の人生だった。

須藤 そう (笑) まあ、事実ですね。

パスポートがまだね。

須藤 なかった (笑)

そしたら、メールとかでやり取りして?

須藤 してたかなあ……。

森田さんが「こんなん作っている人がいるよ」って探してきてくれたのは、僕が本を書いている時期で。

角谷 ああ、dRuby の本を書いていた時期。

黄色と赤い本の間の時期。

角谷 「咳プロダクトを使っている人」として、オーム社の森田さんが須藤さんを見つけてきたと。

1 人しか見つかんなかったのかもしれないね。

須藤 数少ない唯一の (笑) 咳フリーク。

須藤さんがいなくなったら、誰もいなくなっちゃうじゃないですか。

須藤 今は、いまづ とか。いろいろいるから。

卜部 でも、もう思い出せないですよね。昔はソースコードを作っている人が、どうやって使っている人とやり取りをしてたかなんて。今はみんな GitHub でやっちゃってるから。PR ボタンを押せば、「お、なんか来た」ってわかるけど、昔はそういうのなかったから、どうやってコントリビュートしてたんでしょうね。

SourceForge を使ってたんじゃないかな?

卜部 SourceForge でお互いにライブラリとか作って、「これは!」と思ったら、メールするみたいな? RubyGems もなかったしね。

須藤 ないですね。まだ嫌いですもん、咳さんは。

でもね、ここ半年くらいは使ってますよ。

須藤さんも嫌いだって書いてありましたよ。

須藤 そう、昔は嫌いでしたね。

人は変わるねえ (笑)

でも、好きじゃないんでしょ?

須藤 使うけど、好きじゃない。インストール手順を書くのが楽になるのはいいですね。gem install ~って書くだけでいい。

だけど、それで失敗するんだもん。

角谷 失敗したらどうしたらいいんだ (笑)

須藤 普通のやり方で入れないんですもん、咳さん。

普通の会社員の人とかは、ネットワークつながらないでしょ。

普通とは (笑)

須藤 喜多さんところはつながらないですよね。

喜多 苦労してトンネル掘ってるから。

結構、苦労しないと今でも入らないからね。

それか、先にローカルに落としてからみたいにしないと。

やる気なくなっちゃうよね、それで。

須藤 会社辞めたらいいじゃないですか (笑)

他に行くアテないんですよ……。 24771906989_2817d00a60.jpg

その頃は Matz も反応が速くて

2004 年の 1 月。学部 4 年のときには、Ruby のコミッタになってますね。

須藤 マジか。大学院入ってからじゃなかったんですね。

うん。PDF に書いてある (笑)。RSS Parser が入ったから、コミッタになったと。

須藤 メンテナですね。コアをいじるとかじゃなくて。誰かが「これ使いやすい」って言ってくれて。その頃は Matz も反応が速くて。2

「その頃は Matz も反応が速くて」。

いい言葉だ。

卜部 2004 年くらいの頃って、RSS のパーザーってそんなになかった気がする。

角谷 何個かはありましたかね。

何か参考にして作ったんですか?

須藤 仕様を読んでましたね。Python には、feedparser っていう、何でもいけるぜみたいなやつがあったはずですね。でも、それ見てやったわけじゃないので。RSS の仕様をそれっぽく Ruby の API にマッピングするみたいなのを頑張ってやろうとしてました。

何かを Ruby にマッピングするのって、その後の須藤さんのライフワークにもなってますよね。

須藤 そうですね。

ケント・ベックみたいですね(笑)

現在は Ruby をどのように利用していますか?

卜部 コードを書くほうが多いですか? 使うほうが多いですか?

須藤 自分で作ってるほうが多いですね。

それはお客さん用に作ってる?

卜部 でも、お客さん用と自分用って、そんなにスッパリ分かれるわけでもないと思うんですよね。

須藤 結構、同じですね。最近は Groonga っていう全文検索エンジンを作ってるんですけど、mruby を組み込んでいるんですね。それを拡張して、お客さんが必要な機能を実現しているんですが、そこで開発したものは本体に上げてもいいって言われています。そのほうがトータルでメンテナンスが楽になるし、お金もかからなくなるので。そういう契約でやっているので、最終的には自分でも使えるようなやつになってます。

自分が入れたい機能と、お客さんが入れてって言った機能と、どっちが多いんですか?

須藤 仕事をしているときは、お客さんが必要な機能のほうが多いですね。

実際のユースケースがあって、それをプロダクトに反映していると。

須藤 お金をもらってやる仕事はそうですね。でも、いつでも仕事があるわけじゃないので、空き時間でブログを書いたり、これあったらユーザーが増えるんじゃないかな? っていう機能を自分で作ったりしてますね。

Ruby 以外で何か使ってます?

須藤 C を使うことが多いです。

卜部 Groonga そのものは全部 C ですよね。mruby のところは mruby で書くくらいで。

Ruby は何に使ってます?

須藤 Rabbit で使ってますね。Rabbit を動かすのに使っている。

大場 須藤さんはテストフレームワークを作ってるイメージがある。

須藤 あ、本当ですか?

いろんな言語のフレームワーク作ってたでしょ。

卜部 どんなやつを作ってるんですか?

須藤 Scheme と Python と C と Ruby。言語を覚えるときに、最初にテスティングフレームワークを作るんですよ。

角谷 ケント・ベックみたいですね (笑)3

卜部 assertion 書きながら学んでいくみたいなスタイル?

須藤 そうですね。だいたいどう書けば何ができるかわかるんですよ。メタっぽいこともどうすればいいかとか。

やっぱり、ケント・ベックっぽいですね (笑)

大場 須藤さんは独自のこだわりもあって。power-assert をめっちゃ dis ってた。

それはなぜですか?

須藤 一部の人だけだと思うんですけど、「power-assert があれば、他の assert はいらない。覚えることが少なくていい」みたいなことを言ってて。それだとテストが読みにくくなるんですよ。

卜部 まあね。

須藤 なんでもそこに式をいっぱい書いちゃうので。それがイヤです。

卜部 一体、何をテストしてるの?ってのがわかりづらくなりますよね。== で比較しているやつが1個だけならいいんだけど、そうじゃないことが多くなって。あれだね、この場に t-wada を呼ぶべきだったね。

それはそれで、別の記事にすればいいんじゃない?

須藤 いや、power-assert にはいいところもあると思っている……んですよ? (笑)

Ruby 脳の恐怖

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

須藤 好きなところ……。

卜部 大学のときにいろんな言語を見た結果、最終的に Ruby を選んだのは結局何だったんでしょうね?

須藤 先輩が「いい」って言ってたのがきっかけでやったら、確かに「馴染んだ」ってことだと思いますね。他の言語は知識しかなかったので。

卜部 周りに知っている人がいたっていうのは重要ですよね。

最初に見たモノを親鳥と思うみたいな?

須藤 (笑)

角谷 須藤さんって、他の言語も必要に応じて触ったり、それこそテスティングフレームワークを書いたりするわけじゃないですか。そのときに、Python がいいなあ、とかはなかったんですか?

卜部 待って! 他言語 dis は、るびまではやらないで (笑)

角谷 それでも、やっぱ Ruby を選んでいる、みたいなのは……親鳥だから? (笑)

須藤 Scheme を書いてたときに実感したことがあるんですけど、自分は脳内で Ruby で考えて、コンパイルして、それから Scheme を書いていたんですよ。ああ、自分は Ruby で考えるようになったのかと。Ruby のトランスレーターが頭のなかで作れないと、他の言語が書けないっていう。Ruby 脳の恐怖。

角谷 「Ruby 脳の恐怖」(笑) わかる。

須藤 だから、好きか嫌いかっていうよりも、もう馴染んじゃってる。 24771909759_e6db5a6c69.jpg

map がモヤッとする

好きなメソッドと嫌いなメソッドは?

大場 power-assert !

須藤 嫌いっていうか、power-assert を使っている人がアレなだけで……。

いや、もう大丈夫だから (笑)

角谷 本体じゃないから (笑)

じゃあ、好きなメソッドからでいいよ。

須藤 うーん。本当にみんな好き嫌いとかあるんですかね。

卜部 昔は、map 派とか collect 派とかあったけどね。

須藤 map は嫌いですね。

ALL あるじゃねーか! (笑)

須藤 ありましたね (笑)

卜部 どんなところが嫌いですか?

須藤 なんかもっと汎用的だったら、map でもいいのになって思うんですけど。絶対、Array にマップされるじゃないですか。どんな集合にでもマップされるならいいかなって思うんですけどね。

卜部 それをやるなら、コンストラクタのコンベンションが必要だよね。new したやつに要素を追加していくっていうのが必要。Enumerable だと each しかないから、ちょっと厳しいよね。

須藤 そういうので、map がモヤッとする。

卜部 モヤッとするのはよくわかる。

それは Lazy がついている一族が嫌だってこと?

須藤 どういうこと?

Enumerable にならなかった人たちがいたじゃないですか。Lazy で書かないと、配列になっちゃうチームがあるじゃないですか。

ALL チーム (笑)

彼らが嫌なのか、それともmap だけが嫌なのか。

須藤 私は map だけですけど。

卜部 たとえば、Hash を map したら配列が返ってくるじゃないですか。

あ、そっち側?

Hash が返ってきたらいい?

須藤 Hash に限らず、いろんなのにマップしたい。一対一で対応するっていうのが map だと思うので。

喜多 出力が選べればいいんだ。

須藤 他の言語だと、出力が違うコンテナになっててもできる気がするんですよね。4

咳さんが書いたコードとか、初見でわからないことがあるんですよ (笑)

他にはないですか? 嫌いなやつ。

角谷 嫌いというとアレだけど、今みたいな気に食わないやつ。モヤッとするやつ。

須藤 コード書いているときには見つかっていると思うんですけど、今急に言われても、ないですねえ。

須藤さんって、モヤッと駆動みたいなところがあるじゃないですか。

角谷 わかりにくいのでパッチ書きました、みたいな。

その源泉というか、価値基準みたいなのはどこにあるんですか?

須藤 うーん。1 回でピンと来なかったとかじゃないですかねえ。

初見でわかりにくいとモヤッとする。

須藤 だと思いますね。でも、咳さんが書いたコードとか、初見でわからないことがあるんですよ (笑) それでもなんか、あとで「これでいいんだ」っていう気持ちになることが多いので、「考えすぎてたなあ」っていう感じになる。「そんなに削っていいんだ!」って気持ちになります。

(笑)

須藤 あれ? 今いいこと言ってません?

いいこと言ってる (笑)

須藤 だから、なんかもっと別の違和感があるんだと思うんです。

卜部 違和感は言葉にしづらいですよね。なんかグっとこないっていう感じ。

しばらく考えて、やっぱりグっとこなかったら、「ちょっとパッチ書くかー」みたいな感じになる?

須藤 そうですね。

パッチ書くのはそれなりに愛してなくても書けるの? 興味なかったらシカトするだけじゃないの?

須藤 書けるときは書いてる気がしますね。よっぽど誰も使わないやっていうときは書かないと思いますけど、誰かまだココを通りそうっていうときは、書きますね。

えー、偉い。須藤くん偉いなあ。

須藤 (笑) 24843938010_52237345fc.jpg

Rabbit を作っていなかったかもしれないですね

Ruby を使ってうまくいった事例はありますか?

須藤 事例……。

卜部 Rabbit ですか? Rabbit を Scheme で書いてたら辛かった?

須藤 ベースにした実装があって、それが Scheme なんですよ。Gauche を作っている人が、Fixpoint っていうのを作っていて。そのレンダリングの方法が、上から順番に x と y を動かして、次の要素を描いてみたいなのをグルグルまわして、ページがレンダリングされるっていうモデルだったんですね。それを見て、これでいけるんだ、こんなんで作れるんだって思って、そこから Rabbit を作って、同じようなレンダリングスタイルにしたんですよ。

へえ。知らなかった。

須藤 Scheme のそれを見てなかったら、私はたぶん Rabbit を作っていなかったかもしれないですね。

角谷 それって、須藤さんの修論に書いてありましたっけ。

須藤 書いたかなあ……。

じゃあ、Scheme やっててよかった?

須藤 Scheme やっててよかったですよ。卒論は Scheme なんですけど、その頃は咳フリークだったので。咳さんが作っているようなやつを Scheme で実装しなおしたりしてましたから。咳好きが高じて、分散 Scheme みたいなのを書こうとしていましたね。

そういえば、渋川くんが分散 Python 書いてたなあ。

ALL 分散チルドレン (笑)

須藤 分散書いたら、俺のフォロワーみたいな。

じゃあ、うまくいった事例は Rabbit でいい?

須藤 まあ、だいたい何でもうまくいかせるようにやってるんで (キリッ

ALL お?

……たとえば?

須藤 マジか。

必ずうまくいくコツを教えてください! (ニッコリ)

須藤 まあ、諦めないことですかね (偉そうに)。終わらないと失敗と言わなくて済む、みたいな。……どう? (笑)

何かの引用ですよね。

須藤 たぶん。そういうの誰か言ってそうじゃないですか (笑)

「by 須藤功平」って書いとく?

須藤 やめて! それはうさんくさくなる。

喜多 座右の銘にしたらいいんじゃない?

須藤 いや、違うし (笑)

(……きこえますか…きこえますか…Groonga…は?)

じゃあ、Ruby のキラーアプリかキラーライブラリは?

卜部 たとえば、RWiki で人生変わりましたとか。

まあ、咳さんの名前がずっとここまで出てきているからね、咳さんのプロダクトでしょ?

須藤 キラーアプリねえ……。

ライブラリでもいいですよ。

卜部 Nokogiri はすごいとか。

須藤 Nokogiri は嫌いなんですよ。

卜部 どのへんがダメですか?

須藤 まず名前がイヤ。キラキラネームは好きじゃないんですよね。

ALL キラ……キラ?

卜部 日本語つけときゃいいってもんじゃねーぞ、みたいな?

須藤 ああ、Kaminari とかって話ですか? まあ、他人がやるのはいいんですけど、何するやつかがわかんないのは、私はあまり好きじゃないんですよ。

ALL (……きこえますか…きこえますか…Groonga…は?)

須藤 みんなの心の声が聞こえた (笑) 確かに。好きじゃないかもしれない (笑)

じゃあ、好きなほうを言いましょうよ。必ず使うライブラリとか。

須藤 OptionParser はよく使いますね。nobu のやつ。

卜部 あれって慣れてくると、思ってたよりもいろんなことができるんだけど、普通にパッと使うだけだと、どうすんの? みたいなのがたくさんある。

角谷 結構、使い方難しいと思うんですけど、別にそんなことないですか?

須藤 慣れちゃったんですかねえ。Thor っていうのがあるじゃないですか。あれは嫌いなんですよ。

卜部 OptionParser って、るりまにクラスの解説の他に、チュートリアルが別途あるくらいだから。

須藤 気合の入れ方が違う (笑)

もうひとつくらいキラーアプリがほしいなあ。

卜部 ウェブアプリとかは使わないですか?

須藤 ウェブアプリ……。

卜部 あんまりない? 僕が質問されたときは、TravisCI って答えたんですよ。

須藤 ああ、使ってますね。他には……。

卜部 Ruby だからって意識して使っているわけじゃないから、名前が出てこない感じ?

須藤 そうなんですかねえ……。全然コメントが出てこない。

次、いきましょう (笑) 25046336371_b1792e3bd8.jpg

当時の Ruby の本はひととおりそろっていると思いますよ

Ruby の習得は簡単でしたか? 引っかかったところはありましたか?

須藤 引っかかったところがあって、XML のライブラリがあるんですけど、括弧の違いがピンと来てなくてハマったっていう。

括弧の違い?

須藤 element と elements っていうメソッドがあって、element のほうは丸括弧で、elements のほうは角括弧なんですよ。

卜部 element(0) ってやるとゼロ番目のエレメントが取れて、elements のほうは配列だったと。

須藤 そう。そこの違いがピンとくるまでは、「なんだこれは?」みたいに思ってて、ピンときてからは「ああ、そういうことか!」っていうふうになったので、そこは引っかかってたところだと思います。

卜部 ライブラリの設計ですね。API の UX がよくわかんない感じの UX になってたって感じ。

須藤 メソッド呼び出しがピンと来てなかったって感じだと思うんですけどね。

elements()[] だったらよかった?

須藤 それだと「なんでこんなに括弧いるんだ?」って思ってたんじゃないですかねえ。

それ以外はぜんぜん大丈夫だった? っていうか、Ruby が最初に触ったプログラミング言語なんですよね。じゃあ、プログラミング自体はどうでした?

須藤 楽しかったんじゃないですかねえ。たぶん。楽しかったと思いますよ。

え、覚えてないの? (笑) じゃあ、プログラミングは自然に覚えたって感じですかね。でも、大学って情報系ですよね。同級生とか見ると、プログラミングができない子とかいるじゃないですか。

卜部 逆にすごいできる人とか。

須藤 いや、できる人なんていないですよ。だって、大学ですもん。情報系の大学ですよ。いるわけないじゃないですか (真顔)。

卜部 そうなの? いたことがないからよくわからないけど。

そうなんだ。でも、今だと違うんじゃないかな。

須藤 さすが大学の先生

いや、わかんないけど (笑) 中学生の頃からプログラミングやってる子もいるし、子どものプログラミング教育みたいなのも流行ってますよね。

そういう子は大学まで来るんだろうか?

どうなんだろう。

卜部 まあ、10 年位前に僕らが大学生だった頃の状況では、そういうだったっていう感じですかね。

喜多 情報系の学生だからって、プログラミングやってるとは限らないよね。それよりなんか違うことやってるよ。

須藤 サークルとか? 25046330741_2dd17a4758.jpg

喜多 違う、違う (笑) そもそも大学の講義でプログラミングなんてほとんどないし。もうちょっと情報系の理論とかね、文脈自由文法とか、そういうのばかり。それが実装に落ちるところまではやってない。ハミング距離がどーのこーのみたいな。

なんか、喜多さん見直しちゃったな。

喜多 (笑)

え、じゃあ、みんなできないの?

卜部 1 年のときだけ?

須藤 いや、最後まで。興味のある人はできるようになっていると思いますけど。基本そんなに興味ない。

誰かと一緒に勉強したりしなかったの?

須藤 私、そういうの必要ない派なんで。

卜部 独学で特にどこにもつまらずに、Ruby を習得できたんですね。なんかあったかもしれないけど。

須藤 つまることが苦にならないからかもしれないですね。

ALL おー(笑)

最初のうちは情報源は何だったんですか?

須藤 本ですね。Ruby の本が出たら、学校の図書館に買ってもらって。

何の本ですか?

須藤 その頃に出たのは、ひととおり全部。

卜部 256 倍とかも?5

須藤 とかも、ひととおり。

角谷 図書館に買ってもらって (笑)

須藤 岩手大学の図書館には、当時の Ruby の本はひととおりそろっているはずですよ。

じゃあ、いちばんよく読んだ本は?

須藤 ……私ね、あんまり読み込まないんですよ。

買わせといて、読まない (笑)

須藤 た、たど、多読 (言葉につまりながら)。

角谷 何回も読むんですかね。

須藤 同じものを何回も読むんじゃなくて、いろんな本を読んでいると勝手に覚えてきて、みたいな。

卜部 プログラミングの本を読むときに、サンプルコードとかは打ちこんだりします?

須藤 あまり打ち込まないですね。なんか面倒くさくて。

卜部 サンプルコードって参考になるときとならないときがあるじゃないですか。著者も実行してないこともあるだろうし。

須藤 そうですね。

このレベルまで相手にすんのか……とか思って

じゃあ、本を何冊か眺めて、そのあとは何する感じですか?

須藤 自分が欲しいものを作りますね。

卜部 そのときに本を読み返したりもしない?

須藤 しないですね。あとは何をやってたんだろう……。

欲しいものなんかあるんだ。

プログラミングはまだできなくても、欲しいものがあったんですか?

須藤 RSS Parser とかは欲しくて作ったやつなんで。Rabbit も欲しかったやつですね。それまでは TeX でプレゼンを書いてたので。

卜部 TeX でプレゼンはつらい。

須藤 でも、大学を卒業したくて。卒業して大学院に入ってから、Rabbit を書き始めたんです。

ああ、卒業までは TeX を使ってて、もう TeX はイヤだってなって、Rabbit を作ったと。

須藤 RD で書きたい。修論は RD で書いてますからね。そこから TeX に変換してました。

習得のところはもっと聞きたいけれど、記憶が不鮮明だからなあ (笑)

須藤 その頃のコードを見ると、残念だなあと思うので、何かしら習得のための何かをやってたとは思うんですけどね。

角谷 他の人のコードをたくさん読んだとか?

卜部 咳プロダクトとか。

須藤 咳プロダクトは参考にならない。

ALL (笑)

須藤 カッコよすぎて (笑) 参考にならない。

角谷 真似できない、みたいな。

須藤 RWiki は咳さんだけじゃなくて、なひさんも書いてるんですけど、なひさんのコードで「あ!これでスッキリ書けるんだ」みたいに勉強になったのは、今だと「ガード節」って名前がついているやつですね。あれではじめて知ったなって記憶に残っているので、他の人のコードを見て参考にしてたっていうのは、あったんじゃないかなあと思います。

「なんですぐリターンするんですか?」みたいなのが来たよ。

須藤 誰から? 私から?

「もっとスッキリ書けるんじゃないすか?」みたいな。私は気に入らないですけど、他に解はないですね、みたいなことが書いてあった気がする。

卜部 それはメーリングリストで?

たぶんそうかなあ。if なんとかですぐリターンするでしょ。須藤くんは気に入らなさそうだったよ。

須藤 気に入らなかったんだ (笑)

このレベルまで相手にすんのか……とか思って。

角谷 面倒くさい (笑)

好き嫌いでいいじゃん! って思って。

卜部 RWiki の開発コミュニティみたいなのは、どこでやってたんですか?

なひさんが作ってた環境でやってたんじゃないのかな。

卜部 RWiki の Wiki の上でコメントを書きながらみんなで開発していくみたいな?

須藤 そんなことはやってなかったと思いますね。

僕が保守側にまわったときに、なひさんが飽きちゃったんだよね。たぶん。それで、どうしたんだろう。メーリングリストだっけ。

須藤 メーリングリストなんじゃないですかねえ。覚えてないですね。

(笑) まあ、そうやって、若いならではの暴言を吐いてた感じですかね。

須藤 そう……なんじゃないですかねえ。今の話を聞くと。

角谷 いろんな人のコードに噛み付いて (笑)

須藤 でも、私が RWiki のやつに入ったときは、みんな飽きてたと思うんですよね。

角谷 自分のやりたいことはひととおり終わって。

須藤 あれ、覚えてないですか?

うん、わかんない。

ALL (笑) 24843938910_19617e4581.jpg

リファクタリングしますっていうか、普通にプロセスに入ってる

今まで読んだなかで、最も美しいコードは何ですか?

角谷 最もリーダブルな。ビューティフルな。

須藤 「最も」って言われると……。

思いつくやつをいくつか。

須藤 Cairo ってやつがスッキリしてたなって。

卜部 あれね、すごいですよね。ベクターグラフィックライブラリ。

須藤 二次元の画像を作るやつなんですけど、複雑なんだけどスッキリ API をまとめているという。

API がキレイだから、Ruby のラッパー (rcairo) を書いたわけではなくて?

須藤 それは Rabbit で必要だったからですね。

必要だから調べてたら、キレイだったと。

須藤 そうですね。バインディングを書かなきゃいけないので、ソースを見ないといけなくて、そのときにスッキリしてるなあって。

他にはありますか? Ruby のコードでキレイだったものとか。

須藤 やっぱ、そうなりますよね。

喜多 そりゃそうだろ (笑)

卜部 Gauche の実装がキレイだったとかでもいいですよ。

須藤 覚えてないですね。うーん……。なんかないですか?

喜多 誰のインタビューだよ (笑)

須藤 これよかったんじゃない? みたいな、そういうのないですか?

自分のやつで美しいコードとかあるの?

須藤 美しいという観点だと、なかなかないですね。

角谷 これはなかなかよく書けたコードとか。

須藤 RSS Parser はよく書けたな、動くものになったな、って思いますけど。 CIMG1820.JPG

大場 須藤さんが書いた情報処理学会の論文 (「Ruby による XML 処理」) に RSS Parser の設計が書いてあって、XML 要素が動的にプロパティにマッピングされるあたりとか勉強になりました。

須藤 RSS Parser のコードを読んだ人からは「読みにくい」「わからない」「理解できなかった」としか聞かないので、美しいかと言われると、微妙だなって……。Rabbit も私の初期の頃からやっているので、今見ると「おおう」ってなるところがあるので、なかなかアレですね。

卜部 プロダクト全体って言っちゃうとね、ちっちゃい 20 行とかのコードなら美しいのがあるかもしれないけど、ライブラリとかアプリケーションとか、大きくなっちゃうと、現実世界の汚さを反映してきて……。

須藤 自分が書いたので、スッキリキレイにまとまっているのは、そんなにないと思いますね。

最初からキレイに書こうと思ってる感じですか? それとも、開発中に汚くなって、それをキレイにしようとする感じ?

須藤 そういうのはやらないですね。できるだけいい状態をキープしようとしてます。でも、そのときの実力があるじゃないですか。そのレベルでしかキレイにならないので、あとから見たら「うわ」って。

汚いけど動く、みたいなのはあんまりやらない?

須藤 書いているときはそう思ってやってないですね。

卜部 リファクタリングとかする派ですか?

須藤 しますね。リファクタリングしますっていうか、普通にプロセスに入ってる。

リファクタリングっていう時間があるんじゃなくて、コード書くなかに組み込まれていると。リファクタリングする前に人前には出さないってことですか?

須藤 うーん。基本的にそこはカタをつけてから、次に行ってる気がしますね。

そのときの知識というか、実力でできる範囲でね。

非同期のやりとりを難しくなく書ける、っていうのに興味がありますね

いま興味を持っているテーマは何ですか?

須藤 興味を持ってるテーマ……。

卜部 (見かねた様子で) 全文検索はどういう流れで?

須藤 もともとは全然興味なかったんですけど、Groonga の前身の Senna っていうのがあって。私はその頃、Cutter っていう C のテスティングフレームワークを作っていて、Cutter を使うユーザーを増やしたいなあと思っていたんですね。Senna は C で書かれているので、そのテストを Cutter でやるみたいなのから入って……気づいたら本体もやってた、みたいな感じですね。

でも、検索エンジンに必要な知識とかあるわけじゃないですか。

須藤 それは、やりながら。

卜部 やってみたらおもしろかった?

須藤 すごく興味があるっていう話じゃなくて……。だいたい私なんでも興味あるので。いろんなことに興味があるので。だから、「熱烈愛」みたいまでにはいかないですけど、まあ興味を持ってやっています。

まだやってないけど、今後やりたいなあと思っていることはないですか?

須藤 非同期のやりとりを難しくなく書ける、っていうのに興味がありますね。咳さんもやってるんですけど、非同期って難しいじゃないですか。結果を待って何かやったりとか。そういうのを普通に書いても、間違いなく、変じゃなく書けるような書き方を模索したい……けど、ぜんぜん手が回ってないです。

非同期のモデルを作りたい? 実装?

須藤 私はモデルは興味なくて、動くものに興味あるので。

それを Ruby で作りたい?

須藤 そう、Ruby で。

卜部 golang とかどうですか? あの書き方。

須藤 goroutine ですか?

卜部 そうそう。

須藤 一回やって、なかなかうまく書けなかったんですよね。だから、もう少し知識がないと作れないのかもしれないと思います。

卜部 簡単にというか、自然に書きたいという話だったと思うんですけど、そうすると goroutine は自然に書くには至ってないっていうことなのかな?

須藤 私が golang に慣れ親しんでないので、慣れ親しんでいる人には自然かもしれませんが、私は Ruby でやりたいので。Ruby の文脈で自然に書ける、みたいなのがないかなあと思ってますね。

卜部 Ruby であんな感じに代入しようとすると、ブロックするやつが出てきたり。

須藤 おお、そういう感じになるんですかね。

卜部 いや、どうなんでしょうね。

もともと難しいから、難しいままだと思うんだよね。

卜部 難しいのは確か。

須藤 ……無理でした (笑)

ライブラリとかで提供できる範囲じゃなくて、ちゃんと設計しないと、本来やりたかったことまでたどり着けない。なんとなくなら非同期できるけど、解きたかった問題が本当に解けてるのかはわかんない。 24508921394_4b0c9389b0.jpg

卜部 それはそうなんだけど、本質的に難しいから人間が頑張らないとどうにかなりませんよね、って思われていることはあるよね。たとえば、メモリリークとかは、今どきそんなに起きないじゃないですか。それはエスケープ解析とかさまざまな武器ができたことによって、なかなか起きなくなってきたと思うんだよね。

須藤 うん。

卜部 で、非同期とかスレッドのデッドロックとか、そういうのはたぶんまだ武器が足りなくて、いろいろ問題が起きているところがあるんじゃないかと思う。なので、最終的に本当にやりたいことはできますか? みたいなところは残るとは思うんだけど、それ以前の回避可能な難しさみたいなのは、まだまだあるのではないかなと思いますけどね。

須藤 うん。

卜部 でも、どういうふうにすれば簡単に書けるのかっていうのは、確かに興味ありますね。

須藤 興味ありますね。ぜんぜん手は動かしてないですけど (笑)

卜部 雑な発言すればいいんじゃないですか? こういうふうに書いたらいいんじゃね? みたいな。

咳さんに送ったメールみたいに。

須藤 このレベルまで相手にすんのか、って言われる (笑)

いやいや。

須藤 もう 35 だぞ、みたいな (笑)

単純に数が多くて、とにかくつらかった

もうだいたい聞きましたかね。

卜部 いや、まだ大学院までしか聞いてないですよ。

そういえばそうだ (笑)

須藤 マジか……。

卜部 全部言えとは言いませんけど (笑) それからしばらく Ruby のコミッタをやってたってことですね。

須藤 でも、メンテナンスだけなんで、やることほとんどないですからね。

他に何かありましたっけ。Google Summer of Code とか? あれはどういうきっかけで応募したんですか?

須藤 知り合いの知り合いが Google の中の人で、その人が「学生向けのこういうのやるから誰かいない?」みたいなのを言っていたのを聞いて、応募したって感じですね。

卜部 Google Summer of Code では何をやったんですか?

須藤 元々は RWiki に Subversion を組み込みたかったんですよ。Wiki の履歴を残したくて。でも、svn コマンドを書くのはカッコ悪いなって思って、Ruby のバインディングを書き始めたんです。Subversion のコミット権は持ってたんですけど、まだ全部の機能は網羅してなかったので、それを網羅させますっていう。

角谷 Ruby のバインディングで全部の機能を使えるようにすると。

期間はどれくらいですか?

須藤 3 か月。夏休みっていう企画なので。

卜部 もちろんそれまでに作ってた部分もあるはずだから、全体だともっとかかっているってことですよね。

須藤 そうですね。でもまあ、この期間にやったのが、量としては一番多かったですね。数が多いんですよ。

卜部 Subversion って、コマンドは 1 個だけに見えて、実は内部はすごいレイヤに分かれているし、バックエンドも選べるしで、すごい大変。

須藤 自動生成する SWIG っていうツールを使っているんですけど、それをうまく動かすための入力が別途必要で、そこをコリコリ書いて、各機能のテストを書いて……みたいなことをしていると、単純に数が多くて、とにかくつらかった。

今も継続してるんですか?

須藤 これは継続してなくて、Subversion が Apache のほうに移ったときに、リポジトリとかメーリングリストとかがもろもろ移動したんですけど、そのときにメーリングリストから抜けたので、どうなっているかわからないんですよ。apache.org のコミット権は残っていると思うんですけど、事情がもうわからないので、やってないですね。

卜部 Subversion の Ruby バインディングって、いま動くのかなあ? 2005 年の時点だと、Ruby 1.8 とかですよね。そこから先は Ruby にマルチリンガライゼーションとか入ったので、たぶんエンコーディングまわりのところとか、激しく互換性がなくなってると思う。

大場 (手元で調べてから) Ruby 2.2 のバインディングに追従してるみたい。

卜部 須藤さんの手を離れてから、まだまだ開発している人がいて、育っているってことかな。

そのあとは、Rabbit の修論を書いて、大学院を修了すると。

須藤 はい。

そしたら、Summer of Code のときは並行してやってた?

須藤 私の場合は、すでにあるものを修論にしたっていうスタイルなので。

卜部 修論を書き始めてから研究するんじゃなくて、それ以前からちゃんと研究ができてたってことだから、いいことだよね。

角谷 それまでの研究を論文にまとめたと。

須藤 言い方としてはそうですね (笑) 25139606915_13c18b395e.jpg

かずひこさんたちと n-Queens で戦うみたいなやつ

須藤 今日来ている人たちとの出会いみたいなのがないと、アレじゃないですか?

あ、そうだね。

卜部 大学院に入ってから、東京に出て行く機会が増えた?

須藤 LL Weekend というのがはじめて。

それ何年?

須藤 2004 年ですね。角さん、角谷さん、咳さん、喜多さんに会ったのは、これがはじめてじゃないですか?

どこ? 新宿?

須藤 なんとか専門学校。

喜多 渋谷から歩いて行ったところ?

須藤 いや、大久保。

角谷 渋谷は台風来たときです。いちばん最初の。

須藤 角谷さんが日中にジョジョしてた

角谷 そうそう。でも、ちゃんと須藤さんと話をしたのは、次の年の LLDN のロフトプラスワンです。

須藤 あ、そうか。そしたら、このときは咳さんだけか。

卜部 イベントに合わせて来てたんですか?

須藤 そう、学生がしゃべるとお金を出してくれたんですよ。それで、夜行バスで来てました。

喜多 え、夜行バスで来てたんだ。

卜部 体力のある若者だなあ。

このときは何をしゃべったんですか?

須藤 Gauche だと思いますね。かずひこさんたちと n-Queens で戦うみたいなやつ。

かずひこさんが Ruby ?

須藤 そう。私は Gauche で、XML-RPC でサーバに接続して、なんとかかんとか、みたいなの。

咳さんから見た須藤さんの印象は?

須藤 私なんかいいこと言ってました?

たぶん会ってるんだと思うんだけど、覚えてないなあ。

須藤 覚えてない (笑)

会社に誘ったけど断られたのは覚えてるんだけど。

須藤 それはもっとあとじゃないですか? それは咳さんのインタビューのときじゃないですかね。

そうだっけ (笑)

須藤 Matz にはじめて会ったのも 2004 年あたりだと思いますね。

喜多 そのときが初の都会?

須藤 修学旅行以外だと、はじめてじゃないですかね。

クリアコード時代

2 月に言われても、もうどうしようもないじゃないですか (笑)

その次は、もう社会人ですね。

須藤 最初の会社は大阪だったんですけど、大阪では仕事があんまり取れないから東京支社を出すぞみたいな時期で……。

うん。

須藤 最初は私も大阪に行くのかな? と思ってたんですけど、大阪に行く直前に「やっぱり東京で」って言われましたね。で、東京の事務所に行ったんですけど、会社にお金がなくて、そこから独立したのが今のクリアコードです。

それが何月?

須藤 入って 3〜4 か月ですね。

4 月に入社して?

須藤 そう。9 月くらいにはもう新しい会社に移転してた気がしますね。

それって起業ですよね。

須藤 そうですね。

サラっと言うけど (笑)

須藤 お金がなくて……。ザックリ言うと、会社がつぶれるわけですよ。せっかくみんなで集まったので、受け皿として会社を作った、みたいな感じです。

東京にみんなで行って、気の合う仲間だったけど、会社がなくなっちゃうから新しい会社を作ったと。

みんなで東京に行ったの?

須藤 選抜でいい人たちだけを選んで。私は新人なので、かわいそうだからっていう理由で。

入社時点で潰れそうってわかんなかったんですか?

須藤 いや、わかってました。「ウチの会社ヤバいからもう来なくていいよ。どうする?」みたいなことを言われて。

喜多 それは入社前に?

須藤 2 月くらいに。

角谷 そこはインフォームドだった (笑)

須藤 でも、2 月に言われても、もうどうしようもないじゃないですか (笑)

それで、やっぱり続けるのが難しくなって、クリアコードを作ったと。

須藤 前の会社はなんやかんやで 6〜7 年は生き残ってたんですけど、数年前に消滅したのを確認しました。

喜多 数年前まであったんだ。

須藤 ありました。名前を変えながら。

角谷 会社はそんなにすぐはつぶれないから。

須藤 私が抜けたあとにその会社に入った人が、クリアコードに入ってきたりして。

大場 受け皿に (笑)

須藤 そうですね、意図せずに受け皿に (笑)

2006 年にできたから……今年で 10 年?

須藤 もう 10 期目ですね。

ALL すごい。

須藤 これはもう立ち上げたときの社長がいたからですね。今もいるんですけど、その人がお金のことを一手に引き受けてくれて。

立ち上げたときと今とでは、仕事の内容は大きく変わりました?

須藤 方向性はそんなに変わってないですね。

受託開発がメインで、そこからオープンソース化して、みたいな?

須藤 そうですね。

卜部 それ以前の問題として、須藤さんは新卒だったわけじゃないですか。新卒のときと比べて、働き方は変わりましたか?

角谷 でも、もう社長だから (笑) 24512744463_d8e2a1b37e.jpg

須藤 社長としての振る舞い、みたいなのはありますよね (カッコつけながら)

社長になる前は?

卜部 新卒研修とかやった?

須藤 ないですよ。

いまだに名刺とかうまく渡せないもんね (笑)

須藤 ドキドキしちゃう (笑)

死ななくてもデスマなの?

須藤 いま思えば、スケジュール感みたいなのがよくわかってなかったなあ、と思いますね。期限ってあるじゃないですか。この日までにこれを作るっていう。それがあまりピンときてないまま、目の前のやつを片付けてましたね。最初の頃の仕事を思い出すと。

喜多 若手社員っぽい (笑)

須藤 でしょ?

角谷 手が動く若者っぽい。

卜部 なんか頑張ってるけど、それ終わるの? みたいな。

須藤 いまは期限を意識できるようになりました (笑)

喜多 成長したなあ。

須藤 何をいつまでに作るのかがわかんないと、うまく進められないというのは、最初の頃に学びましたね。

大場 うちの奥さんが「きょうは締め切り間際で大変だった」みたいな話をしたら、須藤さんが「ちゃんと予定を決められないのはおかしくないですか?」みたいなことを言ってた (笑)

須藤 それいつくらいですか? 社長になってから?

大場 そう。「デスマってなんすか?」みたいな、そんな感じだった。

お、じゃあその秘訣を教えてください。うまく物事をすすめる秘訣。予定どおりにしっかり終わらせる秘訣。

須藤 逆算するんじゃないですかね…… (小声で)。

喜多 デスマは一回もないの?

須藤 あります。

喜多 あるのかよ!

死ななくてもデスマなの?

須藤 え、どういうこと?

喜多 誰も死んでないでしょ?

須藤 そうですね (笑) まだ「マーチ」してるだけですね、私は。

毎月 29 日リリースが続いている秘訣は?

須藤 たまにズレてるんですけどね、29 日にリリースしていることにしてますね。

卜部 納期があることを意識しながら書いているのが仕事のコードで、そうじゃないのは趣味みたいな感じ?

須藤 そういうのはあるかもしれないですね。Rabbit でこういう機能を入れたいっていうのを思い続けて、はや 5〜6 年になってたりするけど、別にいま進めてないわけじゃなくて、コツコツやってはいるので、そういう時間の感覚が違うっていうのはあるかもしれないですね。

卜部 そういうのが許されるのが趣味のいいところですよね。

誰かと一緒にやるとだいたい失敗します

納期以外に「仕事っぽい」って思ったことはありますか?

須藤 自分がいいって思ったものにちゃんと理由をつけないと、OK がでないんだなっていうことを感じたことはあります。

喜多 おお。

須藤 「こっちのがカッコいいじゃないすか?」みたいなのは通じない (笑)

でも、カッコいいって理屈じゃないじゃないですか。いまはそれに理屈をつけているっていうこと?

須藤 そうですね。「お客さんにとってもこのほうがいいですよ」っていうのを考えるようにしてますね。

卜部 なんだかんだで、カッコ悪いコードは書きたくないですよね。

須藤 カッコよくて、お客さんのためにもなる、っていうのにしないと。「コードを公開していいですか?」っていうのも「こっちがうれしい」だけだと、「え?」で終わっちゃって話が進まないので、「公開したほうがお客さんのためになるんですよ」っていうのを入れないといけないんです。クリアコードの仕事の内容というか、方向性がそうだから、っていうのもあるんですけど。

カッコ悪い機能の要求が出てきたらどうしますか?

須藤 どうしても無理だったら仕方ないんですけど、その前に「別の方法はないかな?」って考えると思いますね。

プロジェクトは何人でやるんですか?

須藤 1 人から数人ですね。

須藤さんはどういう立場?

卜部 1 人なら全部だよね。

須藤 そうですね。私は 1 人でやることが多くて、誰かと一緒にやるとだいたい失敗します。

ALL (笑)

喜多 失敗というのは?

角谷 悔いが残るみたいな?

須藤 時間内に終わらないとか。

出来栄えじゃなくて? 終わらないことなの?

須藤 終わらないのがわかってきて、慌てて終わらせる、みたいなのが多いですね。

喜多 終わってんじゃん、それ。

須藤 いや、そうなるのがつらくないですか?

喜多 つらいけど、失敗ではないよね。つらかったら失敗っていうこと?

須藤 失敗かな……。喜多さんの失敗は何億円からなんですか?

喜多 そりゃ案件によるよ (笑)

卜部 マネジメントがうまくいかないってことなんですか?

須藤 そうですね。他の人を見れないんだと思いますね、私はたぶん。

喜多 マネジメントできないってこと?

須藤 社長なのにね (笑)

組織的にフリーソフトウェアに関わっていけるようにしたい

じゃあ、社長の話も聞いてみますか。マネジメントできない須藤さんがなぜ社長になったのか。

角谷 社長になったのは何年目?

須藤 3 期目ですね。

新人から大出世じゃないですか。

卜部 いちばん若い人に社長をやらせようという発想ですか? それはどういう理由から?

須藤 どっち向きの話がいいですか?

どっち向きというのは (笑)

角谷 A/Bテストします? (笑)

喜多 表向きの理由と本当の理由があるの?

須藤 ……。 25046336051_7c6c1642b0.jpg

しゃべれよ (笑)

須藤 (渋々口を開きながら) 経緯としては……最初の社長は、技術以外のことを全部面倒見てやるぜ、潰さないぜっていうのを頑張ってやってくれてたんですが、1〜2 年やって、会社が潰れないような体制というか、仕組みができてきたので、交代した感じです。

卜部 それは立派だよね。

須藤 最初はお客さんがいないじゃないですか。そこがいちばん怖い時期で。で、ある程度やって信用してもらえて、固定客がついたので、今度は技術の会社をアピールしたほうがいいということで、技術者の私になったんです。

でも、他にも技術者いますよね?

須藤 そうなんですけど、飲み会の席で「須藤さんでいいんじゃないか」ということになりまして、1 時間くらい悩んで、「じゃあ、やります」と。

それで社長になって 8 年くらいたつわけですが、仕事のやり方としては変わってない?

須藤 マネジメントは基本しない (笑)

じゃあ、社長になったからって、何か変わったわけじゃないんですね。

角谷 会社としても自由なソフトウェアに寄与するっていうのは同じだろうし。

須藤 ただ、社内で決めることが増えましたね。

たとえば?

須藤 どういう仕事をとっていこうか、とか。

喜多 受注判定するってことか。

須藤 「受注判定」っていう単語があるんですか (笑)

喜多 社長がこの仕事を受けるかどうか決めるってことでしょ?

須藤 うーん。決めるのは、微妙なときだけですね。どっちかというと、これから伸ばしていくならこの方向で頑張るぞ、みたいな。ヤバいのを避けるのは前の社長がやってくれているので、それよりも先のことを見越して、これからどうやって進んでいくんだっていう判断をやってます。

なるほど。

須藤 前の社長のときはひとりで両方のことをやってたんですけど、私が社長になってからは、これからのことは私が関与するようになったって感じですね。「えー」って言いながらやってます (笑)

それじゃあ、クリアコードはこれからどういう方向に進んでいくんですか?

須藤 あー、そうくるかあ (笑)

そりゃそうでしょ (笑)

喜多 中期経営計画とかないの? (笑)

須藤 中期って何年?

喜多 3〜5 年。

須藤 もっと組織的にフリーソフトウェアに関わっていけるようにしたいです。いまはそのひとがぶつかった問題は、その人がアップストリームに還元しているんですが、仕事が忙しいけどバグ踏んじゃったみたいなことがあるので、そういうときに他の空いている人が代わりに直しておくとか、そういうのができるような体制を作りたいです。ひとりひとりがフリーソフトウェアの開発に関わるんじゃなくて、組織としてもっといい感じにできる体制にしてきたいな、と。

要件の切り分け方として、オープンソースに入れるか入れないかを考える

卜部 クリアコードでは、オープンソースソフトウェアを作る時間を意図的に作っているんですか?

須藤 仕事をしているなかで、その時間を作ってます。

卜部 仕事をどういうふうにオープンソースに結びつけていくかを考えるって感じ?

須藤 それを考えて提案するところが、うちの大事な仕事だと思っているので。

何か具体的な例を挙げてもらえますか?

須藤 最初のほうで Groonga の話をしましたけど、あれが典型的な例ですね。

お客さんのサイトの全文検索エンジンを作るってこと?

須藤 じゃなくて、Groonga を使った自社製品を売ってる会社があるんですね。そういう製品のパフォーマンスの問題とか、この機能があると嬉しいみたいな機能を作って、それを本体にも入れさせてもらって、誰でも使えるようにリリースするっていうのが、ひとつのパターンになってますね。

なるほど。

須藤 あとは、Firefox とか Thunderbird のサポートもやってるんですけど、アドオンとかで拡張できるんですね。それはサポートの時間で開発してるんですけど、そういう企業向けのアドオンを誰でも使えるようにして、公開するという形でやってます。それがもうひとつのパターンです。

最初に公開しますよって言っとくんですか?

須藤 規約みたいなのに書いちゃってます。著作権は弊社にあります、みたいな。そのときに公開できないやつはもちろんあるので、そこはきちんと分離して、こうやって分けることにメリットがありますよ、みたいに説明してます。

どんなメリットがあるんですか? もちろんケースバイケースだとは思いますけど。

須藤 たとえば、すでに公開してあるアドオンがたくさんあるので、こういうのがすぐ使える状態になりますよって言いますね。

ああ、すぐに使えるようになっているのは、他社もこうやって公開しているからだと。

須藤 あとは、メールとかウェブの閲覧とかって、ビジネスのメインじゃないんですよ。だから、そこを共有されてもその会社のビジネスにはあんまり関係ないので、公開してくれる場合が多いです。

Groonga の場合は違いますよね?

須藤 その会社専用にメンテナンスすると、会社用フォークみたいなのを作らなければいけないので、その分お金がかかりますよと言いますね。それよりは、公開したほうがお金が安くなりますよ、と。言い方としてはそういう感じです。

なるほど。おもしろいですね。「仕事の成果をオープンソースにする」っていう表面的な話は聞いてたけど、具体的な話ははじめて聞いたなあ。

卜部 やっぱフォークしないのは重要ですよね。社内で使ってたライブラリをオープンソースにしました! っていう話は多々あるけど、結局また社内でフォークされてたりとかして。

須藤 え、そうなんですか?

喜多 そんなんいっぱいあるよ。

卜部 なんだかんだで社内専用に。

角谷 ベースは出してあるんだけど、案件ごとにいじる部分がたくさんある。

卜部 そこでコピペが発生しちゃって、結局不幸になることが多いですね。そういうんじゃなくって、フォークせずにオープンにすれば、いちばんメンテナンスコストが低いというのは、そのとおりだと思います。

須藤 そうですね。そうやってコストの観点で説明することが多いですね。

おお、今日イチいい話だった気がする。

須藤 マジか (笑)

喜多 そのお客さんがやりたいと思っていることが、一般的にはこんなの全然ウケないよなっていうことだったら、どーすんの?

須藤 プライグインとかにしますね。

喜多 ああ、外出しにする。

角谷 本体には入れないで。

須藤 そこだけメンテナンスコストが発生するんですけど。

喜多 そこも公開するの?

須藤 ケースバイケースですね。でも、できればそういうふうにならないような形で、汎用性のある機能にしますね。そのほうが、本体のメンテナンスのときに一緒にメンテナンスできるので。できるだけそっちに寄るようなアイデアを出してますね。

角谷 要求を機能に落とすときに、うまいこと本体に入れると。

須藤 そうですね。これだったら本体に入れられるし、同じような目的が達成できるんじゃないか? みたいなのを模索するのが、仕事で頑張るポイントですね。

なんか新しい判断基準ですね。受託開発のなかで、要件の切り分け方として、オープンソースに入れるか入れないかを考えるっていうのは、新しい気がしますね。

角谷 オープンソースにできる分をどうやって増やすかみたいなのが、要求のさばき方の観点になるんですよね。

須藤 そうですね。 CIMG1846.JPG

角谷 そういうのあんまりないんじゃないかな (笑)。おもしろいな。おもしろいというか、興味深いな。

よかったね。

須藤 今日来てよかったかもしれない (笑)。

大場 そのやり方って、須藤さんが社長になる前からやってた? 須藤さんが作った?

須藤 私が社長になってからじゃないですかねえ。

喜多 最初の 2 期では、そういう戦略をとってなかったってこと?

須藤 どっちかというと生き残るほうが大事だったので。6

ある程度余裕ができたからこそ、可能になった戦略なのかもしれないですね。

角谷 オープンソースに関連する仕事をとにかくやるっていうのが最初の頃で、だんだんとオープンソースと仕事を結びつけていくっていうやり方になっていったんですね。

大場 そういうのをもっと組織的にやっていきたいっていう話だったんですけど、いまやってる OSS Gate にもつながるんですか?

須藤 うまいことつなげますね (笑)

OSS Gate: オープンソースに関わる人を増やしたい

須藤 我々は人数が少ないので、できることが限られるんですね。だから、オープンソースに関わる人を増やしたいと思っていて。

いまは何人ですか?

須藤 8 人ですね。それだと限りがあるので、自分たちでできないことをやるには、他の人たちを巻き込むというか、協力しながらやるしかないかなというので、OSS Gate というのを始めたんですけど。

OSS Gate について、簡単に説明してもらえますか?

須藤 昔に比べて OSS が一般的になってきて、知らないあいだに使っているというケースが増えてきたと思うんですけど、使っているだけで開発に参加しないっていう状況が多いんですよね。

ただ乗りしてる?

須藤 ユーザーが増えるのはいいことなんですけど、開発に参加する人も増えていかないと、いずれまわらなくなるかなって思っていて、そこを増やす試みが OSS Gate です。

対象者は?

須藤 OSS を使ったことしかない人ですね。開発に参加したことがない人。

角谷 単純に使うだけ? バグの報告もしたことない人?

須藤 そうですね。例として出すのは、バグやうまくいかないことを見つけたときに、Twitter に愚痴る人。愚痴って終わる人が対象です。そういう人たちがバグレポートするようになったり、Typo を直すようになったりするような世界が近づくといいなって。

もう開催したんですよね。

須藤 はい、1 回目をやりました。

どうでした?

須藤 効果があったなと思います。

具体的には、何をやるんですか?

須藤 実際に問題を見つけてバグレポートするまでを周りのフォロー付きで体験する、っていうのをやってもらいます。

角谷 その問題はどこに?

須藤 それは、普段その人が使っているものを実際に README どおりにインストールしてみて、サンプルを動かしたりするなかで見つけてもらいます。で、だいたい問題があるんですよ。

喜多 そうなんだ。

うまくいきました、みたいにならないの?

須藤 ドキュメントが更新されてなかったりとか、Typo があったりとかもするし。サンプルのインデントがズレてたり。そういうのって大したことないじゃないですか。本家の人にとっては。間違ってたゴメン、みたいな。なので、パッチが受け入れられやすい。でも、出す人は 1 回もやったことないんで。知らないことだらけなんだけど、やれば「これでいいんだ」みたいな。それを体験してもらってます。

じゃあ、ワークショップなんだ。

須藤 ワークショップです。たださんも来てて、楽しんでたみたい。あ、たださんはフォロー側で。

Twitter で愚痴る側じゃなくてね (笑)

須藤 そうです (笑) まあ、そういうので問題があったときに報告する人が増えればいいなと思ってます。それをもっと広げていきたいなと。

須藤さん自身はどうでした? 最初の頃。自然にパッチを送れました?

須藤 私は自然にやってた気がするんですよね。

卜部 「return if 〜と書くのが気に食わないんですけど」って、咳さんに送ってますもんね。

須藤 (笑)

自然にやってたってことは、今やってない子たちはなんでやってないのか不思議に思ってる?

須藤 そう。それがわからなかったのが、ちょっと前までの私でしたね。

角谷 そういうのがわかるようになった、と。

須藤 彼らができないのは「体験したことがないから」っていうだけでした。

喜多 やってみたらできるようになったと。

須藤 そういうことがわかりました。

やればいいじゃん、と。

須藤 私はひとりでできる派だったから、あんまり気にならなかったけど、周りのフォローがあればできる人も結構いるんだなあと。じゃあ、そこはフォローしますと。そのあとはひとりでできるよね、ってなるのがいいかなと思ってますね。

クリアコードから OSS Gate まで、自然な流れでしたね (笑)

普段の生活

年とってきて、文字が小さいと見えなくなって

使っている計算機は何ですか? そういえば須藤さんって、ノートパソコンを持ってないですよね。

須藤 そうですね。コレ (目の前にあるノートパソコン) は会社のやつですけど、ノートパソコンで開発しようとは思わないですね。

家と会社のデスクトップでしかやらないの?

須藤 できればそのほうがいいと思っていて。でも、ビルドするときに CPU とメモリが不自由なく使えれば、それでいいです。こだわりはないですね。

ノートパソコンだとイヤなのは?

須藤 あ、画面が狭いからです。年とってきて、文字が小さいと見えなくなって。

ALL このなかでいちばん若いだろ (笑)

須藤 年とるとフォントのサイズが大きくなってくるじゃないですか。

喜多 そう? 大丈夫だけど。

須藤 昔はディスプレイが狭かったから大丈夫だったけど、最近は画面が広くなっちゃって。

卜部 画面の解像度が上がってきたってこと?

須藤 はい、だから文字が小さくなっちゃって。あと、私の視力も落ちてきて。老化もあるので。なので、見る場所が増えたほうがやりやすいです。

あとは、OS とエディタは?

須藤 Debian GNU/Linux を学生の頃から使ってます。

角谷 ウィンドウマネージャは?

須藤 GNOME 3 ですね。

卜部 Debian のなかではそんなにね。異端って感じでもなく。

須藤 普通の。ターミナルとブラウザと Emacs があればいいです。

ブラウザは?

須藤 ブラウザは Fire …… Iceweasel です。

卜部 Debian はね。Firefox じゃないんだよね7

プライベート

あとはプライベートの話を。

卜部 仕事は何時くらいに終わるんですか?

須藤 今は子育て期間中ですが、いつもはだいたい 10 時から 19 時まで仕事ですね。10〜14 時がコアタイムで、帰りたい日は早く行って 15 時に帰ることもできますけど。

それで、趣味は?

須藤 プログラミング。

それはナシで。

須藤 えー。

たとえば、映画、本、音楽、ゲーム、スポーツなどなど。

須藤 ……。

じゃあ、ひとつずつ聞きますか。 CIMG1851.JPG

映画

好きな映画は何ですか?

須藤 私、観ると忘れるんですよ。

卜部 映画は観ます?

須藤 私、学生の頃から「映画の日に何か観る」っていうルールで運用してるんですよ。

角谷 29 (肉) の日にリリースして、1 日に映画を観る (笑)

でも、映画にあまりこだわりがない?

須藤 マイナーなのが好きですね。

最近観たのは?

須藤 ……。

1 日に観るっていうから聞いたのに (笑)

じゃあ、本。本って読みます?

須藤 図書館に予約して、来たら読んで返して、みたいな。

最近読んだのは?

須藤 ……。

なんだよ (笑)

卜部 電子書籍では読まないんですか?

須藤 あっ、電子書籍で最近読んだのは、田中さんの『API デザインケーススタディ』ですね。もらったので。

卜部 どうでした?

須藤 電子書籍って大変だなって思いましたね。専用端末がないとやっぱ大変だなって。

卜部 デスクトップパソコンで読むのは大変かも。

須藤 スマートフォンで読むと小っちぇなあって。

卜部 iPad くらいあればなんとか。

須藤 そうですね。老化も進んでますからね。

卜部 iPad くらいの大きさなら横向きに持って読めるんで、本を読んでる感がでる。

須藤 そういうのを持ってないので、私には難しいなって。

卜部 電子書籍というか、ハードウェア的な話で難しいと。

須藤 私はまだダメだな。

会社のブログには、献本してもらった本の感想を書いてますよね。

須藤 あれはちゃんと読んでますよ。もらったら書評を書きますよ。

卜部 「本を読んで感動した!」みたいにはならないんですか?

須藤 本もやっぱり忘れるんで……。

小説か技術書かでいうと、どっちを読みますか?

須藤 技術書のほうが多いですね。でも、インターネットで見て、これ読んだほうがいいかもっていうのを図書館で予約しているだけなので、いざ手元に来たときになんで入れたのかわからないんですよ。

だいぶヤバいですね。

須藤 いまも SF 小説を読んでるんですけど、なんで読んでいるのかわからない (笑)

角谷 たださんがおもしろいって言ってたのかなあ? とか (笑)

インターネットで見たときにメモしとかないとですね。

須藤 あんまり覚えておく価値を感じてないというか、忘れていいと思っているんですよ。私、多読派なので (笑)

音楽

じゃあ、音楽。好きな音楽は?

須藤 私が好きなのは、だいたい解散しちゃうんですよね。

卜部 会社で仕事するときは、音楽聴きながらやっていいんですか?

須藤 明確なルールはないですけど、かけないですね。静かですねって言われますね。

音楽はあったほうがいいですか? ないほうがいい?

須藤 みんなでやってるときはないほうがよくて、ひとりのときはどうでもいいです。

卜部 で、何が好きなんですか?

須藤 SUPERCARSpangle call Lilli line。たぶん知らないと思いますけど。

SUPERCAR は知ってる。

喜多 ジャンルは?

須藤 同じフレーズを繰り返す系?

卜部 ちょっとよくわからない (笑)

ゲーム

じゃあ、ゲーム。でも、テレビないんですよね。

須藤 ないですね。昔はゲームもやってたんですけど、大学入ってからはやってないですね。

奥さんもテレビなくて大丈夫なんですか?

須藤 ぜんぜん大丈夫ですね。元々、2 人ともテレビないんですよ。だから、テレビが持ち込まれない。

へえ。携帯端末でもゲームしない?

須藤 うーん。

じゃあ、次。

スポーツ

スポーツやってました?

須藤 やってない。たまにボルダリングを誘ってもらえたときに行く、みたいな感じで。でも、それもちょっと……。

観るほうもしない?

須藤 しないですね。

……。

須藤 なんか無趣味な人みたいですけど、大丈夫? 大丈夫?

喜多 盛り上がらないね、これ。

たいやき部

たいやきは?

須藤 あ、たいやきは趣味だわ。

喜多 唯一の趣味だねこれ。

たいやき部って何年からやってましたっけ。 taiyaki.png

須藤 喜多さんの日記を見るとわかりやすくて、2008 年から。このときに LL Future をやってたんですよ。で、夜に大場夫妻を呼び出したんですね。「ちょっと来い」つって。

喜多 それまで新宿で 2 人で飲んでて、それから中野に行って、中野の会場まで大場さんたちを迎えに行ったんじゃなかったっけ。

須藤 こっちからわざわざ行ってやった、みたいな雰囲気?

喜多 いや、違うわ。結局、中野の飲み屋で待ってたんだ。大場さん夫妻が来るのを。

卜部 それがどうなったらたいやきにつながるのかわかんないんですけど (笑)

須藤 日中にたいやき食べてました。

2 人で行ったのがたいやきツアーの初回なのかな。大場さんのくだりはなんだったんだ (笑)

角谷 ツアーの途中で大場さんを呼び出したと。

須藤 途中じゃなくて、終わったあとに呼び出しました。

大場 あのときは、飲み屋でグデングデンになってる状態で呼び出されて。僕は 1 日券持ってたのに、午後のセッションぶっとばすことになって。

角谷 有意義でした? (笑)

大場 絡まれた (笑) CIMG1864.JPG

喜多 たいやき屋を 4 軒まわって、新宿で 4 時半くらいから飲んでて、須藤さんが突然「大場夫妻と飲みたい」とか言い出して。

須藤 私が?

あれ、覚えてないの?

須藤 呼び出したのは覚えてるけど、私だとは……。

喜多 須藤さんが言い出したから、Twitter で大場さんに「飲めますか?」って連絡して。

大場 喜多さん経由で連絡が来たんだけど、ぜんぶ須藤さんの言葉でしたね (笑)

須藤 その頃から大場さんをいきなり呼び出してたんですよ。今日もそうだけど (笑) それでもめげずに来てくれて。

大場 そのときにたいやき部のサイトを作ろうってなって。サーバーどこに置くかとか相談されて。

卜部 須藤さんとたいやきのはじまりはどこなんですか?

須藤 たいやきはそんなに好きじゃなくて。

なんだそれ。何言ってんの (笑)

須藤 あんこ、あんこが、あんこが好きなんですよ (慌てながら)

小さい頃から?

須藤 たぶん。

たぶんって何だよ (笑)

須藤 青森だと「おやき」って言うんですけど。こっちだと「今川焼き」って呼ばれるものを子どもの頃からスーパーとかで食べていた気がするので、たぶん好きだったと思いますよ。その延長で、あんこが入っているたいやきも好んで食べてたんじゃないかと。

喜多さんも好きだったんですか?

喜多 うん。Ruby 会議か何かの懇親会のときに、盛り上がったんだよね。たいやきの話で。

須藤 覚えてない。

喜多 でも、それまで接点がなかったんだから。

須藤 ですって。

卜部 それで、今度お店をめぐろうみたいな話になった?

喜多 須藤さんが「行きたいたいやき屋があるんですけど……」とか言って。

須藤 なんか言いそう。私が言いそうだわ。

喜多 それで何軒かピックアップして。それで 4 軒行ったら、2 軒閉まってた (笑) それが最初のきっかけ。

卜部 それを部活動として続けようと思ったのはなぜですか?

須藤 おいしかったからじゃないですかねえ。

卜部 行けなかったところが悔しかったとか?

喜多 なんでだっけ?

須藤 ノリじゃないですか? たぶんノリでした。雑な話題だなあ、これ。

卜部 でも、たいやき部が育ってきてるし。

Ruby 会議でも「たいやき部です」って自己紹介する人がいたよね。

角谷 あと、プログラマじゃない人もいますよね。純粋にたいやきが好きな人とか。

OSS Gate と同じような感じになっちゃってますね。

須藤 たいやきを食べたいけれど、なかなか食べれない人が対象 (笑)

卜部 今はどんくらいの頻度で活動してるんですか?

須藤 聞きますよね、この流れだとね (笑) でも、去年は 1 回しかやってないんですよ。新年会だけ。でも、おととしは伊勢まで遠征したんですよ。1 泊 2 日で。

卜部 今年も新年会をやらないといけないですね。

須藤 今年は千葉のやつに行きたいなと個人的には思ってるんですけど。

部員は募集してるんですか?

須藤 募集してますね。コチラまで↓

http://taiyaki.ru/how-to-join/

喜多ファンクション倶楽部」で最初の部員募集が始まったんだよね。

須藤 ミムラくんにはじめて会ったときですね。

ファンクション倶楽部って何?

須藤 永和さんのイベントです。

喜多 「lambda the world」っていうイベントがあって。

角谷 オブジェクト倶楽部じゃなくて、もっと関数型を勉強しようっていう。

卜部 たいやき部は新規開拓なんですか? 過去に行った鉄板のお店にもう 1 回行こうとかはない?

須藤 全体のうちの何軒かは、そういうのを入れざるを得なくなっていますね。

喜多 イヤイヤかよ (笑)

基本的に 1 日に複数の店舗をまわるんですよね。

須藤 ハシゴですね。それがコンセプトです。

喜多 たいやき好きではない人には罰ゲームみたいな (笑)

僕も入ってたけど、仮入部で終わっちゃった (笑) 2 個くらいでいいんだもん、たいやきなんて。

喜多 確かにね (笑)

みんな 5〜6 尾とかね、食べるんだよ。

須藤 ペロリですね。でも、歩くからね。

卜部さんはどうですか? あんこ。なんで僕が勧誘してんだって感じだけど。

卜部 あんこがおいしいっていうところと、外皮がおいしいっていうところがありますよね。あんこばっかりだと、私は重たいかなあ。

須藤 いろんなの食べるとね、それぞれ良し悪しがわかりますね。

仮入部しましょうよ。

卜部 そうですね。

僕はもう行きませんけど (笑)

駒忠部

卜部 お昼ごはんはどこで食べてます?

須藤 普段は会社の近所ですね。ここ半年くらいは健康診断でアレが出たので……健康そうな定食とか。

喜多 何が出た?

須藤 石が見えたとかで。腎臓に。でも、ちゃんと専門のところに行ったら、ないですねって言われて (笑)

なかったんだ (笑)

須藤 それまでに出ちゃったか、和食が効いたか。

卜部 会社の人たちと行くんですか?

須藤 みんなバラバラなんですよ。お昼に入る時間が。

卜部 まあね、フレックスだったら。

喜多 盛り上がらないな、プライベートの話 (笑)

卜部 会社のみんなと「よし飲みに行くぞ!」みたいなのもない?

須藤 そういうのがあんまり好きじゃない人たちばかりで。

ALL (笑)

卜部 社長が言い出せばいいじゃないですか。

喜多 飲みに行かないと懲戒解雇にすればいいじゃん (笑)

須藤 パワハラ (笑)

卜部 でも、飲み会で解決するようなところはそれで解決するんだから、ある意味シンプルじゃないですか。飲み会が好きじゃない人ばかりだと、逆に大変ですよね。

お酒は好きなんですよね?

須藤 目の前にあれば。

こだわりはないのか (笑)

喜多 会社の忘年会とかないの?

須藤 あるんですけど、前の社長と私がしゃべって終わる、みたいなのが多いです。

ALL ……。

卜部 ひとりでお酒を飲みに行くことはない?

須藤 あんまりないですね。駒忠部なので。

駒忠部 (笑)

喜多 その話はしといたほうがいいんじゃない?

角谷 あんまり広がらなさそう (笑)

いちおう、駒忠とは何ですか?

須藤 駒忠とは……あれはフランチャイズなんですかね。「駒忠」というのれんを下げた居酒屋が都内各所にあるんですよ。 25046333821_9a685b4200.jpg

角谷 元々は須藤さんが私にご馳走したいって言ってくれたことがあったんですけど、須藤さんが「近所の気になるけど入ったことのないお店にしましょう!」って言って。うちの近所のバス停の前にある「駒忠」ってお店が、いつも見るんだけど入んねーなーって感じなので、行ったんですけど。そしたら「ヨシュアツリーの法則」じゃないけど、気にかけるといろんなところに存在することに気づいて。それまでは気にもかけてなかったんだけど、総武線で移動してると、あれ?ここにも駒忠?ここにも?みたいな。

駒忠コンツェルン?

財閥みたいな? (笑) でも、お店によって違ったりするんですよね。

角谷 メニューとかもぜんぜん違うし。生ビール大があったり、なかったり。

須藤 名前だけ同じで、統一感がない。

卜部 暖簾分けなのかもね。

角谷 特においしいとか、そういうのでもなく。

須藤 まずいわけじゃないんだけど (笑)

角谷 それに、安いわけでもないんだけど。

須藤 最終的には高いですもんね (笑) 2 人で 1 万円以上払ってますよね。

角谷 払ってますよね (笑)

駒忠部というのは、何かあったら駒忠に行く部? サイトはあるんですか?

須藤 サイトはなくて、私と駒忠に行ったら部員ですね。

喜多 オレも 1 回行ったことあるから、部員になってるんだ。

角谷 あとは (大場) 寧子さんも。御茶ノ水会員 (笑)。

でも、須藤さんから誘うことはあまりない?

須藤 そうですね、私は角谷さんと行ければ十分なので。

部員になりたい人は、須藤さんに「駒忠行きませんか?」と誘えばいいんですかね?

須藤 そうですね。でも、YAPC::Asia の日に開催したら、来なかった人がいて……。

さびしいね (笑)

今後について

フリーソフトウェアを開発することで、仕事につながるようになればいいな

卜部 YAPC::Asia で思い出したけど、対外発表とかはしないんですか?

須藤 一回もやったことないので……海外はちょっと。

卜部 いや、対外 (たいがい) 発表。

須藤 あッ (笑)

角谷 Ruby 会議はいつもやってますけどね。

卜部 ありがとうございます。

角谷 それ以外だと?

須藤 今年は OSS Gate の進行をやってるのと、2 回外向けの発表をしてます。 nginx のイベントがあったので、そこで LT したのと……。

卜部 nginx の活動もしてたんですか。

須藤 Groonga で nginx のモジュール作ってるので、それの紹介を。

卜部 nginx と Groonga はあんまりつながらない気が……。

須藤 Groonga をリモートから使うプロトコルとして HTTP が楽なので、HTTP だけ nginx にまかせて、あとは全部 Groonga で処理するみたいなモジュールですね。そういう事例を紹介したのと、あとは Groonga のイベントが肉の日 (2 月 9 日) にあったので、そこでしゃべりました。なので、ポツポツとはやってます。

卜部 業務の一環みたいな感じだ。

須藤 クリアコードと関連プロダクトを知ってもらうことにより、問い合わせが来る可能性が高まるっていうのが、うちの営業スタイルというか。

卜部 営業セミナーみたいな?

須藤 クリアコードがどうこうという話はしてなくて、興味を持って調べたらうちの会社につながるといいなあ、っていうくらいでやってますね。

積極的な売り込みじゃなくて、そこはかとなく。

須藤 情報提供するだけの感じで。開発のメーリングリストを見れば、この人がよく回答してるってのもわかってもらえるし。フリーソフトウェアを開発することで、仕事につながるようになればいいな。そういうので、うちはやっていきたいです。

中長期計画的にもね。

須藤 あっ、そういう感じです。 CIMG1863.JPG

アドリブで適当にしゃべるのは、そんなに苦じゃないんで

卜部 OSS Gate みたいなワークショップで苦労はありますか?

須藤 あれはもうコンテンツがあるので、今はもう楽になりましたけど。最初にコンテンツ作るのが大変ですね。

卜部 コンテンツ作る苦労はありそうですね。

須藤 脳内シミュレーションして、それを勝手にぶつけてみるのが、私の唯一できるやり方なので……。

卜部 それでうまくいってるからすごいですね。

須藤 うまくいったらうまくいくし、うまくいかなかったらうまくいかない (笑) でも、1 回やったらフィードバックかかるんで、方向性がよかったらそのまま調整できますね。OSS Gate もそういう感じになってます。

schoo にも出てましたよね。ああいうオンラインの授業は大変なんですか?

須藤 ああ、リーダブルコードのやつ。あれはそんなに大変じゃないですね。なんでかっていうと、本の内容をそのまま持ってきてるからです。

でも、しゃべるのって大変だよね。しかもインターネットに顔出し (笑)

須藤 アドリブで適当にしゃべるのは、そんなに苦じゃないんで。

なんと。じゃあ、このインタビューでもアドリブを効かせてくださいよ!

ALL (笑)

須藤 今のはナシで (笑) なかなか難しいですよねえ、オンラインでやり取りするっていうのはねえ……。もっと角さんに教えてもらわないとな、って思ってます! (白々しく)

いや、ナシにしませんよ (真顔)。

今後の展望

今後の展望は?

須藤 OSS Gate をやっていきたいなと。でも、課題があるので、そこのへんを協力してくれる人がいるといいなと。

課題とは?

須藤 「経験したことがない人」って、1 回参加したら「経験したことがある人」になってしまって、次から来ないんですね。でも、継続的にやるようにしたいので、未経験な人を継続的に集めるというのが課題ですね。

推薦してもらったり、紹介してもらったり。

角谷 お友達や後輩を連れてきたり。

卜部 学生を引っ張ってくるとか。毎年 4 月に大量に供給されるから。

須藤 学校関係の人とか、協力してくれるといいなあと。あと、東京以外でも開催できるようになるといいなと思ってます。

卜部 須藤さんが出向いて行ってやる感じ?

須藤 最初はそれでいいと思うんですけど、継続したいので、現地の人でまわるといいなあ。

若手に一言

じゃあ、若手に一言。

須藤 OSS Gate の取り組みともかぶるんですけど、Ruby を使っているだけじゃなくて、是非 Ruby 本体や gem にもコントリビュートできるような人になってほしいです。

次のインタビュイー

卜部 次のインタビューは誰にします?

須藤 角さん。

いや、僕は Rubyist じゃないから (笑)

須藤 マジか。Ruby 書いてるじゃないですか。

でもこれ「Rubyist Hotlinks」だからね。

須藤 マジかー。じゃあ、喜多さん。

喜多 いや、オレもいやだよ (笑)

須藤 なんだよー。

友達が少ない (笑)

須藤 えー、断られると思わなかった。

卜部 るびま的には、角さんがダメってことはないですよ。

須藤 本を宣伝したらいいじゃないですか。

いや、るびまにはこの回だけ出演して消える。

角谷 友情出演 (笑)

卜部 須藤さんも昔はそういうポジションで、るびまのインタビューでなぜか須藤さんが野次馬してるっていうのがパターンだったね。

須藤 なぜか、ね。

それがついに本編に登場。次の人は今決めたほうがいいんですか?

卜部 そんなことはないけど。

角谷 時間が空くとわかんなくなっちゃう。

卜部 ここで止まってしまうのもイヤなんで、とりあえず決めたいね。

須藤 じゃあ、笹田さん。

笹田さんって最後じゃなかったんだっけ。

須藤 そう思ってたんですけど、やっても終わりにしなくていいみたいなことを言ってたから。

角谷 元々は笹田さんが聞いて回るみたいなのだったから、最後は笹田さんかな? って感じだったけど。

卜部 もはや笹田さんじゃないから。

念のためにもうひとりくらい候補者を。

須藤 じゃあ、高橋さん。

大場 ラスボス感がある。

ねえ、最終回感がある。

角谷 最終回に向けて (笑) 仮面ライダーだと終盤ですよ。

じゃあ、笹田さんかな。笹田さんなら「Rubyist じゃないから」って断らないと思うよ (笑)

大場 「C しか書いてないし」って言うかも。

角谷 そういうのはあるかも。

須藤 じゃあ、笹田さんに連絡してみます。

(しばらくして)

須藤 断られました!

ALL (笑)

須藤 mrkn さんはどう?って言われました! むらけんくんからはオッケーもらったので次回はむらけんくんでお願いします!

喜多 若かりし頃のむらけん節炸裂すると面白いね。

最後に

卜部 最後にクリアコードの宣伝も言い放題ですよ。

須藤 うちはそういうビジネスモデルじゃないので……。

卜部 仕事はどっから来るんですか?

須藤 インターネットで見つけた人からが多いですね。

角谷 これ (るびま) インターネットですよ (笑)

須藤 そうか (笑) お金を稼ぎながら、成果を自由に使えるようにしたい方は、こちらまで。

社員募集?

須藤 社員じゃなくても、一緒に仕事をするのにいろんな形があると思うので、そういうのをやってみたいという人といろいろ模索したいです。

クリアコードと一緒に何かをやりたい人を募集ということですね。

須藤 OSS が好きだけど、何もできてない人。でも、なんかモヤモヤしてる人。そういう人たちと一緒にできたらいいなと思ってます。

喜多 社員募集はないんだ。インターン来てほしいっていうのもないんだ。

クリアコードとして人を育てたいっていう感じじゃないんだね。

須藤 自由なソフトウェアが大事っていうのは、あとから付け加えられるわけじゃないと思うので。

大場 野生の OSS デベロッパーがほしい?

須藤 クリアコードとしては、好きでやってる人を支援できる組織、ぐらいのほうがいいので。うちに入社したらできるようになると思っているような人は、あまり向いてないと思います。私、マネジメントもできないし (笑)

ALL マネジメントもできないし (笑)

いいオチだ (笑) 25046336931_3e8f875013.jpg


  1. Ruby のコミッターに 1981 年生まれは 8 人いるそうだ。 

  2. 今も (少なくとも) mruby に関しては反応が速い。 

  3. XP の生みの親であるケント・ベックは、Smalltalk 用の SUnit を書いたあとに、Java 用の JUnit を開発している。 

  4. たとえば、 Gauche では map-to でできる。 

  5. Ruby を 256 倍使うための本シリーズ 

  6. より詳しい経緯はクリアコードのフリーソフトウェアビジネス - ククログ ( 2013-07-24 ) にまとまっている。仕事の成果をフリーソフトウェアにするあたりの話はクリアコードとフリーソフトウェアとビジネス - ククログ ( 2015-09-17 ) にまとまっている。 

  7. Iceweasel は、インタビュー後に無事 Firefox に戻ったようです。