.NET の概要Introduction to .NET

.NET は、次のようなさまざまな種類のアプリをビルドするための無料のオープンソース開発プラットフォームです。.NET is a free, open-source development platform for building many kinds of apps, such as:

クラス ライブラリを使用して、異なるアプリとアプリの種類の間で機能を共有します。Share functionality among different apps and app types by using class libraries.

.NET を使用すると、ビルドするアプリの種類に関係なく、コードおよびプロジェクト ファイルの外観が同じになります。With .NET, your code and project files look and feel the same no matter which type of app you're building. 各アプリで同じランタイム、API、および言語の機能にアクセスできます。You have access to the same runtime, API, and language capabilities with each app.

クロス プラットフォームCross platform

次のような多くのオペレーティング システム用の .NET アプリを作成できます。You can create .NET apps for many operating systems, including:

  • WindowsWindows
  • macOSmacOS
  • LinuxLinux
  • AndroidAndroid
  • iOSiOS
  • tvOStvOS
  • watchOSwatchOS

サポートされているプロセッサ アーキテクチャは次のとおりです。Supported processor architectures include:

  • X64x64
  • x86x86
  • ARM32ARM32
  • ARM64ARM64

.NET の場合、オペレーティング システム API などのプラットフォーム固有の機能を使用することができます。.NET lets you use platform-specific capabilities, such as operating system APIs. 例として、Windows 上の Windows フォームと WPF、および Xamarin からの各モバイル プラットフォームへのネイティブ バインドがあります。Examples are Windows Forms and WPF on Windows and the native bindings to each mobile platform from Xamarin.

詳細については、サポートされている OS ライフサイクル ポリシー.NET RID カタログに関するページを参照してください。For more information, see Supported OS lifecycle policy and .NET RID Catalog.

オープン ソースOpen source

.NET はオープン ソースであり、MIT および Apache 2 ライセンスを使用します。.NET is open source, using MIT and Apache 2 licenses. .NET は .NET Foundation のプロジェクトです。.NET is a project of the .NET Foundation.

詳細については、GitHub.com のプロジェクト リポジトリの一覧を参照してください。For more information, see the list of project repositories on GitHub.com.


.NET は、Windows、macOS、および Linux 上で Microsoft によってサポートされています。.NET is supported by Microsoft on Windows, macOS, and Linux. セキュリティと品質に関する更新は、毎月第 2 火曜日に定期的に行われます。It's updated regularly for security and quality, on the second Tuesday of each month.

Microsoft からの .NET のバイナリ配布は、Azure 内の Microsoft が管理するサーバーでビルドされてテストされ、Microsoft のエンジニアリングおよびセキュリティ プラクティスに従っています。.NET binary distributions from Microsoft are built and tested on Microsoft-maintained servers in Azure and follow Microsoft engineering and security practices.

Red Hat Enterprise Linux (RHEL) 上の .NET は Red Hat によってサポートされています。Red Hat supports .NET on Red Hat Enterprise Linux (RHEL). Red Hat とマイクロソフトが共同して、.NET Core が RHEL 上で適切に動作するようにします。Red Hat and Microsoft collaborate to ensure that .NET Core works well on RHEL.

Tizen プラットフォーム上の .NET は Tizen によってサポートされています。Tizen supports .NET on Tizen platforms.

詳細については、「.NET Core および .NET 5 のリリースとサポート」を参照してください。For more information, see Releases and support for .NET Core and .NET 5.

ツールと生産性Tools and productivity

.NET を使用すると、言語、統合開発環境 (IDE)、およびその他のツールを選択できます。.NET gives you a choice of languages, integrated development environments (IDEs), and other tools.

プログラミング言語Programming languages

.NET によって、次の 3 つのプログラミング言語がサポートされます。.NET supports three programming languages:

  • C#C#

    C# ("シー シャープ" と読みます) は、最新のタイプ セーフなオブジェクト指向のプログラミング言語です。C# (pronounced "See Sharp") is a modern, object-oriented, and type-safe programming language. C# は C 言語ファミリーをルーツとしているため、C、C++、Java、JavaScript のプログラマーであればすぐに使いこなすことができます。C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.

  • F#F#

    F# 言語は、関数型、オブジェクト指向、および命令型のプログラミング モデルをサポートします。The F# language supports functional, object-oriented, and imperative programming models.

  • Visual BasicVisual Basic

    .NET 言語の中で Visual Basic の構文は通常の人間の言語に最も近いため、より簡単に習得できます。Among the .NET languages, the syntax of Visual Basic is the closest to ordinary human language, which can make it easier to learn. Microsoft が新機能を積極的に開発している C# や F# とは異なり、Visual Basic 言語は安定しています。Unlike C# and F#, for which Microsoft is actively developing new features, the Visual Basic language is stable. Visual Basic は Web アプリではサポートされていませんが、Web API ではサポートされています。Visual Basic isn't supported for web apps, but it is supported for web APIs.

