Rubyist Hotlinks 【第 17 回】 青木峰郎さん

はじめに

著名な Rubyist にインタビューを行う企画「Rubyist Hotlinks」。 今回は『Rubyソースコード完全解説』著者として有名な青木さんにお話を伺いました。今回はいつもとはちょっと違って野次馬も居なかったこともあり、とてもフランクな会話となっています。お楽しみください。

プロフィール

aoki1.jpg 『Rubyソースコード完全解説』はじめ多数のプログラム関係書籍の執筆などでご活躍中。標準ライブラリメンテナで、ドキュメントメンテナで、なんでもやる人、とは本人の談。

好きな言葉
なし
尊敬する人
なし
ご本人のサイト
LoveRuby.Net

インタビュー

聞き手
ささださん
語り手
青木さん
日にち
2006 年 10 月 14 日
場 所
秋葉原

目次

グダグダ

ささだ 今日はどういう感じでやります? いつもみたいに質問項目をきっちりやる? たまには適当な感じでやるのもいいかなと思うんだけど。

青木 雑談ぽいのでいいんじゃないかな。ラジオの深夜番組みたいにグダグダにしようぜ。

というわけで、グダグダ喋ったのはこちらに: Rubyist Hotlinks 【第 17 回】 青木峰郎さん インタビューイントロ

やっとインタビュー開始

プロフィール

ささだ かなりダラダラしてたので、ちょっとインタビューっぽくしましょうか (笑)。 えっと、生年月日、出身地、現在住所、家族構成、血液型。書いて無いけど。

青木 東京出身、B 型です。

ささだ B 型。で、一人暮らし?

青木 はい。

ささだ 彼女募集中?

青木 うん。

ささだ (笑)

青木 好きな言葉に座右の銘ねえ。そんなものはない。

ささだ そんなものはないと。ないの? 哲学とかやってるからさ、たくさんあるんじゃないの?

青木 座右の銘がいっぱいあるのはダメだろ。

ささだ (笑)

青木 座右の銘とかさ、そういうのを決めちゃうと引きずられるから、決めないようにしてるんだ。

ささだ あー。何かこう、汎用的な、あってもなくても同じような、 変わんないようなのにしておけばさ、何かこう…… (笑)

青木 なるようになる、とか?

ささだ 中田さんだっけ、それ。

青木 そうなんだ。

ささだ 単に好きな言葉でも、全然いいんだけど。

青木 好きな言葉ねぇ、それもない。

ささだ 賞味期限とか。

青木 それは好きじゃない!

ささだ (笑)

青木 「尊敬する人」もね、 そういうのを決めちゃうとその人の言葉に影響を受けすぎてしまうから、 決めないようにしてる。もしあっても言わないし書かない。

ささだ 本当にないの? Alpha 作った人すげーとかさ。

青木 別に Alpha 作った人がすごいと思わないだろう。作ったものはかっこいいと思うけど。

ささだ 尊敬する人も、好きな言葉も、座右の銘もなし?

青木 なし。

代表作

ささだ 代表作。

青木 精神的代表作であれば、Ruby Hacking Guide (『Ruby ソースコード完全解説 Ruby ソースコード完全解説』のこと)。

ささだ あー、なるほど。

青木 売り上げベースであれば「ふつりな」だけど (『ふつうの Linux プログラミング ふつうの Linux プログラミング』のこと)。

ささだ それは著作のほうだから。

青木 あ、そうか。ソフトウェアの代表作か。

ささだ まぁ、RHG が代表作でもいいけど。

青木 ソフトウェアはあんまりパッとしないからなあ。

ささだ (笑)。でもみんな使ってるじゃん、fileutils.rb とか。

青木 あれは代表作とは言いがたいよね。

ささだ 中田さんが optparse ですっていうのと同じだよね。

青木 代表作っていうとこう、もうちょっとデカくてさ。

ささだ Rails みたいな。

青木 そうそう。Rails とか、そういうやつでしょ。

ささだ じゃ、BitChannel

青木 あれはマニア受けしてるだけじゃん。

ささだ (笑)

青木 一番使われているのはたぶん TMail なんだけど。

ささだ あー、Rails 経由で?

青木 うん。検索もすごいもん。ウェブサイトに来るのもやっぱ TMail が一番多い。

ささだ なるほど。代表作は TMail? でも TMail ってあんまり知っている人いないんじゃないの? 日本人で。

青木 そうなんだよね。

ささだ Ruby でメールって調べたら、ぐぐったら、あ、何か TMail ってのがあるんだ、って。 青木さんのって知らないんだよね、きっと。

青木 そうかもしれない。

ささだ setup.rb とかは?

青木 あれはまぁ、なんというか、消え行くものだし (笑)

ささだ 消えていくの?

青木 RubyGems に置き換わるんじゃないの?

ささだ RubyGems の中で setup.rb 使ってるんじゃないの?

青木 え、使ってるの?

ささだ いや、知らない。見たこと無いんだけど。

青木 使ってないと思うよ。

ささだ 使ってないんだ。

青木 RubyGems をインストールするのに setup.rb 使うけど、それくらいじゃないかな。

ささだ あ、そうなんだ。そっかそっか、そうだよね。 RubyGems ってインストールしても shbang 変わんないからさ、使いづらいんだよね。 Ruby インタプリタが何個もインストールされている環境だと。

(LoveRuby.Net Projectsを見つつ) あ、Ripper があるじゃん。

青木 あれは別に、代表作でもなんでもないでしょー。

ささだ なんでもないの?

青木 使われるのかどうかも怪しいし。

ささだ strscan なんかは?

青木 あれもねぇ。使うけどさ、まつもとさんが String クラスを代表作というかどうかっていう話だよね。

ささだ (笑)。そうね。

青木 やっぱ、どれもこれもユーティリティの域を出ない。

ささだ まぁでも、ないと困るということで。じゃぁ、ReFe

青木 ReFe もねぇ、ユーティリティだよね。

ささだ いや、使ってる人多いと思うよ。 たぶんこの話はまた後で*1やった方が良いんでしょうね

青木 そうね。

ささだ じゃあ、href (Haskell 用の ReFe 類似ツール)?

青木 ありえねー。

ささだ 本書けたから Racc とか。

青木 Racc はあまり好きじゃないんだよ。

ささだ あ、そうなんだ。

青木 いまいち設計が古いし。 俺のプログラムってプログラマなりたてのころ設計したやつが多くて、 そんで初期に作ったやつは設計が好きじゃないので好きになれない、と。

ささだ じゃ、作り直す?

青木 いちおう Racc は今作り直してる。 こないだしばらく前の日記にずっと書いてたんだけどさ、 その場でパーサを生成できるようなヤツ。

ささだ 要するに文法をもっと書きやすくする? Ruby を DSL (Domain Specific Language) として使える?

青木 そうそう。そういうのがいいなぁと思って。

ささだ じゃあ、乞うご期待ということで。

青木 そうですね。

ささだ 今年中に出るの?

青木 知らない。

ささだ (笑)

青木 忙しくてさ今年は。

ささだ まぁ、そうね。

青木 やっぱり 3 本はきついね。3 本の上にリファレンスマニュアル入れちゃったしなぁ。

ささだ 3 本?

青木 大学の論文と、るびま本と、「ふつう」シリーズの 3 つめ。 それにリファレンスマニュアルでしょ。 4 スレッドもあったら、コンテキストスイッチだけで埋まるっつーの。

ささだ それ、ずいぶん古いよ (笑)。ずいぶん古いアーキテクチャだな。

青木 まあ、ヒトアーキテクチャの設計が古いのはしょうがない (笑)。 ほら、ちょっと前にウェブに出たじゃない。人間の脳はコンテキストスイッチに弱いって言う話が。

ささだ 知らない。

青木 あ、そう? つい昨日見たんだけど。

ささだ どこのニュース?

青木 えっとね、IT 系の何とかニュース*2

著作

ささだ えっと、著作。Racc 本に、RHG に、Java 本 Java 本に。

青木 「ふつう」シリーズが 2 冊……。それこそサイトを見たほうがいいな。

ささだ たくさん書いてるよね。

青木 上に行けばずらっと並んでるはず。 えーと、Ruby 256 倍に、RHG、Java、ふつう、ふつう、というところですね。 あとレシピブックか。

ささだ あ、無道編 無道編も書いてるのか。

青木 え?

ささだ え、無道編ってここに。

青木 それが最初のやつだよ。

ささだ あれ、これが Racc?

青木 そう。

ささだ あ、紅玉制覇編 紅玉制覇編は Racc をちょこっと足したって事ね。

青木 あの、黒歴史にしたいやつ。

ささだ 黒歴史なんだ。

青木 小説仕立て。

ささだ 小説仕立てなんだ。

青木 あれ、読んだことないこれ?

ささだ 俺、256 は Racc 本しか読んでないから。……えー、後で晒すということで。

青木 (声にならない声で) ああっ。

ささだ (笑)。小説仕立て……。なんかさ、ツンデレ Linux ツンデレ Linuxって最近でてるじゃない?

青木 しらねー (笑)。……ツンデレもそろそろ飽和状態だよね……って、あ、そうか、本か。

ささだ そうそうそう。いや、ディストリビューションでツンデレは嫌だ (笑)

青木 (笑)。TOMOYO Linux とか巫女ぐにょ Linux ってあるじゃん。 あれ系のやつかと思った。

ささだ これがなんか、小説というか。

青木 ツンデレなんだ。キーワード入れれば売れると思ってるのかな。

ささだ って、どっかにも書いてあったよね。 「何でもかんでもツンデレといえば売れるのか」って。

青木 ツンデレ部分がそれだけでも面白ければ別に良いんだけど、つまんないじゃん。 それが嫌だよね。

ささだ で、えーっと、代表著作は RHG と。

青木 売り上げベースなら「ふつりな」だけどね。

ささだ ふつりな良いですか?

青木 売れてるねぇ。

ささだ Haskell (『ふつうの Haskell プログラミング ふつうの Haskell プログラミング』) よりも良い?

青木 Haskell よりも全然売れてるよ。

ささだ あ、そうなんだ。Haskell ブームは、ふつうの Linux には勝てないの?

青木 うん。やっぱベース人口が違うということでしょう。

ささだ はー、すごいね。RHG はどのくらい?

青木 RHG は Haskell よりさらにガクッと減るね。

ささだ なるほど (笑)。Java はどうだったの?

青木 Java は RHG と同じようなもんです。実は。

ささだ あ、そうなんだ。RHG は売れてないって言ったのにね。

青木 Java はもうちょっと売れても良さそうなんだけど。

ささだ 結城さんとかに帯を書いてもらってさ、そうすれば売れたんじゃないかな。

青木 売れるかなぁ。

ささだ 結城浩氏絶賛とか書いて。まつもとゆきひろ氏絶賛とか (笑)

青木 そうかー、カバーが駄目だったのかなぁ (笑)

