.NET Framework とは?歴史やできることを解説
マイクロソフトの戦略から生まれた.NET Frameworkは多くのWindows向けアプリケーションやWEBアプリケーションの開発に利用されています。本記事では、.NETフレームワークを構成する共通言語ランタイム(CLR)や基本クラスライブラリ(BCL)などの要素を詳しくご紹介するとともにフレームワークの特徴や利用できるプログラミング言語、開発に至った経緯などをご紹介します。
-
Contents
.NET Framework とは
.NET Frameworkは、マイクロソフトが開発したソフトウェア開発環境の名称です。
主にWindowsやWindowsサーバーで動作するWEBサービスを開発するために利用されています。
従来のC++を用いた開発手法に比べ開発しやすく、学習しやすいためWindows向けアプリケーションやWEBサービスの開発に多数利用されています。
現在のWindowsパソコンには最初から.NET Frameworkの実行環境(ランタイム)が搭載されているため、.NET Frameworkで開発されたアプリケーションをすぐに実行できます。
-
.NETとの違い
.NETは略称ではなく、Windows・macOS・Linuxで動作するオープンソース版の.NET Frameworkです。
元はWindows環境向けにつくられた.NET Frameworkでしたが、マイクロソフトがオープンソース化や権利関係の整理に取り組んだ結果.NET FrameworkからWindows環境に依存した部分などを除いて「.NET」が誕生しました。
2019年4月にリリースされたバージョン4.8でクローズドソース版.NET Frameworkの開発は終了し(サポートは継続)、今後はオープンソース化された.NETがあとを引き継ぐ形です。
Windows以外のOSを利用している場合は、無料で.NETの環境をダウンロードし、.NETのアプリケーション開発・実行ができます。例えばmacOSで開発した.NETのアプリケーションをWindowsやLinuxでも実行できます。
また、.NET Frameworkと比べ軽量で実行速度が速い点も.NETの特徴となっています。
-
.NET Frameworkの歴史
マイクロソフトは.NET戦略を打ち立てた1990年代後半から「Next Generation Windows Services(NGWS)」という名称(コードネーム)でのちに.NET Frameworkとなるソフトウェアを開発してきました。
2000年に同社の戦略に基づき最初のバージョン.NET 1.0ベータ版を公開し、2002年にバージョン1.0が正式リリースとなりました。
当時のマイクロソフトの戦略は、インターネットや企業のサーバーにあるサービスとユーザーが利用するさまざまな機器の双方で動作するソフトウェアのプラットフォームを作り、インターネットを通じたサービスの開発・利用をしやすくすることでした。
必要な関連技術を開発し、インテルと共同で技術を標準化する取り組みをおこなった結果、.NETを構成する言語や実行環境のいくつかは標準規格となり、のちにマイクロソフト以外の個人や企業が独自に.NETの開発環境を作ったり別のOSで動作する道を開きました。
-
.NET フレームワークの特徴
マイクロソフトは一つの言語にとらわれず、実行環境もWindowsに限定されないようにフレームワークを設計しました。
プログラミング言語は多数ありますが、現在.NETで利用できる言語は20以上となっており主なものとしてC#、Visual Basic(VB.NET)、F#が挙げられ、C++言語を組み合わせることもできます。
プログラマーの経験やプロジェクトに応じて自由に言語を選んで開発でき、今までのC言語、Visual Basic、Fortranなどの経験を活かして学習コストを下げられるためプログラミング経験者にとっても習得しやすい環境となっています。
-
.NET Frameworkでできること
.NET Frameworkでは、主に二つの環境向けのアプリケーションを作成できます。
- Windowsパソコンで動作するデスクトップアプリケーションの開発
- Windowsサーバーで動作するWEBアプリケーション・WEBサービスの作成
-
.NET Frameworkの構成要素
.NET Frameworkはいくつもの要素技術から構成されています。
- ・クロスプラットフォームの動作を実現する、共通言語ランタイム(CLR)
- ・言語を超え利用できる、基本クラスライブラリ(BCL)
- ・アプリケーションの骨組みとして使える、フレームワーク(FW)
詳しく見ていきましょう。
-
共通言語ランタイム(CLR)
ピクトグラムといえば、非常口を示す、扉に人が駆け込むようなマークや、トイレを示す、男女が隣り合わせになっているマークなどを思い浮かべる方が多いのではないでしょうか。いまとなっては日常的に目にするものですが、元々はオリンピック開催時に来日中の外国の方が日本語を読めなくても絵で伝わる共通言語として標識用にデザインしたものです。
ランタイムは、名前のとおり、実行時に必要なソフトウェアです。.NET用のアプリケーションはランタイムが読み取って実行します。
いったんピクトグラムのような伝達用の形(共通中間言語、CIL)に変換しておくことで、C#やVB.NETなど元々の言語は違っても、共通言語ランタイム(Common Language Runtime、CLR)がプログラムを実行できます。
Java言語のJava仮想マシン(Java Virtual Machine、JVM)と似た存在です。
-
基本クラスライブラリ(BCL)
クラスライブラリとは、あらかじめ用意されたコードのコレクションです。救急箱の中に、包帯や湿布、胃腸薬などがそろっているのと似ています。
こうしたクラスライブラリは注意深く設計されており、例えばファイルを読み書きする、画像を作成する、インターネットと通信する、データベースに接続するなど特定のタスクに使えるよう整備されており、プログラマーは一からすべてをプログラミングせずにクラスライブラリを組み合わせて一般的なタスクを実現できます。
世の中のいろいろなプログラミング言語では、言語ごとに異なるクラスライブラリを備えているため言語が違うと、同じ処理内容でもキーワードや使い方が変わってきます。
基本クラスライブラリ(Base Class Library、BCL)もクラスライブラリとしてプログラミングに必要な数値・文字・日付などの基本的なデータを表現でき、データに対するいろいろなアクションもあらかじめ定義されています。
具体的に「文字列の最初の2文字を取り出す」タスクを例に見てみましょう。従来の言語では
- .NET以前のVBではhello = “hello .NET” : L2 = Left(hello, 2)のようにLeft関数を使いました。
- C言語ではchar *hello = “hello .NET”; strncpy(l2, hello, 2);のようにstrncpy関数を使います。
言語により関数の名前が異なり、括弧の中のパラメータの並びや意味も違います。
一方基本クラスライブラリ(BCL)では、言語に関係なく使用できる文字列のアクションを定義しているため
- VB.NETではDim hello As String = “hello .NET” : Dim l2 As String = hello.Substring(0, 2)
- C#では String hello = “hello .NET”; String l2 = hello.Substring(0, 2);
前半部分は言語の違いがありますが、末尾のSubstringを使用している部分は同じ形です。
基本クラスライブラリ(BCL)によりプログラミング言語に依存せず、共通化されたクラスライブラリを利用できるためプログラマーは基礎となるパーツの学習が容易になります。
-
フレームワーク(FW)
フレームワーク(Framework、FW)はクラスライブラリと似ていますが、より具体的で特定用途に向けたツールやライブラリ、利用上のルールなどをまとめたアプリケーションのひな形・骨組みです。
例えば、WEBアプリケーションを開発するためのフレームワークとしてASP.NETがあります。
WEBアプリケーションの開発に必要となる共通の部分はASP.NETが備えているため、プログラマーは個々のアプリケーションに応じた部分のみに集中できます。
また、ASP.NETのように利用者が多いフレームワークを採用するとプログラマー同士が共通認識を持ちやすく、大規模プロジェクトで協力するために使用できます。
まとめ
.NET Frameworkを見てきました
- Windows開発を簡易にするための開発環境として作られました。現在では他のOSで動くアプリも開発でき後継となる「.NET」も登場しています。
- 主にデスクトップアプリケーション、Webアプリケーションの開発に利用できます。
- C#・Visual Basicほか、数十の言語を選べ、言語に関係なく共通の基本クラスライブラリ(BCL)が使えるため習得しやすくなっています。
Windowsで動くアプリケーションやWebサービスの開発を検討されている方は.NET Frameworkの利用を検討してはいかがでしょうか。