.NET 言語でサポートされる機能をいくつか以下に示します。Here are some of the capabilities that .NET languages support:


.NET 用の統合開発環境には、次のようなものがあります。The integrated development environments for .NET include:

  • Visual StudioVisual Studio

    Windows でのみ実行されます。Runs on Windows only. .NET で動作するように設計された豊富な機能が組み込まれています。Has extensive built-in functionality designed to work with .NET. Community Edition は無料であり、学生、オープンソースの共同作成者、および個人向けです。The Community edition is free for students, open-source contributors, and individuals.

  • Visual Studio CodeVisual Studio Code

    Windows、macOS、Linux 上で実行される。Runs on Windows, macOS, and Linux. 無料かつオープン ソース。Free and open source. 拡張機能は、.NET 言語での作業に使用できます。Extensions are available for working with .NET languages.

  • Visual Studio for MacVisual Studio for Mac

    macOS でのみ実行されます。Runs on macOS only. iOS、Android、および Web 用の .NET アプリとゲームを開発するためのものです。For developing .NET apps and games for iOS, Android, and web.

  • GitHub CodespacesGitHub Codespaces

    オンラインの Visual Studio Code 環境 (現在はベータ版)。An online Visual Studio Code environment, currently in beta.

SDK とランタイムSDK and runtimes

.NET SDK は、.NET アプリケーションを開発および実行するためのライブラリとツールのセットです。The .NET SDK is a set of libraries and tools for developing and running .NET applications.

.NET をダウンロードするときに、.NET ランタイムや ASP.NET Core ランタイムなどの、SDK または "ランタイム" を選択できます。When you download .NET, you can choose the SDK or a runtime, such as the .NET runtime or the ASP.NET Core runtime. .NET アプリを実行するために準備するコンピューター上にランタイムをインストールします。Install a runtime on a machine that you want to prepare for running .NET apps. 開発に使用するコンピューター上に SDK をインストールします。Install the SDK on a machine that you want to use for development. SDK をダウンロードすると、それと共にランタイムを自動的に取得することになります。When you download the SDK, you automatically get the runtimes with it.

SDK のダウンロードには次のコンポーネントが含まれます。The SDK download includes the following components:

  • .NET CLIThe .NET CLI. ローカル開発および継続的インテグレーション スクリプトに使用できるコマンドライン ツール。Command-line tools that you can use for local development and continuous integration scripts.
  • dotnet ドライバーThe dotnet driver. フレームワーク依存アプリを実行する CLI コマンド。A CLI command that runs framework-dependent apps.
  • Roslyn および F# プログラミング言語コンパイラ。The Roslyn and F# programming language compilers.
  • MSBuild ビルド エンジン。The MSBuild build engine.
  • .NET ランタイムThe .NET runtime. 型システム、アセンブリ読み込み、ガベージ コレクター、ネイティブ相互運用機能、およびその他の基本的なサービスを提供します。Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • ランタイム ライブラリRuntime libraries. プリミティブ データ型および基本的なユーティリティを提供します。Provides primitive data types and fundamental utilities.
  • ASP.NET Core ランタイム。The ASP.NET Core runtime. Web アプリ、IoT アプリ、モバイル バックエンドなど、インターネットに接続されたアプリ用の基本的なサービスを提供します。Provides basic services for internet-connected apps, such as web apps, IoT apps, and mobile backends.
  • デスクトップ ランタイム。The desktop runtime. Windows フォームや WPF など、Windows デスクトップ アプリ用の基本的なサービスを提供します。Provides basic services for Windows desktop apps, including Windows Forms and WPF.

