.NET とは何ですか?

完了

.NET という用語が使用される場合、その意味はコンテキストによって大きく異なります。 このユニットでは、エコシステムとして見ることにより、.NET とは何かについて学習します。 言い換えると、.NET とはアプリケーションを構築するための強力な環境を作成する多くの部分とユーザーの集合体です。

.NET は、アプリケーション開発のためのエコシステムです

"エコシステム" という用語は、アプリケーション開発環境とそれを取り巻くコミュニティの複数の側面を表しています。 これらの側面が組み合わさり、.NET の学習と .NET アプリケーションの構築に力を注ぐことへの説得力のある理由が生まれます。

.NET の言語とコンパイラを使用して .NET ランタイムでアプリケーションを実行する

ソフトウェア開発者は、C# や F# などの .NET 言語を使用してソース コードを記述します。 記述するコードの各行により、プログラムの実行中にコンピューターによって実行される必要がある命令またはコマンドが表されます。

ソフトウェア開発者は、コードを実行する前にまず、そのコードをコンパイルする必要があります。 ".NET コンパイラ" は、サポートされる任意のプログラミング 言語のソース コードを "中間言語" (IL) と呼ばれる特殊な言語に変換するプログラムです。 .NET コンパイラによって、".NET アセンブリ" と呼ばれるファイルに IL コードが保存されます。 コードを中間形式にコンパイルすることにより、コードをどこで実行する場合でも (Windows または Linux のどちらでも、32 ビットまたは 64 ビットのどちらのコンピューター ハードウェアでも) 同じコード ベースを使用できます。

.NET ランタイム は、コンパイルされた .NET アセンブリの実行環境です。 つまり、.NET ランタイムは、ホスト オペレーティング システムで実行する際にアプリケーションを実行および管理します。 .NET ランタイムの動作の詳細については、この後、説明します。

幸いなことに、.NET を初めて使用するソフトウェア開発者であっても、これらのメカニズムがどのように動作するかを詳しく把握する必要はありません。 経験を積むと、.NET の言語、コンパイラ、ランタイムの基礎となる機能をより完全に理解して認識できるようになります。

ヒント

C# プログラミング言語は .NET であると考えている人もいます。 しかし、C# と .NET は別のものです。 C# はプログラミング言語の構文です。 構文の一部として、.NET コード ライブラリで定義されているメソッドまたは "アセンブリ" を参照して呼び出すことができます。 次に、.NET SDK と共にインストールされる C# コンパイラを使用して、C# のコードから .NET アセンブリを作成します。 .NET ランタイムによって .NET アセンブリが実行されます。 .NET と C# についてさらに学習していくうえで、これらの特徴は重要な概念です。

.NET アプリケーションのフレームワークとライブラリを使用して、事前に構築されている機能を利用する

すべてのソフトウェアは複数のレイヤーで構築されます。つまり、ソフトウェアはコンピューターのさまざまな抽象化レベルで実行されます。

  • 最も低いレベルで、ソフトウェアはコンピューターのハードウェアと直接通信します。 マザーボード、プロセッサ、メモリ、ハード ドライブ上のデータのフローを制御します。
  • 次のレベルのソフトウェアを使用すると、エンド ユーザーはオペレーティング システムを介して命令を出すことができます。
  • .NET などの次のレベルのソフトウェアを使用すると、アプリケーションを開発して実行できます。
  • 次のレベルでは、アプリケーション フレームワークと機能のライブラリを使用することにより、古い開発方法より少ない労力で、リッチなアプリケーションをすばやく作成できます。

コード ライブラリでは、特定の目的のための機能が 1 つのアセンブリにカプセル化されています。 .NET の場合、何千ものライブラリを利用できます。 これらのライブラリは、ファーストパーティでもサードパーティでもよく、商用でもオープンソースでもかまいません。 ライブラリによって提供される多彩な機能を、アプリケーションで使用できます。 それらのアセンブリを参照し、必要なメソッドを呼び出すだけで済みます。 このようにして、開発者は他のソフトウェア開発者の作業を利用できます。 すべての機能を自分で構築して保守する必要がないため、時間とエネルギーを節約できます。

アプリケーション フレームワークにより、複数の関連するライブラリと、スターター プロジェクト、ファイル テンプレート、コード ジェネレーター、その他のツールが組み合わされています。 開発者は、これらのリソースを使用し、特定の目的に合わせてアプリケーション全体を構築することができます。 これらのアプリケーション フレームワークは、"アプリ モデル" と呼ばれています。 たとえば、Web 開発、デスクトップとモバイルの開発、ゲーム開発などの人気のあるアプリ モデルで、.NET アプリケーション フレームワークを使用できます。

.NET SDK は、直接インストールすることも、Visual Studio 2022 をインストールすることによってインストールすることもできます。 .NET SDK により、"基本クラス ライブラリ" と呼ばれる、ライブラリとアプリケーション フレームワークの包括的なセットがプレインストールされます。 構築するプラットフォームまたはアプリ モデルに関係なく、このコードのライブラリをプログラムで使用できます。

