.NET プラットフォームの分岐問題
長い間,.NET のプラットフォーム依存問題を理解するのはやたすいことだった。使用されているほぼすべてのものが,.NET Compact Edition または完全版のいずれかに対する互換性を持っていたからだ。利用者のほとんどいない .NET Micro を除けば,気にかかるようなものは何もなかった。ところが最近,状況がかなり複雑になってきたのだ。
バージョンの違いを無視すれば,何らかの形で CLR が動作するプラットフォームは,現時点で 13 種類になる。基本的なクラスライブラリと思われる部分のサポート状況は,個々のプラットフォームでまちまちだ。加えて,プラットフォーム独自のコアライブラリも数多くある。それらは以下のリストにあるプラットフォーム間で共有されていたり,あるいはされていなかったりする。
- .NET
- .NET Client Profile
- .NET Compact Edition(おそらく非推奨)
- .NET Micro
- Mono
- MonoDroid (プライベートベータ)
- MonoTouch
- Silverlight
- Silverlight for S60 (ベータ)
- Windows Mobile 7 版 Silverlight
- Windows 版 XNA
- XBox 360 版 XNA
- Windows Mobile 7 版 XNA
この上さらにプラットフォーム固有のバージョン,COM や p/invoke から呼び出すのに必要な CPU 固有のビルドなどが組み合わされるとなれば,依存関係衝突の泥沼に陥るのは誰の目にもあきらかだ。
Chris Hardy 氏は MonoDroid で Nupack を使用 する際の問題を提起し,それに対応する機能要求(feature request) を行った。ほぼ同時に Phil Haack 氏が,GUI レベルにおけるフィルタリングの提案 についてポストしている。このように Microsoft 内外の人々がパッケージ管理を重要視しているので,この件が依存性に関する問題として継続することはない,と期待してよさそうだ。一方でこれらすべてのプラットフォームにおけるテストについては,プロジェクト個々の問題として残されるだろう。