ランタイムのダウンロードには、次のコンポーネントが含まれます。The runtime download includes the following components:

  • (省略可能) デスクトップまたは ASP.NET Core ランタイム。Optionally, the desktop or ASP.NET Core runtime.
  • .NET ランタイムThe .NET runtime. 型システム、アセンブリ読み込み、ガベージ コレクター、ネイティブ相互運用機能、およびその他の基本的なサービスを提供します。Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • ランタイム ライブラリRuntime libraries. プリミティブ データ型および基本的なユーティリティを提供します。Provides primitive data types and fundamental utilities.
  • dotnet ドライバーThe dotnet driver. フレームワーク依存アプリを実行する CLI コマンド。A CLI command that runs framework-dependent apps.

詳細については、次のリソースを参照してください。For more information, see the following resources:

プロジェクト システムと MSBuildProject system and MSBuild

.NET アプリは、MSBuild を使用してソース コードからビルドされます。A .NET app is built from source code by using MSBuild. プロジェクト ファイル ( .csproj.fsproj、または .vbproj) により、ターゲットと、コードのコンパイル、パッキング、公開を行う関連 タスクが指定されます。A project file (.csproj, .fsproj, or .vbproj) specifies targets and associated tasks that are responsible for compiling, packing, and publishing code. ターゲットとタスクの標準コレクションを参照する SDK 識別子があります。There are SDK identifiers that refer to standard collections of targets and tasks. これらの識別子を使用すると、プロジェクト ファイルのサイズを小さく保つのに役立ち、操作しやすくなります。The use of these identifiers helps keep project files small and easy to work with. たとえば、次のようなコンソール アプリのプロジェクト ファイルです。For example, here is a project file for a console app:

<Project Sdk="Microsoft.NET.Sdk">

Web アプリの場合は次のようになります。And here's one for a web app:

<Project Sdk="Microsoft.NET.Sdk.Web">

これらの例では、Project 要素の Sdk 属性によって、プロジェクトをビルドする一連の MSBuild ターゲットとタスクが指定されます。In these examples, the Sdk attribute of the Project element specifies a set of MSBuild targets and tasks that build the project. TargetFramework 要素によって、アプリが依存する .NET のバージョンが指定されます。The TargetFramework element specifies the .NET version that the app depends on. プロジェクト ファイルを編集して、プロジェクトに固有のターゲットとタスクをさらに追加することができます。You can edit the project file to add additional targets and tasks specific to the project.

詳細については、.NET プロジェクト SDK の概要 に関するページと、ターゲット フレームワークに関するページを参照してください。For more information, see .NET project SDK overview and Target frameworks.


MSBuild と .NET CLI は、次のようなさまざまな継続的インテグレーション ツールと環境で使用できます。MSBuild and the .NET CLI can be used with various continuous integration tools and environments, such as:

詳細については、継続的インテグレーション (CI) での .NET SDK とツールの使用に関するページを参照してくださいFor more information, see Using .NET SDK and tools in Continuous Integration (CI)


NuGet は、.NET 用に設計されたオープンソースのパッケージ マネージャーです。NuGet is an open-source package manager designed for .NET. NuGet パッケージは、拡張子が .nupkg.zip ファイルであり、コンパイル済みのコード (DLL)、そのコードに関連する他のファイル、パッケージのバージョン番号などの情報が記述されているマニフェストが含まれます。A NuGet package is a .zip file with the .nupkg extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package's version number. 開発者はコードを共有して、パッケージを作成し、それらを nuget.org またはパブリック ホストに公開します。Developers with code to share create packages and publish them to nuget.org or a private host. 共有コードを使用する開発者はプロジェクトにパッケージを追加し、その後、プロジェクト コードでパッケージによって公開される API を呼び出すことができます。Developers who want to use shared code add a package to their project and can then call the API exposed by the package in their project code.

詳細については、NuGet に関するドキュメントを参照してください。For more information, see NuGet documentation.

.NET インタラクティブ.NET Interactive

.NET Interactive は、ユーザーが Web、マークダウン、ノートブック全体の対話型エクスペリエンスを作成できるようにする CLI ツールと API のグループです。.NET Interactive is a group of CLI tools and APIs that enable users to create interactive experiences across the web, markdown, and notebooks.

詳細については、次のリソースを参照してください。For more information, see the following resources:

実行モデルExecution models

共通言語ランタイム (CLR) と呼ばれるランタイム環境では、.NET アプリによってマネージド コードが実行されます。.NET apps run managed code in a runtime environment known as the Common Language Runtime (CLR).


