プログラマブル環境

で、上の話を考えてたら、ふと思ったFirefoxとかの拡張の話。


FirefoxEmacsの共通点は、それぞれ、ブラウザ、エディタの皮をかぶってはいるものの、実際はUIエンジンとインタプリタだけがコアにあって、他の機能は、その上で動くアプリケーションの機能として実現されている、という点だ。Eclipseなんかもそうだろう。
で、こうすることの利点は、拡張性が異様に高い、ということだ。その気になれば、Firefoxの上で動くnesエミュレータ、みたいなことだって可能だろう。多分。


で、そこらへんまでは、よくある話。
だが、気分的には、Emacsのそれと、FirefoxEclipseのそれとは、別物だと思う。
Emacsのなんか機能に不満があったら、ちょろちょろっとなんとかしようとする、もしくは、無理っぽくてもソース読むくらいはするだろうが、上でも書いたとおり、Firefoxの場合は不満があっても、わざわざ拡張書いてまでなんとかしよう、という気にはならないのである。
これは僕だけではないだろうと思う。Emacs使ったことがある人のうち、elisp書いたことある人は相当な数になるだろうけど、Firefox使ってる人のうちでXUL書く人や、Eclipse使ってる人のうちでプラグイン書いたことある人っていうのは、そんなにいないだろう。


そんなことを考えてると、「やっぱり、拡張の手軽さっていうのは重要ではないか!!」とか、ビビっと思ったんだけど、当たり前の結論だった。
が、しかし、それは当たり前の結論ではあるんだけど、その手軽さの構成要素である、「scratchバッファ(というか、lisp-interaction-mode)」、「いつでもドキュメント」「describe-functionで関数の定義表示」「Lispである」とか、そういう機能を当たり前に実装しているEmacsはやっぱり、「柔軟性だ」とか、そういうありきたりな精神で作ったんではなくて、単純にプログラマブルな環境とLisp愛する人が作ったんだなぁ…とか、そういうことを思った。だからどうした。


で、この話でいくと、Smalltalk最強説はどうなんだ、という話である。
拡張の手軽さが有利に働くのであれば、Smalltalk環境に勝るものはないはずなのであるが、それなりのユーザを獲得しているEmacsに対して、Smalltalkはちょっと届かない感じがするのである。
これはなんでなんだろうか。

  • Emacsがユーザを獲得していると思い込んでるのが間違い。
  • Lispなのがよかった
  • エディタなのがよかった

僕としては、「エディタなのがよかった」なんじゃないかなー。と思う。


Smalltalkは、「面白そうだと思って、起動してみたものの、そっからどうしたらいいかわからなくて、それっきり」と、いう人が結構多いと思う。(サンプル僕だけだが)
それを乗り越えて、Smalltalkを使い続けるには、「どうしたらいいかわからないけど、Smalltalkには未来があるから、使い続けなくては、布教しなくては。」とか、そんな感じで、自分を奮い立たせる必要があるだろう。多分。


それに対して、Emacsは何もわからなくてもとりあえずエディタとして使ってるわけで、まさか、その状態で、「どうしたらいいかわからない」なんていうことにはならないかと思う。
で、だらだら続けていくうちに、環境としてのEmacsの素晴らしさに目覚めて、Emacsをやめられない体になるかもしれないし、別に目覚めなくても、他にいいエディタが見つからないから、そのままだらだら使い続ける、ということもあるかもしれない。


そこらへんの違いが、Emacs-Smalltalkを分けた部分なのでは無いかなー。と思う。


だから、結論としては…なんだろうね。

とりあえず、
プログラマブルな環境っていうのはただ単にインタプリタが載ってるだけではだめで、「高い柔軟性を持ちつつ、けど、拡張するのは面倒でなくて、かつ、崇高な理想なんかなくてもだらだら使い続けられる」と、いうのが重要なのである
…って書くと、なんか、プログラマの性格を表してるっぽくて面白くない?とか、そんな話でオチ無し。