他のサードパーティ製ライブラリの場合は、開発者は NuGet などのパッケージ マネージャーを使用して、NuGet ギャラリーなどのパッケージ リポジトリからコード ライブラリを見つけて統合します。

主要なアプリ モデル

どのフレームワークでどのアプリ モデルがサポートされるのか気になるかもしれません。 アプリ モデルと .NET Framework の対応については、次の表を参照してください。

アプリ モデル フレームワーク メモ
Web ASP.NET Core サーバー側ロジックを作成するためのフレームワーク。
Web ASP.NET Core MVC Web ページまたは Web API のサーバー側ロジックを作成するためのフレームワーク。
Web ASP.NET Core Razor Pages サーバーで生成される HTML を作成するためのフレームワーク。
Web クライアント Blazor Blazor は ASP.NET Core の一部です。 その 2 つのモードにより、サーバー側コードを実行するための通信手段としてのソケット、またはコンパイルされた C# をブラウザーで実行するための WebAssembly 実装を介して、ドキュメント オブジェクト モデル (DOM) の操作を使用できます。
デスクトップ .NET for Mac .NET 開発者は、ネイティブ UI と API アクセスを使って、Mac デバイス用のアプリを構築できます。
デスクトップ WinForms Windows で "battleship gray(鈍いグレー)" スタイルのアプリケーションを作成するためのフレームワーク。
デスクトップ Windows Presentation Foundation (WPF) さまざまなフォーム ファクターに準拠する動的デスクトップ アプリケーションを構築するためのフレームワーク。 WPF を使用すると、アニメーションの豊富なライブラリを利用して、フォーム要素で移動、フェード、グライド、その他の効果を実行できます。
モバイル .NET for Android .NET 開発者は、ネイティブ UI と API アクセスを使って、Android デバイス用のアプリを構築できます。
Mobile .NET for iOS .NET 開発者は、ネイティブ UI と API アクセスを使って、iOS と iPadOS 用のアプリを構築できます。
マルチプラットフォーム アプリの UI .NET MAUI ネイティブ UI とネイティブ API へのアクセスを使って、1 つの共有コード ベースから iOS、Android、Mac、Windows 用のアプリを構築するための優れた方法。

また、一般的なサードパーティやオープンソースのゲーム開発環境と、Unity のようなエンジンが、.NET で動作します。

.Net ツールを使用して .NET アプリを作成する

ソフトウェア開発者は、ツールを使用して、コードの記述、コード ライブラリへの参照の追加、コードのコンパイル、コードのデバッグを行います。 このセクションでは、.NET アプリケーションの構築に使用するいくつかの .NET ツールについて説明します。

Visual Studio 2022 は、Microsoft の主力開発環境です。 何百万もの開発者が、それを使用して .NET アプリケーションを構築しています。 グラフィカル ユーザー インターフェイス (メニュー、ウィンドウ、ビジュアル デザイナー、ダイアログ ボックス、ウィザードが含まれる) により、アプリケーション開発プロセスが開発者にガイドされます。 Visual Studio 2022 には、3 つのエディション (Community、Professional、および Enterprise) があります。 各エディションにはさまざまなツールが含まれており、さまざまな目的のライセンスがあります。

Visual Studio Code は、複数のプログラミング言語をサポートする Microsoft のフラグシップ コード エディターであり、Windows、Mac、Linux でサポートされています。 C# 開発キット拡張機能により、エディター ファーストの C# 開発が Visual Studio Code に導入され、ソリューション エクスプローラー、プロジェクト システム、テストの機能強化とエクスプローラー、AI 支援開発、およびコード ナビゲーション、リファクタリング、セマンティック認識などのクラス最高の C# 言語機能のための強力な言語サービスなどのサポートによって、.NET プロジェクトの作業のエクスペリエンスが強化されます。

コマンドライン ワークフローを好む開発者は、Visual Studio Code (世界中で幅広く使用されているコード エディター) と .NET コマンドライン インターフェイス (.NET CLI とも呼ばれます) を組み合わせて使用することができます。

さらに、多くの高度な .NET ユース ケースには、多数のファーストパーティおよびサードパーティのツールから選択できます。 オプションには、コード プロファイラー、単体テスト ランナー、コード カバレッジ アナライザーなどが含まれます。

他のシナリオには、他の .NET ツールを探すことができます。 たとえば、このモジュールの後半では、Try .NET を使用します。 このブラウザーベースのインターフェイスを使用して簡単なアプリケーションを記述し、C# プログラミング言語の学習に役立てることができます。

ドキュメントとチュートリアルで解決策と回答を見つける

Microsoft からは、豊富なドキュメント、チュートリアル、トレーニングのセットが頻繁に提供されています。 学習プロセスの各ステップに役立つ、人気のある形式の学習資料が見つかります。

次の表では、ブックマークを設定したり再訪したりしたくなるかもしれない、いくつかの優れたリソースを示します。