.NET CLR は、Windows、macOS、Linux のサポートを含むクロスプラットフォーム ランタイムです。The .NET CLR is a cross-platform runtime that includes support for Windows, macOS, and Linux. CLR は、メモリの割り当てと管理を行います。The CLR handles memory allocation and management. CLR は、アプリの実行だけでなく、Just-In-Time (JIT) コンパイラを使用してコードを生成してコンパイルする仮想マシンでもあります。The CLR is also a virtual machine that not only executes apps but also generates and compiles code using a just-in-time (JIT) compiler.

詳細については、「共通言語ランタイム (CLR) の概要」を参照してください。For more information, see Common Language Runtime (CLR) overview.

JIT コンパイラと ILJIT compiler and IL

C# などの高レベル .NET 言語は、中間言語 (IL) と呼ばれるハードウェアに依存しない命令セットにコンパイルされます。Higher-level .NET languages, such as C#, compile down to a hardware-agnostic instruction set, which is called Intermediate Language (IL). アプリを実行すると、JIT コンパイラにより、プロセッサで認識されるマシン コードに IL が変換されます。When an app runs, the JIT compiler translates IL to machine code that the processor understands. JIT コンパイルは、コードが実行されるのと同じマシン上で行われます。JIT compilation happens on the same machine that the code is going to run on.

JIT コンパイルはアプリケーションの実行中に行われるため、コンパイル時間は実行時間の一部になります。Since JIT compilation occurs during execution of the application, the compilation time is part of the run time. したがって、JIT コンパイラを使用して、コードの最適化に要する時間と、結果のコードによって得られる時間の節約のバランスを取る必要があります。Therefore, JIT compilers have to balance time spent optimizing code against the savings that the resulting code can produce. しかし、JIT コンパイラによって実際のハードウェアが認識されるため、開発者は異なるプラットフォームに対して異なる実装を提供する必要がなくなります。But a JIT compiler knows the actual hardware and can free developers from having to ship different implementations for different platforms.

.NET JIT コンパイラを使用すると、"階層型コンパイル" を実行できます。これは、実行時に個々のメソッドを再コンパイルできることを意味します。The .NET JIT compiler can do tiered compilation, which means it can recompile individual methods at run time. この機能を使用すると、すぐにコンパイルできると同時に、頻繁に使用されるメソッドに対して高度に調整されたバージョンのコードを引き続き生成できます。This feature lets it compile quickly while still being able to produce a highly tuned version of the code for frequently used methods.

詳細については、「マネージド実行プロセス」と「階層型コンパイル」を参照してください。For more information, see Managed execution process and Tiered compilation.

AOT コンパイラAOT compiler

ほとんどの .NET ワークロードの既定のエクスペリエンスは JIT コンパイラですが、.NET により、次の 2 つの形式の Ahead-Of-Time (AOT) コンパイルが提供されます。The default experience for most .NET workloads is the JIT compiler, but .NET offers two forms of ahead-of-time (AOT) compilation:

  • 一部のシナリオでは、100% の AOT コンパイルが必要です。Some scenarios require 100% AOT compilation. 例として、iOS があります。An example is iOS.
  • その他のシナリオでは、ほとんどのアプリのコードは AOT コンパイルされますが、一部は JIT コンパイルされます。In other scenarios, most of an app's code is AOT-compiled but some is JIT-compiled. 一部のコード パターンは AOT には適していません (ジェネリックなど)。Some code patterns aren't friendly to AOT (like generics). この形式の AOT コンパイルの例として、ready-to-run publish オプションがあります。An example of this form of AOT compilation is the ready-to-run publish option. この形式の AOT により、欠点のない AOT の利点が提供されます。This form of AOT offers the benefits of AOT without its drawbacks.

自動メモリ管理Automatic memory management

"ガベージ コレクター" (GC) によって、アプリケーションのメモリの割り当てと解放が管理されます。The garbage collector (GC) manages the allocation and release of memory for applications. コードで新しいオブジェクトが作成されるたびに、CLR によって、マネージド ヒープからオブジェクトにメモリが割り当てられます。Each time your code creates a new object, the CLR allocates memory for the object from the managed heap. マネージド ヒープに使用可能なアドレス空間がある限り、ランタイムは新しいオブジェクト用に領域の割り当てを続けます。As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. 十分な空きアドレス空間が残っていない場合、GC により、アプリケーションで使用されなくなったマネージド ヒープ内のオブジェクトが確認されます。When not enough free address space remains, the GC checks for objects in the managed heap that are no longer being used by the application. その後、そのメモリが再利用されます。It then reclaims that memory.

