Pure .NET Application
個人的には Pure .NET ということには必要以上に拘る必要は無いと思っていますが*1,かといって世間的な Managed/Unmanaged 論もちょっとステレオタイプすぎるかなと.
.NET,というより製品としての Microsoft CLR は,2 通りのスタンスを持っているところから見直してみましょう.
- .NET 環境の中で (または並列する形で),従来のネイティブ環境とネイティブモジュールを実行する
- 従来のネイティブ環境の中でユーザーモードライブラリとして .NET 環境を実行し,.NET 言語で書かれたモジュールを実行・操作する
有名な P/Invoke や COM Interop はどちらかというと(1)の立場で登場することが多いように思います.「.NET でこういうことはできますか?」に対して「.NET 内部から Unmanaged コードを呼び出すことで実現可能です」というパターンですね.
一方(2)の製品や技術としては,ASP.NET や SQLCLR が有名です.Internet Explorer 内でアプレット的に実行させたり,VSTO のように .NET で書かれた UI やロジックで Office を 拡張するといった例もあります.
Pure .NET からスタートして結局無理で(1)も利用,というパターンは結構ありがちですが,(2)は元々最初からその方向性を狙っていないと見えてこないかもしれません.というより,大量にリソースをつぎ込んで「アプリケーション」を作るのメインなのか,大量にリソースをつぎ込んで「プラグイン」を整備するのがメインなのか,というあたりの方向性の違いなんでしょうかね.
ASP.NET や SQLCLR のアセンブリを局所的に見れば .NET な世界に見えるかもしれませんが,もっと引いた視点で見たシステム全体としてはもっといろいろな技術が混在しています.技術を統合していくという点では Microsoft は色々やっていますし,.NET が絡む分野でそこまでリソースをつぎ込めるのは体力的にも Microsoft ぐらいなのかもしれませんけど.
「.NET アプリケーション」という方向性についてはここ 5 年で問題点や改善すべき点が色々見えてきたかと思いますが,プラグイン的なものを .NET で大量生成するという方向についてはまだいくらか未開拓な部分が残っていそうです.
Windows でマクロ言語として使われることが多い VB Script / JScript にしても,そのルーツは COM や ActiveScript の世界なわけですが,今やある種独立した形で文化を形成しています..NET をルーツとする Windows Workflow Foundation (WF) なども,うまく立ち回れば次期主役として独立できそうな可能性が見えるだけに,がんばってほしいところですね.WF を Windows Vista や Office 2007 に応用していく上で,「.NET を流行らせること」と「WF を流行らせること」を天秤にかけるとしたら,個人的には後者を優先して欲しいかなと思っています.ARTDINK あたりに敷居を下げた軽量デザイナとデバッガ作ってくれるなら予約入れて発売日に買いますよ.はい.