刊行記念:artonさんインタビュー 第1回
『Ruby環境構築講座 Windows編』の刊行を記念して、著者であるartonさんにお話をうかがいました。
(2010年10月22日、聞き手:高橋征義)
Ruby、そしてWindowsとの関わり
── artonさんは著者としてはRuby界では『256本邪道編』から始まりRailsの本や 『Ruby(1)~(3)』などでよく知られていますが、同時に『Javaの処方箋』や .Net本なども書かれて、多様なお仕事をされていると思います。まずは、 artonさんご自身の、Rubyの、そしてWindowsとの関わりについて教えてください。
arton: ちょうど2000年くらいかな。 それまでもそうだったんだけど、 Windowsのネットワークのアプリケーションをいろいろ作っていて。 そうするとテストをしないといけない。
Windowsのその時点の標準のツールというのは、VB6とかVC++6とかその辺だから、 正規表現が使える、というのがまずそこにない。 JSは正規表現が使えるけれど、ソケットが自由に叩けるわけでもない。 ……というところから、そろそろ何かスクリプト言語をやっていないと、 とてもじゃないけどテスト用のプログラムとか大変だよね。
というところになってきたところに、たままたRubyを知ったんで。 正規表現も使えます、スクリプト言語で軽くて、TCPのソケットもあれば、クライアントもサーバも両方とも作れて。 さらにWin32OLEもあったので、COMも叩けると。 これが全部そろってるんだから言うことないね、ということで使い始めた。
で、使うようになると、すぐにその「逆」が欲しくなって。Win32OLEの逆、 つまりWindowsアプリケーション側からスクリプトエンジンの方に介入する方法。
ちょうど、ActiveScriptというインターフェースがあるから、 それをWin32OLEの逆向きの方向で実装してやると、 簡単に使えるようになる。そこら辺がはじまり。
……Windows自体についてはそれより遥かに前の話になる。会社に入ったときはまずメインフレームだった。 メインフレームの時代のクライアントのPCというのは MS-DOSマシンだった。 それはね、開発部隊が作るものではなくて、 営業さんが外部に発注したり、人によっては自分自身でBASICとかで作ってくるような世界。 それでは管理できないよね、という話が会社で持ち上がってきた頃と、 Windows3.0が出てきた頃と、 それから会社の方針でメインフレームからそろそろインテルにシフトした方がいいんじゃないかという話が 持ち上がってきた頃とか、すごいからみ合ったのが、1989年から1990年ごろ。
その過程で私が技術選択を任されて、 クライアントプログラムを開発する必要が出てきた。 そこで、DOSでやる、AXでやるっていう選択肢が出てきたんだけど、 その頃たまたまAmigaを使っていて、Windows Systemというものはいいものだ、というのは分かっていた。
その頃のマイクロソフトはWindows 2.0で、使いものにならないのも分かっていたわけ。 ところが、親会社の方が試作品で作ったインテルマシンがあって、そこでアメリカ版のWindows3.0が動いていた。 それがなぜか知らないけど、メインフレームのモニター用に置いてあった。 で、ひまなときそれをいじくって、ソリティアとかやると、Amigaより早いわけ。 こうやって動くんだから、Windows3.0ってやつを使えばラクに違いないと。 そう眼を着けているときに、 MS Windows日本語版の3.0が出たんだな。
その3.0が、AX用とIBM用とPC9801用の3種類。 少し遅れてMS版が出てきた。それぞれいいところと悪いところがあって、 MS版というのはマイクロソフトのDOS/Vで動くというのがメリット。IBMが関係ない。 IBM版は非常に出来が良かったらしいんだけど、IBMだったのが会社的にはデメリット。 AX版は、会社はもともとAXマシンを使うくらいだから良かったんだけど、640x400だった(注1)。PC9801はハードウェアとして選択枝になかった。
注1: IBMとMSはどちらもDOS/VつまりVGAなので640×480。解像度が増える方向へ変わったのは良かった。(arton)
最初しょうがないからAXで作ってたんだけど、AXが途中でなくなっちゃったもんで、 そのままマイクロソフトのWindowsだねと。そしたらバイナリがそのまま動くんでみんなびっくりした。 これまでそんなことはなかった。
そういうのがあって、まず非常にWindowsのありがたみがあった。AXで書いたものがそのまま動いた。 それまでDOSっていうのは、何かまともなようなことをしようとしたら、 各ハードウェアの提供しているDOS用に作っていかなければならない。 なぜならば、絵を書くならVRAMっていうハードウェアを直接叩くのが当たり前だった。 それがMS-Windowsを使うことによって、AXで作ったものがそのままMSのWindowsで動く。 さらにだれか自分のIBMマシン持ってる人やPC9801のノートを持ってる人がそこでデバッグできないか、ってやると、ぜんぜん動く。 なんてWindowsというものはいいもんだろう(笑)。
今となってはプロプライエタリの鬼のように言われているマイクロソフトだけど、 1990年においては、ガラパゴスでの救世主のような存在だった。 そういうわけで、これが私のマイクロソフトとの付き合いの原点にあるから、 マイクロソフトには非常にいいイメージがある。
これが「オープンシステム」というもんだと。オープンソースじゃなくてね。
POSIXというか、SUNのワークステーションを、どうでもいいクライアントマシンに使うことはありえないわけだから。 値段的に。 そこにいくと、WindowsがのっかったPCというものは、AXだろうがIBM純正のMCAマシン(注2)だろうが、 あとはその辺のPC-ATでもなんでも動く。こんないいことはない。
注2: マイクロチャネルアーキテクチャ。IBMがAT互換機封じに持ち出したPCの規格。(arton)
さらに、たぶん会社的にも、Windowsを選んだおかげで、 AXなくなってもそのまま作ったもんが動いて、というのがあったから、 いい技術選択をしたな、というのがあったんだと思う。
というわけで、その後結構Windowsでの開発というのが多くなってきて、 そこでいろいろやっていた。そうすると当然のように山ほど嫌なものが、 16ビットの時代からあったわけ。アンドキュメンテッドなものとか。 そうすると否応なくバッドノウハウがたまりにたまってくるわけで。 バッドノウハウがたまりにたまるということは、そのエキスパートになっちゃうわけじゃないですか。 望むと望まないとかかわらず。 32ビットのWindows NTが出てきた時も、そのままの流れで開発には入ってて。 それと同時にUnixの方もやってんだけど、軸足はWindowsの方をやってると。
それでずっとやってて、2000年の直前まで来て。さすがにそのころになると、 Windowsというかマイクロソフト純正のツールにはうんざりしてたんだろうなあ、きっと。 たぶんそれより3年前だったら、正規表現のエンジンをどこかから持ってきて、 それをCOMのコンポーネントにまとめてやって、 クライアントとサーバも自分で、まあそんなの実は自分で持ってたんだけど、 OCX作ってやって、それをVBscriptか何かからつないでやってたかもしれない。 けど、もう他のものを持ってきてもいいんじゃないかということになって、 そこでちょうどRubyと出会ったと。それからの付き合い始め。
Windowsプラットフォームの魅力
── artonさんから見て、Windowsプラットフォームの魅力はどの辺りにあるの でしょうか。
arton: Windowsの魅力っていうのはなんだろう……。 いいイメージが私にとってはあるっていうのは当然のこととして、 やっぱり「どこにでも転がっている」ってその一点にある。
どこに行っても転がっているのがWindowsで、 そこに早い話がUSBメモリを挿し込めば、 少なくともRubyのプログラムは動くじゃない。メモ帳一つあれば。
Rubyって結局、binさえパスが通っていれば あとはlibとか勝手に見てくれるようになっているから。Windows版は。 それだけで動く。
どこにでもある、安く手に入る。 あとはやっぱり、人によるだろうけど、私は使いやすいと思うんだな。
私は自分の環境としてOS Xも使えるし、 Linuxマシンがartonx.orgとして動いているし。 でもどれを一番いじくってるかっていうと、Windowsマシンなんだよな。 たとえば、gitやるときはしょうがないからlinuxでgitやって、 そこでとってきたやつをWindowsマシンの方からマウントして、 実行は全部Windowsでやってるし。
何でWindowsが使いやすいかというと、やっぱりレスポンスが早いからだろうなあ。 マシンをフルに使っている。いや、本当はIOは遅いはずなんだけど、でも、グラフィックの速度がぜんぜん違う。
Windowsって余分なこといっぱいしまくってるから、オーバーヘッドはものすごいんで、 Disk IO自身は遅いはず。ただ、グラフィックに関しては、グラフィックボードベンダーが バカみたいに最適化するのはどこのプラットフォームかって言ったらWindowsじゃん。やっぱ速いよ。
それが速いと、それこそEmacsのスクロール一つとったって早いじゃない。 だいたいXがばかみたいな構造(注3)で、レイヤーがいっぱいあるから遅くて当然で、 さらにグラフィックボードのドライバも最低限の機能しか提供していないから、 これで高速な動作なんて期待するのが無理だ。 OS Xマシンの方は所詮ノートパソコンしか買ってないから(笑) Macbook AirとDELLのワークステーションを比べるのはフェアじゃないけど。
注3: 語弊がある言い方。論理的にはきれいな構造。(arton)
あとなんだろうかな、やっぱり使いやすさかな。 OS Xは使いやすいかというと、僕は最低に使いにくいと思っているな。 いや、そりゃターミナルさえ開いちゃえば、コンソールを比べたらOS Xの方がぜんぜん上だよ。比較にならない(笑) そりゃCMD.EXEとbashじゃ比較するのも失礼だよ。三輪車と自動車比べてるようなものだから。
たとえばiTunesにしたってSafariにしたって、なんだろうなあ、 なんでこんなに使いにくいんだろう、OS Xって。 やっぱりこのメニューの馬鹿げた、メニューバーがすごい使いにくいなあ。
それから、ショートカットキーが中途半端にEmacsだっていうのも、すごい使いにくい(笑) 使えるかと思ったら、とんでもないことしたり。 Windowsはその点、一切期待を持たせてくれないから。
あとはなんだろう……全体に使いにくいんだよな、OS Xは。 いや、使いにくいというのは嘘で、というかEmacsが入っちゃうと同じようなものだし(笑) ターミナルの方はこっちの方が圧倒的に使いやすいし、 Windowsでコマンドラインでgitしますかと言われれば、やなこったと思うけど。
iTunesだってWindows版の方が使いやすいしなあ。 やっぱり、1990年から、Windows3.0の頃から言えば、もう20年も使ってるんだからね。 これは一朝一夕に慣れた世界からは別れられない(注4)。
注4: ではなぜMacも使うかと言えば、一言で言うとヒラギノフォント。最初にSafariを通してWebを見たときの衝撃はすごかった。それまで見ていた世界はなんだったんだ、というほどのショックを受けた。(arton)
しかも、にもかかわらずWindowsがすごいと僕が思っているのは、 ぜんぜん違うリボンインターフェースを持ってきても、 一週間ほどぶつぶつ文句言ったら、あっと言う間にすごい使いやすくなる。 もうリボン抜きじゃOffice触れないね。 ノートパソコンで使うもんじゃないけど(笑)
20年間たって、16ビットから32、64になって、あんま変わってないところがある反面、 変わるところはばかばかばかばか変わってるんだけど、 悪くなったっていう風に思ったことが、Vistaのコピー以外はないな(注5)。 あとはOffice 2007のIME。あれは最悪だった。IMEは今でも最悪だ(笑) Windows7のIMEもろくでもない。
注5: 忘れてたけど、XPのデフォルトの青は最低だと思う。あの青のせいでXPは嫌い。(arton)
ただ、ことえりは使いものにならないけどIMEは使えるからね。 ことえりは問題外じゃん。ことえりに比べればAnthyの方がまだましだ。
結局OS Xの場合はATOK入れてるし、ATOK入れてやっとIME並かな、と。 僕にはそう思える。 僕はIMEってわりと馬鹿だ馬鹿だと思っているけど、にもかかわらずわりと使いやすい。
もともと単漢字変換にきわめて近い変換をするからね。 DOS時代に私が使ってた「風」っていう多段シフトのものがあって、 もともと連文節変換みたいなのに頼らない指になっている。
だから2007の時のIMEはどんどん壊れていったわけだし。そういう使い方したら駄目らしいから。
Windowsは好きだなあ。変わり方がきれいだよね。
適当にいい感じでちょこちょこ変わってくれるし。 その変わり方が、ピンポイントでとんでもないやつはあるんだけど、 全体としてはたとえばVistaのUIにしても、すごい好きだし。
Vistaはなんて使いやすいんだと思ったよ、コピー以外は(笑) で、Windows7になっても、圧倒的に使いやすい。
あと、それほどさいわい貧乏じゃないから、 新しいOSにして、不満に思ったらマシン買い換える程度にお金があるから。 そういうのは一つ有るかもしれない。 Windows95の時に買ったマシンを今でもつかってて、 Windows7動かないっていったら そりゃそうだろうなあと思うけど 幸いそうじゃないからね あ、でもWindows MEは別ね。 今まで苦労したことないのは、それは私は最初からNT系列でやってるから。
企画、そして執筆までの理由
── この原稿は、RubyKaigi2010で開催された「野良ビルダー養成講座」企画の テキスト用として執筆していただいたわけですが、そのような企画を行おうと思った、 そしてテキストを書こうと思ったのはどのような動機からだったのでしょうか。
arton:
usaさんがWin32のサポートやめようとしてるっていうのは全く知らなかったんだけど、 usaさん独りでやるのはそろそろ辛そうだなあというのは傍で見てて思った。
もちろんなかださんとかもやってくれてるんだけど、基本的なところはみんなusaさんにかぶってるしね。 で、Windowsのまずいのは、それはWindowsのすごいところでもあるんだけど、 あらゆる組み合わせで動くようになってるもんで、 たとえば遅い遅いという話が出たとして、ぼくやusaさんではそんな症状はぜんぜん出ないのに、 誰かのところじゃ実際にそういう症状が起こるっていうわけのわかんないのが、やっぱりなんだかんだである。
結局、問題があって文句垂れるやつが100人いて、100人とも文句垂れてるよりは、 こういう企画をやれば、 そのうち10人は何が問題かって自力で調べてくれるかも知れない。要するにサンプルが2/100では発生しないかもしれないけど、 10/100では再現するかもしれないじゃない。Rubyを使っているってことは開発者なんだから、とっかかりがあれば、自分でどうにかしようとする可能性が高いよね。でもブラックボックスのユーザーはそんなこと最初から考えない。ブラックボックスなんだから。というわけで、ああいう企画でブラックボックスに隙間を開けるくらいのことはできるかなぁと。
ということはどういうことかっていうと、 usaさんも私もいい年だから(笑)、 若い人をWindowsの世界に呼ばないといかんなあと。 そういう、まあ、義務感じゃないけど、 なんとなく、Rubyにお世話になってるから。 私がRubyのためにできる、要するにディストリビューションを作る以外に、 人間のディストリビューションも手伝おうか、 っていうようなのが一つある。
(「artonさんインタビュー第2回」に続く)