学ぶとは真似るが変化した言葉だという。プログラムの世界では真似るのは非常に簡単だ。コピーするのにコストはかからずWindowsだろうが人気のゲームだろうが簡単にそして完璧に真似ることができるのだ。
まあコピーと真似るは違う。コピーとは元のものをそのまま使うことであり、バグや使いにくさなどをそのまま踏襲しなくてはいけない。オリジナルのものがそのまま使用できることは実は少ない。何がしかのカスタマイズをしたくなることのほうが多いのだ。
さて前回のエントリで言いかけたオープンソースであるが、MONOのことである。MONOはマイクロソフトの.NET Frameworkと互換性のあるオープンソースのソフトウェアだ。
なんか言葉にしてしまうと簡単だが実は凄いことである。モチロンマイクロソフトは.NETの内部を公開しているわけではない。個々のAPIがどのように実装されているかわからずにまったく同じインターフェイスをもち(これは簡単)、同じ動作をする(これが極めて大変だ)ソフトウェアを作らなくてはならないのである。
ちょっと古い方なら知っていると思うが.NET前はVC++/MFCというのがWindowsでの標準環境であった。MFCはなんと完全にソースコードが公開されていたのだ。長らくWindowsプログラマはこれを当たり前のこととして享受していた。
各自好きなようにMFCにパッチを当てて、あるいはサンプルコードをMFCから探し、またはデバッグ時にMFCのソースにブレークをつけ、それが当たり前だと思っていたのである。
.NETはこの居心地のよかった世界を廃墟にしてしまった。新時代のWindowsプログラムは目隠しをしたまますることになったのだ。
MONOはこの暗黒に差し込んだ一条の光である。現在MONOはNovelがスポンサーに付き急ピッチで開発が進んでいる。.NET Framework2.0に対応し、WindowsFormもサポートが始まった。
またASP.NETはそのほとんどが文字ベースの機能なのでASP.NETアプリケーションをLinuxで動かすというのはかなり現実味のある選択肢になってきた。
近い将来Linux+MONOが標準の環境になる日が来るのかもしれない。オープンソースの力はまだまだ底が知れない。