.NET Framework入門

2..NETプラットフォームと.NET Framework


デジタルアドバンテージ 遠藤孝信
2000/12/14

p.1 p.2 p.3 p.4 p.5 p.6 p.7 p.8 p.9

本記事は改訂されました。改訂版の「.NETとは何か? ― 基礎解説:.NET初心者のための.NET入門【2011年版】」をご覧ください。

 これまで述べてきたWeb Serviceや、Webアプリケーションの開発・実装・運用を支援するために、マイクロソフトが提供するソフトウェア・プラットフォームが.NET プラットフォームである。

.NETプラットフォーム

.NETプラットフォームは、Web ServiceやWebアプリケーションの開発・実装・運用を支援するためにマイクロソフトが提供するソフトウェア・プラットフォームである。このように.NETプラットフォームは、これまでマイクロソフトが得意としてきたPCやPDAばかりでなく、サーバ・システムや携帯電話機なども幅広くカバーし、上位ソフトウェアに共通性の高いソフトウェア環境を提供する。

 .NETプラットフォームで注目すべき点の1つは、これまでマイクロソフトが最も得意としてきたPCやPDA分野に加え、サーバや携帯電話機なども幅広くハードウェア・プラットフォームとして念頭に置かれていることだ。実際、.NETに関するマイクロソフトのプレゼンテーションを見ても、現在のPC+Windows環境は、.NETが想定するハードウェア・プラットフォームのごく一部として位置づけられているにすぎない。これを見た一部マスコミは、「.NET戦略において、マイクロソフトはWindows環境を傍流へと追いやろうとしている」と報じた。これは短絡的というものだが、.NETというビジョンが、既存のPC+Windows環境を大きく超えるものであることは事実だろう。

 マイクロソフトは、.NETプラットフォームのOSとして、現行のWindows 2000を発展させた次バージョンのWhistler、およびWhistlerの次バージョンとして開発が進められているBackcomb(ブラックコウム)をベースとして、各ハードウェアに応じたサブセットまたはスーパーセットを実装するとされる。しかしマイクロソフト自身が実装することはあり得ないとしながらも、Windows以外のOSサポートも噂されている。その筆頭にあるのがLinuxだ。2000年10月初旬、米Microsoftは、経営不振に陥っていたカナダのCorel社(Corel社のホームページ)へ1億3500万ドルの資金援助を行った。もともとCorel社は、Word Perfect(ワードプロセッサ)やParadox(データベース)、VENTURA(DTP)などのビジネス・ソフトウェア、CorelDraw(ドローイング)やCorel Photo-Paint(フォトレタッチ)などのクリエイティブ向けソフトウェアをWindows環境用に開発・販売してきたが、ここ最近では、急成長するLinux環境に注目し、自身でもディストリビューション・パッケージを販売したり、これらアプリケーションのLinux対応を積極的に進めたりしていた。公式見解ではないが、Corelへの出資は、.NETプラットフォームとしてLinuxを加えるための布石だと言われている。

Corelが運営するLinuxユーザー向け専門サイト"Corel LINUX Community"
Corel社は、競合の激しいWindowsアプリケーション市場から、急速に市場が拡大しつつあるLinuxアプリケーション市場へと重心を移しつつある。米Microsoft社によるCorel社への資金提供は、Microsoft.NETのLinux対応を進めるための布石だとする噂もあるが…。Corel LINUX Communityのホームページ

 これらOSの上位に位置し、Web ServiceやWebアプリケーションに対するサービス・インターフェイスを提供するのが.NET Frameworkである。詳細はすぐ次で述べるが、.NET Frameworkの実体は、Web Serviceなどの上位ソフトウェアを構築するためのクラス・ライブラリと、それらを特定のハードウェア・プラットフォーム(マイクロプロセッサ・アーキテクチャなど)に依存することなく実行可能にし、同時にメモリ管理やセキュリティ管理などの基本的なソフトウェア・サービス提供するCLR(Common Language Runtime)である。CLRは、JavaにおけるVM(Virtual Machine:仮想マシン)と同等の機能も含んでおり、Web Serviceなどは中間コード形式としてコンパイルしておき、実行時にプロセッサのネイティブ・コードに変換する形式をとる。

 ここで重要なことは、.NET Frameworkさえ提供されれば、下位のOSやハードウェアがどのようなものでも、同一のWeb Service/Webアプリケーションを再コンパイルなしで実行できることだ。現実問題としては、各OSやハードウェア・デバイスごとに特性の違いはあるにせよ、少なくとも基本的なプログラミング・インターフェイスは共通であるし、CLRのおかげでプロセッサ・アーキテクチャが異なる環境でも、同一のバイナリ・コード(中間コード)を実行することができる。

