共通言語基盤(Common Language Infrastructure)

分類
テクノロジ系 アルゴリズムとプログラミング
出る試験
基本情報応用情報
重要度
★★☆☆☆

複数の高級言語を同じ中間言語にそろえ、1つの実行環境で動かすための仕様。.NETの土台。

もう少し詳しい説明

共通言語基盤は、複数の高級言語で書いたプログラムを、同じ実行環境で動かすための仕様です。英語の頭文字から CLI と略します。

日本産業規格では JIS X 3016、国際規格では ISO/IEC 23271 として定められています。規格では、その目的を次のように書いています。

異なるシステム環境で,それらの環境の独特な性質を考慮に入れた書換えを行うことなく,複数の高水準言語で書かれたアプリケーションを動作させることを可能とする

書き換えずに動かすことと、複数の言語を受け入れることの2つが、同時に書かれている点に注目してください。

翻訳を2段に分ける

C#/Visual Basic/F# など仕様に沿った高級言語共通中間言語(CIL)どの言語も、まずこの形になる仮想実行システム(VES)中間言語を読んで動かす書く人が選べるどの言語でも共通
どの言語で書いても、いったん同じ中間言語に変換されます。実行環境はその中間言語だけを知っていればよく、言語ごとに作り直す必要がありません。言語の違いを1か所で吸収する仕組みです。

ふつう、高級言語(人が読み書きしやすい形で書くプログラム言語(人がプログラムを書くための言葉)。Java、C#、Visual Basic など)は、機械語(コンピュータがそのまま実行できる、0と1の並び)へ翻訳されます。

ここで問題になるのは、機械語がコンピュータの種類ごとに違うことです。CPU(計算と命令の実行を受け持つ部品)の設計が違えば、通じる機械語も違います。

この道だと、言語の数 × コンピュータの種類だけ翻訳の仕組みが要ります。言語が3つ、コンピュータが4種類なら12通りです。

共通言語基盤は、ここを2段に分けます。

  1. どの言語も、まず共通中間言語(CIL)という同じ形へ変換する
  2. その中間言語を、仮想実行システム(VES)が受け取って実行する

こうすると、言語の数 + コンピュータの種類で済みます。言語を1つ増やしても、中間言語への変換を1つ作るだけ。コンピュータを1種類増やしても、実行環境を1つ作るだけです。

掛け算が足し算に変わる、というのがこの分け方の効き目です。

言語どうしがつながる

分け方の効き目は、もう1つあります。違う言語で書いた部品を、組み合わせて使えることです。

C#で書いたクラスを、Visual Basicで書いたプログラムから、そのまま呼べます。中間言語になった時点で、どの言語から来たのかは関係なくなっているためです。

これを支えているのが共通型システム(CTS)です。規格では次のように定めています。

コンパイラ,ツール及びCLI自体によって共有される単一の型システム

整数や文字列といった型を、言語ごとではなく1か所で決めているということです。言語Aの整数と言語Bの整数が同じものだと保証されるので、そのまま受け渡せます。

実行環境が面倒を見る

中間言語を動かす側は、実行するだけではありません。ガベージコレクションによる記憶領域の回収や、型の安全性の確認も受け持ちます。

同じ面倒を言語ごとに作らなくてよいという点も、この仕組みの狙いです。

Javaとの違い

「中間言語に変換してから実行する」という形は、Javaとまったく同じです。実際、考え方は共通しています。

違うのは向きです。

試験で「複数の言語」という語が出てきたら、共通言語基盤のほうです。

何に使われているのか

マイクロソフトの .NET が、この仕様に沿って作られた実装です。C#、Visual Basic、F# などが同じ環境で動きます。実行を受け持つ部分を CLR(共通言語ランタイム)と呼びます。

仕様が公開された規格になっているため、マイクロソフト以外でも実装を作れます。特定の会社の製品名ではなく、規格の名前として覚えてください。

試験ではこう出る

科目A(旧・午前)で、まれに出ます。出題の形はほぼ1つで、共通言語基盤の説明を選ばせる問題です。

決め手は、「複数の高級言語」と「共通の中間言語」が両方入っているかです。片方しか書いていない選択肢は、たいてい別のものの説明になっています。

出題数は多くありません。深追いせず、複数の言語を中間言語にそろえて同じ環境で動かす仕様という1行を覚えておけば足ります。.NET と CLR という名前も、合わせて見ておくと選択肢で迷いません。

関連する用語

プログラム言語
機械語・アセンブリ言語・高級言語の段。翻訳を2段に分けたのが、この仕組み
メモリリークとガベージコレクション
記憶領域の自動回収。共通言語基盤では、実行環境がこれを受け持つ
オブジェクト指向
データと処理をまとめて作る考え方。共通の型システムは、この考え方の上に作られている

ミニクイズ

共通言語基盤(CLI)の説明として、最も適切なものはどれか。

正解は 4番:複数の高級言語で書いたプログラムを、共通の中間言語に変換して同じ環境で実行するための仕様

共通言語基盤は、どの高級言語で書いても、いったん同じ中間言語に変換してから実行する、という作りを定めた仕様です。実行環境は中間言語だけを知っていればよく、言語ごとに作り直す必要がありません。C#とVisual Basicのように別々の言語で書いた部品を、同じ環境で組み合わせて動かせます。CPUの命令を共通化したものではなく、機械語の手前で共通化している点が違います。文字と番号の対応を決めた規格は文字コード、通信手順を階層に分けたものはOSI基本参照モデルです。

間違えた用語の復習リストを見る →

この分野をまとめて解く → アルゴリズムとプログラミングのミニテスト(全44問)

最終更新:2026-10-09