2007年6月17日日曜日

空気を読まずにRubyMicrosoft粗訳した

昨日書いた記事について、「サヌールがやらねば俺がやる」的な感じで(うそです。調子乗ってすんまっせん)おおざっぱに訳してみた。


(追記)マーティン・ファウラーの Bliki の日本語訳が更新された。訳文のおかしなところが直ったし、ハイパーリンクも追加されているのでそっちを参照のこと。


(更新:反応リンク集を末尾に追加)



RailsConf2007ではJRubyに大興奮だった。この小さなチームは瀕死のプロジェクトを引き受け、JVM上のRubyプラットフォームの一級実装に見えるように変えた。多くの賞賛を得たのは当然だ。



JRubyについてはまさにそんな感じとして、スポットライトはもう一つの共通マネージコード・ランタイム上に動く。.NETだ。Rubyについてのマイクロソフトの意図は今のところすごく不透明だ。彼らはSilverlightのスクリプティング言語としてRubyを発表した――でも未解決の問題が多く残っている。これってRuby言語をフル実装するのか、それともRuby++みたいなもの――Rubyサブセットの拡張――なのか?



JRubyの目的には、異なっているが相補的なものが2つある。1つはJVM用の強力なスクリプト言語であり、Javaアプリケーションに動的言語を織り込むことができる。2番目の目的はJVM上のRubyプラットホームの実装であり、Rubyアプリケーション、特にRuby on Railsアプリケーションを、MRI(Matz's Ruby Interpreter、現在のC版ランタイム)で動くのと同じようにJVM上で動かすことができる。



マイクロソフトの"Iron Ruby"に対する大きな疑問は、どのくらい互換性をもつことになるか?だ。CLR上にフル実装されるのか?私が受信した電波によれば、John Lam(Iron Rubyの中の人)は完全互換実装にするつもりらしい。でもこれは今の状況だとかなり困難なことかもしれない。もうじきThoughtWorkの中の人になるOla Bini(JRubyのコミッタ)は、MRIのソースコードを見ずにRubyランタイムを実装する方法を知るのはほぼ不可能だと推測している――しかしMicrosoftは、従業員がOSSのソースコードを見るだけでなくダウンロードすることにもおもいっきり制限をかけている。オープンソースコミュニティでは、多くのコミュニケーションがソースコードを通して行われる――このため、オープンソースコミュニティとの共同作業が非常に難しくなっている。



これに暗雲を投げかけているのはもちろん、マイクロソフトとオープンソース界との歴史的な難しい関係だ。過去においては、マイクロソフトはオープンソースコミュニティを中傷し脅す努力をしていた。近年、もろもろは改善されたけれど、マイクロソフトの奥の意図については本当に謎だ。特許による脅しを、マイクロソフトはオープンソースが死ぬまで戦おうとしていることの証明だと見ている人が多い。



他の多くの技術会社とは違い、マイクロソフトはオープンソース界と共存する方法を発見するのに苦労している。マイクロソフトにとっては難しいことなのだ――SunやAppleやIBMとは違い、彼らは圧倒的にソフトウェア会社だから。LinuxやGNUやOpen Officeのようなオープンソースプロジェクトは、マイクロソフトの重要事業ともろに競合する。しかし私は、オープンソースに宣戦布告し、それを根絶しにしようすることが、長期的に現実的な解決案だと感じたことはない。オープンソースは定着している。問題はどのように対応するべきかということだ。



Rubyでは、マイクロソフトの立ち位置は明白なデスマッチとは違う。Rubyはマイクロソフト製品群の中心的な収益発生源とは競合しない。それ以上に、Rubyコミュニティはマイクロソフトと協力したいと本当に願っている。私がRailsConfで話した人たちの大部分は、マイクロソフトがRubyを全面的に支援するのをとても見たがっていた――そして、どうすればそれを実現させるような提案を持ち込むことができるかについての創造的な意見がたくさん出回っていた。コミュニティで聞いた意見は圧倒的に、「Rubyは邪悪なマイクロソフトを倒す」ではなく「どうすれば問題を解決してマイクロソフトのRubyを得ることができるのだろうか」だった。



Chris Sellsが指摘したように、「マイクロソフトは何を狙っているのか」という疑問を考慮しないといけない。理由は2つほど思いつく。1つめは、データセンター内での.NETやWindowsの役割だ。もしマイクロソフトがRubyプラットフォームをサポートしなければ、Ruby on Railsが成功したときにサーバーファームにおいて.NET(およびWindows)から人々が去ってしまうリスクを冒すことになる。



もう1つの理由は人だ。マイクロソフトは公式に認めたくないだろうが、アルファギークがマイクロソフトプラットフォームから去りつつあるというのが本当に懸念されている。マイクロソフトのビジョンは指揮管理組織における死の軍隊だという意見が増えている。優秀なエンタープライズ開発者に可能性を与えるツールや、アジャイル開発プロセスに対するあからさまな支障がたびたび見られる。



数年前、レドモンドの(ちょっとした)つては、技術リーダーたちがWindowsプラットフォームから実際に離れていっているのを見ていると言っていた。最近この兆候は増加しているようだ。私のブログロールの「お人よし部分」を読んで、長い間マイクロソフトのサポーターだった人たちの間に実際に幻滅があるという感じを受けた。アジャイル指向の開発者たちはマイクロソフトツールの方向性に不満を持っている。アジャイルプロセスにはほとんど触れず、ウォーターフォールアプローチにかなり傾いているマイクロソフトのカンファレンス。ツールは、役割の分離が厳密なため、アジャイラーたちが好むぼんやりとした境界を積極的に阻止している。



Tim BrayはRailsConfで、技術についての鍵となる決定はプログラミングコミュニティによってなされると主張した。部分的に同意する。余計で重いソフトがIT界に多すぎる理由は、ITの購買は、ソフトウェア開発の現実との大きな接点をなくした人々によってゴルフコース上で決定されるのが普通だからだ。短期的にはゴルフコースでの決定が支配するかもしれないが、時間が過ぎれば、Timの主張が正しいと思う。だからアルファギークを失っても今年や来年には影響しないかもしれないが、時間とともに容赦なくマイクロソフトに危害をもたらすだろう。



実はマイクロソフトにとってはすでに「来年」が過ぎている。私たちは、マイクロソフトなプロジェクトの顧客、特にアメリカの顧客から、関心が目だって減少していくのを見た。オーストラリアでは、.NETは顧客の地盤をまったく得られなかった。このデータから何を受け取ればいいのかはよく分からない。私たちは統計学的に有効なサンプルになるほど大きくはない。でもそうは言っても、私たちの顧客は「アルファITショップ」だと考えているから、部分的には役に立つデータ点だ。



たぶんもっと重要なのはThoughtWorksの中の話だ。.NETが登場したときは多くの関心が注がれた。たくさんの人がJavaプラットフォームに強力な競争相手が現れたことを歓迎し、.NETのプロジェクトに参画したがった。しかし去年あたりは.NETからの大転換があった。レドモンドから出てくるものには本当に面白いものもあるという事実にもかかわらずだ。Mike TwoはWindows Workflowツールにすごく熱心だし、私はLINQや他の言語進化にとても感心した。でもマイクロソフト技術の全体図にはあくびが出る。これが重要なのは、Tim O'Reillyが信じるように、アルファギークたちは他の人たちが数年間やるであろうことを指し示すからだ。そして決定的な点は、マイクロソフトに対する態度が憎悪(多くのギークで一般的な態度)ではなく退屈であるということだ。これが、Paul Grahamが「マイクロソフトは死んだ、もはや危険ではないから」と言ったことの意味だ。



オープンソースに対する態度こそがこの問題の大部分だ。Javaが現れたとき、そのポートフォリオには大きな隙間があったし、さらに悪いことにはAPIにはひどい標準ツールがあった(Entity Beansのビジョンが思い浮かぶ)。これらの隙間やひどいアイディアはオープンソースコミュニティが修正した。Antがビルドツールを与え、EJBはSpringとHibernateで置き換えられた。.NETにもギャップはあって、再びオープンソースコミュニティがギャップを埋めるために力を注いだ。ところがマイクロソフトはこういう努力に協力することを拒否している。むしろ台無しにしようと努力しているかのようだ。特にうんざりしたのはNUnitに対するマイクロソフトの反応だ――優れたXUnitテストツールであり、その設計要素がOOPSLAでAnders Hejlsbergに称賛されたが、マイクロソフトは競合ライブラリを出荷してきただけでなく、故意に非互換にしてきた。これは、人々がプラットフォームに対して時間をつぎこむことを奨励するような反応ではない。



公平に言えば、この大失敗は2年も前のことだ。Jim HuguninとJohn Lamを雇うといった行動は、あの印象に対抗するのに一役買った。Chris Sells、Don Box、Jim Newkirkといった技術者はマイクロソフトがより開かれた環境になる努力をしている。しかし、大きな組織はどれも同じだが、マイクロソフトは矛盾する勢力であふれており、どれが勝利するのかは私たちには分からない。



同僚のJohn Kordybackは、全ての中心では、Rubyは「もう一つの.NET言語」ではなく、ソフトウェア開発のコミュニティと態度の全てなんだと気づきつつあるんだと指摘した。Rubyとは、オープンソース、アジャイル思考法、軽量ソリューションが価値としてとても深く浸透したコミュニティなのだ。彼が言うには、レドモンドでの共通の疑問は、「『なぜこの考えが重要なのか?』じゃなくて『なぜこの言語が重要なのか?』って聞かれるんだよ」とのことだ。



だから、私がRubyとマイクロソフトに見ているものはチャンスだ。Rubyコミュニティは、マイクロソフトとともに働きたがっているようだ。このことが、レドモンドがオープンソースとともに働くという問題にどう対処するべきか知ることと、将来の協同作業のための模範となる努力のための機会を提供する。完全なRubyプラットフォームの.NETでの一級実装は、この共同作業のすばらしい成果となるだろう。もっといい結果はたぶん、マイクロソフトがオープンとアジャイルを対象にしたコミュニティとどうやって共同作業するかという例をこの作業が示すことだろう――プログラマーと顧客にとってさらに役に立つ姿勢が、マイクロソフト界の中でさらに広がっていくような、そんな跳躍台となりえる例に。



これについてかなりの反応があった(全リストはTechnoratiにある)。特に読むべきなのは次の人たちからの反応だ: Sam Gentile, Cory Foy, Luke Melia, Jeremy Miller, Rockford Lhotka, John Lam, Evan Hoff, Karl Seguin, Ola Bini, Miro Adamy, Charles Nutter, Peter Laudati, Nick Malik

2 件のコメント:

  1. わーい。コピってもいいですか?

    返信削除
  2. もちろん!持ってってください。ところどころおかしいけど。
    うまいこと直してもらえるとありがたいです。

    返信削除