コンテンツにスキップ

.NET/要素技術

出典: フリー教科書『ウィキブックス(Wikibooks)』

.NET(旧.NET Core)の要素技術

[編集]

.NET(旧.NET Core)は、モダンなアプリケーション開発のためのクロスプラットフォーム対応フレームワークであり、その技術基盤には以下のような主要な要素技術が含まれています。

共通言語ランタイム (Common Language Runtime, CLR)

[編集]

.NETの実行基盤となるランタイムであり、プログラムの実行、ガベージコレクション(メモリ管理)、例外処理、スレッド管理などの基本的な機能を提供します。.NET Coreでは、特に性能最適化が行われ、LinuxやmacOSを含むマルチプラットフォーム対応が強化されました。

中間言語 (Intermediate Language, IL)

[編集]

.NETアプリケーションは、C#やF#などの高水準言語で記述され、コンパイル時にILに変換されます。ILは、JIT(Just-In-Time)コンパイラによって、ターゲットプラットフォームのネイティブコードに変換され、実行されます。

.NET ランタイム (CoreCLR と CoreRT)

[編集]
  • CoreCLR
    .NET Coreの標準ランタイムで、ガベージコレクション、スレッド管理、JITコンパイルを担います。軽量で柔軟な設計が特徴です。
  • CoreRT
    ネイティブAOT(Ahead-Of-Time)コンパイルを実現するためのランタイムで、アプリケーションのスタートアップ時間を短縮し、メモリ使用量を削減します。

.NET 標準ライブラリ

[編集]

標準化されたAPIセットであり、文字列操作、ファイルI/O、ネットワーク通信、セキュリティ機能など、アプリケーション開発における基本的な機能を提供します。.NET Coreや.NET Framework、Xamarinなど、複数の.NET実装間での互換性を保証します。

C#

[編集]

C#は、.NET環境で最も広く使用される言語であり、オブジェクト指向プログラミング(OOP)をベースにしています。C#の特徴には以下の点があります:

  • 豊富な標準ライブラリ:C#は、.NET Frameworkおよび.NET Coreに統合された豊富なライブラリにアクセスできます。
  • 非同期プログラミングasync/await構文を使用することで、非同期プログラミングが容易になり、I/O操作やユーザーインターフェースの処理が効率的に行えます。
  • 型安全性:静的型付けを行い、コンパイル時にエラーを検出できるため、堅牢なコードが書けます。
  • クロスプラットフォーム対応:C#は、.NET Coreを通じてWindows、Linux、macOSで動作します。

F#

[編集]

F#は、.NET向けの関数型プログラミング言語です。F#は、数学的な計算、データ解析、関数型プログラミングに特化しており、以下の特徴があります:

  • 関数型プログラミング:F#は、関数型プログラミングのパラダイムを中心に設計されています。関数を第一級のオブジェクトとして扱い、状態管理を最小限に抑えることで、より予測可能で安全なコードを記述できます。
  • 不変データ型:データが不変(immutable)であるため、スレッドセーフでバグが少ないコードを書くことができます。
  • パターンマッチング:強力なパターンマッチング機能により、複雑なデータ構造を直感的に処理できます。
  • クロスプラットフォーム対応:F#は、.NET Core環境で動作し、C#と同様にWindows、Linux、macOSで実行できます。

VB.NET

[編集]

VB.NETは、.NET環境で使用されるオブジェクト指向プログラミング言語で、Visual Basicを基にしています。主な特徴は以下の通りです:

  • オブジェクト指向:クラスや継承など、完全なオブジェクト指向をサポート。
  • 簡潔な構文:直感的でプログラミング初心者に優しい。
  • GUI開発:WindowsフォームやWPFによるGUIアプリケーション開発が容易。
  • .NET統合:.NET Frameworkや.NET Coreと統合されている。

メンテナンスモード

[編集]

VB.NETは新機能の追加が凍結され、メンテナンスモードに移行しました。今後は主に既存システムの保守に使われ、新規開発にはC#が推奨されています。

ASP.NET Core

[編集]

ASP.NET Coreは、クロスプラットフォーム対応のWebアプリケーションフレームワークで、次の特徴を持ちます。

  • パフォーマンスの最適化:Kestrelという軽量なWebサーバーを採用。
  • モジュール性:必要な機能だけを取り込む軽量な構成。
  • クラウド統合:AzureやAWSなどのクラウドプラットフォームと連携可能。
  • Blazor:C#を使ったフロントエンドWebアプリケーションの開発。

Entity Framework Core (EF Core)

[編集]

データベースアクセスのためのO/Rマッパー(Object-Relational Mapper)。リレーショナルデータベースやNoSQLデータベースと連携可能で、以下の特徴を持ちます。

  • LINQを使用した直感的なデータ操作。
  • 複数のデータベースプロバイダーに対応(SQL Server、MySQL、PostgreSQLなど)。
  • マイグレーション機能によるスキーマ管理。

マルチプラットフォーム対応

[編集]

.NET Coreは、Windows、Linux、macOSで動作します。また、Dockerコンテナ内での実行も可能であり、クラウドネイティブアプリケーションの開発に適しています。

CLI (Command-Line Interface)

[編集]

.NET Coreでは、クロスプラットフォーム対応のコマンドラインツールを提供します。以下の操作が可能です。

  • プロジェクトの作成 (dotnet new)
  • ビルド (dotnet build)
  • 実行 (dotnet run)
  • パッケージ管理 (dotnet add package)

NuGet パッケージ管理

[編集]

NuGetは、.NET用のパッケージ管理システムです。.NET Coreでは、外部ライブラリやツールを簡単にプロジェクトに統合できます。

グローバルツールとローカルツール

[編集]
  • グローバルツール:システム全体で利用できるCLIツール。
  • ローカルツール:特定のプロジェクト環境内でのみ動作するツール。

AIと機械学習の統合

[編集]
  • ML.NET: 機械学習モデルを.NETアプリケーションに組み込むためのフレームワーク。
  • System.Numerics.Tensors: AIや科学計算向けのテンソル操作を提供。

拡張性とオープンソース

[編集]

.NET CoreはオープンソースとしてGitHubで公開されており、開発者コミュニティが積極的に開発に貢献しています。また、拡張性が高く、カスタムミドルウェアやライブラリの開発が容易です。

これらの要素技術により、.NET Core(現在の.NET)はモダンで効率的、かつ柔軟なアプリケーション開発を支えるプラットフォームとして進化を続けています。