大企業から離れることに不安は無かった

西村:それで2002年にそういう趣味でOSの開発を始められて、2005年にはてなに転職されてますよね。この時はやっぱり、そろそろだっていう感じだったんですか。

蓑輪:そうですね。確か3年目4年目くらい。最初の会社の3年目4年目くらいで、よく言うじゃないですか。最初の3年ぐらいは辞めずにちゃんと1つ目の会社にいろ。それを結構間に受けていて、じゃあそろそろかなっていう。それで、はてなに入りました。

西村:やっぱWeb系がよかったんですか。

蓑輪:それよりもその当時、僕ははてなダイアリーとかはてなアンテナを使っていて、それを作っている会社が募集しているらしいというのを聞いて、見学に行ったのがキッカケです。

西村:リアルユーザで、ユーザとしても愛着みたいなものは持っていた。エンジニアにとってはやっぱり、今もそうですけど、はてなは日本のエンジニアにとっても大きな存在ですよね。

蓑輪:そうですね。

西村:でも何か、先程もちらっと収録前にお伺いしたんですけど、ソニー系のシステム開発子会社からはてなに行くって、親御さん嘆いたりしないんですかね。って言ったらはてなに失礼ですけど。

よく私、この業界取材しているとそういう方多いんですね。おじいちゃんも知っている立派な名前の会社から、ポっと出のTwitterとか……ポッと出って言ったら本当に失礼ですけど、でもなんかそう見えるわけじゃないですか。

蓑輪:いや、特にそれはなかったと思います。

西村:本人にもなかった。

蓑輪:そうですね、はい。好きなことやればいいんじゃない? みたいな感じ。

はてなの社内環境から学んだこと

西村:2005年はてなに入られて、大きく関わってらしたプロダクトがふたつあると思うんですが、1つがRSSリーダーのはてなRSS、もう1つが動画サービスのRimo。この辺、どういうプロダクトだったのかというところと、どう関わったのかというところをちょっと。

蓑輪:はてなRSSは本当に単純なRSSリーダーで、はてなのサービスとうまく連携する、例えばはてなRSSで読んでいる記事をすぐはてなブックマークできるとか、そういう機能があるようなRSSリーダーで、それはサービスディレクターとして関わっていました。最初は開発、その後ディレクターで、プロダクトをどう伸ばしていくかとか、デザインとかコーディングも全部やっていました。

Rimoの方はそれもディレクターというかクリエイターみたいな感じで。開発合宿で僕ともう1人の同僚とで考えて作ったサービスが社内でウケたので、それをローンチ、一緒に開発を継続していった。

それは、動画をものすごく簡単に見られるっていうサービスで、その当時YouTubeとかニコニコ動画を……今もありますけども、見ていて思ったのが結局、パソコンの前に居ないといろいろ困るよねって。

ニコニコ動画だったらコメントしなきゃいけないし、YouTubeだったら5分間の動画を見た後に次は何を見ようかクリックしなければならない、もしくは検索しなきゃいけない、って言うのがあったんですけど。

でもテレビとかって、ただゴロゴロ見ているだけじゃないですか。1回つけてリモコンでこうポチポチやってるだけなんですけど、それぐらい簡単に見られる動画サービスがあったらいいんじゃないかって言うコンセプトで作ったのがRimoですね。

西村:パッシブと言ったらアレですけど、あまり考えなくてもずっと見続けられる。どんどん向こうから出してくれる。Rimoはリモートのリモなんですか。

蓑輪:そうですね。

西村:まぁ結構それは最初のコンセプトから始まって実装まで全部やったっていう。はてなもやっぱそういう自由度というか裁量責任というか、大きいんですか。

蓑輪:そうですね。責任も伴いますが、自由度もすごく高いですね。手をあげてこれをやりたいって言って、それこそ社長の近藤を説得できれば、もう何でもできるって環境です。

西村:すごい些細な話のようなんですが、その時の開発はPerlだったりするんですか。

蓑輪:はてなRSSはPerlで、RimoはRailsでした。

西村:そうなんですか。

蓑輪:かなり特別な感じで。僕らが希望してRailsにしてます。

西村:その辺は何か。蓑輪さん自身、こだわりというか好き嫌いというか、何かあるんですか。

蓑輪:そうですね。Perlがあまり好きではなかったので、その頃流行り始めていた最新のRailsで作ってみたかったっていうのが大きいです。

西村:でもこの頃の開発現場の話をすると、Schemeとかを勉強されていた。

蓑輪:まだその頃はしていなかったかもしれない。

西村:結構OSもやられている一方で、言語処理系とかいわゆるコンピューターサイエンス的なところで、言語処理系をかなりやってらっしゃるって聞いたんですけども。そのへんって先程おっしゃった、エンジニアとしての長い目で見たときのスキルみたいなもの、言語やっとかなきゃなあ、みたいな感じのことを?

蓑輪:そうですね。それはすごくあって、それこそRubyのまつもとさんが「言語処理系やればいいんじゃない」って言うようなことを書いている記事を読んだこともありましたし、尊敬するハッカーの人たちが言語処理系に詳しい人たちが多かったので。

