はじめに
CLRのバージョン1.0が登場する前のこと、Microsoftは、さまざまな企業や学究機関の協力の下、.NET上で動作する言語の開発を「Project 7」というコードネームで進めていました。そんな言語の1つに、ActiveStateが開発したPython for .NETがありました。この言語はきちんと動作したものの、Project 7では次のように判断されました。「現行のシステムでは速度が遅すぎる。したがって、現在の実装はデモンストレーションの域を出ず、他の用途では役に立たない注1」。さらに、パフォーマンスがふるわない原因の一端は「Python for .NETコンパイラの実装がシンプルなこと」にあるとしたものの、「.NETの内部実装やReflection::Emitにも原因がある」とも述べていました。
「CLIはその設計上、動的言語との親和性が低い注2」というのが、従来の通説となっていました。主にActiveStateの経験から出た説です。これを不思議に思ったのが、Jython(Java VM用のPython実装)の考案者であるJim Huginin氏でした。JythonはJVMでもまずまずの動作を示すことから、CLRではPythonのパフォーマンスがふるわないのはなぜだろうという疑問を抱いたのです。そこで同氏は、何週間かかけて、.NET用のPythonを簡単に実装してみることにしました。Microsoftの誤りがどこにあったのかを判断するためです。そして、そこで見つけた内容を、「.NETが動的言語のプラットフォームとして不向きな理由」という小論文にまとめようと計画していました。
その結果は同氏にとって驚くべきものでした。2週間かけてPythonを実装してみたところ、なんとJythonよりも速く動作したのです。これに興味を引かれた同氏は、IronPythonの開発を続け、2004年の夏にはMicrosoftに加わりました。IronPythonのバージョン1.0が登場したのは、その2年後の2006年9月です。現在同氏は、動的言語ランタイムチームのアーキテクトを務めており、IronPythonの開発チームは、2008年秋のバージョン2.0のリリースに向けた作業を進めています。
ActiveStateのMark Hammond氏が2000年11月に執筆したホワイトペーパー「Python for .NET: Lessons learned」から引用。現在この文書は、Hammond氏のサイトでもActiveStateのサイトでも公開されていません。今回の記事では、Internet Archiveに保存されている2006年9月25日時点のHammond氏のサイトのスナップショットから同文書を取得しました。
InfoworldのJon Udell氏が2003年8月22日付けで執筆した記事「Dynamic languages and virtual machines」から引用。
この記事はもともとCoDe Magazineの2008年9月/10月号に掲載されたものですが、許可を得てここに転載しました。
IronPythonの入手
IronPythonプロジェクトはCodePlexで運営されています。Microsoftの多くの言語製品とは違い、広く開放されたオープンソースプロジェクトです。IronPythonの新バージョンは約6週間おきにリリースされており、ソースコードはすべて、OSIの認定を受けたMicrosoft Public Licenseの下に公開されています。CoDePlexのサイトには、コミュニティによる議論のためのメーリングリストや、バグを見つけた人が誰でも登録できる問題点管理システムなどがあります。
現在、IronPythonの最新バージョンは1.1.1ですが、開発チームはバージョン2.0のリリースに向けた作業を急ピッチで進めています。本記事の執筆時点では、バージョン2.0のベータ3が登場したところです。IronPython v2.0は、Python言語のバージョン2.5を実装しています(IronPython v1.xが実装していたのはPython v2.4でした)。しかも、IronPython v2.0は、新しい動的言語ランタイム(DLR)を基盤としています。
どのバージョンも、ダウンロードファイルは単一のzipファイルです。その中には、コンパイル済みのバイナリ、いくつかのチュートリアル、ドキュメントのほか、おなじみのreadmeファイルやライセンスファイルなどが入っています。このzipファイルは、ハードディスク上の任意の場所に解凍すればOKです。解凍したファイルの中にあるipy.exeが、IronPythonのメインの実行可能ファイルです。このファイルを引数なしで実行すると、対話型のコンソールウィンドウが立ち上がり、Pythonのコードを直接入力できます。また、ipy.exeの最初の引数としてpythonファイルの名前を指定すると、そのファイルのコードを実行できます。
現在リリースされているIronPythonは堅牢なバージョンですが、現時点では、Visual StudioでIronPythonを本格利用するための開発環境は用意されていません。しかし、VS Extensibility SDKには、IronPythonの言語サービス、プロジェクトシステム、コンソールウィンドウのサンプルが含まれており、現在ではIronPython StudioとしてCodePlexから無償でダウンロードできます。Visual StudioでのIronPython開発の環境や利便性を向上させていくことは、IronPythonの開発チームが今後取り組んでいく分野です。
2008年12月10日にIronPython 2.0がリリースされました。