.NET Frameworkとは?3つの構成要素や覚えておきたい用語も紹介

- システム
エンジニア - そもそも.NETFrameworkとはどういうものなのですか。
- プロジェクト
マネージャー - 共通言語ランタイム、基本クラスライブラリ、フレームワークの3つの要素で成り立っています。
.NET Frameworkとは?
.NET Frameworkとはマイクロソフトがリリースしている開発環境のことで、正式名称は「Microsoft .NET Framework」です。
主にWindowsのアプリケーションやWebサービスの開発に利用されており、Windows7以降のコンピュータにはデフォルトで搭載されています。
.NET Frameworkの歴史
.NET Frameworkはマイクロソフトの「大規模ネットワークサービス構築のためにあらゆる電子機器とインターネットを接続する」という構想を実現するために開発されたものです。
この構想実現のために「Visual Studio .NET」と呼ばれるツールが開発され、それをもとに現在の.NET Frameworkは生まれました。
.NET Frameworkの3つの構成要素
.NET Frameworkとは大きく分けて3つの要素によって構成されています。ここでは.NET Frameworkの3つの構成要素について紹介していきますので、ぜひ参考にしてみてください。
1:共通言語ランタイム(CLR:Common Language Runtime)
.NET Frameworkでは、様々な言語を使って開発をすることができます。そして、それを可能にしているのが、共通言語ランタイム(CTR)という機能です。
共通言語ランタイム(CTR)とは、いわば.NETアプリケーションを実行するためのエンジン機能のようなものと考えて良いでしょう。
.NET Frameworkでは、人が書いたプログラムを一度「共通中間言語(CIL)」に変換し、その中間言語を解釈してプログラムを実行します。その仕組みが共通言語ランタイムです。
2:基本クラスライブラリ(BCL:Base Class Library)
クラスライブラリは、汎用性の高いプログラムを使い回しできるように、クラスとしてまとめたものです。分かりやすい例を挙げるとすれば、文字列を扱う「Stringクラス」。簡単な記述で呼び出せるようになっており、実は基本クラスライブラリが提供している機能なのです。
他にも多数のクラスライブラリが用意されているため、初心者が気づかないところで、開発効率を格段に高めてくれています。
3:フレームワーク
クラスライブラリと異なり、処理の流れが実装されているものがフレームワークです。
.NET Framework自体がWebアプリケーションフレームワークとなっており、Webアプリケーションとして機能する枠組みを提供しています。
.NET Frameworkでできることとは?
.NET FrameworkはWindowsと相性が良いことから、Windowsで動作するシステムやWebサービスなどの開発で用いられることが多いです。特に業務システムの開発現場では.NET Frameworkが用いられているケースが少なくないでしょう。
覚えておきたい.NET Frameworkの基本用語
ここでは、.NET Frameworkで頻繁に使用される用語について、エンジニアが知っておくべきものを中心に紹介します。
◆アセンブリ
アプリケーション、または他のアセンブリから呼び出せるAPIコレクションを含む「.dll/.exe」ファイル。
インターフェース・クラス・構造体・列挙型・デリゲートなどの種類も含むことができます。
◆CLR/CoreCLR
CLRは、前述したとおり共通言語ランタイムのことです。OSや機種に依存しない共通中間言語をコンパイルして、プログラムを実行します。
CoreCLRとは、.NET CoreのCLRです。CoreCLRは次に解説するガベージコレクタ・JITコンパイラ・プリミティブな型/クラスライブラリから成り立っています。
◆ガベージ コレクタ
プログラムが動的に確保したメモリ領域を、自動的に開放する機能のことをガーベジコレクションと呼びます。そのガーベジコレクション行う主体をガベージコレクタと呼び、タスクやスレッドとして実装されるケースが多くなっています。
◆JIT/AOT
JIT・AOTのどちらもコンパイルの方式です。
JITは実行時コンパイラ(Just-In-Time)、AOTは事前コンパイラ(Ahead-Of-Time)と呼ばれています。
JITはアプリケーションの実行時にコンパイルを行い、AOTはアプリケーションが実行される前にコンパイルを行います。
いずれも共通中間言語(IL)を機械語(マシンコード)に変換するコンパイラです。
◆UWP
UWPは、ユニバーサルWindowsプラットフォームの略称です。Windows10から実装された、多様なデバイス上で動作するアプリケーションを、単一のフレームワークに統合する仕組みになっています。
また、ユニバーサルというだけあって、ほとんどのWindows10のデバイスで動作させることができます。タッチ操作対応も簡単です。
◆ランタイム
プログラムの実行環境です。OSもランタイム環境の1つですが、.NETランタイムとは異なります。.NETランタイムは下記のものが挙げられます。
・共通言語ランタイム(CLR)
・Core 共通言語ランタイム (CoreCLR)
・.NET Native (UWP の場合)
・Mono ランタイム
また、.NETのドキュメントでは「ランタイム」は「実装」の意味で使われることがあります。
◆スタック
スタックとは、「後出し先入れ(LIFO:Last In First Out)」と呼ばれるコレクションのことです。「積み重ね」とも呼ばれており、入れたものが入れた順番と逆に出てくるコレクションと言えば分かりやすいかもしれません。
アプリケーションの構築・実行に使われる、プログラミングテクノロジーのセットとして覚えておきましょう。
◆IL
「中間言語」のことです。
.NET Frameworkでは、プログラムの実行にあたり、様々な言語で書かれたプログラムを一度中間言語に翻訳します。中間言語に翻訳した後、機械語にコンパイルしてプログラムが実行されるのです。中間言語を挟むことで、特定の言語に縛られない開発が可能となっています。
.NET Framework以外の3つの「.NET」
一般的に「.NET」は.NET Frameworkを指すケースが多いですが、他にも「.NET」とつくものはあります。ここでは最後に、.NET Framework以外の3つの「.NET」についてご紹介します。
1:VB.NET
「VB.NET」は.NET Frameworkの環境下に置かれるようになった「Visual Basic」のことです。もともとVBは.NETに対応していませんでしたが、2002年に新しくバージョンアップして.NET Frameworkで動作するようになったVBのことをVB.NETと呼びます。
2:ASP.NET
「ASP.NET」の「ASP」とは「Active Server Pages」の略で、マイクロソフトが提供しているWebサービスやWebアプリケーション開発に特化した機能を提供するフレームワークです。
3:C#.NET
「C#.NET」とはC#を使用したコンパイラです。C#はマイクロソフトが開発したプログラミング言語で、.NET Framework上での使用を想定して設計されており、さまざまなプログラミング言語の中でも長い歴史を持ちます。
- システム
エンジニア - Windowsでは.NET Frameworkは必須のアイテムですね。
- プロジェクト
マネージャー - .NET Frameworkの構成要素や基本用語をしっかり学んで理解するようにしましょう。
.NET Frameworkとは何か理解を深めよう
ぜひ本記事でご紹介した.NET Frameworkの歴史や構成要素、.NET Frameworkでできることなどを参考に、.NET Frameworkについて理解を深めてみてはいかがでしょうか。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)