diff --git a/docs/standard/clr.md b/docs/standard/clr.md index 96f6c0e6afc..6ac33899ae5 100644 --- a/docs/standard/clr.md +++ b/docs/standard/clr.md @@ -1,76 +1,96 @@ --- -title: "共通言語ランタイム (CLR)" -description: "共通言語ランタイム (CLR)" -keywords: .NET, .NET Core -author: rpetrusha -ms.author: ronpet -ms.date: 06/20/2016 -ms.topic: article +title: "共通言語ランタイム (CLR) | Microsoft Docs" +ms.custom: +ms.date: 03/30/2017 ms.prod: .net +ms.reviewer: +ms.suite: ms.technology: dotnet-standard -ms.devlang: dotnet -ms.assetid: 7704d9c9-e5fa-4969-a423-081cce0e21e6 -translationtype: Human Translation -ms.sourcegitcommit: 90fe68f7f3c4b46502b5d3770b1a2d57c6af748a -ms.openlocfilehash: b789ed861a5df583162f901c1c5bc765c55f7b30 -ms.lasthandoff: 03/02/2017 - ---- +ms.tgt_pltfrm: +ms.topic: article +helpviewer_keywords: +- compiling source code, runtime functionality +- code, execution +- managed data +- runtime +- common language runtime +- metadata, runtime functionality +- .NET Framework, common language runtime +- language compilers +- managed code +- source code execution +- code, runtime functionality +ms.assetid: 059a624e-f7db-4134-ba9f-08b676050482 +caps.latest.revision: 24 +author: rpetrusha +ms.author: ronpet +manager: wpickett +ms.translationtype: Machine Translation +ms.sourcegitcommit: 9f5b8ebb69c9206ff90b05e748c64d29d82f7a16 +ms.openlocfilehash: 69b30d2e6d3b92e33d6bc827fa1a8de6298e6a1f +ms.contentlocale: ja-jp +ms.lasthandoff: 05/11/2017 +--- # 共通言語ランタイム (CLR) - -.NET Framework には、共通言語ランタイムと呼ばれるランタイム環境が用意されています。共通言語ランタイムは、コードを実行し、開発プロセスを支援するサービスを提供します。 - -コンパイラとツールにより、共通言語ランタイムの機能が公開されることによって、このマネージ実行環境の利点を活用するコードを記述できるようになります。 このような共通言語ランタイムに対応した言語コンパイラを使用して作成したコードはマネージ コードと呼ばれます。マネージ コードは、言語間の統合、言語間の例外処理、強化されたセキュリティ、バージョン管理と配置のサポート、コンポーネント間の対話の簡易モデル、デバッグ サービスとプロファイル サービスなど、さまざまな機能を利用できます。 - +.NET Framework には、共通言語ランタイムと呼ばれるランタイム環境が用意されています。共通言語ランタイムは、コードを実行し、開発プロセスを支援するサービスを提供します。 + + コンパイラとツールにより、共通言語ランタイムの機能が公開されることによって、このマネージ実行環境の利点を活用するコードを記述できるようになります。 このような共通言語ランタイムに対応した言語コンパイラを使用して作成したコードはマネージ コードと呼ばれます。マネージ コードは、言語間の統合、言語間の例外処理、強化されたセキュリティ、バージョン管理と配置のサポート、コンポーネント間の対話の簡易モデル、デバッグ サービスとプロファイル サービスなど、さまざまな機能を利用できます。 + > [!NOTE] -> 型システム、メタデータの書式、およびランタイム環境 (仮想実行システム) はすべて公的な標準規格の ECMA 共通言語基盤仕様により定義されているため、コンパイラおよびツールは共通言語ランタイムが使用できる出力を生成できます。 詳細については、「[ECMA C# and Common Language Infrastructure Specifications (ECMA C# および共通言語基盤の仕様)](https://www.visualstudio.com/en-us/mt639507)」を参照してください。 - -マネージ コードが共通言語ランタイムからサービスを受けられるようにするために、言語コンパイラは、そのコード内の型、メンバー、および参照を記述したメタデータを生成する必要があります。 メタデータはコード内に格納されます。つまり、共通言語ランタイムの読み込み可能なすべてのポータブル実行可能 (PE) ファイルには、メタデータが含まれていることになります。 共通言語ランタイムは、クラスの検索と読み込み、メモリ内でのインスタンスのレイアウト、メソッドの呼び出しの解決、ネイティブ コードの生成、セキュリティの強化、およびランタイムのコンテキスト境界の設定にメタデータを使用します。 - -共通言語ランタイムはオブジェクトのレイアウトを自動的に処理し、それらのオブジェクトへの参照を管理し、不要になったオブジェクトを解放します。 このような方法で有効期間を管理されるオブジェクトをマネージ データと呼びます。 ガベージ コレクションによって、一般的なプログラミング エラーだけでなくメモリ リークもなくなります。 コードがマネージ コードの場合、作成する .NET Framework アプリケーションではマネージ データ、アンマネージ データ、またはマネージ データとアンマネージ データの両方を使用できます。 プリミティブ型などのデータ型は言語コンパイラが独自に提供しているため、データがマネージ データかどうかが不明な (または把握する必要がない) 場合もあります。 - -共通言語ランタイムでは、複数の言語間で対話できるオブジェクトを含むコンポーネントやアプリケーションを簡単にデザインできます。 異なる言語で記述されたオブジェクトが相互に対話でき、それらのオブジェクトの動作が緊密に統合されます。 たとえば、あるクラスを定義してから、そのクラスの派生クラスを別の言語で作成したり、そのクラスに対して別の言語で記述したメソッドを呼び出したりできます。 また、あるクラスのインスタンスを別の言語で記述されたクラスのメソッドに渡すこともできます。 このような言語間の統合を実現できるのは、共通言語ランタイムに対応した言語コンパイラとツールが、共通言語ランタイムによって定義されている共通型システムを採用し、型の作成、使用、永続化、型へのバインディング、および新しい型の定義に関する共通言語ランタイムの規則に従っているためです。 - -すべてのマネージ コンポーネントは、関連するコンポーネントとリソースについての情報をメタデータの一部として保持しています。 共通言語ランタイムはこの情報を使用して、作成したコンポーネントまたはアプリケーションが必要とする特定バージョンのコンポーネントやリソースがあることを確認します。これにより、不明な依存関係によってコードが中断される確率が低くなります。 定義した型 (およびその依存関係) に関する情報はコードと共にメタデータとして保存されます。これによって、コンポーネントのレプリケーションと削除のタスクがより簡単に実行できるようになります。 - -言語コンパイラおよびツールは、開発者にとってわかりやすく役に立つ方法で共通言語ランタイムの機能を公開します。 つまり、ある環境では重視されている共通言語ランタイムの機能が、別の環境ではそれほど重視されていないという場合もあります。 共通言語ランタイムがどのような利点をもたらすかは、使用するコンパイラやツールによって異なります。 ランタイムの利点は次のとおりです。 - -* 異なる言語で開発されたコンポーネントを簡単に利用可能。 - -* クラス ライブラリによって提供される拡張性のある型。 - -* 継承、インターフェイス、オーバーロードなどのオブジェクト指向プログラミングの言語機能。 - -* マルチスレッドでスケーラブルなアプリケーションの作成を可能にする明示的なフリー スレッドのサポート。 - -* 構造化例外処理のサポート。 - -* カスタム属性のサポート。 - -* ガベージ コレクション。 - -* タイプ セーフとセキュリティを強化するために関数ポインターではなくデリゲートを使用。 - -## 共通言語ランタイムのバージョン - -.NET Framework のバージョン番号はそれに含まれている CLR のバージョン番号には必ずしも対応しません。 2 つのバージョン番号がどのように対応しているかを次の表に示します。 - -.NET Framework のバージョン | 含まれている CLR のバージョン ----------------------- | -------------------- -1.0 | 1.0 -1.1 | 1.1 -2.0 | 2.0 -3.0 | 2.0 -3.5 | 2.0 -4 | 4 -4.5 (4.5.1 および 4.5.2 を含む) | 4 -4.6 (4.6.1 と 4.6.2 を含む) | 4 - -## 関連項目 - -[自動メモリ管理](garbagecollection/index.md) - - - - +> 型システム、メタデータの書式、およびランタイム環境 (仮想実行システム) はすべて公的な標準規格の ECMA 共通言語基盤仕様により定義されているため、コンパイラおよびツールは共通言語ランタイムが使用できる出力を生成できます。 詳細については、「[ECMA C# and Common Language Infrastructure Specifications (ECMA C# および共通言語基盤の仕様)](http://go.microsoft.com/fwlink/?LinkId=99212)」を参照してください。 + + マネージ コードが共通言語ランタイムからサービスを受けられるようにするために、言語コンパイラは、そのコード内の型、メンバー、および参照を記述したメタデータを生成する必要があります。 メタデータはコード内に格納されます。つまり、共通言語ランタイムの読み込み可能なすべてのポータブル実行可能 (PE) ファイルには、メタデータが含まれていることになります。 共通言語ランタイムは、クラスの検索と読み込み、メモリ内でのインスタンスのレイアウト、メソッドの呼び出しの解決、ネイティブ コードの生成、セキュリティの強化、およびランタイムのコンテキスト境界の設定にメタデータを使用します。 + + 共通言語ランタイムはオブジェクトのレイアウトを自動的に処理し、それらのオブジェクトへの参照を管理し、不要になったオブジェクトを解放します。 このような方法で有効期間を管理されるオブジェクトをマネージ データと呼びます。 ガベージ コレクションによって、一般的なプログラミング エラーだけでなくメモリ リークもなくなります。 コードがマネージ コードの場合、作成する .NET Framework アプリケーションではマネージ データ、アンマネージ データ、またはマネージ データとアンマネージ データの両方を使用できます。 プリミティブ型などのデータ型は言語コンパイラが独自に提供しているため、データがマネージ データかどうかが不明な (または把握する必要がない) 場合もあります。 + + 共通言語ランタイムでは、複数の言語間で対話できるオブジェクトを含むコンポーネントやアプリケーションを簡単にデザインできます。 異なる言語で記述されたオブジェクトが相互に対話でき、それらのオブジェクトの動作が緊密に統合されます。 たとえば、あるクラスを定義してから、そのクラスの派生クラスを別の言語で作成したり、そのクラスに対して別の言語で記述したメソッドを呼び出したりできます。 また、あるクラスのインスタンスを別の言語で記述されたクラスのメソッドに渡すこともできます。 このような言語間の統合を実現できるのは、共通言語ランタイムに対応した言語コンパイラとツールが、共通言語ランタイムによって定義されている共通型システムを採用し、型の作成、使用、永続化、型へのバインディング、および新しい型の定義に関する共通言語ランタイムの規則に従っているためです。 + + すべてのマネージ コンポーネントは、関連するコンポーネントとリソースについての情報をメタデータの一部として保持しています。 共通言語ランタイムはこの情報を使用して、作成したコンポーネントまたはアプリケーションが必要とする特定バージョンのコンポーネントやリソースがあることを確認します。これにより、不明な依存関係によってコードが中断される確率が低くなります。 登録情報や状態データはレジストリ内では設定や保守が難しくなるため、レジストリには格納されなくなりました。 代わりに、定義した型 (およびその依存関係) に関する情報はコードと共にメタデータとして保存されます。これによって、コンポーネントのレプリケーションと削除がより簡単に実行できるようになります。 + + 言語コンパイラおよびツールは、開発者にとってわかりやすく役に立つ方法で共通言語ランタイムの機能を公開します。 つまり、ある環境では重視されている共通言語ランタイムの機能が、別の環境ではそれほど重視されていないという場合もあります。 共通言語ランタイムがどのような利点をもたらすかは、使用するコンパイラやツールによって異なります。 たとえば、Visual Basic の開発者が共通言語ランタイムを使用した場合は、Visual Basic 言語のオブジェクト指向機能が強化されたと感じるでしょう。 ランタイムの利点は次のとおりです。 + +- パフォーマンスの向上。 + +- 異なる言語で開発されたコンポーネントを簡単に利用可能。 + +- クラス ライブラリによって提供される拡張性のある型。 + +- 継承、インターフェイス、オーバーロードなどのオブジェクト指向プログラミングの言語機能。 + +- マルチスレッドでスケーラブルなアプリケーションの作成を可能にする明示的なフリー スレッドのサポート。 + +- 構造化例外処理のサポート。 + +- カスタム属性のサポート。 + +- ガベージ コレクション。 + +- タイプ セーフとセキュリティを強化するために関数ポインターではなくデリゲートを使用。 デリゲートの詳細については、「[共通型システム](../../docs/standard/base-types/common-type-system.md)」を参照してください。 + +## 共通言語ランタイムのバージョン + .NET Framework のバージョン番号はそれに含まれている CLR のバージョン番号には必ずしも対応しません。 2 つのバージョン番号がどのように対応しているかを次の表に示します。 + +|.NET Framework のバージョン|含まれている CLR のバージョン| +|----------------------------|--------------------------| +|1.0|1.0| +|1.1|1.1| +|2.0|2.0| +|3.0|2.0| +|3.5|2.0| +|4|4| +|4.5 (4.5.1 および 4.5.2 を含む)|4| +|4.6 (4.6.1 と 4.6.2 を含む)|4| +|4.7|4| + +## 関連トピック + +|タイトル|説明| +|-----------|-----------------| +|[マネージ実行プロセス](../../docs/standard/managed-execution-process.md)|共通言語ランタイム利用するために必要な手順について説明します。| +|[自動メモリ管理](../../docs/standard/automatic-memory-management.md)|ガベージ コレクターによるメモリの割り当て方法および解放方法について説明します。| +|[.NET Framework の概要](http://msdn.microsoft.com/en-us/ea38ac1e-92af-4d1b-8db1-e8a5ea10ed85)|共通型システム、言語間での相互運用性、マネージ実行、アプリケーション ドメイン、アセンブリなどの .NET Framework の主要な概念について説明します。| +|[共通型システム](../../docs/standard/base-types/common-type-system.md)|言語間の統合をサポートするために共通言語ランタイムで型を宣言、使用、および管理する方法について説明します。| + +## 関連項目 + [バージョンおよび依存関係](../../docs/framework/migration-guide/versions-and-dependencies.md) diff --git a/includes/net-2015-md.md b/includes/net-2015-md.md new file mode 100644 index 00000000000..f091db4a79c --- /dev/null +++ b/includes/net-2015-md.md @@ -0,0 +1 @@ +.NET Framework 4.6 \ No newline at end of file diff --git a/includes/net-core-md.md b/includes/net-core-md.md new file mode 100644 index 00000000000..f53daf1278b --- /dev/null +++ b/includes/net-core-md.md @@ -0,0 +1 @@ +.NET Core \ No newline at end of file diff --git a/includes/net-native-md.md b/includes/net-native-md.md new file mode 100644 index 00000000000..e4b04f97331 --- /dev/null +++ b/includes/net-native-md.md @@ -0,0 +1 @@ +.NET Native \ No newline at end of file diff --git a/includes/net-v35sp1-short-md.md b/includes/net-v35sp1-short-md.md new file mode 100644 index 00000000000..0f46ca34db3 --- /dev/null +++ b/includes/net-v35sp1-short-md.md @@ -0,0 +1 @@ +.NET Framework 3.5 SP1 \ No newline at end of file diff --git a/includes/net-v40-long-md.md b/includes/net-v40-long-md.md new file mode 100644 index 00000000000..a6ccdbf9fb7 --- /dev/null +++ b/includes/net-v40-long-md.md @@ -0,0 +1 @@ +.NET Framework 4 \ No newline at end of file diff --git a/includes/net-v40-short-md.md b/includes/net-v40-short-md.md new file mode 100644 index 00000000000..a6ccdbf9fb7 --- /dev/null +++ b/includes/net-v40-short-md.md @@ -0,0 +1 @@ +.NET Framework 4 \ No newline at end of file diff --git a/includes/net-v45-md.md b/includes/net-v45-md.md new file mode 100644 index 00000000000..7b4bf0fb0dc --- /dev/null +++ b/includes/net-v45-md.md @@ -0,0 +1 @@ +.NET Framework 4.5 \ No newline at end of file diff --git a/includes/net-v451-md.md b/includes/net-v451-md.md new file mode 100644 index 00000000000..81ec8b4536e --- /dev/null +++ b/includes/net-v451-md.md @@ -0,0 +1 @@ +.NET Framework 4.5.1 \ No newline at end of file diff --git a/includes/net-v452-md.md b/includes/net-v452-md.md new file mode 100644 index 00000000000..5db8902ca2f --- /dev/null +++ b/includes/net-v452-md.md @@ -0,0 +1 @@ +.NET Framework 4.5.2 \ No newline at end of file diff --git a/includes/net-v46-md.md b/includes/net-v46-md.md new file mode 100644 index 00000000000..f091db4a79c --- /dev/null +++ b/includes/net-v46-md.md @@ -0,0 +1 @@ +.NET Framework 4.6 \ No newline at end of file diff --git a/includes/net-v461-md.md b/includes/net-v461-md.md new file mode 100644 index 00000000000..f12ccd97aa6 --- /dev/null +++ b/includes/net-v461-md.md @@ -0,0 +1 @@ +.NET Framework 4.6.1 \ No newline at end of file diff --git a/includes/net-v462-md.md b/includes/net-v462-md.md new file mode 100644 index 00000000000..5386eb0cfae --- /dev/null +++ b/includes/net-v462-md.md @@ -0,0 +1 @@ +.NET Framework 4.6.2 \ No newline at end of file diff --git a/includes/net-win8-profile-md.md b/includes/net-win8-profile-md.md new file mode 100644 index 00000000000..58072a750f3 --- /dev/null +++ b/includes/net-win8-profile-md.md @@ -0,0 +1 @@ +Windows 8.x ストア アプリ用 .NET \ No newline at end of file diff --git a/includes/netfx-current-long-md.md b/includes/netfx-current-long-md.md new file mode 100644 index 00000000000..f12ccd97aa6 --- /dev/null +++ b/includes/netfx-current-long-md.md @@ -0,0 +1 @@ +.NET Framework 4.6.1 \ No newline at end of file diff --git a/includes/netfx-current-short-md.md b/includes/netfx-current-short-md.md new file mode 100644 index 00000000000..f12ccd97aa6 --- /dev/null +++ b/includes/netfx-current-short-md.md @@ -0,0 +1 @@ +.NET Framework 4.6.1 \ No newline at end of file diff --git a/includes/netfx40-short-md.md b/includes/netfx40-short-md.md new file mode 100644 index 00000000000..a6ccdbf9fb7 --- /dev/null +++ b/includes/netfx40-short-md.md @@ -0,0 +1 @@ +.NET Framework 4 \ No newline at end of file diff --git a/includes/vs-current-long-md.md b/includes/vs-current-long-md.md new file mode 100644 index 00000000000..e42d5412a81 --- /dev/null +++ b/includes/vs-current-long-md.md @@ -0,0 +1 @@ +Visual Studio 2012 \ No newline at end of file diff --git a/includes/vs-dev11-long-md.md b/includes/vs-dev11-long-md.md new file mode 100644 index 00000000000..e42d5412a81 --- /dev/null +++ b/includes/vs-dev11-long-md.md @@ -0,0 +1 @@ +Visual Studio 2012 \ No newline at end of file diff --git a/includes/vs-dev12-md.md b/includes/vs-dev12-md.md new file mode 100644 index 00000000000..19c512da049 --- /dev/null +++ b/includes/vs-dev12-md.md @@ -0,0 +1 @@ +Visual Studio 2013 \ No newline at end of file diff --git a/includes/vs-dev14-md.md b/includes/vs-dev14-md.md new file mode 100644 index 00000000000..bbfd799366a --- /dev/null +++ b/includes/vs-dev14-md.md @@ -0,0 +1 @@ +Visual Studio 2015 \ No newline at end of file diff --git a/includes/win8-appname-long-md.md b/includes/win8-appname-long-md.md new file mode 100644 index 00000000000..2d563392335 --- /dev/null +++ b/includes/win8-appname-long-md.md @@ -0,0 +1 @@ +Windows 8.x ストア \ No newline at end of file diff --git a/includes/win8-md.md b/includes/win8-md.md new file mode 100644 index 00000000000..f851b514732 --- /dev/null +++ b/includes/win8-md.md @@ -0,0 +1 @@ +Windows 8 \ No newline at end of file diff --git a/includes/win81-md.md b/includes/win81-md.md new file mode 100644 index 00000000000..bcc2351f5f1 --- /dev/null +++ b/includes/win81-md.md @@ -0,0 +1 @@ +Windows 8.1 \ No newline at end of file diff --git a/includes/winblue-server-2-md.md b/includes/winblue-server-2-md.md new file mode 100644 index 00000000000..c1db122e4fa --- /dev/null +++ b/includes/winblue-server-2-md.md @@ -0,0 +1 @@ +Windows Server 2012 R2 \ No newline at end of file diff --git a/includes/winserver8-md.md b/includes/winserver8-md.md new file mode 100644 index 00000000000..918f6d7ac6a --- /dev/null +++ b/includes/winserver8-md.md @@ -0,0 +1 @@ +Windows Server 2012 \ No newline at end of file