あとは先程ちょっと話にでたんですけど、僕は物理出身でコンピューターサイエンスを大学で学んでいなくて、そこがコンプレックス、というか弱点だったんですね。今も弱点なんですけど。

なので、そういったことを体系的に作りながら学べる題材として、言語処理系はすごいよかったかなと。先程例に出されていた、ハッシュテーブルを一度自分で実装してみるのと、本で読んでハッシュテーブルのオーダーはオーワンですって理解するのは、全然違う話なので。

ゼロから始めるか、既存のシステムに乗っかるか

西村:でもそこなんか、ちょっと話が微妙にずれますけど、選択肢として例えばRubyの開発に加わってみる、既存のものに乗ってみるのもあると思うんですけど。例えばSchemeだったら日本の開発者のGaucheっていう処理系を作ったすごいハッカーがいて、そこにあるわけじゃないですか。そこに加わるのと自分で始めるのと、そのバランスはどのように。

蓑輪:それも単純に好みの問題だと思うんですけど、僕は1から作るのが本当に好きで。なんでかっていうと、1から作ればおいしいところがいっぱい残ってるからなんです。

今からRubyの開発に参加するのも全然ありだと思うし、勉強にもなると思うんですけど、おいしいところはそんなに残ってないかなと。一番楽しい部分はまつもとさんがやられちゃった後だと思うので。

西村:そこは私、そのRubyの開発をやってらっしゃる方の話を聞いたことあるんですけど、Rubyが完成してると思っているのは全くの誤解で、やるべきことは山のようにあって、お金さえあればいくらでも、お金というか時間があればもっと開発できる。まあ両面ありますよね、ゼロから作る楽しさと。

結構、Schemeとかをゴリゴリやり始めたのは何年ぐらいなんですか?

蓑輪:Schemeやり始めたのは……

西村:Mona OSの後ですよね。

蓑輪:そうですね。未踏に採択された、2006年頃。

西村:未踏に採択されたっていうのは、未踏ソフトウェア創造事業に採択されたってことですね。プロジェクトの概要っていうのはMona OSではなく?

蓑輪:Mona OSにSchemeのシェルを作るっていうテーマ。

西村:その時にはまだ言語処理系はなかった。

蓑輪:なかったです。

西村:じゃあ、もともとシェルを作る目的があって、だったらSchemeでやりたいって言う。Moshって名前で。

蓑輪:それはまた後継のもので、その時はまだ名前のないただ普通のシェルで作ってました。

西村:ちなみにそれ完成?

蓑輪:一応完成したんですけどなんかいろいろ反省点があって、例えば選択したデザインがあまりよくなかったのでそんな早く動かなかったり。

もっとテクニカルにいうと、インタープリターを木をたどるようなインタープリターにしてしまって、VMにしなかったんですね。なのでやっぱり実行が遅くてそこがすごく気になったりとか。あとはシェルとしてのAPIデザインを初めてやったので、その辺がまずい設計がいろいろあったって反省があってその後、Moshって言う新しい物を作った。

西村:そのMoshは言語処理系であり、シェルにもなる。

蓑輪:なります。

Rubyを使ったシェルはなぜ登場しないのか

西村:ちょろっとしか使った事なくてわかってなかったんですけど、またディープな話なっちゃいますけど、興味がある方いらっしゃると思うのでちょっとその辺ももう少しお伺いしたいんですけども。Schemeを使ったシェルとか、Rubyを使ったシェルとか、必ず皆考えることで。シェル嫌ですよね、なんかいろいろ。なんで無いんですかね、未だに。

蓑輪:それは難しい。

西村:やられてたからこそ難しさがお分かりになってると思うんですけど。

蓑輪:根本的な問題は、すべてのOSにプリインストールされていないのが問題だと思っていて。本当のベーシックなシェルとかbashとかって、どのLinuxディストリビューションにもOS10にしても、下手したらWindowsにも後からいれれば簡単に入るような感じ。

なので、皆それを当てにしてシェルスクリプトが書けるんですけど、今から新しいRubyで動くシェルを作っても、それが例えばDebianに最初から入ってるかUbuntuに最初から入ってるかっていうと入ってなくて、じゃあそれ使えないよねって話になっちゃうのが一番の問題なのかな。

西村:でも何か最近だと、開発者の方でコマンドラインやってらっしゃる方はZシェルとか使ってらっしゃって、結局入れてるじゃないですか。シェルスクリプトと、開発者とかユーザとかが使うインタラクティブなシェルとは、ちょっとニュアンスが違うのかなって気がして。

インタラクティブな方だとパイプをつなげたり、またはxargsなんかオプションだとかややこしいですよね。もっとスッキリかけたら良いのになとか思ったりしますけど、その辺でも可能性無いですか。

蓑輪:もちろんあると思います。ただそのパイプとかの話はOSとしての思想の話なので、つまりLinuxとかUNIXの思想としての話なので、使わざるを得ないというか。インターフェースを変えても結局パイプっていうものはなくせないと思うので、その辺は若干は残ると思います。

制作協力:VoXT