2003年06月16日
川俣晶の縁側ソフトウェア技術雑記total 7429 count

.NET FrameworkはWindows じゃない、ということを理解しない人達?

Written By: 川俣 晶連絡先

 今日のチャットより。

10:52 <B> しかし、.NET F/W は Windows じゃないよん、ってとこを理解してくれてない。 (--;

 こういう話はよくありますね。

 このあたりの話は、ソフトウェア技術者であれば、的確に把握しなければならない領域ですから、注意しましょう。たとえ、.NET Frameworkを是とするのであれ、非とするのであっても、それについて意見を述べるなら、それが何であるかを正しく理解する必要があります。そのあたりがルーズになっている事例は、インターネット上でよく見かけます。もちろん、この話題に限らず、"Linux"や、"オープンソース"といった言葉に関しても、相当怪しい解釈を見かけます。

 それはさておき、そもそもWindowsとはいったい何でしょう?

 .NET Frameworkとはいったい何でしょう?

 Windowsはマイクロソフト製の一連のOSの名前ですね。実は特定のOSを示す言葉ではありません。とはいえ、マイクロソフト製のOSでもWindowsと呼ばれないものがあります。MS-DOSはWindowsとは呼ばれていません。Windowsという言葉は、グラフィカルなユーザーインターフェースを持つ一連のOSの名前かというと、そうでもありません。純マイクロソフト製ではありませんが、IBMと共同で開発したOS/2というものも歴史的にあります。これに含まれるプレゼンテーションマネージャは、グラフィカルなユーザーインターフェースを持ちます。

 では、OS/2とWindowsを分け隔てるものは何か、と考えると、Windows APIを持っているか否か、ということができます。Windows APIはAPIの一種ですが、これもたった1つのAPIを指し示す言葉ではなく、16bitと32bitの違いや、その他の相違など、様々なバリエーションがあります。それでも、多くの名前や概念が共通しています。たとえば、ウィンドウを作るのがCreateWindowで、ウィンドウにメッセージを送るのがSendMessageで、ウィンドウが作成されたことを示すメッセージがWM_CREATEといったことが共通になっています。ですから、これらは同じ体系の上にあるAPIと言えるでしょう。

 では、このような同じ体系の上にあるAPIを持っているOSがWindowsであると考えたとき、それと相反するものとして、同じ体系の上に無いAPIを持ったOSも考えられます。たとえば、OS/2もUNIXも、そういうOSであると言えます。

 しかし、ここで注意すべきことが1つあります。あるOSが持つAPIがワンセットに限定されるという制約はないということです。実際にWindows NT系の世界では、Windowsの他にPOSIXサブシステムなど、複数のAPIセットが提供されています。

 ここで注目することは、APIは後付可能だということです。それはJavaを見ると分かります。Javaの環境は、あとからWindowsにインストール可能ですが、Javaはそれ自身の独自のAPIを持っています。それは、Windowsと同じ体系上にあるAPIではありません。つまり、WindowsというOSが、Javaという異質なAPI体系を持つことができるということです。

 ここで、このWindows上でJavaアプリケーションを開発したとします。Java標準APIだけを利用しているとすれば、このJavaアプリケーションは、WindowsではないOS上でも動作します。つまり、これはWindowsアプリケーションではないわけです。

 さて、ここからが本題です。

 .NET Frameworkは、独自のAPIを持っています。これは、Windowsと同じ体系上にあるAPIではありません。その点で、Javaと同様です。同じように、.NET Frameworkを用いて開発されたアプリケーションソフトは、.NET Frameworkアプリケーションであって、Windowsアプリケーションではないわけです。

 「しかし、Javaと違ってWindows上でしか動かないではないか」と反論する人がいると思いますが、それはいくつかの意味で間違っています。

 まず第1に、.NET Frameworkの相当部分と互換性のあるAPIがオープンソースとして開発されていて、Linuxなどの上で動いているということがあります。この範囲内であれば、Windows上の.NET Frameworkで開発されたアプリケーションがそのままLinuxで動くことも当然あり得ます。

 第2に、仮にWindows上の.NET Frameworkでしか提供されたAPIを用いたアプリケーションソフトを開発したとしても、それがWindowsでしか実行できないアプリケーションであるとは言えないのです。つまり、WindowsがWindowsと同じ体系のAPIを持つOSの名称であるなら、.NET Frameworkアプリケーションを実行させるためにこのようなAPIの存在は必須ではない、ということです。つまり、Windows APIを持たないOSがフルセットの.NET Frameworkをサポートしている、という事態も当然あり得る話ということです。今は、そのようなOSを作ることは実用上意味がないかも知れません。しかし、未来のいつかの時点で、Windows APIはほとんど利用されないレガシー機能だから切り捨てよう、という話もあり得ることだと考えられます。また、互換OSを開発する際に、.NET Framework APIは互換を取るが、Windows APIは互換を取らない、という選択もあり得るでしょう。

 そのような事態を、「あり得るもの」として考えておくことが、責任ある技術者として必要だと思います。.NET Frameworkという技術を利用するにせよ、利用しないにせよ、それを判断するには、そういう的確な考えが必要でしょう。

 「.NET FrameworkはWindowsじゃない」ということです。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2003年
06月
16日
#if-#else-#endifを活用したソースコードの書き換え
3days 0 count
total 5842 count
【技術雑記】の前のコンテンツ
2003年
06月
13日
誤解を解くために、ここで『熱血プログラミング主義』を宣言!
3days 0 count
total 1788 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20030616121853
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.33 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.