小飼弾のアルファギークに逢いたい♥

#18コミュニティーエンジン 森田 創(omo)

今回のゲストは、WEB+DB PRESS Vol.50から新連載『WebKit Quest――ソースコードから読み解くブラウザエンジンのしくみ』が始まった、コミュニティーエンジン⁠株⁠の森田創(はじめ)さんです。

右:森田創氏、左:小飼弾氏(撮影:武田康宏)
右:森田創氏、左:小飼弾氏(撮影:武田康宏)

自己紹介

弾:ではまず、⁠徹子の部屋』ならぬ、⁠Alpha Geekに逢いたい』へようこそということで(笑⁠⁠、自己紹介を。

森田(以下、森⁠⁠:コミュニティーエンジンという会社でオンラインゲームなどの開発をしていて、基本的には受託開発とゲーム用のミドルウェアを作る仕事をしています。入社2年目です。最初に入った会社は組込み系で、そのあとしばらくしてSIの会社に入ったんですけど、SIは思ったよりも合わず、すぐ辞めて、今の会社に来ました。そのSIの会社は商社っぽい企業で、プログラマはわりと脇役で。

弾:ブログを拝見すると、主に使ってるのは、RubyとC++ということでよいですか。

森:最終的な納品物はC++がメインで、Rubyはその他の業務ですね。あとはPythonとActionScriptも使ってます。

C++との出会い

弾:C++とはどんな出会いだったんでしょうか。

森:大学に入った10年ちょっと前、Webはまだそんな流行ってなくて…。

弾:失礼ですけど、おいくつですか?

森:30歳です。

弾:じゃあまだかろうじて、あまりWebがない時代がわかる。

森:そうですね。Windows 95が花形だったころ、大学受験で「物理」「情報」の推薦枠があって、親に浪人しちゃだめって言われてたんで推薦にしようと。職にあぶれなさそうなのはどちらかって考えて、情報は流行ってるらしいし…、というレベルです。で、情報系というのはプログラマなんですけど、ゲームプログラムとかしか知らなかったんですよ。だからゲーム作るなら、プログラミング言語はCくらいしかないと思ってたんで、それに「++」ってついたものとか、そういう程度の認識ですね。

JavaScriptとの関わり

弾:ブログに目を移すと、どちらかというとC++よりJavaScriptの話題がいっぱい出てきます。

森:JavaScriptは仕事では全然使ってなくて、Webアプリを書いてるわけでもなく。たまたまAdobeのTamarinっていうMozilla用スクリプトエンジンがあって、そのソースを読んだんです。JavaScriptだからじゃなく、C++で書かれたAdobeのソースだから。AdobeはASL(Adobe Standard Library)というオープンソースのC++ライブラリを作っていて、Boost[1]みたいなものなんですけど、なかなかよくできてるんです。そういうコードかと思って、読んだら全然違った(笑⁠⁠。

画像

弾:(笑)

森:その後、ブログを読んでた人からイベントで話してくれという話がきて、いつのまにかJavaScriptの人みたいに認識はされてるんですけど、実際はそんなことは全然ないです。

クラウドってどうよ

弾:クラウドについてどう思いますか?「いいんですか? クラウドというバズワード的なのを使っちゃって」という質問です。

森:VM(仮想マシン)はいいと思うんですよ。結局は仮想化できたらいいですねっていう話だと思うんです。

弾:クラウドはVMである。分散VMである。

森:いや、VMがいっぱい、向こうにあるだけですよね。

弾:bunch of VM(VMの束)だと。

森:VPS(Virtual Private Server:注2とか楽じゃないですか。すごい身近な話なんですけど。ああいうのが企業でも使えるようになりますよねっていうだけの話で。なんか、いろんな話が混ざっちゃっていて、ちょっとよくない…。

弾:Web 2.0以上にわけわからない言葉ですよね、クラウドって。

森:ハード屋さんが儲けられるんで、なんかバズりがいがあるんじゃないですか。

弾:なるほど。確かにお金が動いてくれないと困る人たち、いっぱいいるので。我々も含まれますが。

森:そうですね、食わせてもらってるので。Web 2.0は結局あんまり儲からなかったわけですが。儲かった人もいますけど。

弾:ほんとに、クラウドってものが売れるんですか? クラウドって聞くと、世界で必要なコンピュータは5台だけだっていう言葉が出てきますけど、そうなると5台のコンピュータのコンポーネントとしてのコンピュータ、ハードウェアは売れるけど…っていう話になっちゃうじゃないですか。

森:そこはなんか話が混ざってるところで、ちゃんとスケールするっていう話とVMを使ってるっていうのとは関係ないですよね。Googleだって、たぶんほとんどの検索とかはVM使わずにやってるわけで、でも一般のユーザにとってありがたいのは、VMになっていて、ぽこぽこと増やせるとか、お金がかからないとか、そういう話になるわけで。

弾:でもバズになってるわりに日本でうちがやったるっていうところはあんまり聞きません。なんででしょう?

森:日本でうちがやったるって言って、ちゃんとやってたバズって、クラウドに限らず何もないので。

弾:でもWeb 2.0の少なくともブログは根付いたわけじゃないですか。

森:そういう意味では逆方向のスケーラビリティが必要だと思うんですよ。しょぼいほうにいってもありがたくなきゃダメで、すごくスケールするAmazon S3よりは、普通の中小企業がさくっと仮想化できるVPSとかのほうが流行る。

弾:そう。だから日本でやっても流行るはずなのに、なんで出てこないのか。たとえば、日本でS3を使うとかってすると、やっぱりレイテンシ(遅延時間)の問題で使えない。日米往復すると、200ミリ秒失うんですよ。人間がわかるディレイですよね。

森:10フレームですからね。Amazonじゃなくても普通に国内でやればいいんですけどね。

弾:仮説の1つとしては電気代っていうファクターがありますよね。

森:あー。あと土地代ですか。ブツが必要だと。

弾:やっぱり電気とネットワーク、帯域幅が豊富なところでないと。ただ、あんまり遠くに置くとレイテンシの問題が出てきちゃうんで、S3使いたいけど、ちょっと日本だと難しいなっていう。僕もクラウドというバズワードじゃなくて、要は、日本でもまともにさくさくレスポンスがあるS3みたいなものをやれば、絶対流行るとは思うんです。なんで、日本のホスティング会社はやってくれないんでしょうね。サーバは貸してるのに。

森:それはハッカーがいないからじゃないですか(笑⁠⁠? mixiとかやればいいんですよ、本当は。

弾:ああ、確かにそうですよね。クラウドがやってることって、自分で使ってたら良いから、人にもお譲りしますという発想ですよね。

森:マシンのユーティリゼーション(使用率)が上がらないので、貸すっていう話じゃないですか。だったら別にmixiとか、いろいろスーパーハッカーがいそうな感じなんで、コンピュータいっぱい持ってる人がやればいいわけですよ。

画像

注目している技術

弾:最近注目している技術ってなんですか?

森:全然流行ってるものと関係ないんですけど、これですね、電子ブックリーダー。

弾:ほう。どこのですか?

森:ドイツのiRexという会社です。

弾:ソニーのLIBRIeとKindleは見たことがあるんですけど。

画像

森:Kindleよりも一回り大きくて、二回りはしょぼい。画面が大きいのがとりえで、KindleってSVGA(800×600ピクセルの解像度)じゃないですか。小説は読めて、マンガも読めるんですけど、技術書はちょっとつらい。これはXGA(1024×768ピクセルの解像度)なんですね。技術書はぎりぎりいける。論文もまあまあいけるっていうくらい。友達がソニーのやつを買って、すごい熱烈に勧められて、買ってみたら確かになかなかよくて、家が狭いんで、家の本はすべてスキャンしてこれに入れるっていう計画のもとに。

弾:(iRexを操作しながら)きれいに映るもんだな。

森:ページめくりがちょっと遅いんですけど。E Ink[3]というのは再描画があまり速くないので。

弾:確かに遅いな、Kindleもこんなに遅かったっけ。ソニーのやつは速かったな。いくらくらいでした、これ?

森:5万円くらい。

弾:さすがにそりゃ手を出す人はまだあんまりいないだろうな。

森:ソニーのは2万円くらいなんですよ。

弾:それくらいでしょうね。しかもなんか最初に読むべき本を付けてそんな感じじゃないでしょうかね。

森:英語のフリー書籍、グーテンベルク[4]のとかは入ってます。

弾:シーケンシャル(先頭から順番)に読むのは僕ももう、これでいいと思います。逆にダメだと思うのが、いわゆるレファ本(リファレンス⁠⁠。

森:最近、オライリーのSafari[5]とかは結構よくて、Safariとこれでいいんじゃないかという結論になりつつあります。こういう端末に需要があるのは確かで、携帯で見られるじゃないですか。おもしろいのは、スキャンして読む文化、なんか2ちゃんねるでは「自炊」と言われてるらしいんですけど、要はツールがあって本の活字を認識して改行を組み替えて携帯用にしてくれるツールとかがあるらしいんですよ。

弾:すごーい。

森:そういうのを使って、みんな読んでいるらしいので、電子化そのものは進んでいって、あとはAppleがiPaperを出せばみんなそっちに代わると思うんですよね。

注目しているWebサービス

弾:注目しているWebサービスってなんかありますか?

森:全然なくてですね(笑⁠⁠。

弾:そういうことはばんばん言ってください。Webつまんねえとか。

森:いや、そういうわけじゃないんですけど。結局、月の半分は断線活動[6]なので、あんまりWebは使わないようにしているんですよ、あえて。⁠Web上では)暇つぶしは飽和してると思うんですよね、個人的に。おもしろいものもあるんでしょうけど、なんかいかに暇をうっかりつぶさず、がんばってちょっとめんどくさいけど、本読むとか。という

のがあって、断線してるんです。

弾:本読むのめんどくさいんだ。僕は一番楽なんですけど。

森:あー、それはすばらしいですけどね。

弾:風邪ひくと、普段はうっとうしくないものも、急にうっとうしくなったりするじゃないですか。本を読むというのは、かなり最後までうっとうしくないんですよ。

森:すげえなあ。

弾:39度5分を超えない限りは本を読むというのは残ってるんで。

森:それはギフトですよ。

弾:そうなんだ。そういうとらえ方をしたことがなかった。

森:何を抵抗なくできるかがその人のギフトだと思うんです。

弾:良い言葉ですね。だとすると、ギフトって本人には絶対わからないもの。

森:それはほんとに思うんですよ。僕の友達で、すごいプログラマがいて、ペイントソフトを作ってる人なんですよ。趣味で。彼は2年位前に「作る」って宣言して、ライバルはPhotoshopだって。特定用途に限れば勝つっていう話なんですけど、なんか無理そうじゃないですか、普通。そもそも趣味のコードなんですよ、飽きますよね。ちょっとめんどくさいことがあったらすぐ挫けるとか。というのはお金のプレッシャーとかないので、普通、挫けるっていうのが趣味プログラマの最大の敵なわけです。で、彼は2年くらい普通に続けていて。2年間、そのコードをずっといじってるんですよ。それで最近1.0をリリースして。

弾:すごーい。

森:1.0って一区切りになるじゃないですか。一区切りして違うことやるとか旅行行くとかするのかなって思ってたら、なんか翌日から普通に機能追加を始めていて、全然区切りなんてついてないという。続けるのが平気なタイプなんですよね、あるコードベースをいじることについて。彼はWebは苦手で、Webだとなんかいろいろ組み合わせますよね。Apacheをインストールしたり、設定ファイル書いたりとか、そういうのはほんとつらいらしくて、無理って言うんですけど、そのペイントソフトは延々と作ってて、普通にできがいい。

弾:すばらしい集中力ですね。

画像

プログラミング力の鍛え方

弾:プログラミングの力を鍛えるにはどうしたらよいでしょう?

森:自分が聞きたいですよ。

弾:ねえ(笑⁠⁠。ぼくも聞きたい。

森:コードゴルフ[7]とかをやってる人を見ると、もしかしたらあれは鍛えられるのかなと淡い期待を抱いたりしますけど。普段のプログラムってやっぱりトリビアル(とるにたりない・瑣末)じゃないですか。ああいうプログラミングコンテスト系ってたまにちょっとやってみると、現実的には絶対こういうもの使わないよっていうのを集中的に集めた、トリビアルじゃないものの集合ですよね。

弾:確かにちょっとまだプロコードゴルファーって食えないしね(笑⁠⁠。

森:ゴルファーまでいかなくてもトップコーダー級の人っていうのは仕事で活躍してるんじゃないかなあって気はしてるんですけど。最近、⁠Hack the Cell 2009」っていうPS3のCellのチップのチューニングのコンテスト[8]やってるのを見てて、全然わけわかんないんですよね、なんで速くなるのか。ああいうのとトップコーダーとかよくわからない複雑なものを解くっていうのは近い気がしていて、ああいう人たちはプログラミングの能力を鍛えてる気がしますね。やってないんで憶測ですけど。

弾:ひたすら書く、比べるなのかもしれないですけどね。

森:食わなきゃダイエットできるとか毎日走ればやせるとかそれに近いかも。

弾:それに近いですよね。

森:やればできるのはわかってるけど、できやしないさっていう。人間そんなに根性ないさっていうのはありますよね。

弾:根性は確かにギフトかもしれないですね。

優れたエンジニアとは

弾:優れたエンジニアとは?

森:「ソフトウェアの名前」「なんとかさん」ていうのはいいと思うんですよね。逆はたぶんダメで、⁠なんとかさん」「ソフト」っていうのは口だけのほうが勝ってますよね。Jcode.pmとかEncode.pmのdankogaiっていう順番はいいと思うんですよね、逆じゃないと思うんですよ。

弾:逆じゃないですね。やっぱりプロダクトで評価するべきだと思います。誰が作ったじゃなくて、何を作ったかで評価するべきだと思います。

森:ブランドとかで、どこの会社が作ったとかで買う人はいると思うんですけど…。

弾:作ったでも作らせたでもいいんですけど、⁠AppleのJobs」であって「JobsのApple」になっちゃうとやばい。やばくなってるときというのはたいてい「JobsのApple」になってるときで。

森:そうですね。

読者に一言

弾:読者に向けて一言メッセージを。

森:Web以外のことをすると、Webのすばらしさがわかるんじゃないかなと思います。

弾:良い答えですね。ぼくもそう思う。

森:ネットゲームとか書いてると、Webってよくできてるなと思うんですよね。できないことも含めてよくできてて。プッシュとかできないじゃないですか。

弾:何がいいってステートレスなところ。

森:それですよね。それがどういうことかっていうのは、Web開発者の人にはステートレスじゃない状態は想像つかないと思うんですけど、普通のコネクション持ってやってると本当に面倒くさくてしょうがない。

弾:Web以前はそういうのがデフォルトだったんですよ。SMTPだって何回通信するんだか、HELOでしょうMAIL FROMでしょ、SEND TOでしょ、DATAでしょ、少なくとも4往復するわけですよ。

森:ステート遷移図とか書かないといけないじゃないですか。Webなんて関数呼ぶのと一緒で、CALLで終わり。すばらしいですよね。Webの人には当たり前なことかもしれないですが、いかにほかがクソかっていうのをぜひ知っていただきたい。

弾:くやしかったらFTPサーバ書いてみやがれて、ホントあれは地獄(笑⁠⁠。涙が出てくる、あれはほんと。

画像

おすすめ記事

記事・ニュース一覧