2008年10月13日月曜日

[Linux]WineもすごいがMonoも進化したもんだなぁ

Wineはもう語る必要すらないほどの進化ぶりですが、その影で(?)Monoプロジェクトが着々と進化を続けていたようですね。
気がついたらSystem.Windows.Formもほぼサポートできるようになったんだとか。これにより、.NET2.0部分はサポートできたという話みたいです。
公式ページのRelease Notes Mono 2.0 - Monoによると、
 Microsoft Compatible APIs
* ADO.NET 2.0 API for accessing databases.
* ASP.NET 2.0 API for developing Web-based applications.
* Windows.Forms 2.0 API to create desktop applications.
* System.XML 2.0: An API to manipulate XML documents.
* System.Core: Provides support for the Language Integrated Query (LINQ).
* System.Xml.Linq: Provides a LINQ provider for XML.
* System.Drawing 2.0 API: A portable graphics rendering API. </pre?

となってます。C#に関しては一部3.0の機能(LINQとか)も含まれるみたいですね。
これまで、System.Windows.Formsはサポートしきれてなかったわけで、おかげでWindowsで作ったFormアプリはLinuxに持ち込んでも動かせなかったわけですが(※Wineで動かそうとしていた時期もあった)、これによりWindowsで作ったFormアプリも動くということになります。これは幅が広がるネッ!
実際、Windowsユーザですら.NET3.5を入れてる人はさほど多くないでしょうから、.NET2.0に対応してたらそれで十分な気はします。それに、Mono2.0ではLinqにも対応していますから、3.5向けのアプリケーションでもひょっとしたら動くかもしれません。
一応、Monoプロジェクトとしては、Gtk#ってのをWindows.Formに相当するクラスとして提供してますが、Gtkはデザイナで編集するにもちょっと癖があります。好みにもよるかも知れませんが、私はVC#の方が開発しやすいです・・・w
まぁ詰まるところ、VC#でサクサクと開発して、Linuxでもぽーんと動くってことですね。Wineも不要なので、マルチプラットフォームなアプリケーションを手軽に作れるんではないでしょうか。VC#やVB.Netは開発環境がフリーで提供されてますし、Javaを一気に脅かすかも知れませんね。
ビジネス的にも面白くなってきました。というのも、.NET(ASP)で作られたWebアプリケーションを動かすにはIISが必要だったわけですが、Monoで動かせるとなればサーバはIISである必要がありません。Apacheで動くわけです。これはかなりのメリットです。
世の中Apacheで動いているサーバは多いです。また、.NETを使ったWebアプリケーションはかなり開発しやすいですし、リッチなコンテンツも扱えます。それがIISではなくApacheで動かせるわけですから、パイはかなりあります。
さらにさらに、MonoプロジェクトはSilverLight互換のプロジェクトとしてSilverMoonを開発しており、こちらはMicrosoftも協力しています。Flashと同様、マルチメディアコンテンツを扱えますし、Silverlightを採用する企業も増えてきています。
最初は「ほんとに.NETはマルチプラットフォームで動くのかよ? System.Windowsクラスとかどうしようもねぇべ?」って思ってたんですが、人海戦術は恐ろしいですね。クリアしちゃうんだから。
こうなってくると、ほんとにOSの存在って薄れてきますね。見た目で選ぶならMac、自由度で選ぶならLinux、サポートで選ぶならWindowsとかになるんでしょうか。
今後はますますネットワークの知識が必要になりそうだなぁ。XMLとか勉強しておくか・・・。