ささだ Java 売れなかったんだ。 RHG、なんか品切れでマーケットプレイスで一万円っていうひどい値段がついていた件。あれは再販はするんですか?

青木 しません。

ささだ しないの? 再販というか重版というか。

青木 増刷はしない……というかできない。

ささだ なんか結構学会というか、私の周りで紹介したりすると、 「あー、すごい良い本だね、買おう」って言われるんだけど、もう売ってない。

青木 あー。出せるもんなら出したいけどねえ。 無理だろうなあ。決めるのは俺じゃないしさ。

ささだ RHG の次の版というか、RHG 2.0 っていうのは出すんですか?

青木 それは余計無理だから (笑)

ささだ (笑)

青木 どっかの出版社が出す気になれば別だけど、そんなところはないだろうし。

ささだ 書く気はないの? 最近の仕様に合わせて。1.8 だったらあんまり変わってないけど。

青木 RHG 2.0 かぁ。個人ベースで書きたい気持ちはあるけど。

ささだ Ruby 2.0 は 2030 年って言ってたから。

青木 まぁ、それぐらいには出せるかもしれないね。

ささだ 2ch に書いてあったね。最近のやつに書き直して出してくれって。 何人欲しがるか分かんないけどね。

青木 どれだけ手間がかかると思ってるんだよぅー。

ささだ (笑)。著作の話はこんな感じで。しかしよく書いてるよね。

青木 そうだね。まったく、よく書くよね。暇だから。

ささだ 暇なんだ。

好きなメソッド、嫌いなメソッド

ささだ 好きなメソッド、嫌いなメソッド。レシピブックの自己紹介と変わんない?

青木 変わってないかな。好きなメソッドは String#slice(regexp, n)。 引数も重要ね。この引数じゃないとだめ。で、嫌いなのは……なんだろう。find_all とかかな。

ささだ find_all? 何が嫌なの?

青木 アンダースコアが。

ささだ (笑)。アンダースコアがあるのたくさんあるじゃん。

青木 そうなんだけど、特に find_all は見た目がなんかムカつく。

