共通言語基盤

共通言語基盤(Common Language Infrastructure, CLI)は、マイクロソフトが提唱した、.NET Frameworkの基盤となる重要な仕様です。この仕様は、異なるプログラミング言語やコンピュータアーキテクチャ間での相互運用性を実現することを目的としています。具体的には、高水準言語で記述されたコードが、特定のプラットフォームに依存することなく、他の環境でも実行できるような仕組みを提供します。

CLIの仕様は、ECMA-335およびISO/IEC 23271として国際的に標準化されており、広く公開されています。これにより、開発者は特定の環境に縛られることなく、様々な言語を用いてソフトウェアを開発し、それを多様なプラットフォーム上で展開することが可能になります。

CLIの主要な概念



CLIは、以下の主要な概念に基づいて構築されています。

共通型システム (CTS): これは、異なるプログラミング言語間で共通して使用される型の集合を定義します。これにより、異なる言語で記述されたコードが相互にデータを交換し、連携することが可能になります。
メタデータ: プログラムの構造に関する情報を記述したもので、プログラミング言語やツールから参照できます。これにより、コンパイラやランタイム環境は、コードの型情報や依存関係を正確に把握し、効率的な実行を可能にします。
共通言語仕様 (CLS): これは、相互運用性を保証するためのプログラミング言語に対する規定です。CLSに従って記述されたコードは、異なる言語間でもシームレスに連携できることが期待されます。
仮想実行システム (VES): CLIに適合したプログラムを読み込み、実行するための環境です。VESは、メタデータを活用して動的に機械語を生成し、プログラムを実行します。

CLIの動作



CLIに適合するプログラムは、まず共通中間言語(Common Intermediate Language, CIL)にコンパイルされます。CILは、ハードウェアから抽象化された中間言語であり、特定のプラットフォームに依存しません。プログラムの実行時には、VESがCILをそのプラットフォームの機械語にコンパイルし、プログラムを実行します。この仕組みにより、異なるプラットフォーム上で同じプログラムを実行することが可能になります。

標準化とライセンス



CLIの標準化は、2000年8月にマイクロソフト、ヒューレットパッカード、インテルなどの企業によって開始されました。2001年11月にはEcma Internationalによって承認され、2003年4月にはISOによっても承認されました。さらに、2006年11月にはJIS X 3016として日本国内でも標準化されました。

CLIに関連する特許は、マイクロソフトとそのパートナー企業が保有していましたが、Ecma InternationalとISOは、実装に必要なすべての特許を「合理的かつ非差別的」なライセンス(RAND)とするよう求め、関係企業はこれを受け入れました。これにより、CLIは「ロイヤリティーフリー、その他はRAND」という形態で利用可能となりました。

CLIの実装



CLIの主要な実装には、以下のものがあります。

Microsoft .NET Framework: マイクロソフトによるデスクトップ向けの商用実装で、幅広いリソース、ライブラリ、ツールが含まれています。
シェアードソース共通言語基盤: マイクロソフトによるリファレンス実装で、シェアードソースライセンスの下で利用可能です。
.NET Compact Framework: マイクロソフトによるポータブルデバイス向けの商用実装です。
Mono: オープンソースの実装として広く知られています。
Portable.NET: DotGNUプロジェクトの一部として開発されたオープンソース実装ですが、2012年に廃止されました。
PlayStation Suite: ソニー・コンピュータエンタテインメントによる多機種共通環境を目指した実装で、ECMA-335のカスタム仕様を採用しています。

まとめ



共通言語基盤(CLI)は、異なるプログラミング言語やプラットフォーム間での相互運用性を実現するための重要な基盤技術です。その仕様は国際的に標準化されており、様々な実装が存在します。CLIを活用することで、開発者は特定の環境に縛られることなく、より柔軟かつ効率的にソフトウェアを開発し、展開することが可能となります。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。