はじめに
この記事は.NETに関する内容をまとめたものです。
私はよくゲームエンジンであるUnityを扱っています。Unityを扱う中で、C#について深くを調べていくと「.NET」という単語をよく見かけるようになりました。そこで、.NETという単語がどのような意味なのか、C#、Unityでのプログラミングにどのような役割を果たすのかを調べ、まとめました。
今後、Unityに絡めた内容で新たな記事を作成したいと考えています。(予定は未定)
この記事単独でも読めるように書きましたが、そのような背景があることを念頭に置いていただけますと幸いです。
記事を分けた理由
主に.NETとつく言葉が
- .NET
- .NET Core
- .NET Framework
とたくさんあって紛らわしいことから「そもそも違いはなんだろう?」と思い、調べた。すると、構成的にも長さ的にも元記事に書くのが難しかったので独立した記事として書いた。
ざっくりとわかったこと
.NETとはMicrosoftの考えた理念のことで、その理念を実現するためのフレームワークとして以下のようなものがあるということ
- .NET Framework
- .NET Core
- Xamarin
- .NET Standard
- .NET 5(2020年11月リリース予定)
それぞれ
.NET Framework → Windowsアプリケーション向け
.NET Core → サーバーサイドをはじめとするクロスプラットフォーム向け
Xamarin → モバイル、OS Xアプリケーション向け
.NET Standard → 上記全ての.NETフレームワークに共通のライブラリ
.NET 5 → 上記全部をまとめて一つで扱えるようになる(つまり、この記事は無意味w)
と言った感じ
そもそも.NETとは何か?
Microsoftが2000年に構想したMicrosoft.NETという概念(今でいうIoT)を実現するための開発プラットフォーム。
しかし、この意味ではほとんど死語で、現在では以下で説明する。NET Frameworkの略語として使われることがほとんど。
なので、調べるときは.NETFrameworkと調べた方が良い。
ただし、この記事ではあえて.NETと. NET Frameworkは区別する。
(そもそも私がこの記事を書く中で初めて知ったように、何も知らない人にとってみればその方が分かりやすいと考えたため)
.NET関連のフレームワークの共通点
.NET関連のフレームワークには共通点がいくつもある。
巨大すぎて全てを把握するのはとても困難だが、一つだけ重要なことを挙げるとすると
中間言語を生成して、その中間言語をコンパイルする仕組みを持つ
ということだ。
これは以下のような仕組みで成り立つ
- ソースコードから中間言語(Common Intermedia Language, CILと略される)を生成
- CILをコンパイルする
この仕組みを 共通言語ランタイム(CLR) という。
ソースコードには C#、F#、Visual Basic などを用いる。
この仕組みのおかげで例えばC#とF#で書かれたプログラムは原理上同じものとして協働させることができる。
ちなみにCLRを実現するための実装は各フレームワークごとに異なっている模様。
.NET Framework
前述の.NET構想のうち、特にWindows向けアプリケーションを実行するためのCLRと便利なライブラリを提供するフレームワークのこと。
Windowsでしか動かない(ここ重要)
逆にWindows開発するなら使うことになる。
Windows用のAPIなども簡単に使うことができる。
.NET Core
主にサーバーサイドやコマンドラインツールなどを開発するためのフレームワーク。クロスプラットフォームなこと、オープンソースであることなどが特徴。GUI開発には向いてない?
Xamarin
スマートフォン開発を中心にクロスプラットフォームなGUIアプリケーションをするためのフレームワーク。
関連用語にMonoというものがある。
なぜ、Xamarinだけ.NETとついていないのか?
元々はXamarinという別の企業が開発していたものだから。
現在はMicrosoftが買収している。
MonoとXamarin
Monoは元々OSSとして.NET互換を目的として登場した。その後、Monoを含む様々な機能をパッケージしたフレームワークとしてXamarinという名前になった。
参考
[.NET Framework の概要 | Microsoft Docs]
(https://docs.microsoft.com/ja-jp/dotnet/framework/get-started/)
.NET Core の概要.NET Core introduction - Microsoft Docs
→これのページに飛ぶとタイトルが.NETの概要となっているのが最高に紛らわしい
[Xamarin とは - Xamarin | Microsoft Docs]
(https://docs.microsoft.com/ja-jp/xamarin/get-started/what-is-xamarin)
[知ってるようでしらない!.NETとは | アトオシ]
(https://itpropartners.com/blog/8439/)
[.NET Framework / .NET Standard / .NET Core とは何か?]
(https://blog.hiros-dot.net/?p=9086)
[.NET とか Mono とか Xamarin とかいったい何? Microsoftのプロダクト?]
(http://hatappo.hatenadiary.jp/entry/2016/06/29/224930)
[.NET Core / .NET Framework / Xamarin / Monoの関係を整理する]
(https://ascii.jp/elem/000/001/156/1156721/)