リソース 目的
Microsoft Learn クイックスタート チュートリアルと最も信頼できるリファレンス ドキュメントが提供されています。
パターンとプラクティス 開発者やソフトウェア アーキテクトが、一般的なアプリケーション開発ニーズのための解決策を見つけるのに役立ちます。 多くの場合、リソースでは、コードを記述するための低レベルの詳細だけでなく、一見無限に拡張可能なアーキテクチャを実現できる製品とサービスの選択まで掘り下げられています。
.NET のビデオ .NET チームからビデオ チュートリアルが提供されています。 これらのビデオを見て、開発者は一般的な使用シナリオを理解できます。
C# で作業を開始する 手順、演習、メディア、知識チェック、進捗を追跡する手段の組み合わせにより、スキルを高めるためのハンズオン ラボが提供されます。

.NET コミュニティとやり取りして、ソリューションを学習および共有する

.NET エコシステムは、言語、ライブラリ、ツールを超えて開発者にまで広がっています。 コミュニティから学ぶのも、貢献するのも自由です。

  • 学習する: .NET コミュニティのメンバーにより、ライブ オンライン イベントやオフライン ミーティングが催されています。 オープンソース ソフトウェアの開発、Q&A フォーラムへの参加、ビデオ チュートリアルの録画が行われています。 本の執筆やブログの投稿が行われており、これらは学習に役立ち、次に何をすればよいかわからない場合の指針になります。
  • 貢献する: .NET は GitHub 上のオープンソースです。 このリポジトリ内のプロジェクトは、.NET Foundation によって管理されています。 この独立した組織は、.NET 開発プラットフォームを中心として、信頼性のある、商用に対応したオープンソースのエコシステムを発展させることだけを目的としています。 このリポジトリで独自の視点や考えを共有して、他の開発者の学習に役立てることができます。

.NET エコシステムと他のものの比較

ソフトウェア開発の世界一般に馴染みがある場合、.NET エコシステムは他のものと比較するとどのように評価されるのだろうと思われているかもしれません。 率直に言って、他のエコシステムについても、このユニットでこれまでに説明したことの一部または多くが当てはまります。

ただし、.NET 独自の最大の特徴の 1 つは、継続的な開発とサポートが、主要なテクノロジ リーダーだけでなく、コミュニティによってももたらされることです。 .NET の重要な部分は、オープンソースの手段によって開発されました。 コミュニティへの投稿と貢献はどちらも歓迎され、推奨されています。 実際、投稿者の 87 パーセントは Microsoft の外部の開発者です。 Microsoft は、コミュニティからの入力に基づいて、機能の強化、バグの修正、パフォーマンスの向上によってプラットフォームを積極的に推し進めています。 コミュニティから 100,000 を超える pull request が受け入れられました。

さらに、.NET エコシステムには勢いがあります。

  • .NET 開発者の数は 500 万人を超えています。
  • Stack Overflow のアンケートの結果では、最も好まれるフレームワークは常に .NET Core と .NET です。
  • 学生は .NET を気に入っています。 .NET を初めて使用する開発者の 40% は学生です。
  • .NET と ASP.NET の GitHub リポジトリは、最も変化が速いオープンソース ソフトウェア (OSS) プロジェクトのトップ 30 にランクされています。
  • GitHub では C# がプログラミング言語のトップ 5 にリストされており、2020 TIOBE プログラミング コミュニティ インデックスによると、この言語の人気はますます高まっています。
  • 多数の言語とアプリケーション フレームワークを測定する独立したオープン ソースの Web パフォーマンス ベンチマークのセットである TechEmpower ベンチマークによると、.NET は、地球上で最も高速な Web フレームワークを備えています。

.NET の簡単な歴史

最初の .NET Framework は、2002 年の初めに初回リリースされました。 その後、多くの更新とさらに多くの機能が追加されています。 何年にもわたって拡張拡張と新機能が導入され、最初の .NET Framework (特に主要なコード ライブラリ) は大幅に拡大されています。

2002 年以降、Microsoft により、.NET のバージョンがクロスプラットフォームの互換性を持つようにする作業が行われました。 目標は、開発者が 1 つのコード ベースを記述して、それを macOS、Linux、Windows の各オペレーティング システムで使用できるようにすることでした。

これらの取り組みにより、2014 年頃に .NET Core が導入されました。 Microsoft は最初の .NET Framework を維持していましたが、新機能と機能強化の対象は .NET Core です。 その後、名前から Core が削除されました。 次のメジャー バージョンは、.NET 5、.NET 6、.NET 7、.NET 8 などです。 バージョンは、一般に 11 月にリリースされます。

.NET の履歴に言及することにはどのような価値があるのでしょう。 それは、元の .NET Framework を対象とするブログ記事、動画、ソース コードが見つかるためです。 説明やコードを引き続き使用できることもありますが、場合によっては、新しい .NET に適合するように調整を行う必要があります。