フリーキーズ | 独学プログラミング

共通言語基盤とは

最終更新日

共通言語基盤(CLI: Common Language Infrastructure)とは、Microsoft社が開発した仕様で、異なるプログラミング言語で書かれたアプリケーションを実行するためのランタイム環境を定義しています。共通言語基盤の主な目的は、あるプログラミング言語で書かれたコードが、他の言語で書かれたコードと容易に相互運用できる言語相互運用性を実現することです。この相互運用性は、共通の基本型セット、共通の型システム、および.NET FrameworkやMonoなどの共有ランタイム環境で実行可能な共通のバイトコード形式を使用することで実現します。

主な構成要素

Common Type System (CTS): CTSは、基本型(整数、浮動小数点数、文字列など)のセットと、新しい型を定義するためのルールを定義した仕様です。これにより、ある言語で定義された型は、他の言語でも理解し使用できるようになります。例えば、C#の整数は、Visual Basic .NETやF#の整数と同じように表現されます。

共通中間言語(CIL)

バイトコードとも呼ばれるCILは、ソースコードの低レベルでプラットフォームに依存しない表現です。CLI互換言語(C#、Visual Basic .NET、F#など)で書かれたプログラムをコンパイルすると、コンパイラはネイティブのマシンコードではなく、CILコードを生成します。つまり、適切なランタイム環境の助けを借りて、同じCILコードを異なるプラットフォームで実行できるのです。

ジャストインタイム・コンパイル(JIT)

CILコードを実行するために、CLIランタイム環境はジャストインタイム(JIT)コンパイラを使用して、CILコードを実行中の特定のプラットフォーム用のネイティブマシンコードに変換します。このプロセスはランタイム中に行われるため、プラットフォーム固有の最適化が可能になり、コードがターゲットプラットフォーム上で効率的に実行されるようになります。

ベースクラスライブラリ(BCL)

CLI仕様には、ファイル操作、テキスト操作、ネットワークなどのタスクのための幅広い機能を提供する、ベースクラスライブラリと呼ばれる標準ライブラリのセットも含まれています。この共有ライブラリにより、開発者は共通の機能を再実装することなく、異なるプログラミング言語やプラットフォームで使用可能なコードを書くことができます。

共通言語基盤の使用例

共通言語基盤が活躍する例として、Microsoft社が開発した一般的なソフトウェア開発プラットフォームである「.NET Framework」が挙げられます。.NET Frameworkを使えば、C#、Visual Basic .NET、F#といったさまざまな言語でアプリケーションを作成し、それらをすべてシームレスに連携させることができます。これは、これらの言語がすべて同じCLI実行環境をターゲットとし、同じ一連の仕様に準拠しているためです。

まとめ

共通言語基盤(Common Language Infrastructure)とは、異なるプログラミング言語で書かれたアプリケーションを実行するためのランタイム環境を定義する仕様です。共通の基本型セット、共通の型システム、共通のバイトコード形式(CIL)、共有のランタイム環境を使用することで、言語の相互運用性を実現しています。