GC は、"メモリの安全性" の確保に役立つ CLR サービスの 1 つです。The GC is one of the CLR services that help ensure memory safety. 割り当てられているメモリのみにプログラムがアクセスする場合、そのプログラムはメモリ セーフです。A program is memory safe if it accesses only allocated memory. たとえば、ランタイムでは、配列の範囲を超えた割り当てられていないメモリにアプリがアクセスしていないことを確認します。For instance, the runtime ensures that an app doesn't access unallocated memory beyond the bounds of an array.

詳細については、「自動メモリ管理」と「ガベージ コレクションの基礎」を参照してください。For more information, see Automatic memory management and Fundamentals of garbage collection.

アンマネージ リソースの操作Working with unmanaged resources

コードで "アンマネージ リソース" を参照する必要がある場合があります。Sometimes code needs to reference unmanaged resources. アンマネージ リソースは、.NET ランタイムで自動的に維持されないリソースです。Unmanaged resources are resources that aren't automatically maintained by the .NET runtime. たとえば、ファイル ハンドルは、アンマネージ リソースです。For example, a file handle is an unmanaged resource. FileStream オブジェクトはマネージ オブジェクトですが、アンマネージドのファイル ハンドルを参照します。A FileStream object is a managed object, but it references a file handle, which is unmanaged. FileStream の使用が終わったら、ファイル ハンドルを明示的に解放する必要があります。When you're done using the FileStream, you need to explicitly release the file handle.