.NET対応プログラムの開発・実行を支援する.NET Framework

 今述べたように、.NETプラットフォームにおいて、Web ServiceやWebアプリケーションの開発や実行を支援するマイクロソフトのフレームワークが「.NET Framework」である。ちなみに“framework”は「枠組み、骨組み」という意味で、具体的には、Web Serviceなどから利用できるコンポーネントやクラスの集合体になっている。

 .NETプラットフォーム上で動作するWeb Service/Webアプリケーションを開発するプログラマは、この.NET Frameworkが提供する機能を使用してソフトウェアを設計することになる。なお、Web Service/Webアプリケーション以外にも、.NET Frameworkを利用して、Windows OS上で動作する伝統的なWindowsアプリケーションを開発し、実行することも可能である(以下、単に「アプリケーション」と表記したときには、Web Service/Webアプリケーション/Windowsアプリケーションをひとまとめにして指すものとする)。

 .NET Frameworkをベースとして開発されたアプリケーションは、下位のハードウェア・プラットフォームやOSがどのようなものであろうと、.NET Frameworkが実装された環境なら、どこでも実行することができる。もちろん、アプリケーションの処理は、たとえばWindows OSなら、最終的にはWin32 API呼び出しに変換されることになるが、これらはすべて.NET Frameworkによって隠蔽されており、アプリケーションが直接APIを呼び出す必要はない。したがって将来的の64bitプロセッサ環境でWin64 APIを使うことになっても、上位のアプリケーションは何ら影響を受けないですむ。.NET Frameworkの目的は、下位のOSやハードウェア・プラットフォームを覆い隠すようなインフラストラクチャを提供することによって、上位アプリケーションをこれらプラットフォーム依存から解放し、アプリケーションの生産性やプログラム・コードの再利用性、システムの信頼性を高めることにある。

 ただし現時点の計画では、ゲーム・ソフトウェア向けのプログラム・インターフェイスであるDirectXは、.NET Frameworkではサポートされない予定である。したがって高速なグラフィックス描画などを必要とする3Dゲームなどの作成・実行に関しては、従来どおりのプラットフォームを使用することになる。

 .NET Frameworkは、次のように大きく3つの要素から構成される。

.NET Frameworkの構成

.NET Frameworkの内部は、このように大きく3つの要素から構成されている。最下層にあるCLRは、アプリケーションやコンポーネントを実行するためのエンジンである。そしてアプリケーションのシステム・インターフェイスとなるクラス・ライブラリ群がその上にある。ASP.NETは、Windowsアプリケーションを除く、Web ServiceとWebアプリケーションを実装するためのクラス・ライブラリだ。

 細かいことはさておき、大ざっぱに言えばこうなる。.NET Framework上のアプリケーションは、.NET Frameworkによって提供されるクラス・ライブラリを使用してコーディングされる。作成されたソース・コードは、コンパイラによってアプリケーションないしコンポーネントの実行コードに変換されるが、この際に生成されるのは特定のCPU命令に依存したネイティブ・コードではなく、MSIL(Microsoft Intermediate Language、詳細は後述)と呼ばれる中間コードである。このMSILによるコードを最終的なネイティブ・コードに変換し(コンパイルし)、実行するのがCLRである。

 .NET Frameworkによって提供される新しいクラス・ライブラリ(次に述べるASP.NETを含む)は、「Base Framework」と呼ばれることもある。文献によっては、このクラス・ライブラリを指して「.NET Framework」と呼んでいるものも見かけるが、混乱を避けるため、本稿では特に断らないかぎり、このBase Frameworkの部分を指すときには「クラス・ライブラリ」と表記する。プログラマから見れば、これはオブジェクト指向の概念にのっとって完全にクラス化されたライブラリである。.NET Framework SDKなどでは、このクラス・ライブラリがDLLファイルとして提供され、システムに組み込まれるようになっている(つまり、少なくとも現時点では、現行のMFCクラスライブラリと同じようにして提供され、システムに組み込まれる)。

 「ASP.NET」は、Web ServiceやWebアプリケーションを実装するためのフレームワークである。これは、上記クラス・ライブラリの一部として提供される。名前から分かるとおり、これは、Webアプリケーションを開発するためのしくみとして、すでに提供されているASP(Active Server Pages)の後継にあたるものだが、機能も内容もまったく別物として生まれ変わったといってよいだろう。現行のASPは、動的なページを生成できるサーバ・サイドの単なるスクリプト・エンジンであったが、ASP.NETは、.NET Frameworkの主要な機能の1つとして、WebアプリケーションとWeb Serviceの実行環境を提供する。ひと言で表せば、ASP.NETは、Web ServiceとWebアプリケーションのためのクラス・ライブラリと、Webサーバ・サービスを実現するためのHTTP処理エンジンを一体化させたものである。

関連リンク
Corel LINUX Communityのホームページ
 

 INDEX
  [特集].NET Framework入門
    1.Microsoft.NETプラットフォームとWeb Service
  2..NETプラットフォームと.NET Framework
    3.Common Language Runtime(1)
   CLRの内部構造とプログラム実行の流れ
    4.Common Language Runtime(2)
   CLRによる複数言語サポート:
    VS.NETで標準サポートされる言語処理系
    5.Common Language Runtime(3)
   CLRによる複数言語サポート:
   サードパーティによってサポートが予定されている言語処理系
    6.ASP.NET(1)
    ASP.NETで何が変わるのか? まずは既存のASPと比較してみよう
    7.ASP.NET(2)
    VBライクなWebアプリケーション開発を可能にするASP.NETのサーバ・コントロール群
    8.ASP.NET(3)
    Web Service開発始めの一歩。サービス公開に必要なのはキーワード指定1つ 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間