Ruby マイクロソフト
2007年5月30日
RailsConf2007では、JRubyへの興奮が非常に高まっていました。この小さなチームは、瀕死のプロジェクトを、JVM上でRubyプラットフォームの最高級の実装に見えるものに変えました。彼らは多くの歓声を浴び、それらすべてに値しました。
JRubyがほぼ実現したことで、スポットライトはもう一つの一般的なマネージコードランタイムである.NETに移ります。マイクロソフトのRubyに対する意図は、現在のところはるかに不明確です。彼らはSilverlightのスクリプト言語としてRubyを発表しましたが、それでも多くの疑問が残ります。これはRuby言語の完全な実装なのでしょうか、それとも何らかの形のRuby++(Rubyの強化されたサブセット)なのでしょうか?
JRubyは、明確に異なるが補完的な2つの目的を果たします。一つは、JVM向けの強力なスクリプト言語であり、Javaアプリケーションに動的な言語を織り込むことができます。二つ目の目的は、JVMにおけるRubyプラットフォームの実装であり、Rubyアプリケーション、特にRuby on Railsアプリケーションを、MRI(Matz's Ruby Interpreter、現在のCランタイム)で実行するのと同様に、JVM上で実行できるようにすることです。
マイクロソフトの「Iron Ruby」にとっての大きな疑問は、どの程度互換性があるかということです。CLR上での完全な実装になるのでしょうか?私が聞くすべての兆候は、Iron Rubyの背後にある主要な推進力であるジョン・ラムが、完全に互換性のある実装を得ることを決意していることを示しています。しかし、現状ではそれを実現することは非常に難しいかもしれません。間もなくThoughtWorkerになるJRubyコミッターのオーラ・ビニーは、MRIのソースコードを見ずにRubyランタイムを実装する方法を理解することはほとんど不可能だと考えています。しかし、マイクロソフトは、従業員がオープンソースソフトウェアをダウンロードしたり、ソースを見る能力に大幅な制限を課しています。オープンソースコミュニティは、ソースコードを通じてコミュニケーションをとることが多いため、オープンソースコミュニティとのコラボレーションが非常に困難になっています。
もちろん、これらを覆い隠しているのは、マイクロソフトとオープンソースの世界との歴史的に難しい関係です。過去にマイクロソフトは、オープンソースコミュニティを中傷し脅迫するためにあらゆる手を尽くしてきました。近年、状況は改善しましたが、マイクロソフトの中核的な意図については真剣な疑問があります。最近の特許に関する脅威は、多くの人にとって、マイクロソフトが依然としてオープンソースを死に至らしめようとしている証拠と見なされています。
他のほとんどのテクノロジー企業とは異なり、マイクロソフトはオープンソースの世界と共存する方法を見つけるのに苦労してきました。マイクロソフトにとっては、Sun、Apple、IBMとは異なり、彼らが圧倒的にソフトウェア企業であるため、より困難です。Linux、GNU、Open Officeなどのオープンソースプロジェクトは、マイクロソフトの王冠の宝石と直接競合しています。しかし、私はオープンソースに対する宣戦布告、それを根絶しようとすることが、長期的に実行可能な解決策であるとは決して感じませんでした。オープンソースはここに留まります。問題は、どのようにそれを受け入れるかです。
Rubyの場合、マイクロソフトは、より目に見える死闘とは異なる立場にいます。Rubyは、マイクロソフトのラインナップにおける中核的な収益源とは競合しません。さらに、Rubyコミュニティには、マイクロソフトと協力したいという強い願望があります。RailsConfで話したほとんどの人は、マイクロソフトでのRubyの完全なサポートを非常に強く望んでおり、それを実現するためのアプローチをどのように考案できるかについて、多くの創造的なアイデアが浮かび上がっていました。コミュニティで聞いた圧倒的な感覚は、「Rubyが悪のマイクロソフトを殺す」ではなく、「どうすれば問題を克服してマイクロソフトでRubyを実現できるか」でした。
クリス・セルズが指摘したように、「マイクロソフトにとってこれにどんなメリットがあるのか」という問題を考慮する必要があります。私にはいくつかの理由が考えられます。まず、データセンターにおける.NETとWindowsの役割です。マイクロソフトがRubyプラットフォームをサポートしない場合、Ruby on Railsが成功すれば、人々がサーバーファームで.NET(およびWindows)から離れるリスクがあります。
もう一つの理由は人です。マイクロソフトは公の場でこれを認めたがりませんが、アルファギークがマイクロソフトのプラットフォームから離れていっているという現実的な懸念があります。マイクロソフトのビジョンは、指揮統制組織におけるモートの軍隊であるという感覚が強まっています。有能なエンタープライズ開発者を可能にするツールや、アジャイル開発プロセスに対する露骨な意欲の低下がしばしば見られます。
数年前、レッドモンドでの私の(限られた)連絡先は、彼らがWindowsプラットフォームから技術リーダーが実際に離れていくのを見ていると私に言いました。最近、これらの兆候はますます強まっているようです。私のブログロールの「ソフト」な部分を読むと、長年マイクロソフトを支持してきた人々の中に、現実的な幻滅感があるのを感じました。アジャイル志向の開発者は、マイクロソフトツールの方向性に不満を感じています。マイクロソフトのカンファレンスでは、アジャイルプロセスについてはほとんど言及されず、ウォーターフォールアプローチに大きく傾いています。ツールは、その厳格な役割分担により、アジャイルリストが好む曖昧な境界を積極的に妨げています。
RailsConfで、ティム・ブレイは、テクノロジーに関する重要な決定はプログラミングコミュニティによって行われると主張しました。私はこれに部分的に同意します。ITに非常に多くの肥大化したソフトウェアが存在する理由は、ITの購買決定が通常、ソフトウェア開発の現実との意味のあるつながりを失った人々によってゴルフコースで行われるためです。しかし、ゴルフコースでの決定は短期的に支配的になるかもしれませんが、時が経つにつれて、ティムの主張は正しいと思います。したがって、アルファギークを失うことは今年または来年は問題ないかもしれませんが、時間とともにマイクロソフトに容赦なく害を及ぼすでしょう。
実際、マイクロソフトにとって来年はすでに過ぎています。特に米国では、クライアントからのマイクロソフトプロジェクトへの関心が著しく低下していることがわかります。オーストラリアでは、.NETはクライアントの間でまったく足がかりを得ていません。このデータをどう解釈すればよいのかわかりません。私たちは統計的に有効なサンプルになるほど大きくありません。しかし、私たちのクライアントは「アルファITショップ」であると考えたいので、それでも有用なデータポイントです。
おそらくより重要なのは、Thoughtworks内での物語です。.NETが登場したとき、プラットフォームに対する関心が高まりました。多くの人がJavaプラットフォームの強力な競合相手を見ることを喜んでおり、.NETプロジェクトに積極的に関与していました。しかし、ここ1年ほどで、.NETから大きく離れる動きがありました。これは、レッドモンドから非常に興味深いものが登場しているにもかかわらずです。マイク・ツーはウィンドウズワークフローツールに非常に熱心であり、私はLinqやその他の言語開発に非常に感銘を受けてきました。しかし、マイクロソフトのテクノロジーに対する一般的な見解は、大きなあくびです。ティム・オライリーが信じているように、アルファギークは数年後に他の人が行っていることを指し示すため、これは重要です。そして、重要な点は、マイクロソフトに対する態度は憎しみ(多くのギークの間で一般的な態度)ではなく、退屈であるということです。これは、ポール・グレアムがマイクロソフトはもはや危険ではないため死んだと言うときに意味していることです。
オープンソースに対する態度は、この問題の大きな部分を占めています。Javaが登場したとき、そのポートフォリオには大きなギャップがあり、さらに悪いことに、APIにはいくつかのひどい標準ツール(Entity Beansのビジョンが思い浮かびます)がありました。これらのギャップと悪いアイデアは、オープンソースコミュニティによって修正されました。Antは私たちにビルドツールを提供し、EJBはSpringとHibernateに置き換えられました。.NETにもギャップがあり、オープンソースコミュニティがそれを埋めるために再び立ち上がりました。しかし、マイクロソフトはこれらの取り組みに協力することを拒否しており、それを弱体化させるためにあらゆる手を尽くしているようです。私は、特にNUnitに対するマイクロソフトの反応にうんざりしました。これは、OOPSLAでアンダース・ヘルスバーグがデザインの要素を賞賛した、優れたXUnitテストツールです。マイクロソフトは、競合するライブラリをリリースしただけでなく、意図的に互換性のないものにしました。それは、プラットフォームに時間を投資することを奨励するような反応ではありません。
公平を期すために言うと、その大失敗は数年前のことです。ジム・ハグニンやジョン・ラムを雇うような行動は、その印象を打ち消すのに役立ってきました。クリス・セルズ、ドン・ボックス、ジム・ニューカークのような技術者は、マイクロソフトをよりオープンな環境にするために取り組んでいます。しかし、他の大規模組織と同様に、マイクロソフトは矛盾する力に満ちており、どの力が勝つかはわかりません。
私の同僚であるジョン・コルディバックは、このすべての中核にあるのは、Rubyは別の.NET言語ではなく、ソフトウェア開発に対するコミュニティ全体と態度であることを理解することだと指摘しました。Rubyは、オープンソース、アジャイル思考、軽量ソリューションが深く根付いた価値観を持つコミュニティです。彼は、レッドモンドでの一般的な問題は、「なぜこの言語が重要なのですか」ではなく、「なぜこの思考が重要なのですか」と質問することだと言います。
したがって、私がRubyとマイクロソフトに見ているのは機会です。Rubyコミュニティは、マイクロソフトと協力することを熱望しているようです。これは、レッドモンドがオープンソースとの協力の問題に対処する方法を理解し、この取り組みが将来の協力の模範となる機会を提供します。.NET上のRubyプラットフォームの最高級の実装は、この協力の素晴らしい成果となるでしょう。おそらくさらに良い結果は、この取り組みが、マイクロソフトがオープンさとアジリティを中心としたコミュニティとどのように協力できるかの例となることです。これは、マイクロソフトの世界全体でプログラマーとその顧客をさらに支援できる態度をさらに広めるための出発点となる可能性があります。
これに対する多くの反応がありました(完全なリストについては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
更新:最近(2007年8月)、レッドモンドから非常に心強い兆候が見られています。特に、IronRubyは、非常に寛容なライセンスと思われるものでRubyForgeでホストされます。オーラは承認しています。