.NET では、アンマネージ リソースを参照するオブジェクトは IDisposable インターフェイスを実装します。In .NET, objects that reference unmanaged resources implement the IDisposable interface. オブジェクトの使用が終わったら、すべてのアンマネージ リソースを解放する、オブジェクトの Dispose() メソッドを呼び出します。When you're done using the object, you call the object's Dispose() method, which is responsible for releasing any unmanaged resources. .NET 言語によって、便利な using ステートメント (C#F#VB) が提供されます。これにより、Dispose メソッドが確実に呼び出されます。The .NET languages provide a convenient using statement (C#, F#, VB) that ensures the Dispose method is called.

詳細については、「アンマネージ リソースのクリーンアップ」を参照してください。For more information, see Cleaning up unmanaged resources.

デプロイ モデルDeployment models

.NET アプリは、次の 2 つの異なるモードで公開できます。.NET apps can be published in two different modes:

  • アプリを "自己完結型" として公開すると、.NET ランタイムライブラリ、およびアプリケーションとその依存関係を含む実行可能ファイルが生成されます。Publishing an app as self-contained produces an executable file that includes the .NET runtime and libraries, and the application and its dependencies. そのアプリケーションのユーザーは、.NET ランタイムがインストールされていないコンピューター上でそれを実行することができます。Users of the application can run it on a machine that doesn't have the .NET runtime installed. 自己完結型アプリはプラットフォーム固有であり、必要に応じて、AOT コンパイルの形式を使用して公開できます。Self-contained apps are platform-specific, and they can optionally be published using a form of AOT compilation.

  • アプリを "フレームワーク依存" として公開すると、アプリケーション自体とその依存関係のみを含む実行可能ファイルとバイナリ ファイル ( .dll ファイル) が生成されます。Publishing an app as framework-dependent produces an executable file and binary files (.dll files) that include only the application itself and its dependencies. そのアプリケーションのユーザーは、.NET ランタイムを個別にインストールする必要があります。Users of the application have to separately install the .NET runtime. 実行可能ファイルはプラットフォーム固有ですが、フレームワークに依存するアプリケーションの .dll ファイルはクロスプラットフォームです。The executable file is platform-specific, but the .dll files of framework-dependent applications are cross-platform.

    複数のバージョンのランタイムを並行してインストールし、異なるバージョンのランタイムをターゲットとするフレームワーク依存アプリを実行することができます。You can install multiple versions of the runtime side by side to run framework-dependent apps that target different versions of the runtime. 詳細については、ターゲット フレームワークに関するページを参照してください。For more information, see Target frameworks.

実行可能ファイルは、ランタイム識別子 (RID) で指定する特定のターゲット プラットフォームに対して生成されます。Executables are produced for specific target platforms, which you specify with a runtime identifier (RID).

詳細については、.NET アプリケーションの公開の概要に関するページと「.NET および Docker の概要」を参照してください。For more information, see .NET application publishing overview and Introduction to .NET and Docker.

ランタイム ライブラリRuntime libraries

.NET には、ランタイム ライブラリフレームワーク ライブラリ、または基本クラス ライブラリ (BCL) と呼ばれるクラス ライブラリの広範な標準セットが用意されています。.NET has an expansive standard set of class libraries, known as runtime libraries, framework libraries, or the base class library (BCL). これらのライブラリによって、多くの汎用およびワークロード固有の型とユーティリティ機能の実装が提供されます。These libraries provide implementations for many general-purpose and workload-specific types and utility functionality.

.NET ランタイム ライブラリで定義されている型の例をいくつか以下に示します。Here are some examples of types defined in the .NET runtime libraries:

詳細については、「ランタイム ライブラリの概要」を参照してください。For more information, see the Runtime libraries overview. ライブラリのソース コードは GitHub の dotnet/runtime リポジトリにあります。The source code for the libraries is in the GitHub dotnet/runtime repository.

ランタイム ライブラリの拡張機能Extensions to the runtime libraries

一般的に使用される一部のアプリケーション機能のライブラリは、ランタイム ライブラリには含まれませんが、次のような NuGet パッケージで使用できます。Libraries for some commonly used application functionality aren't included in the runtime libraries but are made available in NuGet packages, such as the following:

NuGet パッケージNuGet package ドキュメントDocumentation
Microsoft.Extensions.HostingMicrosoft.Extensions.Hosting アプリケーションの有効期間の管理 (汎用ホスト)Application lifetime management (Generic Host)
Microsoft.Extensions.DependencyInjectionMicrosoft.Extensions.DependencyInjection 依存関係の挿入 (DI)Dependency injection (DI)
Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration ConfigurationConfiguration
Microsoft.Extensions.LoggingMicrosoft.Extensions.Logging LoggingLogging
Microsoft.Extensions.OptionsMicrosoft.Extensions.Options オプションのパターンOptions pattern

詳細については、GitHub の dotnet/extensions リポジトリを参照してください。For more information, see the dotnet/extensions repository on GitHub.

データ アクセスData access

.NET によって、オブジェクト リレーショナル マッパー (ORM) と、コードで SQL クエリを記述する方法が提供されます。.NET provides an Object/Relational Mapper (ORM) and a way to write SQL queries in code.

Entity Framework CoreEntity Framework Core

Entity Framework (EF) Core は、オープン ソースのクロスプラットフォーム データアクセス テクノロジであり、ORM として使用できます。Entity Framework (EF) Core is an open source and cross-platform data-access technology that can serve as an ORM. EF Core を使用すると、コードで .NET オブジェクトを参照してデータベースを操作できます。EF Core lets you work with a database by referring to .NET objects in code. これにより、書き込みとテストに必要なデータアクセス コードの量が減ります。It reduces the amount of data-access code you would otherwise need to write and test. EF Core では多くのデータベース エンジンがサポートされます。EF Core supports many database engines.

詳細については、「Entity Framework Core」と「データベース プロバイダー」を参照してください。For more information, see Entity Framework Core and Database Providers.


統合言語クエリ (LINQ) を使用すると、データを操作するための宣言型コードを記述できます。Language-integrated query (LINQ) lets you write declarative code for operating on data. データは (メモリ内オブジェクト、SQL データベース、XML ドキュメントなどの) さまざまな形式にすることができますが、記述する LINQ コードは通常、どのデータ ソースでも違いがないように見えます。The data can be in many forms (such as in-memory objects, a SQL database, or an XML document), but the LINQ code you write typically doesn't differ by data source.

詳細については、LINQ (統合言語クエリ) の概要に関するページを参照してください。For more information, see LINQ (Language Integrated Query) overview.

.NET の用語.NET terminology

時間の経過と共に一部の用語の使用法がどのように変わったかを知っておくと、.NET に関するドキュメントを理解するのに役立ちます。To understand .NET documentation, it can help to know how the usage of some terms has changed over time.

.NET Core と .NET 5.NET Core and .NET 5

2002 年に、Microsoft によって、Windows アプリを作成するための開発プラットフォームである .NET Framework がリリースされました。In 2002, Microsoft released .NET Framework, a development platform for creating Windows apps. 現在、.NET Framework はバージョン 4.8 であり、引き続き Microsoft によってサポートされます。Today .NET Framework is at version 4.8 and is still supported by Microsoft.

2014 年に、Microsoft によって、.NET Framework のクロスプラットフォームのオープンソースの後継版の作成が開始されました。In 2014, Microsoft began writing a cross-platform, open-source successor to .NET Framework. この .NET の新しい実装には、バージョン 3.1 に達するまで .NET Core という名前が付けられていました。This new implementation of .NET was named .NET Core until it reached version 3.1. .NET Core 3.1 以降の次のバージョンは .NET 5.0 であり、現在プレビュー段階です。The next version after .NET Core 3.1 is .NET 5.0, which is currently in preview. この .NET の実装と .NET Framework 4.8 間の混乱を避けるため、バージョン番号 4 はスキップされました。Version number 4 was skipped to avoid confusion between this implementation of .NET and .NET Framework 4.8. "Core" という名前は、これが現在、.NET の主な実装であることを明確にするために削除されました。The name "Core" was dropped to make clear that this is now the main implementation of .NET.

この記事は .NET 5 に関するものですが、.NET 5 のドキュメントの多くにはまだ ".NET Core" や ".NET Framework" への参照があります。This article is about .NET 5, but much of the documentation for .NET 5 still has references to ".NET Core" or ".NET Framework". さらに、"Core" は ASP.NET CoreEntity Framework Core という名前に残されています。In addition, "Core" remains in the names ASP.NET Core and Entity Framework Core.

ドキュメントで .NET Standard も参照されています。The documentation also refers to .NET Standard. .NET Standard は、.NET の複数の実装用のクラス ライブラリを開発できる API 仕様です。.NET Standard is an API specification that lets you develop class libraries for multiple implementations of .NET.

詳細については、「.NET アーキテクチャ コンポーネント」を参照してください。For more information, see .NET architectural components.

オーバーロードされた用語Overloaded terms

.NET の用語の一部は混乱を招く可能性があります。これは、異なるコンテキストで同じ単語が異なる方法で使用されるためです。Some of the terminology for .NET can be confusing because the same word is used in different ways in different contexts. より顕著な例をいくつか以下に示します。Here are a few of the more prominent instances:

  • ランタイムruntime

    ContextContext "ランタイム" の意味"runtime" meaning
    共通言語ランタイム (CLR)Common Language Runtime (CLR) マネージド プログラムの実行環境。The execution environment for a managed program. OS は、ランタイム環境の一部ですが、.NET ランタイムの一部ではありません。The OS is part of the runtime environment but isn't part of the .NET runtime.
    .NET のダウンロード ページの .NET ランタイム.NET runtime on the .NET download page CLR およびランタイム ライブラリ。これらは組み合わせて使用され、フレームワーク依存アプリを実行するためのサポートが提供されます。The CLR and runtime libraries, which together provide support for running framework-dependent apps. このページには、ASP.NET Core サーバー アプリと Windows デスクトップ アプリのランタイムの選択肢が示されます。The page also offers runtime choices for ASP.NET Core server apps and Windows desktop apps.
    ランタイム識別子 (RID)Runtime Identifier (RID) .NET アプリが実行される OS プラットフォームおよび CPU アーキテクチャ。The OS platform and CPU architecture that a .NET app runs on. 次に例を示します。Windows x64、Linux x64。For example: Windows x64, Linux x64.
  • フレームワークframework

    ContextContext "フレームワーク" の意味"framework" meaning
    .NET Framework.NET Framework .NET の元の Windows のみの実装。The original, Windows-only implementation of .NET. "Framework" の頭文字は大文字です。"Framework" is capitalized.
    ターゲット フレームワークtarget framework .NET アプリまたはライブラリが依存する API のコレクション。The collection of APIs that a .NET app or library relies on. 例: .NET Core 3.1、.NET Standard 2.0Examples: .NET Core 3.1, .NET Standard 2.0
    ターゲット フレームワーク モニカー (TFM)Target Framework Moniker (TFM) TFM は、.NET アプリまたはライブラリのターゲット フレームワークを指定するための標準化されたトークン形式です。A TFM is a standardized token format for specifying the target framework of a .NET app or library. 例: .NET Framework 4.6.2 の net462Example: net462 for .NET Framework 4.6.2.
    フレームワークに依存するアプリframework-dependent app .NET のダウンロード ページからランタイムをインストールしたコンピューター上でのみ実行できるアプリ。An app that can only run on a machine where you've installed the runtime from the .NET download page. この使用法の "フレームワーク" は、.NET のダウンロード ページからダウンロードする "ランタイム" と同じものです。"Framework" in this usage is the same thing as the "runtime" that you download from the .NET download page.
    フレームワーク ライブラリframework libraries ランタイム ライブラリのシノニムとして使用されることがあります。Sometimes used as a synonym for runtime libraries.

    ContextContext "SDK" の意味"SDK" meaning
    .NET のダウンロード ページの SDKSDK on the .NET download page .NET アプリを開発して実行するためにダウンロードしてインストールするツールとライブラリのコレクション。A collection of tools and libraries that you download and install to develop and run .NET apps. CLI、MSBuild、.NET ランタイム、およびその他のコンポーネントが含まれています。Includes the CLI, MSBuild, the .NET runtime, and other components.
    SDK スタイルのプロジェクトSDK-style project 特定の種類のアプリのプロジェクトをビルドする方法を指定する、一連の MSBuild ターゲットとタスク。A set of MSBuild targets and tasks that specifies how to build a project for a particular app type. この意味での SDK は、プロジェクト ファイル内の Project 要素の Sdk 属性を使用して指定されます。The SDK in this sense is specified by using the Sdk attribute of the Project element in a project file.
  • platformplatform

    ContextContext "プラットフォーム" の意味"platform" meaning
    クロス プラットフォームcross platform この用語での "プラットフォーム" は、オペレーティング システムとそれが動作するハードウェア (Windows、macOS、Linux、iOS、Android) を意味します。In this term, "platform" means an operating system and the hardware it runs on, such as Windows, macOS, Linux, iOS, and Android.
    .NET プラットフォーム.NET platform 使用法はさまざまです。Usage varies. .NET の 1 つの実装 (.NET Framework や .NET 5 など)、またはすべての実装を含む .NET の包括的な概念を指す場合があります。The reference may be to one implementation of .NET (such as .NET Framework or .NET 5) or to an overarching concept of .NET including all implementations.

.NET の用語の詳細については、「.NET 用語集」を参照してください。For more information about .NET terminology, see the .NET glossary.

高度なシナリオAdvanced scenarios

以下のセクションでは、高度なシナリオで役立つ .NET のいくつかの機能について説明します。The following sections explain some capabilities of .NET that are useful in advanced scenarios.

ネイティブ相互運用Native interop

どのオペレーティング システムにも、システム サービスを提供するアプリケーション プログラミング インターフェイス (API) が含まれています。Every operating system includes an application programming interface (API) that provides system services. .NET には、その API を呼び出すためのいくつかの方法が用意されています。.NET provides several ways to call those APIs.

ネイティブ API と相互運用する主な方法は、"プラットフォーム呼び出し" (略して P/Invoke) を使用するものです。The main way to interoperate with native APIs is via "platform invoke" or P/Invoke for short. P/Invoke は、Linux および Windows プラットフォーム全体でサポートされています。P/Invoke is supported across Linux and Windows platforms. Windows 限定で相互運用を行う方法は "COM 相互運用" と呼ばれます。これは、マネージド コードで COM コンポーネントを操作する場合です。A Windows-only way of interoperating is known as "COM interop," which works with COM components in managed code. これは、P/Invoke インフラストラクチャ上に構築されますが、動作は少し異なります。It's built on top of the P/Invoke infrastructure, but it works in subtly different ways.

詳細については、「ネイティブ相互運用性」を参照してください。For more information, see Native interoperability.

アンセーフ コードUnsafe code

言語サポートに応じて、CLR の unsafe コードによって、ネイティブ メモリにアクセスしたりポインターの算術演算を実行したりできるようになります。Depending on language support, the CLR lets you access native memory and do pointer arithmetic via unsafe code. この操作は、特定のアルゴリズムおよびシステム相互運用性のために必要です。These operations are needed for certain algorithms and system interoperability. アンセーフ コードの使用は強力ですが、システム API との相互運用を行ったり、最も効率的なアルゴリズムを実装したりする必要がなければ、推奨されません。Although powerful, use of unsafe code is discouraged unless it's necessary to interoperate with system APIs or implement the most efficient algorithm. アンセーフ コードは、環境が異なると同じように実行されない可能性があり、さらにガベージ コレクターとタイプ セーフの利点が得られない場合があります。Unsafe code may not execute the same way in different environments and also loses the benefits of a garbage collector and type safety. 可能な限りアンセーフ コードのみに制限し、そのコードを徹底的にテストすることをお勧めします。It's recommended to confine and centralize unsafe code as much as possible and test that code thoroughly.

詳細については、アンセーフ コードとポインターに関するページを参照してください。For more information, see Unsafe code and pointers.

次のステップNext steps