ささだ (リファレンスマニュアルの String#slice の項目を見て) String#slice。self[] と同じです。

青木 self[] より slice のほうがかっこいいよ。

ささだ えー。俺、slice って書いたことないんだけど。

青木 俺は引数に正規表現を書くときは slice にするなあ。 string[] で正規表現書くのって、なんか気持ち悪い。

ささだ あ、そう?

青木 なんかインデックスアクセスしてる気がして……。

ささだ あー。Ruby プログラムとしては、ブラケットで書くのは全然問題ない。

青木 そうか?

ささだ ていうか、書きやすい。けど、VM の作者としては、すごく嫌ですね。

青木 (笑)

ささだ ([] は) インデックスだけにしろよ!っていう。 最適化できないじゃないか! って思わない? 2 引数だったらコンパイル時に分かるから良いんだけど。

青木 え、だったらあれはどうするの? Proc 呼び出すのに [] が使えるじゃん。

ささだ あー、ウザイよね。そんなの禁止だよね。

青木 (笑)。あれは俺も嫌い。あと、Dir.glob の代わりにも使えるでしょ。あれも嫌だ。

ささだ え、Dir[]っていうの? あー、なるほど。ほんとだほんとだ。

青木 これは Dir.glob の方がいいと思うね。

ささだ これは glob の方がいいね。……でも slice は、なんか嫌。

青木 (笑)

ささだ で、嫌いなのは find_all。アンダースコアはたくさんあると思うけどな。

青木 いっぱいあるんだけど、find_all は特に字面が嫌なんだよ。 なんと表現したらいいのかわからないけど、「倒れやすい」字面ってあるじゃない? あの、煙突みたいに立ってるのが嫌なの。

ささだ あー。

青木 字面がこう、f もそうだし、d もそうだし、all もそうだし。

ささだ しかもアンダースコアがある。

青木 そうそう。だから何か嫌だ。同じ理由で、if を一行に書くのもあんまり好きじゃない。

ささだ 「if cond then expr end」ってこと?

青木 そう。1 行で書くのは好きじゃない。

ささだ これ別に立ってないじゃん。

青木 全体的に右に傾いて見えない?

ささだ えー?

青木 「if」がさぁ、「i」より「f」の方が背が高いじゃん。 「end」も「d」の方が高いじゃん。だから全体的に重心が右にかかって見える。

ささだ そんなの気にするのは変だよ。

青木 いやいや。ぜったい嫌だってば。

ささだ へぇー。じゃ、なんだろう。 一行で if を書くのはそもそもあれだと思うけど、それだったら三項演算子とか、後置の if とか使う。 後置の if はいいの?

青木 後置の if はいい。

ささだ end が後ろに無いから問題ない?

青木 うん。if も真ん中にあるしね。

ささだ へぇー、変なの。まあいいや。

Ruby とのかかわり

Rubyist になったきっかけ

ささだ Ruby について。やっと Ruby ですよ。Rubyist になったきっかけは、いつから?

青木 えーっと、きっかけはねぇ、 今は亡き Linux Japan の前田さんの記事を読んだのが最初かな。

ささだ 99 年とかだっけ?

青木 98 年。で、使おうかなぁ、と思いつつもそのときはまだ使わなかった。 けど、そのころ dojo ML ってのがあって。

ささだ ドウジョウ ML?

青木 生越さんがやってたやつ。プログラミング道場みたいなノリの。

ささだ あー、そっちか。ドウジョウって、「同上」かと思った。

青木 違う違う (笑)。その ML で 「メーラーを作りたいんですけど、Ruby と C と Perl で迷っています」って書いたら、 まつもとさんがいてね。

ささだ (笑)

青木 それで「Ruby がいいよ」って言われた。 でまぁ、そのときメールをほとんど使ったことがなくってさぁ。 ほとんど初めて他人からもらったメールがまつもとさんからだった。

ささだ ほう。そのメールって家の環境? 大学?

青木 家。それこそあの、28kbps みたいなやつで繋いでたわけ。 モデムで。で、メールをもらったのが初めてで、しかもまつもとさんからで、 Ruby が良いよって言われてしまった。

ささだ まつもとさんは知ってたの?

青木 それはもちろん。それで、これはまぁ、Ruby しかないなって思って Ruby にした。

ささだ (笑)。あー、じゃあまつもとさんは良いところで。

青木 良いところで宣伝活動をしてたね (笑)

ささだ こんな、青木さんみたいな人材を発掘できたというのは、それはすごいね。

青木 その頃はほんとに、偶然が連続しててねぇ。 Ruby にたどり着いたのも本当に偶然だよ。

ささだ 最初、Perl を調べてたって言ってなかったっけ。

青木 うん。最初は、本だけで C を知ってたんだよ。 でも、C はなんかめんどくさくて、メーラを全部 C で書く気は起きなかった。 ところが『初めての Perl』読んだら Perl がすごい便利っぽい。 でも Linux Japan 読んだら Ruby は Perl よりすごいって書いてあったわけさ。 それにまぁ、なんか Ruby の作者の人にも応援されてしまったし。

ささだ それまではプログラミング経験はなかったわけですか?

青木 そうね。本だけ。

ささだ あー。で、TMail 作ってたと。

青木 うん。

ささだ まず strscan だっけ? 先に Racc だっけ?

青木 最初に作り始めたのは net/smtp。そのときは名前が違ったけど。 それと net/pop。何でかって言うと、たぶん作りやすかったから。

ささだ あれ。SMTP 作るために Racc 作ったんじゃないの?

青木 ちゃう。Racc は TMail のため。

ささだ あ、そうか。RFC822 だっけ、あれを解析するため。

青木 そうそう。

ささだ なるほど。

青木 SMTP と POP は立石さんの作ったやつが先にあったから、作りやすかったんだね、きっと。

ささだ パクったってこと?

青木 そう。

ささだ それを参考に。

青木 コード見てたら作り直せそうだったんで、作り直した。

ささだ なるほど。きっかけはそんなことと。

青木 そんなきっかけでした。

Ruby とのつきあい

ささだ 現在の Ruby との付き合い。

青木 さあー?(笑)

ささだ 執筆?

青木 いまんとこ Ruby 方面は執筆してないなあ。るびま本くらい。 あと C コンパイラを Ruby で書いてるけど。

ささだ 標準ライブラリメンテナ。

青木 標準ライブラリメンテナで、ドキュメントメンテナで、書籍も書きましたと。 何でもやる人、ってことで。

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

ささだ Ruby の好きなところと嫌いなところ。

青木 好きなところはですねぇ……。

ささだ 作者がメールをくれる。

青木 (笑)。それもいいねぇ。C の作者はくれないもんな。

ささだ くれないね。

青木 Perl もちょっと難しいしなぁ。Python はくれるかな。

ささだ まぁ、ちゃんとネタが面白ければ。

青木 そうか。でも日本語で書きたいよね。

ささだ あ、でもなでしこ*3の作者は日本語でくれるよ。

青木 (笑) でも、なでしこ使う気はしないね。

ささだ (笑)

青木 好きなとこなぁ。割と全部好きなんだよな。Ruby 脳だからさ、俺。

ささだ そうだよね。それは分かる。 好きというよりか、Ruby じゃないとしっくり来ないってことだよね。 基準が Ruby、みたいな。Ruby 脳患者として、Haskell はどうだった?

青木 うーん、面白いとは思うけど、書きたいとは思わないなぁ。

ささだ (笑)。本書いてる人がそんなこと言っていいのか (笑)

青木 いやまぁ、あくまであの本は勉強しようというスタンスだから、いいんよ。

ささだ 好きなところは全部と。嫌いなところは?

青木 嫌いなところは…… なんか最近、いまいち好きじゃない方向に行きつつあるような気がしなくもない。

ささだ Ruby の仕様がってこと?

青木 仕様が。

ささだ あー。

青木 Symbol が String の下位クラスとか。*4

ささだ あー、どうなのかね、あれ。

青木 あれはちょっとなあ……(笑)。うーん。

ささだ なんか、Symbol で String のメソッドが使えるって言うのは、 なんか結構ありかなって、最初は思ってたんだけど、 西尾さんっていう、LL で Python のワンライナー書いた人が、 Immutable String っていう名前で良いんじゃない? っていう。

青木 それは違うよなぁ。

ささだ いや、それで納得しちゃって (笑)

青木 (笑)

ささだ いや、だから Symbol という風に今まで言っていたのを全部捨てて、 ImmutableString を作るという。今回の変更って言うのは、まさにそういうことだよね。

青木 うーん……。その変更は気に食わないなあ。

ささだ Symbol を捨てるかどうかは置いておいて、 名前を ImmutableString にすれば今回の変更ってのは、収まるなと。

青木 ま、そうね。でも、ImmutableString って、同じ内容なら必ず共有されるの?

ささだ ID は同じになるよね。 ID を同じにするものイコール ImmutableString みたいな。 だから、Java の intern ていう風に考える。

青木 ああそれでわかった。うーん。

ささだ それが良いかどうかっていうのは、考え直すと、なんかな。 で、Symbol を #sub かなんかで変えたいと言うのとかは、 でも、現在の 1.9 の実装って、Symbol#gsub とかやっても、帰ってくるのは String なんだよね? そこがなんかあまり意味がないなとか。

青木 そうだね。特に、Rails 発の変更というのが一番気に食わないな。

ささだ (笑)。Hash で同値になるっていうのはありえないじゃんというのは思うんだけどね。

青木 あんがい、継承するっていうのが嫌なのかもしれないな。 継承しなければ、割と納得できるのかもしれない。 単に同じメソッドを持つっていうだけなら。

ささだ Duck Typing 用にっていう。 ただ、String が返るんだったら、Symbol 返して欲しいな。

青木 ……そう考えると、やっぱ Symbol を使ってはいけないような気がするなぁ。

ささだ あ、Symbol を文字列で操作するって言うのは、 Symbol イコールアイデンティティの確保だから、やってる意味が違うと。

青木 うん。なんか意味違うよね。やっぱり。

ささだ そう言われるとそうかなって思ってしまうな。じゃあ、今の 1.9 は嫌いだと。

青木 うん。

ささだ いま騒げばまだ直るんじゃないの?

青木 どうなんだろうな? あれは直るかな?

ささだ 直したいよね。

青木 YARV でこう……(笑)

ささだ 勝手に (笑)

青木 駄目っすかねぇ。うーん、他はまぁでもあまり気に食わないのはないかな。

ささだ to_splat の ruby-core でのスレッドって見てる?

青木 見てない。なにあれ?

ささだ obj.m(*args) みたいに書いたときに引数展開する、あそこで呼ばれる。

青木 いまは to_ary だけど、それが to_splat になるってこと? じゃ、to_ary は……暗黙の変換だけで呼ぶってことか。

ささだ そうそう。で、to_ary で何で駄目なのかが分かんなくて。 分けたい場合ももしかしたらあるかもしれないけど、その「もしかしたら」がどれくらいあるかが分かんなくて。to_ary を使ったほうがきっと便利な場面の方が多いと思うんだけれども、どうなんですかね。

青木 うーん。

ささだ たぶん、デフォルトの to_splat は to_ary になるんだろうけど。 to_splat 自体も名前が変わるらしいけど。

青木 なんか名前で ruby-talk で揉めてたよね。

ささだ 名前よりももっと前に考えることがあるだろう (笑)

青木 (笑)。そこで名前に行っちゃうところが Ruby なんですかね。

ささだ Ruby っていうか、あっちの人。splat は動詞だから……とか。

青木 (笑)。分かる。分かるような気がする。

ささだ 後なんかあったっけ。やばそうなの。色々ある?

青木 Rails 関係は、非常に気に食わない。俺、Rails 大嫌いだよ。

ささだ Rails が嫌い?

青木 Rails 嫌い。Rails の、特に ActiveSupport が嫌い。

ささだ あー。

青木 あれはひどいよね。「これはひどい」だよ。

ささだ あー、なるほど。でも Rails が無いとさ、色々と売り上げが下がったりとか (笑)

青木 そうなんだよなー。そこが余計にムカつく。

ささだ Rails 様々ですよ。

青木 でも ActiveSupport は気に食わないんだー!

ささだ (笑)。ActiveSupport はちゃんと見てる? 機能。全然チェックしてないんだけど。

青木 nil.empty? とかさぁ。あんなもんいらねえ。

ささだ あれ絶賛してる人が多いよね。

青木 絶賛されてるのがまたムカつく。おまいら分かってねえよ!

ささだ (笑)。あと、あれは? Symbol#to_proc *5

青木 あれは最低。

ささだ あれ駄目?

青木 分かってないね!

ささだ (笑)

青木 名前から実体を作るのはよろしくない。

ささだ ほお。

青木 例えばさ、Pathname に対して mkdir するとディレクトリが出来るって、おかしくない?

ささだ あー、Pathname と、ディレクトリは違うか。なるほど。

青木 名前になんかすると実物が存在するようになるというのは (Ruby 哲学的に) 許せん。 名前はあくまでもすでに存在するモノにつけるべきでしょ。 少なくともプログラミングでは、 モノが先にあってそれに名前を付けるという順番を維持すべき。

ささだ Ruby っぽくないという事ですね。なるほど、そうか。他にそういう例ってあった?

青木 名前が先にある例? うーん、そうだな……。

ささだ Class オブジェクトとかは?

青木 Class オブジェクトも、先に Class 作って定数に入れてるじゃん。

ささだ クラスオブジェクトではあるけど。 クラスを名前として捉えて、まぁ、namespace オブジェクトとして捉えてというのもあるけど。 関係ないかな。

青木 あれもモノが先にあって、名前はあとから付けてる。 実装もそうだよね。先にオブジェクト作って、定数に代入。

ささだ 名前ねぇ。便利だという気は……。

青木 Symbol#to_proc が?

ささだ うん。いや、使いたいとは思わないけど。

青木 あれってようするに Ruby でも関数合成したいですって話でしょ。 それだったら素直に関数型言語使えばいいんだよ。 それをねぇ、Ruby で小手先の技で何とかしようとする根性が気に食わない。

ささだ (笑)。いやでも、Ruby って小手先の技をがんばってるんじゃないの?

青木 えー、そうかなぁ? 意外と普通だと思うけどな。

ささだ それは Ruby 脳だよ。

青木 えー、そうかなあ。でも Symbol#to_proc は小手先過ぎるよー。

ささだ そうだね。小手先過ぎるというのは分かる。

青木 せめてもうちょっと拡張性のある手法にしてほしいよ。 任意の数のメソッドを合成できるとかさ。 いまのは見ためも実装も気持ち悪すぎる。

Ruby を使ってうまくいった事例

ささだ Ruby を使って成功だった、うまく行ったという事例。

青木 えー。原稿の処理は Ruby でやると楽でした。

ささだ ほう。地味ですね (笑)

青木 地味です (笑)。俺はやっぱりアプリケーション作る人じゃないしなぁ。

ささだ 最初に出会えて良かったというのはあるんですか?

青木 そうだね。色々こう、勉強にはなるよね。 プログラミング自体について学ぶには、非常に良い言語だと思うよ。

ささだ つまり添削本を買えと。

青木 うん (笑)

ささだ 添削本の話はあとでしますかね。

aoki3.jpg

キラーアプリ

ささだ 自分にとってキラーアプリと言うのは。

青木 キラーアプリなぁ。

ささだ tDiary?

青木 使ってるけど、キラーではないな。 ……それに tDiary って、実はあんまり設計が好きじゃなくて。

ささだ 3 タブだね。

青木 3 タブ?

ささだ あ、インデント。

青木 あー。うんうんうん。ハードタブもいまいちだよねぇ。

ささだ プラグインの設計が……(笑)

青木 確かにあの辺もよくない。あとデータベースの設計が好きじゃない。

ささだ あ、そうなんだ。データベースはまだ見てないんで。

青木 データベースは月別のファイルで……。

ささだ PStore だっけ?

青木 今はテキストファイルになってるよ。 本体、ツッコミ、リファラがそれぞれ別のファイルで、月別なのね。 そこがまず気に食わない。日単位で記事と突っ込みとリファラをまとめたファイルがいいと思うんだよ。

ささだ それも全部分ければいいじゃん。

青木 全部分けても良いんだけどさ、分けすぎると今度はディスク食うから。

ささだ いや、いいじゃんもう。

青木 いやいやいや。あのさー、ReFe がそれ系というか、 すごい細かいたくさんのファイルを作るんだけど、あれはやっぱりすごいディスクを食うんだよね。

ささだ 3 バイトのファイルも 4KB をつかうみたいな。

青木 うん。ファイルがたくさんあると、無駄にハードディスクの実容量を食う。

ささだ じゃあ、ReFe とかはこれからはデータベースになっちゃったりするの?

青木 なりません。

ささだ (笑)

青木 なりませんけど、まぁちょっとは自粛しようかなと思う。 基本的にはファイルでガンガン分ける qmail スタイルが好きだから、できれば分けたいんだけど。

ささだ じゃ、Ruby のアプリケーションは使ってないの?

青木 使ってなくはないよ。tDiary と、BitChannel と、 あと TMail はシステムの、あまり外には見えないところで活用されてるし。

ささだ TMail って何に使うの?

青木 tDiary の記事をメール経由で送ってるんだけど、それの処理で常に動いている。 あとは POP サーバーが Ruby で書いてある。*6

ささだ おお?

青木 POP サーバー。自宅サーバの。

ささだ どっからどこに行くの?

青木 自宅のサーバーマシンから、メインマシンに。

ささだ あ、そういうことか。POP サーバーがサーバー機で動いてるのか。 それを POP クライアントで取ってきてる。何でわざわざ作ったんですか?

青木 え、何でって? 他に何を使えば?

ささだ Debian だったよね。POP サーバーって無かったっけ?

青木 Qpopper とかあるけど、設定がめんどくさかった。

ささだ (笑)

青木 だってさ、APOP と Maildir 使うためだけになんかいろいろやんなきゃいけないんだもん。 それに対して俺が作った POP サーバは APOP + Maildir 専用で色々とすっきりしてるので、 設定なんて 1 行も無い。楽だ。

ささだ つーかそれって、コードに全部自分の好きな設定書いてるって事だよね (笑)

青木 そうね (笑)

ささだ そうだ。関係ないけどさ、メールの振り分けとかってやってる?

青木 メインマシンで?

ささだ うん。例えばさ、いわゆるメールのフォルダ分けみたいな。

青木 メーリングリストだけ分けてるよ。

ささだ え、それは Ruby かなんかでバーっと書いてる?

青木 いや、メーラーで。

ささだ メーラーは何を使ってるの?

青木 Mew。

ささだ メーラーの設定で、バーっと。

青木 うん。ひたすら書く。

ささだ 書きやすい?

青木 いや、全然。あと、Mew は設定を起動中にその場で変えらんないのがめんどくさい。

ささだ あー、起動し直しとか?

青木 うん。そうなっちゃうんだよ。

ささだ Thunderbird で振り分けやろうとするとさ、こうやってクリックしてさぁ (笑) 新規ってやってガチャガチャってやって。これ辛いんだよね。

青木 うは、これはめんどくさい。自動フィルタってないんだ?

ささだ あー、まぁそういう……。私はまさにそのために TMail を使って。

青木 あ、そうなんだ。

ささだ TMail があれば TMail を使って。無ければ標準添付の mailread.rb。 あれ使ってるの俺しかいないんじゃないかと思うんだけど (笑)

青木 あれもちょっとひどいよねぇ。 だいたい、なんで mailread.rb っていうライブラリ名で Mail なんて一般的なクラス名を……。 あれ許せないんだけど!

ささだ あれすごいよね。……で、まぁあれのユーザーなんですけど (笑)

青木 あれなくして欲しい。

ささだ いや、でもなくされると私困るんだよ。

青木 まずライブラリに別名を付けて、それから徐々になくしていく感じでさ。

ささだ あー、そうね。こんな感じでメールは分けるようにしてるけど。 こういうので書けるやつって無くてさ、こんなの誰でも作るだろうと思ってたら。 で、procmail がまさにこれをやるみたいだけど。設定がわかんなくてさ。

青木 なんで procmail は誰も書き直さないんだろうね。

ささだ ねぇ。

青木 あんなの書きたくないよな。

ささだ なんかねぇ、それこそほんと Ruby で好きなアクションできたほうが嬉しいなとか思うんだけど。

青木 誰か書いてるような気もしなくもないけどね。

ささだ あとさ、メーリングリストにも色々あるじゃん。 なんか X-ML-Name だったり List-Id だったり。それ統一してくれないのかね。

青木 それは無理じゃない?

ささだ RFC か何かでさ、こう ML だったら ML の名前がどうとかさ。

青木 うーん、クライアント側でがんばるしかないのかな、今のところはさ。

ささだ それがめんどくさくてさ。あと最近ウザイのがさ、エイリアスを ML と称している人たち。

青木 あー、あるねぇ。

ささだ X-ML-Name 付けてくれよせめて、みたいな。

青木 あるある。システムに弱い人が使いたがるよね。

ささだ 弱く無い人もめんどくさいから ML のシステムを入れなくて。

青木 ML 関係はもうちょっと楽になってもいいね。 QuickML みたいに楽で、それでいてちょっとだけ管理できる、みたいなのがいいなぁ。

ささだ QuickML って、何が足りないの?

青木 誰でも ML に入れてしまうのがちょっと。

ささだ いまは認証あるよ。

青木 あ、そうなの?あー、それじゃそれでいいのか。

ささだ なんか、アドミンにメールが来て、OK かどうかっていう。そういう設定がある。

青木 へー、それならいいか。

ささだ 使ったことないんだけどさ、俺も。

青木 (笑)

ささだ Debian ならパッケージあるし。

青木 QuickML は設定も簡単?

ささだ うん。Debian だと apt-get install だけ。

青木 おー、それは素晴らしい。使ってみようかな。

ささだ というか、confirmation ml creation……。あ、ごめんなさい。参加の認証は無いんだ。

青木 あ、ないの?

ささだ ML を作るときに confirmation メールが来る。

青木 あー、そうか、ML を作るときね。

ささだ 参加はまだ無いんだ。

青木 でも Ruby なら書き換えられるからいいか。

ささだ (笑)

青木 高林さんは、そういうのは入れたくないって書いてたたような気がするけど……。

ささだ QuickML 2.0 で。

青木 (笑)

ささだ 良くないね、そういうなんか、安易なネーミングは。

aoki4.jpg

もう少しキラーアプリ

ささだ えっと、次。Ruby を使って成功だったところ……ってそれはさっきやったな。 キラーアプリが今の話でしたね。

青木 別に Ruby の……あ、キラーアプリね。

ささだ Ruby はだから結局使ってなかったって事で (笑)。 キラーアプリっぽいのは特に。自分の使ってるものぐらい……あ、TMail の話になったんだっけ、それで。 自分で使ってる Ruby の。

青木 TMail……はキラーではないな別に。

ささだ じゃ、使ってないんじゃない、Ruby。

青木 いやいや、入ってないとやっぱり、 突然いろんなところで困り始めるんだよ。空気のような存在。

ささだ ああ、また綺麗にまとめてくれた。

青木 (笑)

Ruby の習得

ささだ Ruby の習得は簡単でしたか。

青木 どうなんでしょうか。

ささだ 初めてのプログラミングとして。詰まるところとか、なかった?

青木 つまんなくはなかったよ。初めてだから比較できなくてよく分からない。

ささだ どれくらい使うようになったの。

青木 どのくらいのレベルになれば「習得」になるの?

ささだ ここまで来るのにどれくらい、とかそういう。

青木 うーん、プログラムが書けるかどうかというレベルでは、 Racc が 1 年で書けてる訳だから、早いんじゃない?

ささだ そうね。そもそも Racc ……その LALR とかあの辺をしっかりと出来るというのは、 Ruby と関係ないところですごいよね。

青木 LALR はめんどくさいけど、あれは全部イチからやったわけじゃないから。 ほとんど Dragon Book の丸写しだよね、アルゴリズムは。

ささだ あー、なるほど。

青木 あと難しいところは、bison のソースコードを見て、パチると。

ささだ でも、C 知らなかったんでしょ?

青木 本で読んだ。

ささだ あ、本では前から知っていた。

青木 そう、いちおう本では読んでたし、 Racc と TMail の拡張ライブラリを同時に書いていたので、それで書けるようになった。 だから結局 Ruby と C はほとんど同時に覚えたんだよね。

ささだ ふーん。特にインピーダンスミスマッチ、っていう言葉を使うのは良くないかな。概念って違うじゃん、Ruby と C って。そこで迷いはしなかった? こっちはこっち、あっちはあっちっていうのは。

青木 あんまり迷わなかったなぁ。

ささだ こっちでは参照が、とか。こっちではコピーが、とか何か。

青木 あんまり、違いはなくない?

ささだ ポインタ使ってればね。

青木 うん。それにやっぱ Ruby の拡張ライブラリなら、GC あるし。

ささだ あ、まぁね。

青木 VALUE だけ使ってれば大したことは。ほんとに最初の頃は、C を使うというよりも、 Ruby のコードを C で書くっていう感じで始めたのね。だから全部もう……。

ささだ じゃ、C のこれからの勉強はそれで (笑)

青木 これからは Ruby の拡張ライブラリで全部覚えろって? 売れなそー(笑)

ささだ (笑)。いや、売れるんじゃないの? 『ふつうの C プログラミング』とかでさ、いきなり Ruby の拡張ライブラリの作り方が入ってる。

青木 もうなんか、Amazon のコメントが目に見えるようだな。 「まったくふつうではありません。注意してください。」

ささだ それ、いつも言われてるんじゃないの (笑)。 『ふつうの Linux プログラミング』ではどう書かれてたのかな。 (Amazon のページを見て) ……ない。

青木 ないね。

ささだ なんと。Haskell は……これもないね。

青木 ないなあ。あ、でもカスタマーレビュー数 1 って書いてあるよ。

ささだ あれ、これ見えてないだけ? どこどこ? なんで見えないの?

青木 何でだろう。何かがいけないのかな。

ささだ 見えないね。

プログラミング全般

プログラミングの学習について

青木 引っかかるといえばさ、再帰がまず引っかかったよ。

ささだ 再帰のどこに?

青木 再帰がでてくる前は、ソースコードで一回だけ書いてあるものは、 実際にも一個しかインスタンスが存在しないじゃない。 関数って、呼び出すとスタックにつむけど、それを考えずに、 Fortran みたいにスタティックな確保すると考えても問題ない。 つまり、それまでは、見た目にあるものだけがそのまま確保されるものだと思ってればいいんだけど、 再帰が出てくると、ソースコードとは別に、 スタック上にある関数呼び出し履歴みたいなものを別に考えないといけない。 akr さんの日記にもちょっと書いてあったけど。

ささだ あー、そこのギャップがっていう。

青木 そういうのがむしろ難しい。

ささだ そこの学習曲線がちょっと高かったという。

青木 そんなの入門書にはふつう書いてないじゃん。アクティベーションレコードが生成されますとか。

ささだ うーん、いや、プログラミングの教科書には書いてあるよ。最近の。

青木 書いてある? プログラミング入門書に?

ささだ Ruby 入門には書いてないよ。

青木 うん。『はじめての C』とかにも書いてないじゃん。

ささだ あ、書いてない? 入門書はあまり読んだことがないのであまり詳しくないんだけど。

青木 ないと思うよ。

ささだ そうか。授業ではやるけどね。

青木 あ、そうなんだ。

ささだ プログラミングの授業とかだと。再帰とは、っていう。

青木 あー、やってくれるんだ。 やっぱりそういうのをきっちりやってくれるところが大学で学ぶ長所かな。

ささだ そうかもね。

初めてのプログラミング

ささだ 初めてコードを書いたのは Ruby? さっきの話。

青木 ほんとうーに初めてだと、小学校のとき。

ささだ えっ。

青木 BASIC で線を描きました。

ささだ (笑)

青木 LINE 0,0 みたいな。そういうので線を描いた。 で、それはなぜかというと、うちの親は SE なんだけど、家に会社の機械を置いてたの。 モニタ一体型で 8 インチフロッピーが 2 つ付いてる機械ね。 その機械で BASIC インタプリタが動いていて、いきなり BASIC が書けた。 その BASIC は本当に BASIC ね。N88 BASIC だっけ? 行番号書くやつ。

ささだ はいはい。

青木 それで FF (Final Fantasy) みたいな RPG が書きたいなと思ったけど、 さすがに FF は作れなかった。

ささだ 小学校? LINE から FF (笑)

青木 んで、何はともあれとにかく絵を出そうと思ったんだけど、 その機械はモノクロモニタだったので色が出せなくて、 結局 LINE 命令を書いただけでやめちゃった。 だからそのときの BASIC の経験はカウントしないことにしてんの。

ささだ 小学校で FF って……2?

青木 3。……ああ、年がばれる。

ささだ (笑)。FF3 か。FF3 は作るのも大変だよね。

青木 大変そうだよね。

ささだ 今でも作れって言われたら大変だよね (笑)

青木 大変だね (笑)。でもまぁ、グラフィックさえもらえれば書けそうな気はするよね。まあ、そんな感じで。

やっぱ最初に BASIC なんか使おうとしたのがよくなかったんだよ。BASIC は難しいよね。

ささだ あ、そう?

青木 BASIC の方が難しいよ、C より。

ささだ どの辺が?

青木 だって、GOTO でさぁ、関数の真ん中に飛んでこれるじゃん。 関数ってないけど。それがそもそも信じられん。

ささだ えっと、小学校の頃に信じられなかったの?

青木 うん。だって飛んでくるということは、常に意識して書かなければならないということで。

ささだ いや、小学生は意識しないよそんなこと。

青木 意識したんだよ!

ささだ (笑)

青木 それが嫌だった。これは俺には書けないと思ったよ。

ささだ えー、嫌だなそんな小学生 (笑)

青木 どうも俺は昔の方が頭が良かったらしいんだよ。 それは親から話を聞いててもそう思う。3 歳のときがたぶんピークだった。

ささだ (笑)

青木 だって、3 歳…… 6 歳かなぁ。その頃にゼロの概念を理解して、 「ゼロということはつまり何もないということなの?」とか、哲学的な問いを発していたらしいよ。

ささだ 3 歳で。

青木 6 歳かな。3 歳か 6 歳かどっちかで。

ささだ 6 歳って幼稚園だっけ? 嫌な幼稚園児だね (笑)

青木 まったくだ。その辺がたぶんピークで、それから下がり続けてる。

ささだ (笑)

青木 まあそういうわけで、初心者に BASIC を教えるのはダメです。

ささだ HSP とか駄目なの?

青木 だめでしょ。

ささだ というかさ、もちろん意識しなければいけないんだけども、対比が無かったわけでしょ? 意識しなくてもよい言語を知らないのに、こっちは意識しなければいけないから嫌だっていうのがわかんない。

青木 比較して思ったじゃなくて、プログラミング全般がそういうものだと思ったわけ。 いつどこから飛んでくるか分かんないから、常に注意しながら書かないといけないものだと。

ささだ そうか、行番号だから、ラベルじゃないのね。

青木 そうそう。だからいつでも飛んでこれるわけじゃん。

ささだ それってさ、デバッグしてるときに気づくもんじゃないの?

青木 さっきも言ったけど、 BASIC で書いたのって本当に LINE 命令くらいでさ、 残りは本で読んだだけなんだよ、基本的に。 だからデバッグとかもしてないので、気付きようがなかった。

ささだ でかいプログラムを見てとか。本で読んで。

青木 いや、見てない。逆に、見なかったから、 普通はそんなことは気にしなくていいということが分からなかった。

ささだ 書かないでそれを気づくというのはすごいね。

青木 そうかな?

ささだ 本にそれは書いてなかったんでしょ、別に。

青木 飛んでくる可能性はあるから気をつけなきゃいけないねーぐらいのことは軽く書いてあったよ。 それで、やばいと感じた。しかもグローバル変数しかないじゃん。 いつ変数の値が変わるのか分からないのに、 こんなのどうやって書くんだろうーと思ったよ。

ささだ そこで高級言語的アプローチは思いつかなかったの? そういうのを意識して管理すれば、結構簡単だ、みたいな。

青木 だから、そこがまず一つ目の壁だったんだね。 つまり、プログラムってのはある程度は決め付けて進めなきゃいけない、というのが分からなかった。

ささだ 最初にルールをつければ、まぁそれなりに何とかなるというのが。

青木 分からなかった。そこがまず結構難しかった。

ささだ その思い込みがずっと来て、で大学で Ruby を始めた?

青木 そう。その間違いに気づいたのはアセンブラをやったときだから。 まとめると、小学校のころにちょっとだけ BASIC をさわるも色が出せなくて即あきらめ、 そのあとは実機をさわれなくて本だけ (ごく稀に) 読んでて、 大学になって初めて Ruby と C を実機でさわった。 あと同時にアセンブラもやってたかな。 もはやその辺の前後関係がよくわかんなくなってきてるけど。

ささだ 同時にアセンブラって、なにそれ (笑)

青木 C やってるとアセンブラやりたくならない?

ささだ いや、それはすごい分かるけど。

青木 とにかく、その当時は分かんないことだらけだから、分かんないこと Driven だったわけよ。 で、Ruby やってどうも分かんないので C をやるでしょ。 で、C やってもよく分かんないので、アセンブラに。

ささだ Ruby やってて分かんないから C ってのは、たぶんあまり無いと思うよ。

青木 そうかな?

ささだ だって、全然違うじゃん。やっぱり。

青木 違うけど、分かんないからしょうがないじゃん。やるしかないよ。 それに当時はソースコードを読まないとメソッドの使いかたが分からなかったし。

ささだ 分かんないときはネットで訊くとか。 今だったら。分かんねぇようわーんって言って、はてなダイアリーでこう……。

青木 その時代にはまだはてな無いから (笑)。 それに、インターネットアクセスもそんなに自由じゃなかったしさ。 3 分 10 円かかる時代じゃん? ちょっと気が引けるよ。

ささだ そうか。その頃アセンブラを普通に使えたんだね。

青木 使えたというのは?

ささだ 要するに、アセンブラを買わなくて良かったとか。

青木 ああそういうことか。 大学でプログラミング始めたときは Linux だから、GNU as が入ってたよ。 もっとも、アセンブラは書いてなくて本で読んだだけだから、それはあんま関係ないけど。

ささだ あー。で、本は普通に。初めて読む 486 とかそんな感じ?

青木 そうそう。『はじめて読む 8086』、『486』って読んで、ようやく納得した。

ささだ はいはい。俺の場合、高校の頃にさ、やっぱり C やってて、アセンブラ分かんなくて。でも高校のころで金無くてさ。本買えなかった。本がそんなにあるとは知らなくてさ。 で、マシンコード見てさ。逆アセンブラのツールはあったんだよね。パソコン通信で配ってた。で、ダンプして。この命令どういう意味なんだろうって。 命令パターン見ながら、これどういう意味だろう、いや、ここでこう使ってるんだからこれこういう意味なのかな……とか想像しながら。 馬鹿だよね (笑)

青木 難しそうだ (笑)。それはちょっとやってられないな。

ささだ 今思うとさ、あの頃でもちょっと奮発するなりなんなりして、 本を買っていれば、たったそれだけの投資でさ、 今はもっとよく出来てたと思うと馬鹿らしいなって思うよね。

青木 いやでもそういう経験が実は結構役に立ってるんじゃないの?

ささだ いやいや、かなり無駄にしていると思う。ほんとにね、本から入るってのは正しいよ。

青木 そうかな。今は本はわりとどうでもいいって思うけど。 ま、最初の頃はやっぱ本がいいのか。

ささだ 無くても何とかなると思ったのが間違いだった。 あと、物がやっぱりなくて。コンパイラが数万とか、そんなんだよね。

Ruby 以外のプログラミング言語

ささだ Ruby 以外のプログラミング言語では何を使ってますか、何が好きですか。

青木 C かな。C が好き。

ささだ C 使ってる?

青木 拡張ライブラリとかで。

ささだ (笑)。Haskell は好きじゃないと (笑)

青木 Haskell はねぇ、名前が好きじゃない。

ささだ あ、そうなの? いいじゃん。なんかかっこいいじゃん。

青木 人名だからやだ。

ささだ まつもとさんが、Matz とか付けたら嫌なんだ。

青木 うん。

ささだ (笑)。他にありますか。使ってる言語なり、好きな言語。

青木 使ってる言語……。Ruby と C 以外だとシェルスクリプトくらいかねえ。 あと、間接的にお世話になってるのは Perl かな。

ささだ 間接的?

青木 あ、ごめん、今は Mew は Perl じゃないのか。 そうか。そしたら、Emacs lisp。……あれ嫌いなんだよね。なんか嫌いなのばっかだな俺。

ささだ (笑)。Debian だったら、Python がたくさん使われてるよね。

青木 あ、そうね。Python も嫌だね。

ささだ 嫌なんだ。

青木 名前が。

ささだ また名前 (笑)?

青木 俺は名前で決めるので。 あ、そうそう、Ruby に決めたのは名前がいいというのもあってさ。 Perl はなんとなく白っぽいじゃん。

ささだ うん。Ruby は赤っぽい?

青木 青っぽい。

ささだ え、青っぽい? Ruby が?

青木 青っぽいよ。

ささだ え、赤じゃない? Ruby って言われたら。

青木 最初に Ruby を知った Linux Japan の表紙が青かったからだと思う。 前田さんの記事が載ってたやつ。

ささだ あー、なるほど。そのイメージが最初なんだ。原体験がそれだという。

青木 そうそう。それに Ruby って名前がかっこいいじゃん。

ささだ まあね。

青木 Ruby と Perl だったら、名前は Ruby の方がいいなと思って。 Linux と FreeBSD で迷ったときも、やっぱり Linux の方が名前が良いなぁと思って決めた。 FreeBSD は 2 語だからね。

ささだ うん。駄目なの?

青木 2 語だから駄目なの。BSD だけなら良い。かっこいい。

ささだ あー。4.2BSD とか。

青木 うん。Free とか Net とか付いちゃうと、ちょっと情けない。

ささだ (笑)。BitChannel とか二語じゃん。

青木 あれは良いのさ。

ささだ (笑)

青木 名詞が 2 個だから良いの。形容詞が付くと良くない。

ささだ NetBSD は? Net は形容詞?

青木 形容詞っぽくない?

ささだ Dragonfly も?

青木 あー、Dragonfly なぁ、あれは 3 語だしなぁ。

ささだ ああ、そうね。

青木 長いし、発音も良くないし。

ささだ ちなみに、Windows は?

青木 いいんじゃない?

ささだ Windows はいいんだ。

青木 いいと思うよ別に。少なくとも名前は嫌いではない。

aoki2.jpg

美しいソースコード

ささだ 今まで読んだ中で、最も美しいソースコード。

青木 (しばし考えて) 最も美しい……?

ささだ 自分のコード?

青木 いや、さすがにそれは。……「最も美しい」レベルになると、結構幅があるよね。 そうだな、NetBSD のカーネルとか。あと Ruby のごく一部を除くコードとか、WEBrick とか。

ささだ NetBSD のカーネルは良いんだ。

青木 いいんじゃん? あれ綺麗だよ。 きっちりモジュール化してるし、名前の付け方も統一性があるし、ソースツリーも綺麗だし。 ただあの、Java とかは、ディレクトリ階層が深すぎてあまり好きじゃない。 Ruby のソースコードみたいに、フラットなのが割りと好き。

ささだ (Ruby は) フラットすぎると思うんだけどなぁ。

青木 そうかなあ。ただ、フラットでも qmail までいくとちょっとね。 qmail は、関数 1 個でファイルひとつ、ぐらいの勢いで、しかもフラットなんだよな。 ビルドしたあとに ls すると 3 画面ぐらい流れていく (笑)。 あれはちょっと耐えられない。あと gcc もけっこうきついな。

ささだ でも、Ruby くらいまでは良いと。

青木 うん。綺麗なのは、Ruby とか、NetBSD とか、WEBrick とか。 あとはまぁ、BitChannel も何とかそういうのに対抗できるぐらいになってきたかなぁと思ってるところ。 ほんとに最近、満足の行くものが書けるようになって来たかな。

ささだ (BitChannel は) まだ触ってるんだ。

青木 触ってるよ、もちろん。

いま興味のあるテーマ

ささだ 今興味を持ってるテーマは何ですか。プログラミング関係で。

青木 リレーショナルデータベースかな。

ささだ ほう。

青木 つーか、データベース全般。あれは面白いね。 オブジェクト指向データベースも面白いし、リレーショナルデータベースも、それはそれで面白い。

ささだ Postgres みたいなのを作りたいとか、そういうこと?

青木 作りたいとなると、オブジェクト指向データベースかな。 リレーショナルデータベースは作るより使いたい。使ったことないから。 どうせ暇だし、たまには SQL でも書くか、みたいな。

ささだ 暇なのかよ (笑)

青木 えー、各出版社の編集の皆様には言葉通り受け取らないでいただきたく (笑)

ささだ でも、会社とか行ったら、嫌でも SQL 使わなきゃいけないんじゃない?

青木 書きまくりだろうねえ。

ささだ そういえば、SQL インジェクションとか何とか言ってるけどさ、SQL 生書きする自体でなんか腐ってると思うんだけど。そういう意識無いのかなぁ。

青木 そうかな?

ささだ なんか DSL 作ってさ、それを変換するように作れば絶対起こんないじゃん。

青木 それはそうだけど、やっぱうまく行かないんじゃない? リレーショナルデータベースと、オブジェクト指向言語のミスマッチ、みたいなさ。

ささだ せめてさ、SQL の構文要素を、 例えば Ruby なら Symbol にしちゃって、Symbol で渡して、 で、それの Array を渡すようにすれば、絶対に起こんないんじゃないの?

青木 うーん……。

ささだ ちょっと書き方めんどくさくなるけど。

青木 Ruby なら、それでいいと思うんだけど。 Java でやるのがめんどくさいという話じゃないの?

ささだ Java だとどうするのかな。分かんないな。

青木 なんかめんどくさそうじゃない?

ささだ そうか。method_missing とか無いもんね。

青木 そうだよ (笑)。Ruby なら Hash とか配列とか使って Lisp の S 式みたく表現する「わびさびメソッド」とかあるけどさ、Java ではそういうのってやりにくそうじゃない?

ささだ やりづらいのかな。

青木 と思うよ。クラス調べて動的にってのがめんどくさいじゃん。 リフレクション使わないといけないから。

ささだ まぁ、そもそもリテラル書けないから。書けないと言うか。 ていうか、リテラル書けない言語は駄目だよね。

青木 そうだね。リテラル弱いよね。

ささだ C とかでさ、せめて配列ぐらいはさ、なんか作らせてくれよ、みたいな。 イニシャライズのときしかできないというのはちょっとめんどくさいですよ。

青木 GCC だと出来るんだっけ?

ささだ あ、そうなの? その辺はめんどくさいので調べてないけど。

青木 まあどっちにしろ GCC だけじゃ使わないね。

ささだ 『ふつうのデータベース』は出すの?

青木 一応提案はしてみたけど却下されました。

ささだ なるほどね。これを読んだ人が、出版社に 100 人ぐらいリクエストすれば出るかも。

青木 出るかもねぇ。あとはまぁ、仕事で使ってネタが溜まれば書けるかもしれないね。

ささだ arton さんすごいよね。仕事やりながら、あれだけ数出して。

青木 あー、すごいよねぇ。

ささだ 10 冊超えたんだっけ?

青木 たぶん。言ってたね。どうやってあんなに書いてるんだろう。 書くのすごい速いよね、arton さんは。

ささだ そんな感じで量産を。「ふつうの」がたくさん出る。月刊「ふつうに」で。

青木 (笑)

生い立ちとか

生い立ち

ささだ 生い立ち。

青木 生い立ち? 何を言えばいいの?

ささだ 生まれて、3 歳か 6 歳でゼロの概念を……。

青木 (笑)。幼稚園に行って小学校に行って中学校に行って高校に行って大学に行きました。

ささだ はぁ。「はぁ」とか言って (笑)

青木 (笑)

ささだ えーっと、神童として名高い、近所の……。

青木 (笑)。いやー、神童とかないだろ。東京だしさ。神童とか言われるのってだいたい田舎じゃん。

ささだ あー、そっか。

青木 そういうのないよね東京は。

ささだ 普通の公立に行って、普通に?

青木 んー、ずっと某国立付属校で上がってった。

ささだ やっぱ頭良かったんだ。

青木 頭でなくて、運が良かったんだよ。小学校はくじだから、運があれば入れる。

ささだ え、くじなの?

青木 面接もあるけど、面接はほんとに駄目なやつをはじくだけ。だからやっぱ運。

ささだ へぇー。

青木 で、小学校で半分より上にいれば中学校にも入れる。 高校ではまともに試験があるんだけど、それも外部から入るよりは全然簡単。

ささだ はー。じゃあ、人生勝ち組のロードを突っ走ったわけですね。

青木 これで勝ち組なのか (笑)

ささだ で、どんな小学生、中学生とか。

青木 小学校はあまり思い出したくないなぁ。

ささだ 思い出したくない?

青木 そして中学校もあんまり思い出したくない (笑)

ささだ クラブとかは?

青木 高校で陸上部に入りました。

ささだ あ、高校からだったんだ。

青木 そう。中学校までは運動嫌いだったから。

ささだ 頭良いと大変だね。

青木 そういう問題か? 小学校がほんとに嫌でさぁ。ほんとに嫌な学校でした。中学校はけっこう面白かったんだけど、まだ小の呪縛から抜け切れなかった。水泳が好きな学校でさ、すげーしごかれるんだよ。

ささだ 先生に?

青木 うん。 6 年生のときに一時間の遠泳をやるんだけど、それも嫌で嫌でしょうがなかった。

ささだ 休んだらもう、怒られる、みたいな。

青木 ひたすら根性ですな。6 年生の夏休み中にも水泳の練習があるんだけど、 「とりあえず 1000 メートルぐらいバタ足で」って来るわけ。小学校で。

ささだ あり得ないね。小学校って言ったら、少し泳がされて、じゃあ、これから自由時間です、っていうイメージでしたよ、私は。

青木 あれはきつかった。その頃は運動が苦手でさ、自分には絶対出来ないと思ってたわけ。 だからそもそも最初からやる気ないので、伸びるわけもない。伸びないので、さらに嫌んなる。 そんな感じで鬱々とした小学校生活を送っていたわけですよ。 その頃は勉強も全然出来なかったしさ。まあ今は勉強できるかというと非常に怪しいけど (笑)、 そのころは特に出来なかった。だって分数の計算がちゃんとできるようになったのも中学校になってからだもん。

ささだ それは遅いよね。

青木 でしょ。一応計算は出来るんだけど、ちゃんと理解したのは中学校でさ。

ささだ あー、なるほど。中学校の最初にさ、なんかマイナスとかやるじゃん。 あの辺ってすんなりいったの?

青木 あの辺は大丈夫だった……え、中学校だっけ、マイナスって。

ささだ 俺は中学校の最初にやった。学校によっては違うかもしれないけど。

青木 マイナスって、高校じゃない?

ささだ いやいや、それだったら方程式できないじゃん。

青木 あ、そっか。じゃ、中学校か。

ささだ いや、分数の掛け算とかで、何でちっちゃくなっちゃうのとかそういう話じゃなく?

青木 うんそうかな。その辺の話かな。

ささだ なんか、マイナス掛けるマイナスはプラスになるとかそんなのとか同じような、 よく分からん、ってのがあるじゃん。それはすんなり行く?

青木 よく分かんなかったね。まぁ、答えは何となく出るんだけど。

ささだ 公式としてはなんか、大したことは無いけど、じゃあ、何でって言われると、うーんって。

青木 それでまぁ、中学校行ってから、比較的勉強が出来るようになったんだよ。 ……そういや塾に行ってたんだけど、そこの先生がまた、凄い人でね。

ささだ 凄い人で (笑)

青木 いやまぁ、面白かったからいいんだけど。 何が凄いかというと、授業中に寝てると椅子が飛んでくる。

ささだ 椅子!?

青木 マジでマジで。パイプ椅子がドカーンと。

ささだ 怪我するんじゃないの?

青木 そんなことは考えてないと思う。 隣の部屋でくっちゃべってるやつがいたときも椅子が飛んだな。

ささだ それ、親、何にも言わないの?

青木 言わなかったんだよ、その頃は。今だったらやばいかもしれないけど、その頃はまかり通りました。

ささだ へぇー。

青木 まぁ、面白い人ではあったけどね。 で、さすがにそこで勉強はちゃんとやったので、勉強は出来るようになって。 そうなってから小学校の呪縛からも開放されまして。 中学校に行ったら水泳も自由時間が出来て楽になったし、小学校で鍛えられてたから結構泳げるし。 ああ、これは良いなぁと思ったよー。で、高校になったらさらに気楽になって人生楽しくなりました。

読んだ本

ささだ 本とかは読んだ?

青木 何の?

ささだ いや、なんか本全般。

青木 SF とか?

ささだ うん。……(笑)。

青木 いや、なんか Rubyist は SF 読んでる人多いからさ。

ささだ ねぇ。

青木 SF は読まなかったよ。探偵物は好きだったけど。江戸川乱歩とか。探偵になりたかったんだけどさ。

ささだ 探偵に (笑)。

青木 探偵に……でも中学校ぐらいになるとやはりねぇ。 探偵なんて離婚調査ぐらいだということが分かり。

ささだ 中学校で分かるの? それ。

青木 え、分かるでしょ。

ささだ おおー。

青木 それで、じゃあ探偵はいいやと思った。

ささだ なるほど。プログラマーとかは全然なかったんだよね、たぶん。

青木 うん。……そういや探偵って近くない? プログラミングと。

ささだ ああ……うーん?

青木 トリックとかさ。 デバッグでこう、全然違うところを探してたけど原因は実はこっちだった、みたいな。 そういうとこが結構近いと思う。

ささだ なるほど。でも浮気調査は無いよね (笑)。

青木 浮気調査は無いね (笑)。このプロセスが浮気してるから調べてくださいとか?(笑)

ささだ でも、監視とかはそういう……(笑)

青木 張り込んだりはしないな (笑)

ささだ 効率よく張り込む方法とか。まぁ、なんかそんな感じに。 探偵になりたかった小学校で、中学校で。

aoki6.jpg

ロープレ談議

青木 あ、あとはひたすら RPG をやっておりました。

ささだ ああ、ファミコン、スーファミ。

青木 うん。最初はドラクエ 2。

ささだ ドラクエ 2 から!? それはすごいね。

青木 すごいか? ドラクエ 2 やって、3 やって。

ささだ ドラクエ 2 よくできたね。

青木 あ、クリアはできなかったけどね。

ささだ あ、出来なかった? ロンダルキアの洞窟*7

青木 えーっと……、渇きのつぼを使って……じゃないな、月のかけら? とにかく海に浮かんでる洞窟のところで止まってしまった。*8

ささだ 何するんだっけ、そこで。

青木 月のかけらを使うと干潟が干上がって洞窟に入れるようになるんじゃなかったっけ。 その、海のど真ん中にある洞窟がクリアできなかった。

ささだ 中でマグマが出ているような演出とかそういう。そこに入れなかったと。

青木 そう。そこがクリアできなかった。入れたんだけど。

ささだ あ、なるほど。

青木 なんか面倒になってやめちゃったんだよね。ドラクエ 3 はクリアしました。がんばって。

ささだ 私、3 が最初でしたね。

青木 おー。微妙に世代が違うな。

ささだ ドラクエ 3……ドラクエを初めてみたときに、何が面白いのかさっぱり分かんなくて。

青木 えー、そう?

ささだ 人の家に行って、なんか楽しそうにやってるんだけど、なにこれ? ポチポチ押して文字が出て。こんなの何が面白いんだろうって、やってみたらはまっちゃったの。

青木 あー、なるほど。俺も最初は友達の家で見せてもらったな……で、FF2*9 やったんだよね。

ささだ また 2 か。

青木 そうそう。FF2 は自由度高くてよかったねぇ。あれも結局クリアできなかったな。

ささだ えっ、なんで?

青木 だって最後の方の敵が強いんだもん。

ささだ ブラッドソード*10でばっさばっさと。

青木 ブラッドソード売っちゃった。

ささだ えー! そりゃきついね。

青木 だから、ひたすら素手で戦う。

ささだ 素手が強いんだっけ?

青木 うん。普通の敵には、素手が一番強い。 ただ、(ラスボスの) 皇帝は固いので、皇帝だとエクスカリバーの方が強い。

ささだ 皇帝はブラッドソードでサクサクッっと倒しちゃった。

青木 ブラッドソードを使うと楽になりすぎるかなぁと思って。 なんか卑怯だという意識が。で、取っておけば良いのに、売っちゃったんだよね。 FF2 って持てるアイテム数が少ないから、使わない武器を持ってるくらいならエリクシャー持ちたい*11

ささだ (笑)。ヒットポイントはどれぐらいまで上げました。

青木 えー、6000 か 7000 かな。

ささだ それでもきつかったんだ。

青木 きつかった。きついよあれは。アルテマ弱いしさ*12

ささだ つか、魔法使えないでしょ、あれ。

青木 そうね。

ささだ 全然こう……何のためにアルテマをがんばって取りにいったんだって感じだよね*13

青木 だよな。アルテマ弱すぎ。 あ、レベル 16 まで上げれば皇帝にだけはちょっと効くか。

ささだ 16 まで鍛えたんだ (笑)。1600 回使って。

青木 うん。

ささだ (笑)

青木 ただほら、裏技が使えるでしょ。

ささだ え、あるの?

青木 知らない? 「たたかう、たたかう、たたかう、キャンセル、キャンセル、キャンセル」するやつ*14

ささだ ああ、それ裏技じゃないじゃんべつに。

青木 え、裏技でしょ?

ささだ あ、そうか。ごめんなさい。そうかそうか。

青木 あれで魔法も鍛えられるから、それでがんばる。

ささだ なるほどね。私、一生懸命、ひらがなになるまでヒットポイント上げた*15。暇だったよねー。

青木 (笑)

ささだ チェンジで*16。ゴブリンと。

青木 あー、あれね。弱いやつと入れ替えるの。

青木 で、FF2 のあと FF3 かな。……順番ってどうだっけ? その辺でドラクエ 4 が来るんだっけ?

ささだ 私は後から適当にやったので、ちょっと分かんない。

青木 ドラクエ 4 だ。あれはファミコンだから。で、その次が FF4 だ。

ささだ スーファミの。

青木 そうそう。FF4、FF5 と来て。でも DQ5 はやんなかったんだよ。しばらく。

ささだ え、DQ5 やんなかったの?

青木 やらなかったんだよね。FF4、FF5、FF6 とやって、その辺でようやく DQ5 をやった。 何でやんなかったって言うと、DQ5 のモンスターが仲間に出来るって言うのがさ、 なんかメガテン (女神転生) っぽいじゃん*17

ささだ あー、メガテンはその頃やってなかったから知らない。

青木 そか。DQ がメガテンになっちゃったんならもういいや、と思って。

ささだ DQ、FF 以外は?

青木 ロマサガとか*18。スクウェア*19に魂を捧げておりました。

ささだ なるほどね。聖剣*20とか。

青木 聖剣もやった。聖剣は 1 がいいよね*21

ささだ いいですね。

青木 1 のリメイクは酷かったらしいけど。

ささだ 何で出たんだっけ?

青木 ゲームボーイアドバンス? 違う、ワンダースワンか。

陸上の話

ささだ で、高校で陸上部になって、スポーツ少年。

青木 そうね。陸上ばっかりやってた。

ささだ プログラミングなんか全然知らない?

青木 全然知らない。陸上ばっかりだったねぇ。そう、あの高校の陸上部もスパルタでさぁ。 夏休みの合宿とかがすごくてさ。 1 日目の午前は移動で、その午後にいきなり、1000、2000、3000、2000、1000 の全力走。

ささだ んー、それはあり得ないなぁ。

青木 次の日の午前が 600 インターバル 20 本。

ささだ 600 のインターバル自体、あり得ない気がするんだけど (笑)。 せめて 400 が 10 本とか、そんぐらいだったなぁ。

青木 400 の 10 本なんて、ぬるくない?

ささだ えー。でも 600 はなんかすごいね。

青木 すごかったよ。その先生自身もかなりすごい選手でさ。 箱根駅伝で優勝したとか。で、めちゃめちゃ鍛えられたわけ。

ささだ なるほど。

青木 ……なんでそういう人ばっかなんだろうね (笑)。鍛えたがる人ばっかり。

ささだ それで陸上をやりに大学行ったわけじゃないんですよね。

青木 という訳ではないです。陸上はめちゃ弱かったので。

大学での話

ささだ で、大学に普通に入って。

青木 普通に入って。で、プログラミング。

ささだ プログラミングに傾倒しだして。

青木 まぁ、それいらい、色々ありました (笑)

ささだ で、大学の哲学を。最初から哲学に入ったの? どういう入り方したの?

青木 それは色々変わってるんだよね。 俺が入った学部は社会学部って言って、色々ある学部だから、中に入っても色々変えられるんだよ。 学科とかの縛りもすごいゆるいから、取る講義次第で何でもできる感じ。 それで最初は政治がやりたかったんだけど、そのうち国際社会学がやりたくなって、 次に社会学になって、歴史になって、思想史になって、ちょっと社会心理学に浮気しつつ、 最後に哲学に行きついた。

ささだ それを 4 年間ぐらいで変遷してって。

青木 そう。

ささだ 長いな (笑)。ころころ変わるもん……でも、根底は結構近いところはある。

青木 そうだね。今思えば、政治学でもアレント*22みたいに半分思想に足つっこんでる人もいるし、ハーバーマス*23なんかもそうだし。

ささだ 大学ではたくさん本を読んだの?

青木 うーん、まぁ比較的。

ささだ 授業でそういう本をたくさん?

青木 紹介はされたけど、最初のうちはあんまり読んでなかったと思う。 不真面目でした。何しろ、プログラミングばっかりやってた。

ささだ (笑)。書籍はたくさん買ってるよね、プログラミングの。

青木 買ってるね。100 万くらい使ったかなあ。

ささだ なるほど。

本の話

ささだ で、著作業みたいなことを始めて。

青木 あれも成り行きだよねー。

ささだ 成り行き?

青木 だって最初はあれだよ。いきなりメールをもらって。

ささだ あ、そうか。「書きませんか」だよね。 で、書きます、と。全然書く気は無かったの? 最初、言われるまでは。

青木 言われるまでは、ほんとに何も考えてなかった。

ささだ なるほど。で、書いたらいけるじゃんと。

青木 うん。

ささだ なるほどね。 本書けるってのは何かやったの? 書けるってのは、能力的な意味で。 文章を書く訓練みたいなことはやってなかった?

青木 やってない。

ささだ 初めて? ああいう長い文章を書くのは。

青木 だね。ただ、思い当たることがないでもない。 小学校の 6 年生で「生い立ちの記」ってのを書かされたのね。 それは自分のそれまでの生涯の自分史を書くんだよ。

ささだ 6 年生で?

青木 うん。原稿用紙 100 枚が標準。

ささだ あり得ない (笑)。原稿用紙 100 枚?

青木 うん。4 万字。 まあ俺は文章書くのがめちゃくちゃ苦手だったから 70 枚強だったけど、それ書かされた。

ささだ それ、今日日の卒論より長いんじゃない?

青木 そう思う。……そういうのがあったし、 小学校のときは事あるごとに文章を書かされたんだよ。 なんか事あるごとに、レポートを書けー、新聞を書けー、○○についてまとめろー、 っていう課題があった。そういうのの影響も、もしかしたらあるのかもしれない。 実は自分では全然そんな気はしないんだけど。

ささだ じゃ、この人の本が良いから読んでいって、 そういうのに影響うけて文章書けるようになったとか、そういう話はないの?

青木 そういうのはない。全然。むしろ文章を書くのは嫌いだし苦手だった。

ささだ じゃ、オリジナル?

青木 そうだね。いざ本を書くっていう段になってから一冊だけ本田勝一の本を読んで、 それでちょっと良くなったかなと思ってる。

普段の仕事

ささだ 普段の仕事って何をしてるんですか?

青木 よく分かりません。

ささだ 今はどんな感じなんですか?

青木 普通に大学に行きつつ。

ささだ で、家に帰って執筆と。

青木 執筆。……最近執筆してないけど。

ささだ してないの?

青木 リファレンスマニュアルのあればっかりやってる。 つい、いい逃避活動があるとねぇ。やっちゃうんだよねぇ。 リファレンスマニュアルを書くだけじゃなくて、システム (BitClust) もいじれるじゃん。 あれが楽しくてさ。逃避活動にはもってこいだよ。

ささだ (笑)。分かる分かる。これからの著作について、飛ばしてったんだけど。 ふつうのコンパイラと、るびまの添削本を、3 月?

青木 3 月に出せるといいねえ。

ささだ コンパイラの宣伝しとく?

青木 いや、そっちは止めておいた方が。

ささだ しない?

青木 うん。書けるかどうか、正直ほんっとに分かんない。

ささだ るびま添削本は、「Rubyist Magazine 添削記事をまとめた非常に良い本ですので……」

青木 買ってくださいと (笑)。書き下ろしもちょっと入るし。 ……そういえば、るびま今月号の添削記事はどうしたらいいんだろう。

ささだ 11 月かな。

青木 うん。あった方が、るびま的にも助かるよね。

ささだ でも、依頼が無いんだよね。

青木 そうなんだよね。誰か応募してください。

ささだ 俺の書いたやつ……全部書き直しだよな (笑)。とりあえず括弧。

青木 なんか適当なのを誰か投稿してくれると良い。

ささだ ですね。ここでお願いしてもしょうがないんだよな。

青木 日記で書けば良いのか*24。あの日記だとラインナップが激しく偏りそうだけど。

ささだ インタプリタとか (笑)

青木 うわー、ありそうー。

ささだ 普通の。

青木 普通のプログラム送ってください。

仕事とプライベートの両立

ささだ 仕事とプライベートの両立は?

青木 学生にそんなこと聞かれても。

ささだ 執筆業は?

青木 んー、あれは仕事か。でも、両立できてないので、聞かないでください。

ささだ (笑)

普段家ですること

ささだ 普段家では何をしてるんですか。プログラミング以外。

青木 プログラミング以外で? 執筆も除いて?

ささだ あ、執筆。

青木 執筆。と、ゲームとか?

ささだ ゲーム、最近何してるの?

青木 あー、最近は FF5 とか。

ささだ FF5? あのアドバンスのやつ?

青木 いやいや、スーファミ。オリジナル。

ささだ あー。FF12 とかやんないの?

青木 欲しいけど、プレステ 2 持ってない。

ささだ はー。いや 12 ね、良いっすよ。

青木 面白い?

ささだ いや、なんか新鮮で。FF11 オフラインみたいな。 一々エンカウントで変わんないというのが新鮮。私はあんまりやったことが無かったので。

青木 そうかあ。やってみたいとは思ってるんだけどね。

ささだ ただ、(音楽が) 植松さんじゃ無かったので。

青木 あ、そうなの? それは許せない。

ささだ 許せない。まぁでも、楽な気持ちで。

青木 でもそれだとなんか先にロマサガ 1 のリメイクをやりたくなってきたなぁ。

ささだ あ、そういうのあるんだ。

青木 あるんだよ。ロマンシングサガ・ミンストレルソング。あれはオリジナルの人がやってるから。

ささだ 伊藤さんだっけ?

青木 そう、イトケンサウンド、いいですよ。

ささだ いいですね、彼も。

映画とか

ささだ 映画とか観ないの?

青木 こないだ「時かけ」 (時をかける少女) を観た。

ささだ あー。

青木 それだけ。それは 5 年ぶりぐらいに観ました。映画を。

ささだ なんでまた?

青木 なんか、ウェブニュース見てると、イイ、イイって人がいっぱいいるから。

ささだ 多いよね。

青木 まぁ、観とこうかなって。

ささだ なるほど。

音楽とか

ささだ 音楽。

青木 音楽はあまり聴かないかなあ。

ささだ 何か作業中に音楽は聴かない?

青木 作業中は、クラシックとかゲームの BGM をかけたりとか。

ささだ そうですか。

青木 あれって BGM だからさ、便利なんだよね聞き流すには。

ささだ (笑)

スポーツ

ささだ スポーツ。走ってもいない?

青木 走ってない。ごく稀に走ったり泳いだり。

ささだ あ、するんだ。もうね、全然しないからさ。ちゃんとしてるのは偉いですね。

青木 いや、ちゃんとはしてないよ。いやーほんとにね、走りたいんだけどね。 やっぱ時間食うからさ。昔は 2 時間、3 時間平気で走ってたけんだけどなあ。

ささだ あー、変態だ。

青木 (笑)。今はそれはちょっと。

ささだ 使ってるマシンのスペックとか……は、さっきたくさん話したからもういいよね。

青木 そうね。

好きな女性のタイプ

ささだ 好きな女性のタイプは。

青木 えー、じゃぁとりあえずは松たか子と答えておく。

ささだ 松たか子。きちんと好みのタイプを言う人、初めてじゃない?

青木 ねぇ! 何でみんなちゃんと答えないんだよ!

ささだ (笑)

青木 みんな卑劣だよ。

ささだ そういうのがパッと出てくるのがすごいね。

青木 時々訊かれるからさ、定番を用意してあるんだよ。

ささだ あー、なるほど。みんな言うんだったら良いんだろうみたいな。 なんかこう、芸能人とかの名前も分かんないし。顔も分かんないから言いようが無いんだよね。

青木 適当に作っておけばいいじゃん、そんなの。

今後

将来の展望

ささだ 今後の展望、将来の夢。

青木 えー、行き当たりばったりです。

ささだ 行き当たりばったり?

青木 行き当たりばったり人生。

ささだ (笑)

前のインタビュイーとの関係

ささだ 前のインタビューイ (essa さん) との関係は。

青木 何だろう。RubyKaigi のときに初めて会って、 アレントの話をしました。それぐらい。

ささだ あー、哲学の人。

青木 ちょっと意外だ。essa さんから来るのは珍しい。

ささだ うん。

次のインタビュイー

ささだ 次、誰にしようか?

青木 次ね。難しいね。主だった人はそろそろ出尽くしてるよね。

ささだ うーん。

青木 コミッターだと誰がいたかな。あ、立石さんとかどう? 俺が一番最初にパクった人でもあるし。

ささだ なるほど。なんか、最近あれですね。編集者が増えてきている。そろそろそういう時期なのか。

ささだ 次のインタビューイへの質問はなんかある?

青木 Ruby 関係とかだと定番の質問にすでにあるしなぁ。 うーん……。「そういえば dl2 はどうなってるんですか」

ささだ (笑)

その他の雑多な質問

ささだ 「たくさんあるマシンはそれぞれどの頻度で使っているか」。 これはこの間の DECon で言ってたから飛ばす?

青木 まあいちおう一言で。一番良く使うのは、でかいの。AlphaServer DS20E。

ささだ え、メインマシンじゃなくて?

青木 ああ、もちろん一番使うのはメインマシンです。 ていうか、一番使うマシンをメインマシンと言うのでは。

ささだ メインマシン以外でってことね。

青木 これはそういう話じゃないの?

ささだ いや、分かんない。何が言いたいんだろう。まあいいや。

ささだ 「一番起動頻度が低いのは」。

青木 低いの?

ささだ まぁ、起動してないってのも言ってたよね、さっき。

青木 うん。一度も起動してないのもいくつかある。ゴミみたいなやつ。

ささだ 「本はどれくらい売れてますか」。さっきあったけど。

青木 どれくらいといわれてもなー。具体的には言えないので、 一番売れた「ふつりな」は中ヒットぐらい行きましたとだけ言っておこうかな。

椅子の話

ささだ 「なぜアーロンではなくコンテッサなのか」。

青木 色です。

ささだ えー!

青木 色だよ。

ささだ アーロンチェアーにオレンジ無かったっけ?

青木 いや、俺のコンテッサは緑だもの。

ささだ 緑は (アーロンに) 無かったっけ?

青木 無いと思うよ。

ささだ じゃ、色があったらアーロンでよかったの?

青木 うん。

ささだ えー。

青木 それに、ハンズで買おうと思ったときにはアーロンがなくて、コンテッサしかなかった。

ささだ ヘッドレストとかじゃないの?

青木 それもあるけど、やっぱ色。

ささだ あとさ、肘当てをガチャガチャやるのがかっこいいじゃん。

青木 それもあるけど、やはり色。

ささだ 色なんだ。一番は色なんだ。

青木 かっこよければ良いんだよ!

ささだ えー。アーロンは古いって感じ? かなり前からあるよね、あれ。

青木 そうだね。あと、アーロンって言うと、 『ONE PIECE』っていう漫画にアーロンっていう敵キャラがいるんだけどさ。魚人の。

ささだ あー、はいはい。

青木 あれを思い出してしまうので。

ささだ (笑)。それはどうなのさ。……分かりました。

青木 コンテッサは名前もかっこいいしさ。かっこよければいいんだよ。

若手に一言

ささだ 若手に一言。

青木 えー。根性入れろ。

ささだ 自分もスパルタじゃない (笑)

青木 そだね (笑)

読者に一言

ささだ 読者に一言。

青木 えー。知らん。それぞれ好きにやればいいじゃん。

ささだ (笑)

青木 知らないよ、そんなもの! だって色々な人がいるしさ。一概には言えないよ。

ささだ 媚びておいたほうが良いんじゃないの?

青木 本買ってくださいとか? 別にいいよ。

ささだ いいんだ (笑)。分かりました。

青木 ツンデレだから。

ささだ デレ期があるんだ (笑)

他に特にない? たくさんしゃべったからいい?

青木 うん。けっこう長くしゃべったし。まあいいんじゃないでしょうか。

ささだ どうも長々とありがとうございました。

青木 お疲れ様でした。

おわりに

今回は賞味期限と Alpha をこよなく愛する青木さんにお話を伺いました。お忙しい中、本当にありがとうございました。次回はいろんな Ruby ライブラリを開発している立石さんにお話を伺います。お楽しみに。

(インタビュー:ささだ、編集:いむら、むらまさ、ささだ、青木)

Rubyist Hotlinks 連載一覧


*1 「後で」とは、インタビューの後に行われたリファレンスマニュアル検討会のこと。

*2 Radium Software Developemnet: Multitasking is inefficient のことのようです

*3 日本語プログラミング言語。詳しくは前号の記事 Rubyist のための他言語探訪 【第 9 回】 日本語プログラミング言語「なでしこ」を参照。

*4 最近、そうじゃなくなりました。

*5 Ruby 1.9 にはこの機能が標準で入っている。

*6 青木さんによる解説記事:CodeZine:Rubyで簡易POP3サーバを作る(Ruby, サーバ, メール, POP3, UNIX)

*7 ロンダルキアの洞窟:ドラクエ 2 のラスト一歩前のダンジョン。えらく長くて複雑。

*8 デンゴンダルの西の海にある浅瀬で、「月のかけら」を使うと表れる海底洞窟。ここで邪神の像を手に入れることができる。

*9 FF2:Final Fantasy シリーズの 2 作目。キャラクターがレベルでなく熟練度により成長するのが特徴。

*10 ブラッドソード:攻撃対象の最大HPに対する割合でダメージ量が決まる武器。強い敵でも弱い敵でも同じ攻撃回数で倒せてしまう。

*11 エリクシャー:ヒットポイントとマジックポイントを完全回復するアイテム。のちの FF で言うところの「エリクサー」。

*12 アルテマ:FF2 の最強魔法、ということになっているが使えなさすぎて泣ける。

*13 アルテマをがんばって取りに:FF2 の物語後半は大部分がアルテマ争奪戦である。

*14 FF2 の裏技:FF2 では「たたかう」を入力した回数で武器や魔法のレベルが上がるが、キャンセルしても (実際に使わなくても) カウントされるため、これを利用してレベルをガンガン上げるという裏技がある。

*15 ひらがなになるまで:FF2 では最大ヒットポイントが 9999 を越えると上一桁がひらがなになり「あ005」のように表示される。

*16 チェンジ:魔法をかけた相手と自分の HP/MP を入れ替える魔法。弱い敵にチェンジを使うと効率よく自分の HP/MP を減らすことができて、結果として最大 HP/MP を鍛えられる。

*17 メガテンっぽい:女神転生は敵の悪魔を「仲魔」にできるのが特徴。

*18 ロマサガ:ロマンシングサガのこと。成長システムとストーリーの両面で自由度が高い。「殺してでもうばいとる」というセリフが有名。

*19 スクウェア:FF とかロマサガとか聖剣伝説を発売していた会社。現スクウェアエニックス。

*20 聖剣:「聖剣伝説」のこと。

*21 聖剣は 1 がいいよね:ゲームボーイで発売された初代聖剣伝説のこと。

*22 アレント:政治学の偉い人。

*23 ハーバーマス:社会学の偉い人。

*24 応募してくれてありがとうございました。