基礎解説 初めてのMicrosoft .NET デジタルアドバンテージ |
|
|
本記事は改訂されました。改訂版の「.NETとは何か? ― 基礎解説:.NET初心者のための.NET入門【2011年版】」をご覧ください。
開発プラットフォームとしての.NET
マイクロソフトのソフトウェア戦略は、プラットフォームとして実装され、ユーザーの手元に届けられる。これは、MS-DOSの昔から、16bit Windows API(Win16 API)、32bit Windows API(Win32 API)、MFC(Microsoft Foundation Class)、COM(Component Object Model)/DCOM(Distributed COM)と、脈々と続けられてきたアプローチである。
.NET対応のソフトウェアを開発し、実行するためのプラットフォームとして、マイクロソフトは.NET Frameworkと呼ばれるベース・フレームワークを開発した。“framework”は「枠組み」とか「骨組」といった意味で、.NET対応ソフトウェアを実行するための下層構造を提供する。具体的には、.NET Frameworkは、次図のように、CLR(Common Language Runtime)と呼ばれるプログラム実行エンジンと、クラス・ライブラリ群から構成される。
.NET Frameworkの構成 |
CLRは、.NETアプリケーションをロードし、実行するためのエンジンである。この上に、ベース・フレームワーク・クラス(各種入出力や文字列操作、ネットワーク関連機能など)、データ/XML関連クラス(データベース操作、XMLデータ操作)クラスがあり、さらに上位にWebサービス開発用のクラス、Webアプリケーション開発用のWebフォーム関連クラス、Windowsアプリケーション開発用のWindowsフォーム関連クラスがある。ASP.NETは、WebフォームによるWebアプリケーションを開発するためのプラットフォームである。 |
■CLR(Common Language Runtime)
.NETアプリケーションを実行するためのエンジンとして機能するのがCLR(Common Language Runtime)である。.NET対応プログラムは、コンパイラによってIL(Intermediate
Language)と呼ばれる中間コード形式に変換される。従来のプログラム・コードは、コンパイラによって特定のマシン・コード(Windows環境ではIntelプロセッサ向けのバイナリ・コード)に変換され、それが実行時にマイクロプロセッサに解釈されるのだが、ILは特定のマイクロプロセッサには依存しない抽象的なコードである。
抽象的なILから、実際のマシン・コードに変換するのがCLRの1つの役割である。またCLRは、IL→マシン・コードへの変換に加え、メモリ管理機能(メモリ・リークの防止や、バッファ・オーバーフローによるセキュリティ・ホール混入の防止)やコード・セキュリティ機能(プログラム実行のパーミッション・チェックなど)、バージョン・チェック機能(DLL Hellを回避する)などの機能が提供される。こうしたCLRの機能により、.NETアプリケーションは、高度なセキュリティ機能やより安全なメモリ管理、バージョン管理などが可能になる。CLRによってコードの実行環境が管理されることから、CLR上で実行される.NETアプリケーションのことをマネージ・コード(managed code)と呼ぶ(これに対し、従来のプログラムはアンマネージ・コード:unmanaged codeと呼ばれる)。
■ベース・フレームワーク・クラス、データ/XMLクラス
.NET Frameworkでは、CLRの制御下で実行されるマネージ・コード向けの各種ソフトウェア・コンポーネントがクラス・ライブラリとして提供されている。
ベース・フレームワーク・クラスは、データの入出力やネットワーク機能、スレッド管理、セキュリティ管理などといった、.NETアプリケーションの基本的な機能を実現するためのクラス・ライブラリである。
データ/XMLクラスは、データベース操作機能やXMLデータの操作機能を提供する。データベース・アクセスを含んだ、.NET Frameworkにおけるデータ・アクセスのためのテクノロジはADO.NETと呼ばれる。
「XML Webサービス」「Webフォーム」「Windowsフォーム」は、それぞれWebサービス・プログラム向け、Webアプリケーション向け、Windowsアプリケーション向けのサービス・クラスである。
■ASP.NET
ASP.NETは、ダイナミックなWebコンテンツ開発を支援するために提供されていた従来のASP(Active
Service Pages)の.NET対応バージョンである。具体的には、HTMLやXMLの操作機能、SOAP対応機能など、WebサービスやWebアプリケーション開発を支援するさまざまな機能を提供するクラス・ライブラリを含めたプラットフォームである。これはマイクロソフトのWebサーバであるIIS(Internet
Information Services)とセットで機能する。なお、デスクトップ・アプリケーション(従来型のWindowsアプリケーション)開発ではASP.NETは不要である。
.NETアプリケーション開発環境を実現するVisual Studio .NET
前述した.NET Framework上で実行可能な.NETアプリケーションを開発するために用意された統合開発環境(IDE:Integrated Development Environment)がVisual Studio .NET(以下VS.NET)である。
VS.NETは、従来型のWindowsアプリケーションはもとより、WebサービスやWebアプリケーション開発についても、ソース・コード編集からグラフィカル・インターフェイス・デザイン、デバッグ作業までを完全な統合環境で行える。Webアプリケーション・サーバやコンポーネント・フレームワーク、プログラム開発環境がそれぞれ別のベンダによって提供されるJavaテクノロジ・ベースのWebソリューション開発では、ソフトウェアの開発プロセス全体を通して一貫した統合開発環境を利用するのは困難である。これに対し.NETは、よきにつけあしきにつけ、ベース・フレームワークからWebアプリケーション・サーバまで、すべてがマイクロソフトによって開発されたものであり、そのプログラム開発を支援するVS.NETでは、より統合性の高い、複数の開発工程にわたりシームレスな開発支援サービスを受けられる。そもそも、開発環境の機能性や使い勝手については、マイクロソフト製品は歴史的にも評価が高いところであり、純粋な開発環境の完成度としても、現存するいずれの開発環境にも勝るとも劣らないものである。
複数言語のシームレスな連携が可能
.NETの大きな特徴の1つは、複数の言語を組み合わせて柔軟なソフトウェア開発を行えることだ。これにより例えば、既存のソフトウェア資産の移行が容易になったり、プログラマがこれまでに培ってきた開発スキルを無駄にすることなく、新しいソフトウェア開発に生かすことができるようになる。
.NETにおける複数言語の統合レベルは非常に高い。プログラマが独自に作成したクラスを、ほかの言語で継承して利用することが普通にできる。同様に、.NET Frameworkで提供されるクラス・ライブラリは、特定の言語に依存していない。異なる複数の言語から、.NET Frameworkの各クラスを利用したプログラムを作成可能だ。従って未経験の新しい言語を使うことになっても、.NET Framework自体はまったく同じように使える。
VS.NETでは、標準で以下のプログラミング言語がサポートされる。VS.NETパッケージを用意すれば、これらの言語を組み合わせたソフトウェア開発が可能である(複数言語を統合したパッケージとは別に、各言語単独のパッケージもある)。
言語 | 特徴 |
Visual C# .NET | Microsoft .NETの普及推進を目指してマイクロソフトが新たに開発したオブジェクト指向言語。応用範囲や言語の特徴としては、Java言語との共通点も多い |
Visual Basic .NET | Visual Basic 6.0の後継となる言語処理系。言語仕様はVBに準拠するが、.NET Framework対応にあたり、完全なオブジェクト指向をサポートしている |
Visual C++ .NET | VC++の後継となる言語処理系。デバイス・ドライバ開発など、アンマネージ・コードを開発できるのはこのVC++.NETのみ |
JScript .NET | Java Script互換性のあるスクリプト言語。ECMA 262として公開されたスクリプト言語をベースに実装したもの。ASP.NETによるWebサイトの構築や、アプリケーションのカスタマイズが主な用途とされている |
これらマイクロソフトが標準サポートする言語以外にも、サードパーティの言語コンパイラ・ベンダが.NET Framework(VS.NET)対応行い、上記言語とまったく同等に利用可能な言語がある。例えば富士通は、VS.NETに対応したCOBOL言語として「NetCOBOL for .NET」を発売している(富士通のNetCOBOL for .NETの解説ページ)。これ以外にも、米国のベンダなどを中心として、さまざまな言語処理系の.NET Framework対応が進められている。
.NET Framework 1.1とVisual Studio .NET 2003
まもなく発表が予定されているWindowsサーバOSの新版、Windows Server 2003には、最新版の.NET Framework 1.1が搭載される(現行バージョンは1.0)。バージョン番号からも明らかなように、これはマイナー・バージョンアップであり、基本部分に大きな違いはない。.NET Framework 1.1では、PDAなどのモバイル・デバイスをサポートするASP.NETモバイル・コントロール対応(従来はMobile Internet Toolkitと呼ばれていたもの)、IPv6サポート、ADO.NETにおけるODBCネイティブ・サポートやOracleデータベース・サポートなどが追加される。
そしてこの.NET Framework 1.1に対応した開発環境として、既存のVS.NETはVS.NET 2003(開発コード名Everett)へとバージョンアップされる。マイクロソフトの説明によれば、既存のVS.NETユーザーは、無償でVS.NET 2003にバージョンアップできるとしている。このVS.NET 2003では、PDA向けのフレームワークである.NET Compact Frameworkサポート、マイクロソフトが開発したJava言語のVisual J# .NETサポートの追加、C++言語のISO標準準拠の強化、ビジネス利用を想定した各種機能強化を行うWebサービス最新仕様のWS-Security/WS-Routing/WS-Attachments対応のプログラム開発サポートなどが行われる模様である。米国では、Windows Server 2003と同時期(2003年4月)にVS.NET 2003も発表される予定だ。
■
以上、簡単ではあるが、Microsoft .NETの概要についてまとめてみた。これまでに説明してきたとおり、“Microsoft .NET”はWebサービスを利用したアプリケーション連携を核とするマイクロソフトの次世代戦略の名称であり、このビジョンを実際にWindows環境に実装したソフトウェア開発/実行フレームワークが.NET Frameworkである。そして.NET Framework対応のソフトウェア開発を支援する開発環境がVS.NETである。.NET Enterprise Servers製品群は、一部で.NET対応(.NET Framework対応やWebサービス対応)が行われているものの、こちらはまだ道半ばといった状態だ。.NET Frameworkを標準搭載するWindows Server 2003の登場以後、.NETにネイティブに対応した新世代のサーバ製品群が順次発表されることになるだろう。
INDEX | ||
[基礎解説] 初めてのMicrosoft .NET | ||
1.Microsoft .NETとは何か? | ||
2.Webサービスとは何か? | ||
3.開発プラットフォームとしての.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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|