著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。今回は Amrita の開発者で有名 blogger でもある essa さんにお話を伺いました。
Amrita 開発者。blogger。現在は「アンカテ (Uncategorizable Blog)」というサイトでご活躍中。
ささだ 本日はお忙しいところ、大変ありがとうございます。
essa いえいえ、こちらこそ。
ささだ 中島さんと呼んだほうがいいのか、essa さんと呼んだほうがいいのか、どっちなんですかね。
essa んー、essa さんで慣れてきました。
arton まず essa さんの名前の由来は。
ささだ そうですね、じゃあ essa さんの名前の由来は?
essa これはタイミング的にドンピシャなんですけど、ゲド戦記です。
だれか調べた人が居たんですけどね (笑)1 ゲド戦記の第一巻で魔法の言葉を習うシーンがあるんですけど、そこで物には二つの名前があると。日常に使う名前と、魔法の中でしか使わない名前があると、主人公のゲドがそういう授業を受けるんです。そのなかに、ある言葉の魔法語が essa という言葉だという記述が出てきたんで。
arton 興味のある人は、読んで調べてねと。
essa そう (笑)
ささだ 魔法語?
essa 要するに、全ての言葉には、日常使う言葉に対応する魔法語2があって、それを知ることで魔法が使えるようになると言う設定です。
ささだ そういうのが物語の中に出てきたと。何かよさそうな意味が含まれていたんですか?
essa 本当はね、将来開発するソフトの名前にしようかと思っていたんですけど、なんとなくはてなのログインネームに使っちゃったら、ある人から「essa さんって誰なんですか」って言われて (笑)3 問い詰められたんで、実は Amrita を書いてるこういうものなんですがって名乗って、なんとなくそのまま自分のハンドルネームとして使い出した。
arton ただのログイン ID だったのがそうやって名前になったのかぁ。で結局、その「もの」が何かは秘密と。どうも、この中でゲド戦記を読んでいるのって高橋さんだけみたいですね。
高橋 いやー、もう覚えてないんですよね (笑) でもゲド戦記を基にしていたというのは前から聞いていたので。
essa 生まれた年は 1960 年で、誕生日は blog 上のお祝いとかで4 (笑) 公知の事実なんですが、3 月 30 日です。出身地は東京なんですけど、3 歳から高校卒業までは愛知県で育ってます。今はかろうじて東京に引っかかっているような所に住んでます。
arton なんか 3 に縁がありますね。昭和 35 年で 3 月 30 日で 3 歳のときから名古屋に行って高校 3 年までそこに居ました。
ささだ どう突っ込んでいいのか (笑)
arton なんかいっぱい 3 出て来るなぁって思った。
ささだ まぁ、これからも 3 を出していただくという感じで。
essa 家族構成は、妻と子供二人です。
ささだ 好きな言葉、座右の銘は。
essa 好きな言葉はね、
(ホワイトボードに書き込む)
essa これは自分で考えた……知ってます? 昔、メールの署名に使ってて、これつけて ruby-list とかに投稿してたんですけど。「stable でなければ生きていけない。unstable でなければ生きている意味が無い」
arton 非常にソフトウェア開発者らしい言葉ですね。
essa これは一応自分で考えた言葉で。今は署名にするのやめちゃったんですけど、やっぱり自分のポリシーが出てるかなーと思って。
ささだ 思いついた切っ掛けはあるんですか?
essa んー……。丁度 Debian を使い出したという5。
一同 (笑)
arton やっぱり使われているのは sid なんですか?
essa いやいやいや、woody だったかな?
ささだ OS は stable でないとまずい?
essa 言行不一致ですね (笑) OS も Ruby も unstable には手が出せないです。
arton インフラが stable だったら、それ以外のものは unstable で。
essa プログラミングは stable で、それ以外は unstable な生き方をを心がけている。
ささだ その辺りの冒険譚は後で聞けるんですかね。冒険譚というとアレなのかな。
essa プログラミング以外のところで色々危ないところがあるので (笑)
ささだ 好きな言葉というのはこんなところで。ちなみに、Debian を使い始めたのはいつ頃なんですか?
essa いつ頃だろうな……。2001 年か 2002 年ぐらいだったと思うんですけどね。そうか、圏外からのひとことを、最初はほんのちょっとの時間だけ自分ちのサーバーでやってたんですけど。それが最初かな。
高橋 2003 年の 1 月に sid に玉砕とかっていう記事があります6。
一同 (笑)
ささだ 尊敬する人というのは?
essa 高橋さんと言おうと思ってたんですけど (笑) 今日来るって仰ったからどうしようかと (笑)
一同 (笑)
ささだ いや、別にいいんじゃないですか。目の前で。
essa 自分はやっぱり人をまとめていく、人を活かしていく力が非常に無いと思っていて。やっぱりそういうチームを作って率いていく人はすごいなと思ってますけど。うちで考えてきたのは高橋さんと、たださんと、DHH。やっぱりそういう点がすごいなという。憧れる部分がありますね7。
高橋 そこにまつもとさんは出てこないんですね。
一同 (笑)
essa あの人はやっぱりね (笑) ちょっとちがうタイプの様な気がする。
高橋 別格過ぎですか。
ささだ 別に率いて無いじゃん、とか (笑)8
高橋 あまり David も率いているイメージは無いですね。
essa やっぱり自分のオーラに人を巻き込んでいくようなパワーはあるなと。
角谷 たださんもそういう意味だと、率いてます! っていう印象でもないような。
arton でも、出る必要があるときにはきちんと出て来てくれますね。たとえば Linux Journal が写真撮らせてくれって言ったときに、多分 DHH は、わざわざあの格好していったんだと思うな。自分のイメージを使って演出しようという意思はあるよね。
高橋 率いていくこととはあんまり関係ないような。
arton まあね。でも、率いてくってときに、自分をポジショニングとしてそういうのを作るって言うのは、こういうシンボルを作ったから皆さんここについてきてね、っていう判りやすい方針になっていると思うんだ。
ささだ 日本人ってそういうの苦手ですよね。
essa コミュニティの中の役割として、広告塔になっているって言うかね。
arton それを否定しないで、その方向できっちり自分で責任を引き受けてる雰囲気がある。それはやっぱりえらいよね。
ささだ たださんも普及という感じでやってますしね。
arton 自分でまいた種は、自分で責任を持って水をやります、みたいな。
ささだ この間、オープンソースマガジンのハッカー養成塾書かされたときに、青木さんだったかな、「頼まれたときに断っちゃいけないんだ、私はこんなの書くなんておこがましいです、なんて言っちゃいけないんだ、お前たちはそれを言う責任があるんだ」とか何とか書いてましたけど。
高橋 そういう話ではなくて、二つに一つってやつですよね。
ささだ あ、ハックする覚悟があるかないかって言う。面白いなと思ったけどね。
arton 責任というより、内なるコミットメントなんだよね。
高橋 やっぱり第三の選択肢として、後で書くっていうのがある。
一同 (笑)
arton ベストプラクティスとしては「後で書く」、そういう手が残されているんだけど、そういうのが残されてなくて二者択一の人もいるんだよと。そういう立場になったときに、じゃあ受けて立つかっていう人はやっぱり偉い人なんだと思う。
essa あと、高橋さんについては、RubyKaigi の前打ち合わせのときにちょっと話したんですけど、Rails との距離感というのをすごい計算してやってるんだなっていうのが、お話を聞いててわかってきた感じがしたんですね。ああ、なるほどなっていう。あんまり波に乗っちゃうと揺り戻しが来ますよね。かといって全然あっちはあっちで関係ないって言って我が道を行っちゃうとあれすぎる。だからバランスがすごい難しいと思うんですけど、その辺を意識してやってらっしゃるんだなぁと。
ささだ 意識して日本の Rails 界を引っ張っていると。
essa だから、つかず離れずの距離感みたいなのを意識してやってるんだなぁと感じたんですよね。やっぱりこういう難しい団体を率いている人の……(笑)
一同 (笑)
arton ちょっと 500m 離れている飲み屋に行くだけで迷子になる人がいっぱい居るんだもん9 (笑) そういう人たちを率いているだもん。
一同 (笑)
essa 想像は付いてましたけど。私はあの時だいたい皆さん初めて会った人なんで、予想通りいろんな意味で多士済々だなと。これを率いていくって言うのは大変だろうなと (笑) やっぱそれだけのことはあるなぁと思いました。
高橋 なんか色々コメントし辛いですけど (笑) 私が Web アプリケーションプログラマとしてやっていて、割りと Ruby も好きっていうポジションだったときに Rails が来たって言うのが非常に面白いタイミングなわけですよ。で、それって言うのはたぶん essa さんにもあって、Rails がきたときに Amrita の作者であったというところの偶然さというのは結構面白いんじゃないかなぁというのがありますが、どうですか? Amrita を作り始めたときは、Rails のレの字も無かったので、普通に自分でテンプレートエンジンを作りたいと思って作ったと思うんですよ。でそれが Rails の人たちから Amrita っていうのがあるぞ、これは使えるんじゃないのとか勝手に盛り上がるっていう。で、どうなんだって感じで英語で問い合わせが来るわけじゃないですか。そういうのに対してタイミングのよさというか、あるいは悪さなのかもしれないですけど。
essa そこは複雑ですよね。Amrita っていうのは元々フルスペックの Web アプリケーションサーバーを作っていて、全部は作りきれないんで、出来たところからリリースしたのが Amrita。だから Ruby でアプリケーションサーバーを作るのは有効だったんだなぁという思いと、やられちゃったな (笑) という思いと。で、Rails だけが Ruby の Web アプリケーションサーバーじゃないと思うんです。Rails だけがフォーカスが当たっているって言うのは、ちょっと複雑な気分。ちょっと違うんじゃないのという感じがありますね。10
arton コントローラのソースが全てだと思うな。「どういうソースになるの?」っていうと、コントローラに 3 行ぐらいしか書いていない、ActiveRecord で find して渡すだけ。あれがぽんぽんぽんって、アクションごとに 4 個ぐらい。あれを見てスゲーきれいだと思わないやつはいないと思うんだよね。あれを見ると、きれいだな、いいなこれって。そういう感じなんだけど、違うのかな。
高橋 ActiveRecord はどうですか?
arton だってあれはクラスしか無いからさ。
高橋 メソッド無くてクラスがポンといっこあって、これで全部ですって、えーっとかって思うんじゃないのかな。
arton それは先に S2Dao11 の方を見てたから。
高橋 S2Dao は、その頃はまだ getter、setter 入ってませんでした?
arton getter、setter 入ってたか……。それはエンティティの方にだよね。でもデータアクセスオブジェクトの方に書く必要は無いよね12。
高橋 あー。
角谷 Web アプリケーションでは「ドメインモデルといったって、クラスは結局データベースに対応する箱みたいなもんでしょ」という意見がある一方で、OO 厨な人たちからすれば「オブジェクト指向による Web アプリケーションの設計というものがですねえ!」という根強い意見もある。で、Active Record という、エンタープライズアプリケーションにおけるオブジェクト指向設計といったトピックが好きそうな人たちに受けそうな名前のフレームワークをどう使うのか、とサンプルとか見ると、あれだけしか書いてない。ちょwww おまwww みたいな。
DHH からの提案は Web アプリケーションでデータベースに対する操作なんて書かなくて済むに越したことはないんだから、基本的に一切書かなくて済むようにしてみました。データの CRUD と validation ができればいいんでしょ、抽出条件が複雑なんだったらクエリを直接書けばいいじゃない、と。「要はこういうことだよね」という意見が実装を伴なって出てくる。それがネタじゃない、というのがすごいなぁ、と。
arton 極端なことを言うとさ、@foo = bar.find(:all) って書くだけでリストが出るんですよって言う。
角谷 インスタンス変数に入れとけば、ERB にバインドしときますからご自由に、と。当たるだけの事はあるんじゃないかなぁとは思う。
arton 逆に、Rails を見てどこに最初に惹かれた? 僕はやっぱ controller の美しさだな。
高橋 やっぱり ActiveRecord の中身の空っぽさで。かつ中身のプロパティというかカラムとかどうすんのかというと、それはダイナミックに検索しますとか、設定ファイルいらないでしょって、それはちょっとねぇ、とか。
arton 一回一回 CGI で動かしたら、使い物にならない。
ささだ それはちょっとねぇという立場が、Rails をはじめたときなら、今は?
高橋 正直言ってちょっとそれはという風に思わなかった訳ではないんだけど、そういう風な発想は非常に面白い。
ささだ 良い悪いは別にして面白いと。
arton Java の JSP だってさ、一発目はコンパイルするから死ぬほどのろいんだよね。一発目はダミーで空打ちするとか。同じように考えると、Rails の一発目はやっぱりのろいんだけど、空打ちすれば耐えられるしさ。一発目のろいのは Web アプリケーションの宿命だと考えると、まぁ、いいんじゃない?
高橋 前回のるびまの巻頭言に書いたことと重なるんですが、シンプルにするっていう方向性が極端に出ていて、一般にはどこかで妥協しなくちゃいけないんだけど、それをシンプルにするという方向性を目指すのとは違う、別の道具立ての方でなんとかそれをフォローしてやって、シンプルにするっていう所の方はひたすらまっすぐに行くって言う、そういう発想は非常に面白いって言うか。
だから、色々 Ruby を使ったものって言うのは出ているんだけど、そういう風な方向でまっすぐさを追求しているものは全然無くって。それがしかも Ruby と非常に親和的であったという。Ruby のアーキテクチャと親和的だったのかよくわからないんだけど、なんとなく Ruby っぽい雰囲気はあると。
ささだ 全然ないって言うのはそうでもないと思う。Web アプリケーションという枠だとないのかも知れないけれど、そもそもライブラリの書きやすさとかはシンプルさを追求したところだと思うので。
arton そこで言っているシンプルさとは違う意味だと思う。たぶん、もっと見た目のシンプルさの……。
高橋 まつもとさんよりももっと極端な感じが。まつもとさんの方がもう少しバランスの方を見ているような気がする。
essa Ruby って、書くとなんでも出来ちゃうからどうしても盛りだくさんになってっちゃうんですよね。そういう誘惑を全部撥ね付けているところがすごいなぁ。
arton それが魅力的で、自分で中の方を一所懸命書いているうちに、外側のところは書かなくても良くなったのかもしれないよ。
高橋 でもやっぱり、less function とかいうか、less code というか、そういう風な方向性は感じますね。だから色々機能を盛り込みたくなるところを抑えて、なんだろう、減らすことに喜びを感じている感じがする。
essa そうそう、そうですよね。13
arton でもその分、ActiveSupport が厚くなってくるんだよね。実装したいのかもしれないよ、DHH は。俺が書くからお前らはするなと言いたいのかもしれないしさ (笑)
高橋 実装はされた上で、自分で書くときには非常にシンプルになるところは非常に好きなのかな。
角谷 具体的な価値があるのは、Rails フレームワークそのものではなく、Rails を使って書かれたアプリケーションだと思うんです。で、Rails はアプリケーションを少ないコードで実現できる。レバレッジが効くというか、コード行あたりの価値密度が高いというか。で、それを実現するために、Rails の中はエライことになっていて、「ちょっと待って、これ何やってるの?」みたいなのがいくつもあって。で、Rails のソースコードを見てみると、Ruby で出来るありとあらゆることが全部突っ込まれているような印象で、最初は樹海に迷いこんでしまったのかと。ただまあ、慣れてみると Rails は Rails でわかりやすいようにも思えてくるんですが、それでもやっぱりアプリケーションのシンプルさと比べると Rails の中の複雑さにはギャップがある。でもまあ、そこが面白いですね。超絶テクを駆使したフレームワークで書くアプケーションがもの凄くシンプル、という。
高橋 ただ、一部今までの Ruby のコードとは違う伝統が許されている、それがすごい気になるところ。
essa それはこれだと思うんですけど。もっとショボイ言語で沢山コード書いてた人は、Ruby を与えられると喜んじゃうんですよね。はしゃいじゃって「わーっ、これも出来る、あれも出来る」っていう。それで我を見失っちゃうっていう (笑) それは私もなんですけど (笑) そこまで行かなくても、やりすぎちゃう部分があって。Rails の場合は、DHH ってのは Ruby の持ってる自由さが当然なんですよね。これぐらいで当然。だから Ruby があって嬉しいというのは無いような気がするんですよね。
arton そうすると、高橋さんがさっき言っていた、たとえば for 文使ってて妙だとかそういうような話ですよね。
高橋 ファイルの命名規則が変わってしまっているのと、send じゃ無くて、send を使っている。
ささだ それはただの不注意なんじゃないの?14
高橋 いや、あれは send は非常にみにくいとか彼は判断するんじゃないかと。
arton え、そうなの? .each を使わずに、みんな for を使ってるのがすごい気になるんだよな。
ささだ そっちの方が見やすいと。
arton 見やすいのかなぁ?
高橋 view だとちょっと見やすいのかも。view だと for と end が左側で寄ってるって言う。controller とか model の中はあんまり関係ないんですけど。
arton あれって、よく言われる美徳に近いよね。つまり、目的のものをやるために、それ以外のところを死ぬほど努力するっていうさ。ここで一発 blank? って書きたいがために、String だとか Object だとかに、やたら変なものを詰め込んでるとかさ。
高橋 Rails が標準で Amrita 的なテンプレートエンジンを採用しない最たるところは、Amrita みたいなコードと見た目の分離をやりたいのではなくて、直接コードを書きたいからっていうところがあって。だけど、それをやってしまうと、デザイナーとかが分からないじゃんとかっていうような話になるんだけど、いやいやデザイナーにも Rails そのまま使わせればいいんですよっていう話になって、デザイナーが使いやすいような環境を整えるとか、デザイナーと一緒にしやすいように仕事するとか。別々なところで作業しないでコミュニケーションをとろうとするとか、っていう風なところに力を注ぐ。で、テンプレートの方にはプログラマ向けの for ループを書くって言う (笑) その辺のスタンスが面白い。
arton それは、そういうことなの? デザイナーと一緒にやるから、for ループを書くんだ。
高橋 いや、for ループを書きたいから、って考え方をしている。ていうか、それはたぶん両方だとは思うんですが。ただ、テンプレートエンジンを導入しない理由としては、そういう風なことだと思うますけど。
ささだ Rails がどうという文脈で話をしていると思うんだけど、essa さん的には、その辺はどうですか。三人からここが良いとかいいながら、四人目というのはたぶん大変だとは思うんですけど。
essa (笑)
高橋 四人目というか、Rails の問題点としてずっと昔から指摘されているテンプレートエンジンの無さというか、erb 使えばいいじゃんっていう風に言われているのに対して、いえいえ Ruby にはこういうテンプレートエンジンがあるしと言われているものの代表的なものが Amrita なんですよ。なので、その Amrita 作者という立場というのは特殊な立場で。Amrita の作者だからこう見えるとか、こう言いたくなるとかあると思うですが。
essa 代表的なものが Amrita なんですか (笑)
ささだ なんかすごいまとめられちゃった。
essa (しばし考えて) 最近、自分で Rails のアプリを少し書いてるんですけど、実際に書いてみると、やっぱり Amrita より erb の方が書きやすい。
一同 (爆笑)
essa あと、私としては高橋さんの巻頭言は良かったんで、blog でも取り上げましたけど15。
高橋 ありがとうございます。
essa なんかその、強引さとかまっすぐさみたいなところで、新しいものを感じるんです。今話して思ったのは、さっきちらっと言ったけど、間違った言語で苦労した体験を持たない世代かなぁという。
ささだ David が?
essa そうですね、うん。
高橋 一応 DHH は苦労してたっぽいような雰囲気はあるのですが。
essa 彼は Ruby の前に Java と PHP をやってるんですよね。でも、何かの言語でやってみて、なんか違うな他に無いかなって言ったときに、彼には Ruby があった訳じゃないですか。我々の世代は、これやってみて駄目、これやってみて駄目、他にないかなってなったときに、それこそ XEROX16 にでも行かなきゃ満足できるものはない、みたいな状態で……。
ささだ 買うと安くても 300 万とかするとかいう。
essa そうそう。雲の上のことで。で、リアルワールドでこれ使ってシステム組みましょうって提案しても、なに寝ぼけた事言ってるんだっていう話ですから。C で何とか組まなきゃいけないって言うのがあって。やりたいのに出来ないっていう怨念がたまってるわけですからね。だから Ruby を与えられたときに、そういう怨念が噴出しちゃうって言うような (笑)
自分の場合はすごい極端だけど、そこまで行かなくて同じ怨念を持ってて、(Ruby を与えられて) はしゃぎ過ぎちゃってる人が多いような気がしますよね。田中哲さんのプレゼンでありましたよね。良い API の作り方っていうのが17。使う側の視点から見て焦点が絞られてないってことだと思います。と言うことは、作る側がはしゃぎすぎてる所がある、分かってるけどやっちゃってる部分があると思うんですよね。これも出来る、あれも出来るって。
arton だから、失礼な言い方を承知で言うと Ruby を始めて一年目ではしゃいでいるプログラムを、駄目な例として出してくるわけだな。net/http とか。
essa 1 周年あたりが一番危ないんじゃないかな (笑) Ruby ってこうなんだって分かってきてはしゃぎだすじゃないけど (笑) 私の場合は、Amrita1 は何とかリリースできたんですけど、次のバージョン作るときに、拡張ライブラリに手を出したら、やりすぎて破綻しちゃったんですね。
高橋 Amrita2 はどの辺まで行ったんですか?
essa 動くところまでは行ったんですけど、大して速くならなかったんですね。
一同 あー。
essa かなり複雑になってしまったので、リリースしてからこれを速くしていったらすぐメンテ不能になって破綻するだろういう感じになって。
ささだ C で VM 書いていたんですか? Ruby じゃなくて?
essa そうです。
ささだ なるほど。VM のコードを C に出しちゃうような感じ。バイトコードの列を C にガーっと出しちゃうと、それをコンパイルして拡張ライブラリに出しちゃうとか。そういう風にすると結構速度でそうだけど、そうでもないのかな。そこまでやるもんでもない気がするけど。
arton ちょっとがんばるとさ、実は erb に落とせたらそれでいいんじゃないかなって気がするな。だって今 erb ってデファクトじゃん。Amrita で書いてあるんだけど、一回走ると view ディレクトリの下に erb がどーっと来てそっちが動くようになる。
高橋 それはたぶん smarty 的な感じ。
arton smarty ってそういう風にやってるんだ。
essa 使われる文脈を想定しないで、どんどんあれもできるこれもできるって、突っ走ってしまうんで。
arton 拡張ライブラリって、Web アプリケーションではすごく使いにくいんじゃないかと思うんだけど。
ささだ C で書いてもあんまり速くならなかったって言うのは、十分元が速かったんじゃないですかね。思ったよりもオーバーヘッドが無かったとか。
essa 結局、データのタイプによって動きを変えるっていう部分がいっぱいあるので、要所要所で C から Ruby のメソッドコールしなきゃならないところが出てきちゃうんですね。
arton でも遅いといわれているけど、AsWiki って、Amrita 使ってるじゃないですか。実際に職場で運用していてそんな遅いと思わないんだけど、そんな遅いんですか? Amrita って。極端なことを言うと、essa さんのマシンだとすごい遅いから自分で遅いと思ってるんだけど、世の中の標準から見ると全然問題ない速さだとかそういう可能性ってない?
essa うーん。
arton 逆のパターンだとさ、デベロッパーがすごい良いマシン使って開発してきて、このアプリケーション、バッチリでーすって運用環境に入れたら遅くて使い物にならない。その逆のパターンもきっと世の中ありえると思うからさ。
essa そんな遅くはないですよね。やっぱり複雑さに比例しますけど、テンプレートのダイナミックな複雑さに比例するんですけど。
ささだ 普通にやってれば問題ない感じ?
essa ええ。
高橋 erb というか、Ruby のコードに落とすのが出来て、それとは全然関係なく普通にメモリが潤沢にあって、キャッシュが効くっていう状況であると、また全然変わってくるのかなぁという気がしますけど。
ささだ ちょっと Amrita のパフォーマンス向上の話をしだすとまた長くなりそうなので。
arton そこで最初の話に戻すと、essa さんがそこで「Amrita ってすごい速いんだ。矢のような速度だよ。これ使えばバッチリ。もう erb なんて目じゃないね」って言えば、みんな「おおそうか、じゃ使ってみるか」。その後で初めて「実はのろいんだよね」(笑) って誰かが声を上げたら、「そうかい。僕の環境じゃ速かったんだけどな」って直してくっていう。そういうのがひとつの方法だよ。そこで謙虚に言っちゃうと使ってくれないからね (笑)
高橋 それは結局リリースされなかった幻のバージョンって言うことですよね。拡張ライブラリ使ってる Amrita2 の方は、それとは関係なく。
essa そうです。今のベータバージョンは一回フルスクラッチから書き直したものです。拡張ライブラリは使わないで普通に Ruby にコンパイルして、Ruby のモジュールを作って動かしますから。そこは YARV が出てくれば (笑)、最適化してかなり速くできると。
角谷 ここにも YARV カーゴ・カルトが。
高橋 YARV がんばりましょうということで。
ささだ ちょっと話がそれたんですが、代表作は Amrita ということで。
essa それしかないです。
ささだ ほんとに無理やり元に戻してるんですが (笑) Web アプリケーションサーバの話は、仕事で作ったということになるんですか?
essa ええ、ちょっとだけ仕事に関連してる部分がありますよね。
ささだ 別に仕事だけというわけではなく? 最初のモチベーションというか、作れと言われて作り出したのか、自分で作ろうと思ったのかというんのは。
角谷 最初からもう商品化を目指して開発したということですか?
essa 最初は自分のホームページの HTML 生成のツールだったんですよ。それをちょっと汎用化していじっているうちに、これは同じことをランタイムでやれば、Web アプリケーションサーバーになるかなと思って、それを膨らませていったという感じですね。
ささだ それは代表作とは言いたくない感じ?
essa あんまり……なんていうんだろうな。自分的には完成しないで放り出している状態ですから。18
ささだ なるほど。まあ、放り出していない人はあんまり居ないんじゃないかと思うんですけど (笑) 代表作はそんな感じで。著作はどうでしょう。
essa 無いです。
ささだ 著作は blog という感じで。
essa そうです。
ささだ 好きなメソッド、嫌いなメソッドいかがでしょうか。
essa 好きなメソッドは月並みですけど、やっぱり collect が好きです。
ささだ collect ですか (笑)
essa あと、メソッドって言っていいかわかんないけど、Symbol#to_proc っていうのがすごいなぁ。
ささだ あー、あの気持ち悪いやつですね。
一同 (笑)
essa 月並み、だと思いますけど。
arton Symbol#to_proc っていつ頃入ったの?
ささだ 入ってない。
arton 入ってないよね。
ささだ 騒いでる人たちが、自分で定義して遊んでるだけ。
高橋 1.9 に入れるとか何とか言ってなかったっけ。
ささだ そうなの?
角谷 入れたとか言ってませんでしたっけ。
arton ささださんが先に「YARV には死んでも入れない」って言えばいいじゃん。
高橋 YARV に入れるもんでもないよね。
arton 確かに。YARV の場合は、VM レベルで呼ばれたら、その場で落ちるようにする (笑)
ささだ もう入ってるらしいです19。じゃあもう、しょうがないですね。そうかー。
高橋 collect はやっぱり Smalltalk を彷彿とさせるとかあるんですか。
essa そこまで Smalltalk 知らないけど。
ささだ map なんて知らんよと。
essa map は知ってましたね。Lisp 関係は本だけで組んだ経験はほとんど無いんですけど。map っていう関数のことは知っていて、自分の手元にようやっと map が来たなという感じですかね。
ささだ じゃあ map 使いましょうよ。
一同 (笑)
高橋 やっぱり collect なんですよ。
ささだ リファレンスマニュアルの上の方に collect が書いてあったから collect なんですか?20
essa Ruby の map と?
ささだ map と collect どっちという話だと。
essa あー。
arton それは Smalltalk 対関数型っていう位置づけなの?
ささだ もうひとつの派閥は、短いからっていう、それだけ。
arton map は短い。
ささだ 三文字はいいよねっていう。
essa map の do って、しっくり来ないような気がする。
ささだ ブラケットでいいじゃないですか。
essa うん、だから括弧使う時は map で、do を使う時は collect かな。自分の感性として。
ささだ なるほど、新説ですね。嫌いなメソッドはいかがでしょう。
essa 嫌いなメソッドはありません。事前に、少し考えてみたけど思いつかなかった。
arton ささださんの嫌いなメソッドは何なの?
ささだ eval、eval21。
arton おー、それはすばらしい。
ささだ 結構 Ruby についてとかお話聞いてますけど、流れに沿ってもう一回。Rubyist になった切っ掛けとか、そういうのはありますか?
essa これはね、圏外からのお便りという名前で、blog じゃないホームページをやってたんですけど22、そのためにちょっとしたツールを作ったのが最初です。でも、そのツールは最初は Python で書いたんですよ。
ささだ ほうほう。それがいつ頃だったんですか?
essa それが、やりだしてすぐだから 1999 年ぐらいかな。その頃ちょうど Python を勉強しだして、それでツールを書いて、リンクとか生成してアップロードしてたんですね。
ささだ Python はどこで知ったんですか? あまり本って無いですよね。日本語だと。
essa あ、どこで知ったんだろう? わかんないな。オライリーの英語の本を買いましたね23。どこで知ったんだろう?
ささだ Perl に行かず Python?
essa いや、Perl はそのだいぶ前から知ってて使ってました。
ささだ 最初は Perl?
essa うん。Perl 4 の頃にほんとに短いちょこちょこっとしたスクリプトをいっぱい書いてましたね。それで、スクリプティング言語というのがいろんな使い道があるなと思ってて、で、Python 知ったときには、しかもオブジェクト指向でかけるのかと思って。これはこんな良い物があるのかって感じで、それでホームページのツールを書いてたんですけど、それを Ruby に置き換えたんですね。その記憶があんまり無いんですよ (笑)
arton でも時期から言って、やっぱり Ruby 本じゃないですか? 2000 年になったぐらいから見てると、Ruby をやり始めましたみたいなことが書いてあったようですけど。
essa うん、Ruby 本を買う前にやったような気がするなぁ。……そこの記憶はインタビュー受けるに当たって一所懸命思い出してみたんですけど、どうしても記憶が無いんです。いつの間にか Ruby に乗り換えてたみたいな感じ。
ささだ なるほど。その頃は処理系何を使ってたんですか?
essa Ruby の?
ささだ ええ。Windows とか Linux とか。
essa えっと、どっちだったんだろうな。Linux だったと思いますけどね。
ささだ それだったらまぁ普通の頃。2000 年だったらどっちも使えてたよね。HTML の生成ぐらいなら問題なく。
essa うん、コマンドラインでファイルの読み書きの範囲だったら全然。
ささだ それからもう、Python なんて、って感じですか?
essa そうですね。その後で Zope を知って、これを勉強しようと思って。今度は、オライリーの本の日本語の方を買って読み直したんですけど、身につかなかったですね (笑) あんまり Python の悪口を言うと後が怖いからあれですけど。
一同 (笑)
arton アンカテが祭りになるの?
essa いやいやいや (笑) Smalltalk のことを言うと必ずツッコミが来る人が……。
一同 (笑)
arton sumim さんの書くものって面白いよね。いろいろ勉強になるし。sumim さん呼びたくなったら Smalltalk のことを書けばいいなって。
一同 (笑)
ささだ 召喚呪文だったんだ。
essa 召喚呪文ですよね、ほんと (笑)
高橋 Python は、とうとう日本語の本が出るので。
ささだ 日本語って言うか日本人が書いた本が24。
arton え、あれ翻訳じゃないんだ。
高橋 柴田淳さんが書いたんです。
essa だから、Python は勉強しようと思って本を読んで、一所懸命やってて、ちょっとした自分用ツールぐらいは書けるところまでは行ってたんですけど、知らないうちにそれが Ruby にすり替わってたみたいな感じ。
一同 (笑)
角谷 バベル-17 言語だ!!!25
ささだ 知らないうちってのが面白いね。
角谷 覚えたということを覚えていない。それがバベル 17。
ささだ 周りになんか Rubyist が居たとかそういうわけではない?
essa いや、まったくいませんでした。
ささだ じゃあ、ほんとにどこから侵入したのかって感じですね。
essa そうですね。かなり。
arton その頃の雑誌とかで読まれてたやつってあります? たとえば UNIX MAGAZINE 取っててそれに出てたようだなぁとか、Dr.Dobb’s Journal の日本語版買ってたから、あれかなーとか。
essa うーん……。なんだろうな。あんまり……。
arton ニフティとかそういうところで話題になってたとか。
essa たぶん無いと思いますね。そういう雑誌の記事を読んだり、最初の本を買ったりしたのは、ある程度 Ruby のコードを書き出してからだと思います。だから、Ruby のライブラリをもっとよく知ろうとか、今で言うレシピ的なテクニックを覚えようという意識であって、何かを読んで Ruby という言語を勉強したという記憶はないんです。
ささだ 現在の Ruby との付き合いというのはいかがでしょう?
essa とりあえず仕事でいくらか Rails のアプリケーションを書いたりできるようにはなってますというか、無理やりしたというか。
ささだ では、お仕事でも Ruby を使っているという。
essa そうですね。
ささだ 使えるようにしたという感じですか。
essa ええ。
ささだ なるほど。Amrita は使うんですか?
essa 無理やり使います (笑)
ささだ あと、ご自分のツールなんかも Ruby だいたいで書かれているんですか?
essa そうですね。
ささだ Ruby の好きなところと嫌いなところというのは。先ほど「はしゃいじゃう」とかいう話もありましたが。
essa 好きなところはね、これは考えてきたんですけど、Perl が結構好きだったんで。何で Perl から Python に行って Ruby に行かなかったのかというと、やっぱり Perl 的なところが Ruby の方に濃厚にあったからだと思うんですね。Perl の後継者というイメージがあって。だから基本的には Perl でもかまわないんだけど、長いのを書くならオブジェクト指向があった方がいいなと。そうなると自然に Ruby になるという部分と、あともうひとつはやっぱり Smalltalk の香りみたいなものがあるんじゃあないですかね。私は Smalltalk については本で勉強しただけでまったく使ったことが無いんで、ずーっと憧れの言語だったんですけど、それと似たようなことが、ひょっとして今出来てるんじゃないかなみたいな感じがしますね。
ささだ 憧れの処理系が手元にあるよ、みたいな感じですか。
essa うんうん、まさにそういう感じ26。
ささだ 今 Squeak が結構手ごろに。そのへんは?
arton トラックバックを作っておくと、sumim さんがなんか書いてくれるから (笑)
一同 (笑)
essa そんなもう、Ruby があればいい (笑)
一同 (笑)
essa 嫌いなところは無いんですけど、やっぱり仕事で使う上で非常に怖いのは、型がない言語って言うのは、仕事に使うと無茶苦茶になる可能性があるなぁと。
世の中には怠惰なプログラマと勤勉なプログラマが居ると思うんですが、リアルワールドというのは、勤勉なプログラマが居るところだと私は思ってます。で、Ruby っていうのは怠惰なプログラマが使えばうまくいく言語だけど、勤勉な人って言うのは、大体においておかしな方向に勤勉なんですね。そういう人が Ruby を使ったらどうなってしまうんだろう、という心配があります。
怠惰なプログラマがそういう勤勉なプログラマを押さえ込むには、強い型の言語が必要であると、そういう風に私は思う。どうしても勤勉なプログラマを排除できない環境であれば、C# とか Java のような強い型の言語が必要27。
arton 勤勉ってのは、すごく嫌な言い方 (笑) しかしまぁ、その通りですな。
essa だと思いますね。
ささだ 嫌いというよりは苦手という感じですか。足りないところというか。
essa ということで、勤勉なプログラマと一緒に仕事をせざるを得ない環境で Ruby を使ったら Ruby を嫌いになるだろうな、というのが「Ruby の嫌いな所」に対する答えです。
ささだ あー。要するに、変なところで変なこと何でも出来ちゃうから、変なところでおかしなことを。
essa おかしなところで頑張ってることを想像すると Ruby は怖い。たとえば他の人の blog で見たけど、Java で 1000 行のメソッドを書いちゃう人が居るとか、そういう話があちこちにありますから。
arton 勤勉中の勤勉なという人が世の中にはいるわけ。勤勉には飽きたらずもっと勤勉な人。そういう人はねいろんなこと勉強するから、色んなこと知ってるわけ。そうすっと、その人のプログラムがちょっと走った後には、なぜか String#length が実際の長さの 100 倍の値が返ってくるとかさ、色んな事が起きそうだよね。
一同 (笑)
essa だからやっぱり、怠惰な人で無いとうまく使えないというのが致命的な弱点で、それが悪く出たら Ruby が嫌いになるだろうなという。
arton それはでも逆だと思うな。つまり、それこそ DHH がひとつ身をもって教えてくれているわけだし。DSL に絞ることが出来るわけだから、その範囲の中で勤勉さを発揮してもらえれば良いんじゃないのかなぁ。
高橋 Ruby じゃなくて Rails の範囲の中で勤勉になってしまうので。それを抑えることが出来ないので。
ささだ だからもう、Ruby を教えないで、Rails しか教えなければそれで済むという感じでしょ。
arton まあね。言ってみればそういう事だね。
ささだ そこで、それしか使わせなければそこで、eval なんか使わせなければ良いということですよね。
arton まあね、そういうことだね。
高橋 よく分らないところで send とか使ったりする。
ささだ send なんか教えないように。
essa 勤勉な人はそういうのを見つけちゃう。
arton いやー、send だけじゃなくてやっぱり、class String def length とか書かれたら目も当てられないからなぁ。
ささだ クラスの再定義とかされちゃうわけですよね。そういうのが困ると。
essa そうですよね。これは blog に書いたこととかぶりますけれども28、DHH というか、37 signals がやっていることっていうのは、リアルワールドを再定義してるんだと思うんですね。それ以前はリアルワールドは勤勉なプログラマーがいるところなんです。でも、怠惰なプログラマだけでもリアルワールドは成り立つ、というところが 37 signals の革命であって、それが成功すれば、Ruby はリアルワールドで通じる言語になるんじゃないかと思う、という話です。
高橋 リアルワールド側が少し変わらないと、という事なのかな。
essa そうですね。その辺は未来学者系というか、吹きまくる系の経済学者が言ってることと繋がってきますよね。29
高橋 単純に Ruby によってプログラミングが変わるとか、プログラマが変わるとかと違うところが変われば成功する。
ささだ PHP はどっち?
高橋 PHP は、勤勉な人が勤勉に頑張っても、そんなに変なことが起こらないように、あんまり便利な機能が付いてないんですよ。
arton PHP って RAD の環境とかあるんですか?
高橋 無くはない。eclipse 上で動くものもあるし。あと補完とかが弱い。
arton あとね、勤勉な人に勤勉に働いてもらういい手として、やっぱり RAD ツールってのがあるんじゃないかな。早い話、勤勉な人ってインテリセンスに出てこないメソッドなんて選ばないからさ。選択肢にないものを使いたいと思う人は、既に別の道を歩んでるんだから、怠惰な方向に導いてやればきっといいんだなぁと思うわけ。
高橋 インテリセンスというか、勤勉な PHP プログラミングというのは class を作らないので。
arton 勤勉な ASP みたいなものか。
高橋 なんだけど、話がそれちゃいますが、ASP との比較でいうと、PHP の世界というのは、VC が無い ASP の世界なんですよ。全部 ASP で書くって言う、そういう縛りがあるって言う世界。良い ASP の世界は、ちゃんと DLL は DLL で作って、COM は COM で作って、でそれを ASP で利用しましょうって話になるじゃないですか。PHP はそれが無いので。
arton 拡張ライブラリみたいなものは?
高橋 ほとんど作らないんですよ。関数っていうか C のライブラリがあればそれを使うという話にはなるんだけど、自分で足りないときにそれを作るっていう発想がほとんど無くて、それは PHP でゴリゴリ書くという感じの世界。
arton まあいいや。ちょっとおかしかったけど。ゴリゴリ書いていることろを想像して (笑)
高橋 すいません、ちょっと脱線しました。
ささだ ちなみに、さっき arton さんの話でちょっと気になったんですけど、Ruby なんて仕事では使い物にならないっていう。
arton それは、ちょっと違うような。俺使ってるからね。
ささだ 今 Rails で仕事しているじゃないですか、色々。
arton ほら、それは essa さんも良く書かれているし、俺も書いてるし、ちょっと学生だと分りにくいかも知れないけど、お金を生むシステムってのは一つじゃなくてさ、大雑把には二つあるわけ。
一つは、ある程度の規模の企業の中で閉じているシステム。そしてインターネット上に展開されている開いたシステム。で、それぞれの中がさらに二種類るんだけど、企業内の場合、たとえばナレッジベースのシステムとかそういうのもあるけど、もう一個の方のシステムのうちの一番でっかな部分が問題。
それは何かって言うと、いわゆる基幹系と言われているところで、今まではたとえば伝票に何かを書いて、書いて、書きまくったら、はんこポンと押してこう次の人へ渡すと。で、紙の流れに伴っておぜぜが流れます。もしこの紙が無くなったらどうするの、紙を捜すために徹夜しても探しますよ。金額が合わなかったら、先に進めなくなるから、全部計算をしなおしますよって、そういうシステムを全部 Web ベースで作ってる。
そっちの方のシステムは、一回作ったら 10 年ぐらい持たせるように作るわけ。それだけ金も掛けるしね。そうすっと、インフラのバージョンアップって言うのは基本的にありえないわけ。動作がちょっとでも変わったらやばい、すごく。非常に繊細なところで動いている。なぜ繊細かって言うと、勤勉な人たちが一所懸命勤勉に作ったから (笑) 非常に微妙なシステムなんだよ。微妙なシステムを支えるインフラが変わるのはすごいまずいわけ。
ささだ あー。
arton そういうところには、20 年ぐらい保証してくれる人がいた方が、心理的に安全なの。実際には心理的にしか安全じゃないとは思うけど。で、Ruby を仮にそういうのに使ったとしたら、たとえば 10 年なり 20 年なりを、誰かが確実に同一のソースを保持しといて、こっちで「1.9 でこんなに便利になりましたー」っとか言っているのも無視してずっと頑張るしかないわけじゃん。それをするのはさすがに大変だよね、どう考えても。
ささだ そこは大変になるんですか?
arton 大変だよ。というか、つまらないじゃん。
高橋 ようするに、今 1.1 で動いているマシンがあるわけですよ。で、それにいわゆるセキュリティのパッチを自分で書いて当てまくる。
ささだ 今のはイントラって話だったから、セキュリティパッチとかいらないのかなと。
arton いや、それは分らないよ。どういうバグがあるか分らないじゃん。セキュリティはひとつの問題だけど。
高橋 たとえば、内部統制とかが変わったりするわけですよ。「その監査のシステムを突っ込まないと、業務としてはまずいじゃんですか」とかいう話になっちゃったりするわけですよ。それを入れなきゃいけない。
ささだ あー、なるほどね。
arton 例えばそれで、1.1 で書ける人がどれだけいるの? と。そういう問題が出てくるでしょ。メンテして直さないといけない。Ruby 1.1 って、書けねぇよ (笑)
ささだ そういうところなんですね。なるほど。Web みたいなすごいスパンで回ってるところは?
arton Web 2.0 系はβだから良いんだよ。直せば良い。masuidrive さん30が一人で一所懸命頑張って作ったシステムっていうのと、勤勉な人たちが 1000 人ぐらいなぜか中国やインドから人を集めて作ったシステムは、繊細さが違うんだよ、繊細さが (笑) あまりにも繊細なものだから、息吹きかけてもやばいわけ。
一同 (笑)
ささだ 角谷さんウケすぎ。
角谷 「勤勉な人たちの作った繊細なシステム」という表現がもう素晴らし過ぎて (笑) 思い当たることがたくさん……。
高橋 正直言って、私は全然分らないですね。
arton いや、面白いぜ。ほんとに面白いのは面白いんだ。スゲー面白いよ。
高橋 ちょっと面白すぎるから (笑) でも、それがいかに繊細かって言うのは、わたし的には割とここ数年になってようやく明らかになってきた世界で。日々というか、毎年毎年繊細さが徐々に分ってきていて。
arton え? Web の世界にも繊細さがきている?
高橋 いや、全然来ていなくって、繊細な人たちが、Web にたまに邪魔しに来るんですよ。
一同 (笑)
高橋 なんかすごい繊細な話をして帰っていくという。
arton なるほど。ファンタージエンに黒い雲がやってくるっていう (笑) いや、ほんとだよ。
高橋 そういう人たちはファンタージエンに住めないんですよ、住めないで帰って行っちゃうんですよ。
arton Web ページの左上にβと書ける世界は、ファンタージエンだよね。
高橋 でもそこに我々は住んでいるわけなので。
ささだ 割合としてはどうなんですかね?
arton ファンタージエンに、インド人や中国人がいないことを考えれば、どれだけ人数が少ないかすぐ分るな。
高橋 あと、動く金が違うんですよ。ファンタージエンはあまりお金が動かないんですよ。
ささだ 億いかないという感じ?
arton 東証のシステム作り直すって言ったら、いくらぐらい予算を計上するかと考えると、500 億ぐらいかな。
高橋 いやー、そういう世界は分らんないですよ。
ささだ そこにβとは書けないということですよね。
arton βは 5 億円も行かないよね。
ささだ 数万円から……。
essa 数万円ということは無いと思うけど(笑)
ささだ いやなんか、簡単な Web のなんかっていう。
arton 数万円っていうのはありえないよ。ファンタージエンでない世界は。というのは、数万円って、一人の人間が 3 時間ぐらいのコストだし。営業マンが行ってお話し合いをして契約をまとめてそれでこうやって発注書が回ってっていう、そのシステムを動かすだけで数万円では効かないっていう。システムだからさ。
高橋 何を作るのかというのをまとめるだけで、それの何倍ものお金が掛かってしまう。それをスタンドアップミーティングで決めている人たちとは違うわけですよ(笑)
ささだ ちなみに、essa さんは仕事としてはどっちにいらっしゃるという感じですか?
essa 会社としては、圧倒的に勤勉なほうですよ。私自身は、あるプロジェクトをきっかけに、会社の本流から外れちゃったんですけどね。そっからずっと、そのプロジェクトの延長戦上の仕事と、社内向けコンサルみたいなこととを、半々でやってるんですけど。
さっきの喩えで言えば、自分はファンタージェンの世界にいて、地上にいる人たちを指導しているという立場で。かなり不思議な状態ですね。面白いのは、はっきり言って自分があまり貢献できていないところが多いんですけど、もうちょっと現場に近いところをやりましょうかって言うと、いや、今のままでいいって言われるんですね、会社から。その辺が非常に矛盾していて。
ささだ ちょっとアジャイルって言ったら、もういかん訳ですよね。
essa そうです、抵抗が激しいんで、最近は、アジャイルとは品質の為の方法論である、という言い方をしてますけどね。テストファーストとか TDD っていうのを前面に出して、品質を上げるのはアジャイルです、と。
arton そう言うとね、greentea さんが怒るんだよ (笑) でも、そういう考え方は必要だと思うな。
essa これも禁句なんですか。
一同 (笑)
ささだ 色んなところから (笑)
essa うちらは規模が小さいプロジェクトが多いんですが、そうすると、建前だけウォーターフォールで、現場の実態はアジャイルで動いてるというパターンが多いんですよね。どのタイミングでも結構機敏に仕様変更を受け入れるっていうことをやっていて。でも、工程とかドキュメントは、表向きウォーターフォールで流れていくっていう。だから、管理と実態が乖離していて、結局は管理されていないのに近い状態ですね。これもオフレコだな (笑) 難しいな。
高橋 開発前に一応詳細設計書が出来上がってる?
essa そうですね。
高橋 だけど、詳細設計書に入ってない変更が次から次へと降ってくる感じ。
essa そうそう。それを何とかやっちゃって、一応本番を迎えたら、後でドキュメントをちょっと書き直して納める。そういう流れでやってますから。その状態から品質を上げたかったら、一番手っ取り早いのは TDD しかないですねっていう。
arton あるいはドキュメントから生成する。
essa あ、全部? 生成で?
ささだ 結局ドキュメントがプログラムになるだけじゃないかっていう。
arton そうだよ。それでいいんだよ。そうしたらプログラムの修正はドキュメントの修正になる。一番やばいのは、ドキュメントなんで書かせるかって言うとドキュメント読みたいわけじゃない、管理する人が。
例えば想像して欲しい。20 年前に作られたシステムがあったとする。当然それは COBOL で書かれている。もしかしたら、PL/I かも知れない。さすがにハードウェアの能力も全然駄目になってきた。で、今更メインフレームは無いよねって Linux とかオープンシステム使って作りましょうと。ま、Linux って言っても、もしかしたら zOS とかああいうのかもしれないけどさ。その時に、インドや中国から集めてくる。PL/I 出来る人! ……居ない。COBOL 出来る人! ……居るけど死ぬほど高い。やっぱりこれは Java で作るしかないよね、という時に、仕様書無いからこの PL/I のソース読んでって渡して作る。とは出来ないだろ? だからこういうシステムっていうのは、紙の文書って絶対要るんだよ。
ところがそれが、数十年の間に行われた仕様変更で、プログラムとドキュメントが異なるなんてのがありえるわけじゃん。そうすると、ソースは役に立たない。だって読めないからね。ドキュメントも役に立たない。マジでスゲー困るわけだ。と、考えると、やっぱり二つあるのが間違いなんだから、元々寿命が短いプログラミング言語のほうを無しにしてドキュメントから生成して……。
ささだ で、危惧しているのは、そのドキュメントってのはたぶん機械可読な形にして、結局読める人がいないようなものにならないかなっていう。
arton そこは言語の研究者がいっぱいいるから、若くて (笑) そのために研究者は研究してるから。
ささだ まぁ、そういうところもありますが (笑)
高橋 そのレベルになると、例えばドキュメントを日本語で書きましょうってなった時に、その日本語が繊細すぎる日本語になっちゃうんじゃないかな。
arton 俺もそう思ってるけど。
高橋 それを読み取るのは、普通の日本人じゃなくって、繊細な日本語が読める特殊能力を持った日本人だけかも。
arton でもその繊細な日本語特殊能力はさ、きっと変わらないと思う。10 年前の言語と。
高橋 いやー、PL/I みたいな複雑な日本語になってしまう。
arton そこまで行かないんじゃないかな。
essa それは複雑な日本語でも、一元化されていて、ここを見れば絶対って言うのがある方がいいんじゃないですかね。
ささだ それは PL/I のソースコードがあるのと一緒のような気がする。
arton つまりね、なぜかって言うと詳細設計書を書くのは技術者じゃない。そんな繊細な日本語がしゃべれるなんてありえない。
ささだ そいつらが書けるようなものを、と。
高橋 それだと、ジェネレートできないような気がするんですよ。
arton そこは頑張るということで。
高橋 そこで繊細な日本語にトランスレーションしてとかって言うことをやった時に、読めなくなっちゃうんじゃないかなという。
arton あ、それは意味ないよね。
ささだ でもトランスレーションするんだったら、その前のものと処理系があれば良いわけでしょ。
高橋 それは人間がトランスレーションするから。
ささだ それじゃ変わんないじゃん。
arton いやー、それはシステムのインターフェースでこれだけ 30 年 40 年やってるんだからさ、それこそパターンランゲージ化されるんじゃないか。
ささだ そこはチャレンジャブルな話かなぁという気がするけれども。ちょっとこの話がまた長くなっちゃっうので、次行きましょう。
ささだ Ruby を使って成功だった、うまくいったという事例はいかがでしょう。
essa ルータの検証する仕事があったんですが、その時は、Ruby が使えてかなり助かりました。ルータって言っても、普通の家庭とかに置くようなやつ。それに STUN31 って言うプロトコルが追加された時に。STUN ってあんまりメジャーじゃないと思いますけど、LAN の中から自分のグローバルアドレスを知るとか、途中の NAT しているルータがどういう NAT しているのかチェックする、みたいな。
ささだ UPnP みたいなもの?
essa そうそう。そのためのもの。STUN と IP 電話関係の機能があって、それの確認をしたりデバッグをしたりする時に、Ruby でダミーのサーバを書いたり、トレースを編集したりするツールを書いたりして。
TCP のトレースだったら、フリーのツールが色々あるんですけど、UDP のトレースでかなり複雑なやり取りが起こったりするのを見なきゃならなくて、それに適したツールはほとんど無いんです。長時間走らすとたまに落ちるとか、そういうときに調査の為に、ちょっとしたスクリプトみたいなものが、あれこれ必要になってきたりするんで。トラブルがあるとトラブル地点を掘り下げて、このパケットだけチェックしてその前後だけ特別の値を保存しておく必要があるみたいな。事前に全部用意することはできなくて、発生する問題に応じて、テストをしながら小回りを効かさなきゃいけないんですけど、それは Ruby でうまく出来ましたね。
ささだ こういう Lightweight な言語でちょいちょいと書けたと言うのが。
essa そうですね。ネットワークも見れるし、バイナリも扱えるし、シェルのパイプを使って他のツールとの連動も出来るしという。ごく当たり前って言うか、基本的なことなんですけど、それがうまくいったなと。あと、プロトコルの処理は事前に自分でクラスライブラリにしたものを、必要に応じて直しながら使い回すとか。
ささだ さっきの勤勉な人の話になると、そういうのは C でかっちりと書くんですかね。
essa そうですね、私のケースは、そこに勤勉な人が居たら、やっぱり必死で順繰りに追いかけるんじゃないですかね。
ささだ 自分にとって、これはキラーアプリとか、ライブラリとかありますか、Ruby で。
essa これはちょっと思いつかなかったです。
ささだ Ruby は持ってきて使うものじゃなくて、なんか自分で作って使うものっていう感じですかね。
essa そうですね自分で作る為の言語。でもまぁ、やっぱしいて言えば tDiary ですかね (笑) 私がここで話していられるのも、tDiary のおかげですからね。
arton 結局、今は xrea じゃなくて、完全にはてななんですか?
essa 今は、はてなに移っちゃいましたけど。あれは xrea のトラフィック制限が変な動きをするんでどうしようもなかった。完全に tDiary の問題ではないです。
ささだ えっと次。Ruby の習得は簡単でしたか。
essa 簡単でした。というか、知らないうちに使ってた。
一同 (笑)
ささだ 知らないうちにマスターですか。
essa Python は勉強した覚えがあるけど、Ruby は……。
ささだ 躓いた記憶も無いと。
essa そうですね。
高橋 それまでに色々な言語を知っているというのが違う条件にはなりますが。
ささだ よく言われる yield とかああいうブロックの話とかもすんなりと。
essa そうですね。結構すんなり行ったし。ブロック使いすぎてるんですよね、Amrita は。それで遅いんで。YARV になったらブロックを積んだりするの、速くなるんですかね。
ささだ いやー、遅い部類ですね (笑)
arton ブロックって、相変わらず setjump してるの? 今はしてるよね。たぶん遅いんだと思うんだ。
ささだ えっと、YARV だとしないです。
arton じゃ、速くなるんじゃないの。
ささだ その辺は、ただ setjump って結構軽いんですよね。例えば x86 とかだと。
arton あ、そうなんだ。
ささだ 速いんですよ、意外と。だから結構その分は減らしてるんですけど、マクロな視点で見るとあんまり効果は無い。結構意外だったんですよね。
arton それは意外だな、確かに。
ささだ あとね、あとやっぱり C のメソッド、例えば times って C からインプリしてるじゃないですか。で、ブロックは Ruby じゃないですか。で、C から Ruby のブロックを呼ぼうとするとやっぱり setjump じゃないといけないんですよ。next とか break を待つために。やっぱそこは setjump 要るんで、その辺はちょっとまずい。何とかしなきゃなぁと思いながら何とかしてないんですけど。
ささだ プログラミング全般の話ということで、初めてコードを書いたのはいつぐらいでしょうか?
essa 大学生の頃に、当時はプログラム電卓というのがありまして。ご存知ですか? BASIC でちょっとした 10 行か 20 行ぐらいのちょっとした計算を書くみたいな、そういうので遊んだのが初めてですね。それから後は、弟が PC-6001 というパソコンを買いまして、帰省した時にそれを奪い取って (笑) 遊んでました。BASIC で書けるようになってたんですけどね。そうそう、これ思い出したんですけど、その BASIC の技でですね、絶対アドレス指定でメモリに 16 進の値を書く機能があって、それで機械語のサブルーチンを書き込んで、そこにジャンプして呼び出すという技があったんですよね。
arton POKE、PEEK。
essa そう、POKE、PEEK。思い出した。それで今思い出してみると、Ruby で拡張ライブラリを書く感覚に似てるなぁと。なんか、言語の限界を超える技があるんだということで、結構原点だなと。あと同時にですね、私はアセンブラとかそういうローレベルがだめなんですけど、それは PEEK、POKE で機械語を書いたトラウマだったのかな (笑)
一同 (笑)
essa あれ以来、ローレベルのプログラミングが嫌いになったのかなと思います。
ささだ ローレベルって言っても、バイナリで書くっていうのはすごい感じですね。
essa 無茶苦茶ですね。だからアドレスとかそういうのを全部計算して。
ささだ まずはアセンブラ書くなぁ。
essa そう、だからね。ラベルとか相対アドレスが使えなくて、コードのバイト数を数えてそれが配置されるアドレスを計算して、それを絶対アドレスで16進に直して書かなければいけないんで、ほんとに気違い沙汰 (笑)
ささだ なるほど。その頃は趣味だったんですか?
essa ええ、完全に趣味です。大学は文系なんで。
ささだ 今は Ruby 以外でプログラミング言語は何か使ってるものがあれば。好きなものとか。
essa 一応プログラミング言語の遍歴を言っていくと、大学の時はまったくの趣味で、就職するときにソフト会社に入って、COBOL を 7 年間。COBOL プログラマを勤勉な人に混じってやってました。今思い出すと、けっこう COBOL で色々ツールのようなものを書いていたりしたんですね。テストデータを作るとか、ソースみたいなのをちょっと生成するとか。で、その後会社を移って UNIX ベースで仕事するようになって、C で 3、4 年やったのかな。そのときにもやっぱり C でそういう類のツールを書いてましたが、COBOL から C になるとなんて楽なんだろうと(笑) そういう思いがあって。
ささだ そこでいろんなことをはしゃいで (笑)
essa そう、はしゃいで (笑)32 それからその後から Window で VB とか C++ とかをやってまして。そこで、受託開発から、自社製品開発に移って、それは全部 C++ でした。これはプロジェクトとしては、自分ともう一名で提案して起こしたプロジェクトだったんで、プログラミングは、ほとんど全部自分ひとりでやってたんですけど。その時はかなりバリバリに C++ でやりましたね。
後はまぁ、その延長の部分と。ここ 10 年ぐらいは C++ と Ruby が半々という感じ。それから、自慢というとあれですけど、94 年に出した製品の一番最初のバージョンで Java Applet を使ってたんですね。
ささだ 94 年?
arton 94 年はまだ Java は無いですよ。
essa 無いか。95 年かな33。リリースしたのはもうちょっと後なのかな? とにかく Java の英語の本が一冊しかない時に、ほんの短いものですけど、Java Applet を書いて動かしてましたね。それがちょっとした自慢。言語としては、C++ はかなり好きな方です。Ruby 界隈の人は C++ が嫌いな人が多いですよね。
arton え、そうなの?
角谷 咳さん。
arton 咳さんは……そうか。
角谷 C はC++ よりもオブジェクト指向っぽく書けるからいいって。
arton あれはまぁ、韜晦34が……。
高橋 まつもとゆきひろさんという方が (笑)
essa まつもとさんは嫌いですよね。
arton なんで嫌いなのかな。Better C として考えれば……あ、K&R が好きなの? プロトタイプ好きじゃないみたいだもんね。
ささだ いや、そこではないんじゃないかな。
arton C++ はプロトタイプも強制だよ。
ささだ うーん、いやまぁそうだけど、そこで嫌いになるって言うのは……。
arton だって別に時期的から言ってさ、template が嫌いだとも思えないじゃん、まだ無いから。そうすっと、何が C と違うのって言ったら、せいぜいクラスの宣言があるとか……そのぐらいしかない気がする。
高橋 そこが嫌なんじゃないですか。
arton class って書けちゃうのが?
ささだ オブジェクト指向っぽくないとか。
高橋 オブジェクト指向が好きだから、C++ がオブジェクト指向で素晴らしいとかいってるやつらは許せねぇとか。
arton あー。その象徴として、俺は使わないと。
ささだ それは訊いてみましょう、今度。
高橋 C で困ってないとかっていうのが。
arton それはでかそうだね。やっぱり K&R が好きだって事じゃないかな (笑)
高橋 やっぱり言語仕様的に納得がいかないとか。
ささだ C++ は難しいよね。
高橋 よくわかんない。
ささだ template の細かい仕様とか全然わかんないというか、把握できない。難しい。
arton template ってこのスペースの数が C にもあるのか、っていうのもひとつあったな。あと未だに関数ポインタ書くときに C++ の場合だけは typedef するために、一回こうやって調べてここにこうやって書くんだってやらないと駄目だな。
ささだ どの辺が好きとかあります? C++ の。
essa プログラミング言語 C++ っていう……。
ささだ はいはいはい。第 3 版を読みました。
essa 私が読んだのは第 2 版だったんですけど。
ささだ まだこれくらい (厚さを指で示している) の時でしたっけ。
essa まだ普通の本の厚みだったかな。
一同 (笑)
arton 第 2 版って言うのは、C って書いてあって全体的にグレーっぽいやつ?
essa 洋書で読んだんで……。緑だったような気がした。違うかな。
arton 初版がグレーっぽいやつか。
ささだ 第 3 版からしか知らない。
essa 単純にそれ読むと、何でこの言語がこうなってるかって事がきちんと説明してあって、それに一々納得したというか。
ささだ あれ? プログラミング言語 C++ にもそういう話が出てるんですか? なんか設計と何とか35っていうのがありましたよね、C++ の。あっちじゃなくて?
essa あっちだったのかな?
arton プログラミング言語 C++ にもいっぱいでてるよ。あれも Ruby 本と同じでさ、筆者の思いのたけがいっぱい出てる。
ささだ 結構言語の話、それをどう使うかという話が多かったので。
essa あれ、どっちだろう。
arton プリプロセッサ使っちゃだめっていうのは、設計のやつのほうだよね。
ささだ 設計はまだ読んでなくてあれなんですが。
essa とにかく、Stroustrup の本が好きだっていう方が正しいかもしれない。
arton あの人すごい好き嫌いがあって面白いよね、読んでて。自己主張が強いんだあれ。
essa うん、そうですよね。結構はっきりしてる。
arton どうでも書けるけど、こう書かなくちゃ駄目だみたいな。
ささだ C++ じゃなくて、Stroustrup が好きと。
essa ま、そうでしょうね。
ささだ 今まで読んだ中で、最も美しいソースコードは何ですか。答えづらいような気もしますが。
essa これはバートランド・メイヤーの Eiffel 本36に出てたソースですね。あの本に Eiffel のコンテナライブラリのソースが出てたんですけど、それがすごいなと思いました。単純なリストとかスタックとかそういう。
ささだ 契約使って綺麗に書けますよ、みたいな。
essa 完全に無駄が無い。綺麗で分りやすくて。
高橋 end で終わってて。
一同 (笑)
arton なんかあったっけ、end で終わっててっていうの。
ささだ Eiffel の言語仕様が。
essa それと、ソースコードというのとはちょっと違うんだけど、UNIX プログラミング環境37っていうのをカーニハンが書いたんですよね。シェルとかツールを使い込んで、最後にちょっと C で足して出来ないところを補うというストーリーで。その辺が何と言うか、シンプルなものを組み合わせていろんなことに対応していくと、工夫次第にすごくいろいろなことができるというお話。シェルスクリプトも含めてソースがすごいなと思いました。
ささだ 今興味を持っているテーマは何でしょう。
essa 「ふつける」を読みたいです。でも、読んだら (Haskell に夢中になって) Amrita2 の開発が止まると思う (笑) だから自分で自分に封印してる。
ささだ なるほど。ちょっと Haskell に興味があるという。
essa かなりありますね。
ささだ ハスリタがとか。
essa ハスリタ (笑) やっぱり勤勉な人と仕事するには強い型だなぁと (笑)
一同 (笑)
ささだ 勤勉な人に Haskell。
高橋 怠惰が一人いる。
arton 勤勉な人に Haskell って、ほんとはやっぱり望ましいのかも知れないね。ほら勤勉な人たちって、ほんとに勤勉じゃないとだめになるだろうから、そうするとほんとに勤勉な人には良いんじゃないのかな。
ささだ 勤勉な人たちはたぶん、副作用バリバリの物を使うような気がするので。仕事として。そうでもない?
arton うん、だからまずいんじゃん。だから副作用が出ないものを与えれば良いなぁって。
ささだ あー。
essa 檻を作るって事ですよね。大きなプロジェクトでは、ある程度全体をコントロールする人がいる事が必須です。その人はやっぱりソフトである以上怠惰な人じゃなきゃいけないと思うんですけど、怠惰な人が 1 人に勤勉な人が 100 人というようなときに、その怠惰な人が 100 人の勤勉な人をコントロールできるかどうかが、重要な問題。
その為に、檻になるような要素が必要で、そう考えるとどうしても強い型というのが必要じゃないかなという気がしてて。強い型の言語は、一般的には、コントロールできることと引き換えに不自由さを受け入れなければならない。Haskell はどうもそうじゃない部分があって、強い型なのにいろいろできるみたいだなぁと。38
ささだ 色々出来るのかなあれ。
arton 色々出来ないんじゃないの? できるのかな?
高橋 ひどい Haskell のソースというのを読んだことがないので。
一同 (笑)
高橋 Java で 1000 行あるメソッドに対応するようなひどい Haskell っていうのはどんな感じなんだろう。
ささだ いや、書く人は書くんじゃないの、do でなんかガーって。
高橋 だから、そういうのが量産されてっていう風になったときに、どこまでひどいことが起こるのかというのは。
ささだ main が 1000 行 (笑)
高橋 そんな感じだとおもうんですけどね。
arton 全部なんか monad になっちゃってるのか。
essa ここ読んでいる人にお願いですけど、何があっても、私に「ふつける」だけは送らないでください。
一同 (笑)
高橋 そういうと何冊も送られてくる。
一同 (笑)
ささだ 大学を卒業して COBOL の会社に?
essa そうですね。文系だったので、ソフトハウスへの就職は大学始まって以来だったみたいです。
ささだ へぇー。そのころはやっぱり COBOL の仕事みたいなのはメジャーじゃなかった? 今みたいに猫も杓子も SE とかそういう時代では全然無いという。
arton 今はそういうじゃないんじゃないの。まてよ、僕より一歳上なんだから、あの頃は、そんな就職って良くも悪くも無かったんじゃなかった? まぁ、バブルにはなりきってないから、そんな良くもなかったし。
essa そんな良くもなかったけど、自分のいた学部は、商社とか銀行とか、かなりメーカーでも人事とか総務とかエリートコース一直線という感じで。すごい狭かったんですよね。狭い範囲に集中攻撃するような。
ささだ そんな中、変なところにポーンと。なんか切っ掛けがあったんですか?
essa だからそれが PC-6001 ですよ。
一同 (笑)
ささだ BASIC がやりたいから入ってみた。
essa BASIC って訳じゃないですけど、ソフトの仕事って言うのはプログラム組んでて給料もらえるのかなっていう、それだけで。それで、そんなおいしい仕事があるなら、これをやるしかないと思って。で、就職課行ったら全然わかんないみたいな。どうしたんだっけかな。とにかく異例というか、全然例が無いような就職。
ささだ で、COBOL の会社に入った。
essa そうですね。そこでSEとしてやってて。配属された所は、対応するお客様の業種が流通業やサービス業で、かつ機種が汎用機の中でも小さいほうなんですよね。そうすると、お客様の側にはコンピュータの知識がなくて、(規模と比較して) 大きな金を投資していることになる。だから、どうしても夢が広がりすぎてしまうんですね。すごいなと思ったのは、その「夢」を押さえつけて、やや強引に納得させてしまう技術。要求定義みたいなのをびしっと決めて、かなり開発側の思惑で突っ走って、しかもお客さんに文句を言わせないと。
ささだ へぇー。
essa そのセクションだけなのかもしれないけど、私がいた所では、そういうノウハウみたいなのがすごかったですね。結局その頃の機械では、なんかこれをやりたいあれをやりたいって言ったって出来ないし、出来ても運用できないんですよ。プログラムが動いても業務の方がついていけない。だからメーカーとして一番大事なことというのは、これしか出来ないっていうものを、いかにそれを押し込むかと。その範囲できっちり動かすというのが重要だったんで。
そういうノウハウは、まぁすごいなと今でも思ってますね、やっぱり。画期的なシステムを一から創造するより、お客様の会社の規模や組織としての能力を見極めて、システム化できる業務の範囲を見切る。その見切りがお客様自身よりうまくできるべきだSEはという感じで、そういう方向に凄い先輩方を見てて、ああいう風にはなれないと思ったんで (笑)、方向転換を考えたという感じ。
ささだ で、C の会社に。
essa そうですね。ミニコンとかそういうのをやってる会社に入って。それで、3 年ぐらいはそこで普通に C で受託の仕事をしてました。その仕事をしながら自分の適性を考えて、どうも自分は教育とかサポートというか、裏方的な方がいいんじゃないかなって上司に言ったら、まぁそうだろうという話になって。で、現場を後ろで支えるようなセクションをほぼ新設してそちらに移動しました。小さい会社ですから、そういう所は柔軟ですね。
そちらのセクションで LAN の構築のような仕事をしている時に、ある製品のアイデアを思いつきました。簡単に言えばソフトウェアルータです。当時はモデムで一台ずつつなぐか、専用線をバシッと引くかで。専用線は月 20 万ぐらい掛かったんで高過ぎる。一台ずつつないでいくには、モデムの数と電話線の数が足らないみたいな。規模的に中途半端な会社だと一番困っちゃうんですよ。
で、今なら当然のように NAT ルータで解決するんですけど、当時はまだありませんでした。それで、そういう機能のソフトウエア、ダイアルアップ用 PROXY サーバを開発しました。自分の会社でネットにつなごうとしたら、こういうのが切実に必要だったわけですから、これを必要とする人は他にもいるかもしれないと思って製品化を提案したらですね、ちょうど社内で営業の人間が乗ってくれて、これ一緒にやろうということで。そのプロジェクトが大当たりして。
ささだ 二人でやってたんですか?
essa そうですね。最初はほぼ二人でやってて。
ささだ おおー。二人でやってて大当たりしたら会社的にはねぇ。
essa そうですね。そっから結構好きなことをやらせてもらえて。
一同 (笑)
ささだ サポートしながら、そういう新しい仕事をという感じだったんですか?
essa 製品開発の時はそれ専任でやってました。その製品は 95 年末に発売だったんですが、今でもまだ売れてるんですよ、ほんの少しずつですけど。
arton ちょっとそれは信じがたい……。
高橋 ちょっとずつ売れるというのはあるとは思うんですけど。
arton いやそうじゃなくてさ。今だったら Windows XP とかに入ってるじゃん。
essa そうそう。
arton XP になってないって事? でも今ルータソフトを買うってことは、たぶん新規にパソコンを買ってる人なんじゃないかって気がするんだよね。今まで持ってないんだから。
高橋 前から使ってて、マシンを新しくするんで何とかかんとか……そういう。
essa そういうパターンとか、あとアクセス制限とかログをとるとか、ちょっとした機能で必要なんじゃないかな。
arton なるほど。
essa まぁ、それで、それ以降は、指示を受けて作業するのではなく、自分のアイディアから仕事を作っていいような立場にさせてもらえました。
ささだ 素晴らしい。
essa その製品の開発中はソフトの一番コアの部分を実質的に一人で面倒見てきたんで、かなりしゃかりきでプログラミングしてましたね。
ささだ それ C++ なんでしたっけ?
essa そうです、それが C++。
ささだ しゃかりきに C++。
essa で、途中で、これからプロライエタリのソフトウェア製品というのはかなり難しいから、オープンソースの方に舵を切らなきゃいけないだ、みたいな提言をして。そういうのを絡めた色々なプロジェクトをやってきた感じですね。
ただやっぱり、うちの会社の中で自分の立場って言うのは、非常に矛盾しているところがあります。会社としては、昔ながらのやり方でずっと行きたいんだけど、私にはそれとはちょっと違うことをやれと。で、なんかプロジェクトを立ち上げるので人くださいっていうと、絶対貰えない。来てもすぐ抜かれてしまうんで、なかなか、具体的な成果に繋がってるものがないんですけどね。
ささだ 会社としては冒険できないって事なんですかね。
essa うーん……。私は売上が立たないコストセンターですから、人が来ないのはしょうがないと思いますが、私が他の社員を洗脳することを警戒しているように感じることもあります (笑) 被害妄想かもしれませんが。投資や人がなくても進むようなプランを作っても駄目なことがあるんでね。やっぱりちょっと文化的な抵抗って言うのがあるんじゃないかと。うちの会社はメーカーの文化の中では優等生だったと思うので。
高橋 今でもすごい優等生で?
essa だと思いますよ。規模の割には割りとしっかり頑張ってきてる方だと。昔のやり方の優等生だけに、そっから抜け出すのが難しいという感じなのかな。
高橋 スキルはそれなりにあるんですかね。
essa あると思いますけどね。
高橋 じゃあ、何かの拍子にそれなりに変わる可能性も無いわけではないかも。
essa ええ、それはそうだと思います。逆に言えば、追い込まれなければ変わんないということですかね (笑)
高橋 まだそこまで追い込まれているわけではない? オープンソースと会社の絡みの話をちょっと聞いてみたいなと思ったんですけど。オープンソースの話をそもそも essa さんがしているのかとか、して会社の反応はどうだとか。
essa それは受託の物件の中で、Linux とか。今では Ruby を使えっていう。
高橋 それ以外のオープンソースは色々と、当たり前のように使われているところでは使われている感じですかね?
essa 早く勉強して、早く見つけた方が良いというのはすごく力説してるのと、あと評価の部分ですかね。これ使おうと思うんだけどどうだろうかみたいな場合に、やっぱりある程度コミュニティというものを見慣れた人間じゃないと、読みきれない部分があるんじゃないかと思うんで。その辺は、これは良いいけどこれは駄目みたいな。
高橋 そういうのを相談されるポジションにいるんですか?
essa そうです。
高橋 なるほど。
essa 相談されてトラブったときには、ちょっと助けに行くというような。
高橋 プロジェクト始める前にも、やってる最中にも呼ばれたりとか。
essa そうですね。
高橋 確かにそういう人が一人いると、すごい便利は便利というか。
essa でしょうね。
高橋 今のビジネスをそのまま上手くつなげていくために、今のビジネスとはちょっと違う知識を持っている人が社内にいると。いざというときのために。
essa そうですね。
高橋 すると、それをメインにして、どうしたこうしたとかっていう話になっていくのは全然別で。
essa そうですね。やっぱり若い人に何とか勉強させたいんですけど、なかなか今の仕事につぎ込まれてしまうんで。Java とか .NET を覚えてってしまうという。そこで文化的にそういうほうに染まって行っちゃうのはまずいなと思うんですけど。
arton それはなぜ? 文化的に Java や .NET に染まるのはまずいなと思うのは、どういうところがまずいなと思うのかな。ある意味では stable ですよね。
essa そうですね。
arton 基本的には全然 stable じゃないんだけど、でも少なくとも 10 年ぐらい、中期的には stable。
essa やっぱり情報のありかがはっきりしてるというか。
ささだ それは利点な気がする。
essa そういうもんだと思っちゃうと、そうじゃないものを使えなくなっちゃう。
arton あー、要するに高速道路は走れるけど、ってそういう話になっちゃう。
essa まぁ、そういう感じですかね。
ささだ 既にあるものとして部品を組み合わせていく人しか人材にはならないって言うか。
essa ていうか、調べ方が分らないって言う。
それは歴史的なものがあって、日本のメーカーは垂直統合でハードから OS から全部作ってましたよね。だからそこの協力会社って言う立場だと、結局メーカーさんに訊けば何でも分るという状態で歴史が始まってるわけですよ。だからそこといかに密な関係をつくるかと。例えばこういう問題が起きたらこの辺の人に訊けば担当者を教えてもらえるとか、このセクションで現場を仕切ってるのはこの人だから、何かあったらここに相談に行って対策を練るとか、そういうノウハウが重要になってくるわけね。
で、それが Windows になったときにどうなったかというと、メーカーさんに聞けば何とかなるって言うのが、そのメーカーさんの変わりに Microsoft になったみたいな形で。MSDN 引けば何とかなるって言うか。答えがあるところが最初から分ってるって言うか、探し方が分ってるっていう世界の仕事ですから。
arton 実は荒野なんですけどね。
essa MSDN はね。
arton 例えば昨日かおとといか出てたけど、名前忘れちゃったけど、Windows XP SP2では、コネクションが……。
essa ああ、相手が答えないコネクションが 10 個たまったら止まっちゃうって言う39。
arton そうそう。あれなんか完全に荒野を自分で切り開いてるじゃないですか。
essa そうですね。
arton だから必ずしも MS だから、っていうのは実はあんまり関係ないような気もしないでもは無い。ただ、仕事のプラットフォームとしては、essa さんが言われていることっていうのは分るんだけど。
essa パソコンから Windows に行った人は、そういう感覚があるんですけど、メーカー系の OS から Windows に来た場合は、そういう文化的にはすごく集中管理の文化って言うのがあるような気がする。そういう意味でオープンソースとかネットとか、情報が分散しててどこをどう探したら出てくるのかなかなか分らないっていうか。それ自体が一つのノウハウであるみたいな感覚って言うのは、なかなか上手く乗り移れない部分がある。やっぱりそれが整理されてから乗り換えてくるという形になってるんじゃないですかね。
arton 俺の会社のある部署見てると思うんだけど、それは単に MS の代わりに Red Hat 社に変わっただけ、っていうのもあるような気もするな。
essa そこをね、Red Hat が受けてくれるから。
arton それをオープンソースを使ってますでございますみたいに言われるとね (笑)
一同 (笑)
ささだ ちなみに、そういう教育とかもされているという話でよかったんですかね。
essa そうですね。
ささだ それの教育っていうのはどういう風にやるんですか。そういうのは調べられなければいけないよっていう、ノウハウとかなんとかっていうのは。
essa 新人教育の時に講話して終わりですね。
arton でもあれは良い話でしたよね。最後覚えてないですけど。
essa 情報断食ってやつ40?
arton 情報断食だっけ。なんかそれこそ圏外に「こういう話をしました」って、時々出るじゃないですか。そういうの読んで、ふーんとか思ったんですけどね。41
ささだ 会社的にはコミュニティに行ってこいとか、そういうのは出来ないですよね。強制とか。オープンソースのプロジェクト立ち上げるとか無いですよね。
essa だからやってみたいと思ってる人はいると思うんですけどね。そういう人を上手く後押しできるような、後押しって言うか、縛らないっていうことですよね。
高橋 会社に危機感があれば出来るんですよ。そういうことでもやらないと先がなさそうって言うことで、博打でも打つかっていう話にはなるんだけれど。でも、上手くいってる会社は、そういう危ない橋は渡れないという話になって。
essa 茹で蛙ですかね。うちの会社も茹で蛙になっちゃうのかな。
ささだ blog どのぐらい書いてるんですか?
arton 最近は更新頻度は落ちてますよね、ガクッと。
essa うん、最近はやっぱ Amrita2 をやってるんですよ。細々と。
arton もう一個の方[^42]、更新されてます?
essa あっちはしてないです。
arton RSS リーダー上では動きが無いから。あれどうなってるのかなって。
ささだ blog じゃなくて、もう開発にと。
essa コード書いてるんですよ。
ささだ ちなみに blog って、あの文章って、どのぐらい時間掛けるんですか?
essa かなり長さと比例してないんですけど。一時間ぐらいで書けちゃうのもあるし、一日掛けてるのもありますね。
arton 引用すると真面目に引用するからどうしても時間掛かっちゃいますよね。
essa ていうかね、ちょっと自分の場合は特殊じゃないかと思ってんだけど。大体のエントリは頭の中にイメージがあるんですよ。そのイメージの通りに掛ければすぐ出せちゃうし、書けないと、かなりああだこうだひねったり足したり消したりとかやってて、すごく時間がかかってしまいます。
arton essa さん、変な話すごい面白いのが、所詮……所詮という言い方をすると失礼なのかもしれないが、日記なんだから自分のメモで十分なはずなのに、ちゃんと人に読ませようとしてるよね。そこがね、すごく僕には不思議で面白いんだ。ちゃんとまとめようとしてるじゃん、すごく。という印象がすごくするんだけど、それは僕の勘違いかな? 一つのエントリでちゃんと何らかの終わりの言葉みたいなのをつけようしてるように見えるんだ。
essa 終わり方はちょっとね、凝るって言うことはあるんだけど。
arton 書いてる途中で、収拾が付かなくなって、やめたって一言書いてやめりゃ良いような気もするんだけど、そうなってないじゃないですか。
essa その時はやっぱり出来るまで粘っちゃいますね。納得するまで書き直しちゃいますね。
高橋 書き初めと、今と、その間で、blog を書く意識は変わったりします?
essa あんまり変わってないと思いますね。書くのが早くなったっていうぐらい。基本的にはね、モーツァルト的なんですよ。もう浮かんだときにはエントリが全部頭の中に出来てるっていう感じでやってきますね。ただそれをそのまま書ける時と書けない時があるんで。
角谷 書く長さと時間に相関関係はないんですね。短くても時間がすごくかかる場合もあるし、長いけど簡単に書けちゃう場合もある。
essa かなりガーッと書けちゃう場合もある。
ささだ 日記は頭をまとめるところだから、最初にイメージが出来てるって言うのはすごいな。書きながら考えてるって言うところがあるから。
essa なんかアイデアが漠然とあるんですよね。
高橋 それが、思い描くイメージが漠然としているという感じ?
essa そうですね。それが書いてみたら、その浮かんだアイデアとちょっと違うなぁと言う状態ですね。
arton 書いてみたら、元々考えていたのと違うものになっちゃったっていう、そういう感じなんですかね。書いているうちに、まてまて俺が書きたかったのはこういうものじゃない、という風に思い返してしまった、とかそういう事なのかな。
essa なんか最初のイメージがかなりハッキリしてるんですよ。こうだって言うのがハッキリしてるんで。それと書き終わった文書を自分で比較すると、うまく書けてる時と全然だめな時と、マルかバツかみたいな、中間がないデジタルな評価になります。
arton そうか、僕は逆なんだよな。書く前に決めておくわけ。で、その決めたものを書いたら負けなの[^43]。
一同 (笑)
arton 書いてる時に、雑念を次から次へと浮かべて、如何にはずしていくかって言う勝負所だと思ってるんだよな。金取る文章じゃなくて、俺が好きなこと書いて後から読んで、何でこのときこんな事書いたのかな、って言うのが楽しいから。まとめたくないんだよね。
角谷 時間が来たからここまでっていう (笑)
essa ジャズの即興演奏みたいなもんですかね。
arton だからなんだろな、それが最初に言った圏外からのひとことを見て、ああ面白いな、俺も書きたいなと思ったんだけど。その一方で同じ事をしたら駄目だって思うっていうのもあって、それでどうして俺も書きたいんだろうか、で何が特徴なんだろうか、それは外さなきゃとか見ていくと、必ずきちんとまとめがついてるな、っていう所に気づいて、それがいつも不思議だなって思う。つまり、つまんなくない?
essa 書いてて?
arton うん。
essa いや、面白いですね。
高橋 イメージが思い浮かんだところでもう全て終わってるって事はありますか?
essa それですね。理想を言えばそれ。
高橋 思い浮かんでるところで終わってるのに、それをわざわざ書くのがめんどくさいとか。書くまでもない。
角谷 と日記に書いたつもり?(笑)
essa フェルマーの大定理方式 (笑)
高橋 arton さんの書き方だと、書く面白さはあると思うんですよ。自分の最初のイメージとは違うものが最終的に文書が出てくるので。なんだけど、自分がイメージしているものがそのまま日記に書かれるだけだったら、自分としてはあまり面白くないのかな。
arton つまりそれは、読む第三者を意識してますよね、すごく。意識されてるのかなっていうのは、やっぱ興味があるかなぁ。実際、興味持ってくれてないと読む立場としては困るんだけどさ。
essa 自分が読んで楽しいって言うのが一番大きいですよね。第三者を意識するっていうのは、人を傷つけるかどうかって言うことは気にしますよね。だからこれを読んで、やな思いをする人がなるべく少ないようにって言うことで。それは同じひとつのアイディアを書くにしても工夫の余地があるし、注意して書けば違うところなんで、それはかなり気にして書いてますけど。
高橋 そもそも blog を始めた切っ掛けって話しましたっけ? 最初の頃はエッセイに日付が付いてたみたいな感じに。
essa 切っ掛けはですね、会社でメーリングリストをやって、業界関連の注目ニュースを流してたんですね。それにちょっとコメントをつけてやってたら、コメントの方がどんどん長くなって……。
一同 (笑)
essa それでどんどん脱線してっちゃったんで、さすがにこれを会社で出すのはまずいって、個人でホームページにしますっていうことで作ったのが、圏外からのおたよりですね。
ささだ 今もその延長という感じなんですか?
essa そうですね。延長ですね。
ささだ さっき面白さって話があったと思うんですけど、どの辺に面白さを感じてるんですか? arton さんは後で自分で読むためっていう、チラッと言ってましたけど。どの辺がモチベーションというか、面白さなんですかね。
essa 後で自分で読んで面白いって言うことですよ (笑) だからあんまり自分で考えてるっていう意識は無いんですよね。
ささだ 自分で書くエントリを自分で考えてるっていうイメージが無い?
essa そうですよね。「来てる」っていう感じ。
ささだ いつの間にか?
essa そうですね。だから実装者って感じですよね。
一同 へぇー。
essa だからそれ、前に書いたことがありますよね。[^44]
arton そうですよね。読んだ覚えがあります。
essa 移植するような感覚だっていう。
ささだ 誰かが作ったこういうコンセプトのものがあって、それを。
arton 誰かじゃなくて、それは内なる声。
ささだ 内なる声が。
essa 自分の意識としては、ソフトを移植する人みたいな感じで。だから移植するのに当たって、こちらの環境で工夫しなきゃいけないことがあって、それは一所懸命頑張ってるところがあって。そこの努力は認めて欲しいし、プライドもあるけれど、でもこのソフト自体を褒めるんだったら、あっちを褒めてみたいな。
一同 (笑)
ささだ うわー、それは面白いな。
arton 実装は褒めて欲しいが、仕様は別。
essa うん、だから Meadow[^45]みたいなものですよね。Meadow の人はすごいと思うけど、あのソフトを emacs として褒めるんだったら、Meadow の人に対してじゃないですよね。私のブログに対して私自身に何か言うなら、Meadow の人の仕事のように評価して欲しいという感じですかね。そのアイディアをこの世の言葉でこの世の論理でうまく展開したことが偉いみたいな。
arton それは宗教者みたいな感じだな。全ては神の思し召しなんだから、私を褒めるのではなく神を褒めてください、みたいな。
essa そうそう、それです。私は blog で書いてるよりかなり宗教的というかオカルト的な人間というか (笑)、そういう発想してるんですよ。ちょろちょろは出してますけど[^46]。
高橋 そこで田口ランディとか吉本ばななとか言ってたんですか。
essa そうそう。ああいう方向の人なんですよね、なんていうか。
arton そっか、読書遍歴とかそういうとこからその頃から、マックス・ウェーバーだとかアーレントとかあの辺は興味があったんだ。それとも最初は小説を読んでたのが、たとえば吉本ばななですよね。だんだん社会関係の本も読むようになったっていう事なんですか?
essa それはそうだな、マックス・ウェーバー、アーレントは完全に blog を巡回し始めてから。だから、東浩紀とかも。哲学思想ってのは一番嫌いだったんですよ[^47]。ていうか、それ以外は何でも読むけど、あれだけはやだっていう人間だったんだけど。それはblogを通して読んでると、この人の文章が面白くて、この人が面白いっていうんだから面白いのかなみたいな形で。そうして切り口が分ると理解できてきて、はまってったっていう。
arton それって、essa さんが blog を通して知り合った人は社会思想系の人が多かった、そういうことじゃないんですかね。
高橋 そういう方に興味がある人の blog を読んでいた?
essa そうですね。興味がある blog を書く人は、大体そういう傾向のバックグラウンドとか、本を読んでる。
arton それスゲー面白いな。要するに、元々私はそっちの方は嫌いでした。でも、blog を読む私としては、そういう傾向の人たちが好きです、っていうこれはすごく面白いな。なんか知らんけど。
essa ほんとにそうなんですよ。極端ですねそういう点では。
高橋 でも、アーレントみたいに blog を書いている人はあまりいないわけで。
arton 私は神は嫌いだけど、マタイの行動は好きだとかそういうことなのかな。
高橋 聖書はあんまり好きじゃないんだけど、キリスト者の書いている文書は面白いとか。
arton そうだね。
essa アーレントはいないけど、あれは何つったっけな。ちょっと話題になった新書[^48] で知ったんですね。それをあるblog[^49] で見て、ああ、この本は面白そうだなって読んだら、そこにアーレントってあって。
高橋 それは海外の?
essa 日本の。その本の引用を見て、このアーレントって人はなんか良いこと言ってるんじゃないかなと思いました。でも、本人の本を見たら、もう見たら最初ほんとに分んないんですよね。哲学思想っていうのは、ほんとに 1 ページ読むのに 30 分ぐらい掛かるような感じで読んで、放り出して、でも気になってまたちらちら見て、また放り出して見たいな感じで[^50]。
arton 読まなきゃいいんですよ。思想書の読み方って言うのは、くだらないところは能書きなんだから読まない。面白そうなところだけひょっと。それが正しい読み方。書いてる人がきっとそうだから。思いつきでバーッと書いて所と、うん! ここは書く! って書いてるところが絶対あるはず。だって、論理が無いんだから。所詮思いつきなんだから。哲学ってのは。
高橋 アーレントはあるんじゃないですか。
arton それはまぁ、多少は社会的な実証っていうか、裏づけを持っている人であっても、結論って言うのは実はやっぱり自然科学とは違うからね。
高橋 まぁ、ロジックに結論があるわけではないとは思うんだけど。
arton 私はどこに着目して、どういうパターンを発見したかっていうことかな。だから、読みにくいところは読み飛ばしても正解なんじゃないかと私は思います。
essa 新らしめの本はそうだと思いますけどね。アーレントとウェーバーはやっぱり読んだ範囲ではちゃんとみっしり詰まってるような。分量だけのことはあるような気がしましたけどね。まぁ、わかんないな。放り出してる分もあるから。放り出したところがそうなのかもしれない。
高橋 ルーマンから入ったんですか? アーレントは。
essa いや、アーレントとルーマンはあんまり思想的には繋がってない……。
高橋 いや、2004 年 7 月 6 日のエントリで、アーレントとルーマンっていうエントリを書かれてますが[^51]。
essa 私が無理やりつなげた (笑)
arton あ、それが今の新書?
essa 一般的な評価としては……。
高橋 これが一番最初のエントリなんですよ。
essa これこれ。仲正昌樹さんの「みんな」のバカっていう。
高橋 ああー、なるほど。
essa 不自由論の方かな?
arton 高橋さん読んでるの?
高橋 仲正昌樹さんの本は読んでます。この本ではないですけど。
arton あとは、朝日新聞のあれと、今のエントリは全然関係ないような気がするんだけど。元々は朝日新聞を糾弾するつもりで書いたんじゃないんですよね、こういうのって。
essa blog を始めたときですか?
arton それは全然関係ないですよね?
essa それは全然。(朝日新聞について書くようになったのは) やっぱり 2 ちゃんねるとかのネット右翼的なものに踊らされている面もありますけど、実際、個人的にどうしても許せない所はあると思ってますけどね、部分的には。だからそういうところはそう書いてるっていう。[^52]
ささだ Google 八分とか。
arton Google 八分はちょっと微妙な感じもするんですよね。
高橋 Google 八分よりはちょと朝日の方にひっかかりがあるんですが、朝日の方に関してはちょっとネガティブキャンペーンが強すぎるかなぁと。他のエントリに比べて。というのがすごい気になって。個人的には、ああいうネガティブキャンペーンの張り方はすごい嫌な感じ。合ってる間違ってるとかっていうのはさておき、すごい嫌な感じがするんですよ。それはわざとですか?
essa それはわざとっていうか……。
arton あれは目立つんだよね、すごく。
essa よく言われますね。ここだけはちょっと目が血走ってるみたいな言い方、コメントはよく拝見します。
高橋 そこまで必死にならなくてもっていう。
essa その辺について書いたエントリはあるんですけど[^53]。
arton 実は私は左っぽいからなぁ、というコメントで、そんなの今頃気が付いたのバカみたいな[^54]。
一同 (笑)
arton ってのが可笑しかったけど (笑) 全体で見れば私と同じ時代の空気を吸ってた人だなぁと感じる微妙なリベラルさっていうか、デモクラシスト的なところがあるにもかかわらず、あそこに関しては妙に、それこそさっきのネット右翼的な雰囲気が濃厚に漂っていてすごく異質なんだよね。ちょっとそこが読んでて違和感を感じた。
高橋 それが図らず出てしまったのか、わざとそういう風に見せたくてやったのかというのは?
essa 図らずも、ですね。自分を素直に表現したらそうなるという形ですね。だからそこに対する怨念みたいなものは、個人の生活史みたいなところに繋がっている部分があるので。簡単には妥協できない部分がありますね。だから blog っていうのはそういう部分まで出すものじゃないかなと思っていて、だから原稿料貰って書くんだったら、全然違う書き方をしますけど。
arton あれはやっぱり essa さんの譲れない所なんですね、なんか知らないけど。
essa そうですね。自分の個人の表現としては譲れない部分。
ささだ 他のエントリがすごいまとまってるから、そこだけなんか感情的な部分が目立ってる?
高橋 どっちかっていうと、他のエントリが非常に、ある意味寛容であるというか、ある意味達観していて、逆に冷たい、みたいな印象があるんだけど、あれだけ妙に熱い。寛容さが無い。いきなり斬って捨てるみたいな、断罪するみたいな感じっていうのがあって、すごい違和感を感じる。
arton 別に朝日のダブルスタンダードでもブッシュのダブルスタンダードでもダブルスタンダードというのもありじゃないか。いや、俺は朝日の方は許せない。なぜだ?(笑)
高橋 stable と unstable のやつに言われたくないよみたいな (笑)
一同 (笑)
essa 朝日のダブルスタンダードだけは許さない。
高橋 そこは個人の内的必然性があって。
essa そうですね。
高橋 逆に、ここは書かないってうのが。そこは書かないで。内的必然性のそのものは書かないで、それは別に書く必要が無いのでっていう。
arton 要するに、象徴として朝日のあれは糾弾されている。なるほど。
高橋 だから内的必然性も書いてしまった上で叩くっていうのは分りやすいし、内的必然性は書かないで朝日も叩かない、っていうのも分りやすいんだけれども。商業出版とかでは、そういうのが分りやすい文章とされるんだけど、blog だから別にいいじゃんっていう。
arton そういう意味じゃ、教会みたいなものだね。教会を始めて訪れた子供はさ、なぜあそこに裸の人が磔にされてるの? いや、それがあるのが教会なんだよ。
ささだ 目立ったエントリだと。
arton 技術系だと、Google 八分か、あるいは高木さんにボロクソに言われた P2P 話か。
高橋 Google 八分に関してはエントリを読み返したんですけど、Google ランクのネガティブなポイント制っていう、そこにリンクを張ると、Google ランクが下がるっていう風な発想っていうのが、実は今の Google 八分、いわゆる Google 八分から落ちていて。単に Google からリンクされない、検索結果に出てこないっていうところだけしか出てきてないんだけど、Google ランクのマイナスポイントっていうところまでも含めると、すごい技術屋っぽい発想だなという。
arton ああ、確かに。そういえばそれを忘れてたけど、それはあったよね。
高橋 最初の意味ではあったんですけど。
essa 一番最初書いたのはそれだったんです。だから今のやり方では Google 八分サイト特集っていうリンク集が出来ちゃう訳で。なんかやればやっただけそこにフォーカスが集まっちゃうんで、あまり目的を達しない場合があるんですけど、そこにリンクすることが、微妙に自分のランクを下がるというようなロジックを上手く工夫して入れたら怖いなということと、あと、その計算って言うのは、今の Page Rank のロジックで出来そうな気がするんですね。完全にモデル化したわけでは無いけど。
arton メソッド名作った。こんな大人には褒められたくないメソッド。
essa だから、基本的には私の考えた最悪の Google 八分っていうのは出来るんですよね、今やってるページランクの逆だから。Google はすでにその為のアルゴリズムを持っています。これを裏返してリアルワールドに投入した上で、今やってるように色々微調整加えていけば、結構好きなことが出来るはずなんで。
arton 根本的なところで、こいつにリンクされたら、こいつの選択がどうしたって機械的には出来ないから。ただプラス、マイナスっていう選別をする以上、こいつのランク付けってのが必要じゃん。それはたぶん技術じゃなくて、Yahoo 的な手作業な世界だよね。
高橋 それをなんか、適当にバイアス掛けて。
arton 適当にやるんだったら最高だね。
高橋 で、それを何回か回すと安定解が。
arton あー、安定しちゃうのか。でも安定化しないで、三日おきぐらいに変わったら……。
essa だから、手入力は必要ですよね。
arton 世界観が三日おきに変わる。
essa ていうか、その起点が必要ですけど、今現在だったら悪マニを起点にすればほとんど網羅できる。悪マニにリンクしてる人は、たいてい Google 八分問題に興味を持ってるから。
高橋 すごくリンクをするとどんどん下がって、ちょっとしかリンクしない人は、ちょっとしか下がらないっていう。
essa だから悪マニに直接リンクしてる人はランクを大きく下げて、間接リンクしてる人は少しだけ下げて。
ささだ Google は手作業で悪マニを -100 とかにしないといけないってことですよね。
essa 起点だけは手入力が必要だと思いますが、たくさん入れる必要はないと思います。悪マニとアンカテと他に 2、3 個の URL を一個登録することで、日本で思想的に Google を捉えているような人は全部排除できる。
arton Google にリンクしている人は全部マイナスポイントにして、そっから逆算していくって言うのはどうだろう。
高橋 いやいや、だからプラスのサイトとマイナスのサイトがあってっていう話ですよね。
arton だから、とりあえず Google にリンクしたらそれはマイナスなわけ。それを区別するのが例の……それは無理か、いや読めるか。このバナーと一緒に張ってね、を守ってる人は許してやるとか。
ささだ ビジネス的にいくら払ったらこの会社は下げるよとか。そういうのになったら怖いですね。
essa だからその怖さってのは、今 Google の利便性、ありがたさの裏返しですね。だからこれは抽象化して言えば、技術って言うのは中立的で、どっち向きにも使えるっていう話なんで。[^55]
arton だから中国についてはやったと。
高橋 完全に検索できないようにするとかっていうのよりも、ランクが何となく下がるっていうのがすごい都市伝説っぽいというか。すごい繊細な感じがするので、余計怖い感じがする。知らず知らずのうちに、まったくリンクされなくなるとか、まったく検索できなくなるとかっていうのは、非常に分りやすいんだけど、すごい分りにくい形で、何となく差別されるっていう風な怖さ。それが機械的に全部計算でできてしまう、ていう怖さが元のエントリにあるやつかなぁと。
arton まさに筒井康隆の世界じゃないですか。なんかだんだん人の目が俺の事をよそよそしく見えてるけど、別に目の数が増えたわけでもないし、服が汚れているわけでもないし。昨日の俺と今日の俺と何が違うのかわかんないけど、なぜか昨日より目が厳しいと。そして今日、ついに会社に入れてもらえなくなった。
ささだ このインタビューの編集をやってくれているいむらさんからの質問が。「アドセンスは 21 世紀のフルブライト留学制度だ[^56]とかが気になっていました」。
essa これは自分でも好きなエントリですね。「お金の流れをいい方向に向ける知恵の一つの形態」といむらさんに評していただいたのですが、関係者がいい気持ちになるような成果を生むようなプロジェクトって、全く無理なことではないと思うんで、その一例として書いたつもりなんですけどね。これ書いた後にどんどん国産検索エンジンが具体化しちゃっているようで、全く逆の方向に向かってますね。どうにかならないもんですかね。
ささだ 本の話はしましたよね。もっとしゃべりたいですか、本のこと。
essa いえいえ、もう。
ささだ ゲド戦記について語るとか。
高橋 映画観られました?
essa 明日行きます。[^57]
ささだ 映画、本、ゲーム、スポーツ。何かあれば。
essa ほとんど blog に書いてますねこれは。やっぱりどのジャンルも結構狭いところを深く掘り下げるタイプですね。
ささだ ゲームとかってすきなんですか?
essa ゲームはあんまり時間ないんで、子供がやってるのを後ろで見てるっていうことが多いですけど[^58]。
ささだ 使ってるマシンのスペックとか。
essa これは EPSON の Endeavor NT-350 です。普通の B5 タイプのノートパソコンです。
ささだ EPSON。98 互換機とか言われたらどうしようかと。
一同 (笑)
arton だから Amrita 遅かったんだ (笑)
ささだ EPSON、PC 出してましたっけ、今?
essa 通販で結構頑張ってますよ。
ささだ へぇー。
角谷 EPSON Direct が。
ささだ あー、そうなんだ。
essa 質実剛健というか、面白みは無いけどちゃんと仕事をしてくれるマシンですね。
ささだ CPU どの辺ですか。
essa えー、2GHz にしたのかな。
ささだ ほんとに普通のマシンですね。好きな女性のタイプは?
essa やっぱり自分に理解できないところに惹かれちゃうんで、女性というのはやっぱり理解できないところが多いですから、結論として守備範囲は結構広いんじゃないかと思います。
ささだ 新しい答えが。なるほど。
essa blog でも、女性ブロガーからのリンクやコメントはかなり気にしてるんですけど、みなさん見抜いてました?
一同 (笑)
高橋 見抜けなかったですね。
ささだ このインタビュー出たらどうなるんだろう。
essa どうなるんだろう (笑)
arton ネカマから山のようにリンクが。
高橋 リンクするときは女性のようなフリをしてとか。
ささだ なるほど。それだ。
essa そこを見抜かないと駄目なんだな。
ささだ 今後の展望、将来の夢などありましたら。
essa 展望というか目標として、一応、私は定年までにカウンセラーになりたいという夢を持っています。一応産業カウンセラーという資格[^59]をとって、今会社でちょっとやってるんですよ。
ささだ 産業カウンセラーって何をするんですか?
essa 鬱とかそういうのの予備軍の……。
ささだ お医者さんのお仕事に……?
essa の、一歩手前みたいなところです。わかりやすいのでメンタルヘルスの予防的側面という言い方もしますけど、本当はもうちょっと積極的な意味もあります。
自分のキャリアとかを考える上で、周りの環境も大事だけど、自分自身がどう考えているかっていうことが大事です。その自分自身がどうかということが、ほんどの人は案外把握できてなし、できてないことにも気がついてない。それが普通であるという認識があるんですね。そういう、「自分の本当はどうなのか」という問題に対して一緒に考えていくには、どういう風な話の聞き方をすればいいのか、みたいな、その部分をある程度ノウハウ化したのが、カウンセリングかなと、私はそんな感じで理解しています。
arton たとえば営業の研修とかだと、受け答えというのはマニュアル化されていて、こう聞かれたらこう聞き返せというような方法というのは確立してますよね。カウンセリングというのも同じように、どう会話を進めるかを完全に把握している人が逆にカウンセリングを受ける立場になったときでも、カウンセリングは有効に働くのだろうかっていうのをいつも疑問に思ってます。どうなんでしょう?
essa カウンセリングの実習って言うのは、自分がクライアントになってしゃべるって言うことが、一番重要な実習なんですよね。ロールプレイっていうのをやる。で、カウンセラー役とクライアント役で、カウンセリングごっこをやるんですけど、その場合、普通に見るとカウンセラー役の人が勉強していて、クライアント役の人はただお手伝いしてるっていう風に思うじゃないですか。それが、最初はその通りなんですけど、ある程度上達してくると逆になってきて、むしろクライアント役として話すことでカウンセリングの本当の意味がわかってくるようになります。
arton それを理解した人間がこんど、カウンセリングを本気で受ける立場になったときに、カウンセリングが有効なのかなっていうのがすごく疑問に思うわけ。つまり、相手の手の内を完全に知っちゃってるわけじゃない。
essa その場合も有効性はあるんですよ。色んな理論があるので理論によって違うかもしれませんが、私が習ったロジャーズって人のやり方ではあるということになると思います。ロジャーズの考え方っていうのは、リファレンスフレームって言葉を使うんですけど、相手のリファレンスフレームで共感するということを重要視してるんですね。だからそれは両方がカウンセラーであっても、片方がクライアントになったら、そのクライアントのリファレンスフレームにカウンセラーが歩み寄っていくという。
arton でも逆にそれは、クライアントの方もカウンセラーに歩み寄っちゃう訳ですよね。それを分ってるわけだから。
essa それはだから、それをやったら……。
arton それは自分で抑制するわけなんですか。私は今クライアントでカウンセリングが必要なんだ、で、今カウンセラーがこう来た。つまりこれこれという方法論だな。ここでは普通、こう答えるべきだ。でも実際にここで歩み寄っちゃうと私にとってのカウンセリングの意味はなくなっちゃうから、私はここで自分の気持ちを抑制してカウンセリングを受ける立場のロールを果たさなければならない。でも、その今そういうことを考えている私がここでカウンセリングを受けている意味はあるんだろうか。というような心理が働くのではないか、ということですが。
essa それは一番素直になっちゃえば、クライアントのリファレンスフレームがそのまま出てくるという。それが治療効果に繋がるって言うのがロジャーズの考え方なんですね。
arton 自分の治療効果をあげるために、私はクライアントのフレームに従う。でもしたがっていることを意識してしまう。
essa そこでカウンセラーがクライアントになったら、自分が自分のリファレンスフレームにきちっと沿ってるかというチェックは入るでしょうね。
arton でも自分で入れちゃうんですよね? そこがね……そういうなんていうのかな。そういうのはいつも興味を引かれることで、カウンセリングに限らず先の営業マンの話でもいいし、プログラムのミドルウェアとアプリケーションの関係でもいいんだけど。今のカウンセリングの話が、そこに今非常にそういうことが何かアイデアをお持ちかなって思ってすごい訊きたくなった。というのが訊いてる理由なんだけど。
高橋 カウンセリングをするのに優れた人は、自分のリファレンスフレームって言うのを完璧に把握していることになってるんですか? それは不可能?
essa 不可能であるというのが、前提だと思います。
高橋 であれば、自分がクライアントとして受けて、新しいことが何も分らなくなる。とかって言うことは基本的にはない。やるたびに新しい発見がある可能性はある。
essa そうですね。理論的にもそうだし、現実的にも、大半のカウンセラーにとってカウンセリングを受けるたびに、新しい発見がたくさんあると思いますね。
ささだ ちなみに、そういうカウンセラーの学校とかって行かれたんですか?
essa 産業カウンセラー協会の講習を受けました。通信教育だけど、実習だけは会って実習するという形で。その実習は特に有益でした。ロールプレイの実体験というのは、カウンセラーになるならない関係なしに、やって損は無いと思いますね。
相手のカウンセラー役の人が、きちんと自分のリファレンスフレームに寄り添ってきちんと聞いてくれていると言う時には、自分の中から知らない面がどんどんでてきて、ああ自分はこうだったのかって言う経験がいろいろな形で出てきます。12、3人のクラスでやったんですけど、ほとんどの人がそういう感想を言ってましたし、その後メールのやり取りをしても、やっぱりみんなそれを強く実感してるみたいです。
カウンセリングのそういう側面が、もうちょっと知られてもいいなと思うんですけどね。まず鬱のメンタルヘルスの治療だっていう意識が強いと思いますが、そうじゃない部分もあるよという部分ですね。
高橋 治療ではないと。
essa ええ。
ささだ お仕事としては会社に一人いて、保健室みたいなところにいて、相談に乗りますよ、みたいなそういう窓口があるんですか?
essa 一応こういう講習を受けたんで、何か問題があったら連絡くださいみたいなアナウンスをして。来たら、アポを取って相談を受けるという形です。
高橋 大きいところだとそれ専門にやってる人が居たりするんですよね、たぶん。
essa 結構たくさんいるんですよね。私もそういう講習に行って初めて知りましたけど。
ささだ 初めて聞いた。その職業というか。
高橋 そういうのをやりたいという感じですか。
essa まぁ、カウンセリングというものを実践としてもっと追求して行きたいなという漠然とした希望です。
ささだ プログラマーだからというのはあるんですか、それとそのやろうと思ったことは。あまり関係ない?
essa 基本的には関係ないような気がしますが、すごく深く突っ込むと関係あるかもしれません。結局プログラマーっていっても、現場のプログラマーって言うのはコンピュータをお客さんに使っていただく仕事で、人間と機械の仲立ちを取るところですよね。そこで色々合わないから工夫して合わせていくっていうことをやっていく中で、人間と機械の違い、人間とは何かというのを追求することになるんじゃないかなぁと思うんですね。
人間の中でどうしてもアルゴリズムに落とせない部分やアルゴリズムとミスマッチな部分は何だろうっていう所に。結局プログラミングやってる人っていうのは、潜在的にそこに興味が行くんじゃないかと思うんですけど。
arton 怠惰だからね。
essa その、どうしてもアルゴリズムに落とせない部分に対する興味という点で、プログラミングとカウンセリングが、根本では繋がっているのかもしれません。[^60]
高橋 いわゆる AI は否定的なんでしたっけ。
essa AI は結構否定的ですね。特に言葉の計算で知能がシミュレーションできるっていうのは、どんなに技術が進歩しても起こりえないと考えてます。機械単独でなく後ろに人間が居て、人間が言葉の計算機を使ってすごくいろんなことができるようになるという、そういう方向での発展はあると思うんですけど、後ろに人間が居ない言葉の計算機が知能に見えるっていうことはないという風な感じですかね。
高橋 知能にはアルゴリズムにできない所はある。
essa そうですね。
高橋 そう思ってるプログラマと、そう思ってないプログラマにはなんか色々差がありそうな気はしますけど。プログラミングというものに対して、あるいはアルゴリズムというものに対して。それは、AI をやっている人たちの中にも二派あると思うんですけど。それはすごいハッキリ分かれるタイプだと思います。
essa その違いは、結局、自分の脳の中をどこまでモニタできてるかという違いだと思うんですけどね。言葉に落ちないところまでモニタできてる人は、言葉の計算機は知能にはならないというし、そこがモニタできてない人は、自分の頭の中を見る時の視野が限られてるから、これをこういう風にやれば代えられるんじゃないかな、みたいに安易に考えてしまう。
arton 僕もそれ賛成だけど、たぶん逆に考える人の方が多そうな気がするな。つまり、自分の奥底までどう自分で考えてるのかを、考えてる人はそこまで考えてるんだから、逆にアルゴリズム化できるっていう風に思うんじゃないかっていう風に考える人もいるだろうなっていう。そこで既に二つに分かれそうだけど、僕はessaさんの方に賛成だけど、そこまで考えた事ないからわからねえな。でも分かる人は実は分ってたりして。でも実装技術がないからプログラムに落とせないだけかも。なんだ、できんじゃん。あーでも俺はプログラミング知らないから書けないじゃん。という感じで。
高橋 可能性の話になっちゃいますけど。自分は作れないかもしれないけど、きっといつかはできるに違いないと。中身はわかんないんだけど、上手くすると、プログラミングで書けるに違いないとか。
arton 無理だよ。
高橋 そっか、私はできると思ってますが、それは単なる信仰なので。理由は無いので。
essa 私も後ろに人間が居る場合については、可能性は無限だという風に思います。
高橋 それだから人間を強化するものとして。
essa ええ。この可能性っていうのはまだ深いっていうか。
ささだ 今の AI 研究はみんなそっちですよね。
高橋 そうじゃないと論文書けないですよね。
ささだ (笑) 信仰告白にしかならないよね。ちなみに、さっきの人間のわかんないところとかって、その辺はなんか、blog を書いていることで何か関係をしたりするんですかね。
essa してるかもしれません。自分とは何だろうと思って、それを書いてるみたいなところはあるかも知れないですね。自分が自分で分らないって中で、こうなのかこうなのか色々書いて自分が自分の研究してしてるだけなのに、読んでくれる方はよく付き合ってくれるもんだなあと思います。
ささだ こんなもんでいいでしょうか。その他ですね、最後。arton さんとの関係は?
arton 無いんじゃない?
ささだ 無いの?
arton 僕が圏外のファンだから。Foreign Key を持っているのは僕で、外部参照をされている側は、当然FKを持ってない。
essa いや、私はあれですよ。邪道編の読者。
arton 読者かぁ。実はこっちに habtm みたいなのが。
ささだ 何?
高橋 それぞれ相互参照してるんじゃないんですか。
ささだ あ、そっかそっか。
arton デリートできないのか、まずいな。
essa 邪道編の話とか、前回の Hotlinks にあったスレッド周りの話とか、ああいうところのややこしさっていうのはある程度分っているつもりなので、その辺は逆に arton さんの真価を知る男と。
一同 (笑)
essa ちょっとね、arton さんのやばさは、Windows を極めてないと分らないところがありますよね (笑)
ささだ arton さんから質問あったっけ? なんか質問する?
arton 訊きたいことはみんな訊いちゃったよ (笑)
ささだ では次のインタビューイは?
essa 私としては、前にブログに書いた言葉[^61]「だいたい RHG って何だあれは? あんな難しい本を読む人間がいることがすでにおかしい。いわんや、あれを書くなんて、人として生まれたからには一度はそういう馬鹿をしておきたいもんだ。」を添えて、青木さんに回したいのですがどうでしょうか?
ささだ わかりました。では、次回は青木さんということで。
ささだ 若手へ一言、あります?
essa 関数型プログラミング言語を勉強した方がいい。
一同 (笑)
essa 自分の実体験から、「関数型プログラミング言語の勉強はわかんなくても役に立つ」ということを言いたいです。私の場合は On Lisp と SICP を読んで、どちらも半分から分んなくなってんですけど、それでもかなり、結構効果あったような気がしてるんで。
ささだ 飲み会で、ああ、SICP ねって言えるとか。
一同 (笑)
essa それも重要ですけど (笑)、関数型勉強してから Ruby のプログラミングの腕が上がったような気がしてます。Java と C# やってる人でも、関数型をやって腕が上がるということがあると思います。
ささだ ふつうの Haskell 読めと。
essa うん。私は読まないけど (笑)
一同 (笑)
ささだ 読者の Rubyist に一言。
arton ちょっと突っ込みたいな。やっぱり essa さんは若い人に対しては blog を書け、Google を極めろ、そういうようなことを言ってくれるといいような気がしたんだな。まぁ、どうでもいいや。
高橋 若手ブロガーに一言。
essa 若手ブロガー (笑)
ささだ 哲学書を読めと。
arton どんなにくだらない、自分にとってはつまらないと思っても、それも集団知を構成するひとつなんだ絶対文章化しろ、とか。
eesa それに近いことは言ってますよね。発信することは、人類としての責務である、みたいなエントリは書いてますけど[^62]。
arton そういうのは全部リンクしたら? essa さんの言葉は全部圏外とかアンカテからの引用。全ての言葉は出自が全部既にある。
ささだ 明朝までに[^63]。
arton えーっ[^64]。
ささだ えっと、読者の Rubyist に一言。
essa 私のようなものがこんなところに出てすみません。
一同 いやいやいやいや。
essa ほんとですよ。たいしたコードを書いてないのに、こんな所に呼んでいただいて。
arton やっぱりここから始めなきゃ。みんな erb は駄目だ、Amrita を使え。
essa そうだそれも言っとこう、みんな Amrita 使え。俺は erb で行くけど (笑)。
一同 (笑)
arton これから Rails を使う人は Amrita を使ってください (笑)
essa でも、わが社では絶対使いません。
一同 (笑)
ささだ なるほど。それでいいの?(笑) その他何かあれば好きなだけ。
essa もう十分です。
ささだ いやほんと、お忙しいところ長々とありがとうございました。
今回は Amrita の開発者として、そして blogger として有名な essa さんにお話を伺いました。お忙しい中本当にありがとうございました。次回は RHG 著者の青木峰郎さんにお話を伺います。お楽しみに。
(インタビュー:ささだ、編集:いむら、むらまさ、essa、ささだ)
artonさんがおっしゃていたのは葛藤を楽しもうのことだったのかも [^42]: essa追記: 技術的なことを書く為に新設したgem戦記というブログ。収録時には数ヶ月放置状態だった [^43]: arton追記:もちろん技術的な考えをまとめているものにはこの範疇には入らない文章もあるので、すべてが与太というわけではありません。 [^44]: essa追記: 後で調べてビックリ。artonさんへというタイトルのエントリだった [^45]: Unix 用高機能エディタ Emacs の Windows 移植版。元ネタに忠実でありつつも、FEP 対応等 Windows 向けの改良も多数。 [^46]: essa追記: このあたり→アンカテ (Uncategorizable Blog) - 分割できないものを理解する、アンカテ (Uncategorizable Blog) - なぜかCVSのように魂と人格の関係を語る人が多い、アンカテ (Uncategorizable Blog) - 直観について直感的に考える、アンカテ (Uncategorizable Blog) - プログラマーのための宗教 [^47]: アンカテ (Uncategorizable Blog) - 三つ子の魂が不惑を越える [^48]: essa追記: 仲正昌樹氏「不自由論」 [^49]: http://d.hatena.ne.jp/tokyocat/20031026#p1 [^50]: essa追記: わからないまま書いたエントリがこれ→アンカテ (Uncategorizable Blog) - 権威主義と全体主義に挟まれて絶望しない為には [^51]: アンカテ (Uncategorizable Blog) - アーレントとルーマン [^52]: essa追記: 参照→圏外からのひとこと別館 - 自分語り系エントリー [^53]: アンカテ (Uncategorizable Blog) - 日本軍は日教組のようなものという仮説 [^54]: essa追記: これのことかな→アンカテ (Uncategorizable Blog) - essa左巻き宣言 [^55]: essa追記: Google論については→アンカテ (Uncategorizable Blog) - 「圏外からのひとこと」Google関連記事集 [^56]: アンカテ (Uncategorizable Blog) - アドセンスは21世紀のフルブライト留学制度だ [^57]: essa追記: 収録直後に行ってブログに書きました→アンカテ (Uncategorizable Blog) - ハヤオの息子学序章,アンカテ (Uncategorizable Blog) - ファンタジーの中にある内的現実の中にある外的現実 [^58]: essa追記: 自分でやるとこうなるので→アンカテ (Uncategorizable Blog) - アルティミシア城顛末記 [^59]: 社団法人日本産業カウンセラー協会 [^60]: アンカテ (Uncategorizable Blog) - プログラミングと臨床心理学は妙に似ている [^61]: アンカテ (Uncategorizable Blog) - メガヒットは衰退の兆し [^62]: アンカテ (Uncategorizable Blog) - つたない英語だろうがなんだろうが、彼らにとっては日本語よりも 65536 倍わかるんだから。 [^63]: 言いだしっぺに作業を振るときの合言葉 [^64]: 拒否する場合の決まり文句
essa 追記: 後で思い出しましたが、初出は自分のブログでした→アンカテ (Uncategorizable Blog) - 俺たちの「リリース 2.4.0」 ↩
essa追記: 参考→アンカテ (Uncategorizable Blog) - 幕末の志士たち»»»こえられない壁»»»»»俺 ↩
ささだ注:まわりがみんな付いていく感じですよね、とフォローしておく。 ↩
去年の LLDN で、そういうことがあった。参考:[[0009-lldn-report]] ↩
essa追記: RAA - cerise、RAA - div、RAA - iowa、RAA - nitroとかいろいろあります。 ↩
Seasarファウンデーションの O/R マッパ ↩
DAO パターンは ActiveRecord と異なりエンティティを格納するオブジェクトとメソッドを集約したオブジェクトが分離している。 ↩
essa追記: しかもそれがビジネスと連動している所がすごい→アンカテ (Uncategorizable Blog) - Less is More – 身軽なことはいいことだ ↩
send は他のメソッドで上書きされる可能性があるので、send を利用したほうがよいと言われている (標準添付ライブラリの中でも BasicSocket#send などで上書きされている)。 ↩
ささだ注:その場で IRC で教えてもらった。 ↩
これは arton さんが collect を選んだ理由。 ↩
ささだ注:実装するのがいろいろ大変なんです。しつこくてゴメン。 ↩
[[0016-Book-MinnanoPython]] 参照。 ↩
essa追記: 参考→アンカテ (Uncategorizable Blog) - 80 年代にバブルに窒息して死にそうに苦しかった私を救ったのは smalltalk ↩
essa追記: 2001 年にこんなこと言ってました→アンカテ (Uncategorizable Blog) - Java はプログラマ性悪説 ↩
arton追記:なんか突然名前を出したけど、この頃ちょうど masuidrive さんが仕事で作られたサイトを見てなんか羨ましかったのが印象に残っていたらしい。 ↩
essa追記: 「はしゃぎ」は Ruby の属性でなく私の属性なのかも ↩
essa追記: 同席者が、ハッタリが通じないツワモノばかりであるのを忘れてた (笑) ↩
essa追記: アンカテ (Uncategorizable Blog) - 4 つの文化 (新人むけ「お話」用メモ)で言ってる「メインフレーム文化」でHaskellは使えるのではないか ↩
essa追記: ↩