基本クラスライブラリ(、通称BCL)は共通言語基盤 (CLI) における標準ライブラリである。共通言語仕様 (CLS) を満たす全てのCLI言語から利用可能となっている。
ボーランドとマイクロソフトが1999年6月8日に結んだ特許契約の成果物で、Visual Component Library (VCL) から派生したライブラリとなっている。また、一部のコンポーネントについてはバグまでもが完全移植されている。なお、これらのバグについては互換性維持のために修正されず現在も残されており、新たなコンポーネントの追加でその問題に対処している。
CLIは多数の共通機能をカプセル化するためにBCLを含んでおり、それはプログラマの仕事をより簡単にする。 ネットワークやセキュリティといった、C/C++を含む他のほとんどの言語の基礎ライブラリよりもずっと大きな領域をサポートしており、Javaクラスライブラリと比肩しうる。 CLIの最初の実装である.NET Frameworkは、BCLの起源である。BCLにおけるほとんどの機能はMonoや.NET Coreにも移植されている。BCLはときどきFramework Class Library (FCL) として間違って言及されることがあるが、これは、実際はマイクロソフト固有の名前空間を含むスーパーセットである。
BCLは.NET Frameworkのそれぞれのバージョンで更新・機能追加されている。
名前空間 (namespace)
いくつかの名前空間 (namespace) は、マイクロソフトによって公式にBCLの一部だとみなされているものもあれば、そうでないものもあるかもしれない。しかし、マイクロソフトによるCLIの実装である.NET Frameworkによって提供されるライブラリの一部としては、すべてが含まれている。
標準化された名前空間 ECMA 335 6th EditionおよびISO/IEC 23271:2012 standardsとして標準化された名前空間について記述する。
System この名前空間はプログラミングの需要の核たるものを含んでいる。各種の基本数値型、文字列型 (String)、日時型 (DateTime)、論理値型 (Boolean) などのクラスと構造体、コンソール (Console)、数学関数と数学定数 (Math)、属性、例外および配列など、各種の基本クラスやインターフェイス、環境をサポートしている。
System.Collections プログラミングで使用される多くの共通なコンテナあるいはコレクションクラスを定義している。リスト (ArrayList)、キュー (Queue)、スタック (Stack)、ハッシュ (Hashtable)、連想配列 (実装としてはHashtable, DictionaryBase, SortedList) などである。 .NET Framework 2.0以降では、ジェネリックプログラミングのサポート (Generic) を含んでいるMSDN Documentation - System.Collections Namespace。
System.Collections.Generic ジェネリックコレクションを定義するインターフェイスとクラスが含まれています。
System.Diagnostics アプリケーションに診断機能を提供する。イベントログ、パフォーマンスカウンタ、トレース、およびシステムプロセスに関する相互作用に関する機能である。MSDN Documentation - System.Diagnostics Namespace
System.Globalization 国際化対応したアプリケーションを記述するための手助けとなる機能を提供する。文化 (culture) に結び付けられた情報、言語、国や地域、カレンダーの使用法、日付のフォーマット法、通貨、数字などが定義されるようになる。MSDN Documentation - System.Globalization Namespace
System.IO 異なるストリーム (stream)、ファイルやほかのストリームを読み書きする機能を提供する。ファイルシステムに対するアクセスする機能も提供する。MSDN Documentation - System.IO Namespace
System.Net 現代的なネットワークで使用される多くのプロトコルのためのプログラミングインターフェイスを提供するMSDN Documentation - System.Net Namespace。HTTP, FTP, SMTPなど。セキュアな通信としてTLSなどが提供される。
System.Reflection 型、メソッド、フィールドに対するオブジェクトビューを提供する。これにより、コードの動的な生成や型を行使する能力が得られるMSDN Documentation - System.Reflection Namespace。CLRのリフレクション機能にアクセスするAPIを公開する。
System.Runtime アプリケーションやCLRの実行時の振る舞いを管理する機能を提供する。COMやネイティブコードと相互運用するいくつかの能力により、分散コンピューティングおよびバイナリ形式あるいはSOAP形式へのオブジェクトのシリアライズが実現されるMSDN Documentation - System.Runtime Namespace 。
System.Security CLRセキュリティシステムの下層構造を提供するMSDN Documentation - System.Security Namespace。この名前空間はアプリケーションにポリシーと権限に基づいたセキュリティを構築する機能を提供する。暗号化サービスなど。
System.Text さまざまなエンコード、正規表現、より効果の高い文字列の操作メカニズム (StringBuilder) などをサポートするMSDN Documentation - System.Text Namespace。
System.Threading マルチスレッドプログラミングを容易にする。スレッドの活動とデータへのアクセスの同期を可能にし、またシステムにより供給されたスレッドプールを提供するMSDN Documentation - System.Threading Namespace。
System.Xml XML処理のための標準ベースのサポートを提供するMSDN Documentation - System.Xml Namespace。読み書き、スキーマ、シリアライズ、検索、変換の機能を含む。
System.Diagnostics.CodeAnalysis 分析ツールとの相互作用のためのクラスが含まれる。これらのツールは名前付けやセキュリティ規則といった慣例をコード化するための準拠用のコードを分析するために使用されるMSDN Documentation - System.Diagnostics.CodeAnalysis Namespace。
System.Diagnostics.Contracts 事前条件や事後条件、そして普遍条件といったプログラム契約を表すための静的クラスを含む。MSDN Documentation - System.Diagnostics.Contracts Namespace
System.Diagnostics.Eventing アプリケーションのインストルメントに使用するためのクラスが含まれる。インストルメンテーションを可能にすると、Event Tracing for Windows (ETW) トレース サブシステムにイベントデータを記録する。MSDN Documentation - System.Diagnostics.Eventing Namespace
System.Diagnostics.PerformanceData この名前空間内でカウンター データを提供するためのクラスを使用する。カウンターはパフォーマンス モニターのようなコンシューマーにパフォーマンス モニターをさらすために使用される。パフォーマンスカウンターアーキテクチャの完全な解説は、パフォーマンスカウンターを参照すること。MSDN Documentation - System.Diagnostics.PerformanceData Namespace
System.Diagnostics.SymbolStore System.Diagnostics.SymbolStore 名前空間は、Microsoft intermediate language (MSIL) マップのソース行のような、デバッグ シンボル情報の読み書きを可能にするクラスを提供する。.NET Frameworkをターゲットとするコンパイラは、プログラム データベース (PDB) ファイルへのデバッグ シンボル情報を保存できる。デバッガとコードプロファイラーツールは実行時にデバッグ シンボル情報を読める。MSDN Documentation - System.Diagnostics.SymbolStore Namespace
標準化されていない名前空間 これらの名前空間はECMAあるいはISO standardとして標準化されておらず、マイクロソフトの実装特有のものである。しかしながら、これらの実装を強制しなくても、これらのうち完全あるいは一部は他のCLI実装に実装されている。
System.CodeDom このライブラリは実行時にコードを生成し実行する機能を提供する。MSDN Documentation - System.CodeDom Namespace
System.ComponentModel コンポーネントおよびコントロールに対する実行時およびデザイン時の振る舞いを実装する機能を提供する。「属性、型のコンバーター、データソースのバインディング、およびライセンスコンポーネントの実装のための」インフラを含んでいる。MSDN Documentation - System.ComponentModel Namespace
System.Configuration 設定のハンドリングのインフラを提供する。MSDN Documentation - System.Configuration Namespace
System.Data この名前空間はADO.NETアーキテクチャを表現する。データアクセスおよびデータサービスのためにプログラマが使用できるコンピュータソフトウェアコンポーネントの集合であるMSDN Documentation - System.Data Namespace。
System.Deployment ClickOnceを使用してアプリケーションをアップグレードする方法をカスタマイズする機能を提供する。MSDN Documentation - System.Deployment.Application NamespaceMSDN Documentation - System.Deployment.Internal Namespace
System.DirectoryServices マネージドコードからActive Directoryへのアクセスを提供する。MSDN Documentation - System.DirectoryServices Namespace
System.Drawing GDI+によるグラフィックス機能へのアクセスを提供する。2Dおよびベクターグラフィックス、画像処理、印刷、およびテキストサービスを含むMSDN Documentation - System.Drawing Namespace。
System.EnterpriseServices エンタープライズ向けアプリケーションのために、COM+サービスへのアクセスを.NETオブジェクトに提供する。これにより、.NETオブジェクトをより実践的なものとすることができるMSDN Documentation - System.EnterpriseServices Namespace。
System.Linq IQueryable<T>インターフェイスおよび関連するメソッドを定義する。これによりLINQが追加提供されるMSDN Documentation - System.Linq Namespace。
System.Linq.Expressions デリゲートおよびラムダ式により構文木として記述された高レベルなコードが実行時に検査され、実行されることを許可する。MSDN Documentation - System.Linq.Expressions Namespace
System.Management 情報を検索することができるようになる。「HDDの空き容量がどれだけあるかとか、現在のCPUの機能は何かとか、データベースにどのアプリケーションが接続しているか、など」MSDN Documentation - System.Management Namespace
System.Media システム音声やWaveファイルの再生能力を提供する。MSDN Documentation - System.Media Namespace
System.Messaging 「モニター、およびネットワークの管理者メッセージキューへの接続、送受信、メッセージの検索など」MSDN Documentation - System.Messaging Namespace .NET Remoting は提供される機能のもう一つの名称である。この名前空間はWindows Communication Foundationにより取って代わる予定である。
System.Resources アプリケーションを異なる文化や言語向けに国際化するため、多くの異なるリソースを管理する機能を提供する。MSDN Documentation - System.Resources Namespace
System.ServiceProcess アプリケーションをWindowsのサービスとして起動する機能を提供する。MSDN Documentation - System.ServiceProcess Namespace
System.Timers 「イベントを指定した間隔で発生させる機能を提供する」MSDN Documentation - System.Timers Namespace
System.Transactions ローカルもしくはネットワーク相手とのトランザクション処理を提供する。MSDN Documentation - System.Transactions Namespace
System.Web さまざまなウェブに関連した機能を提供する。ブラウザ/サーバー間のコミュニケーションおよびXMLウェブサービスを作成することを可能にする。ほとんどもしくはすべてのこれらのライブラリはASP.NETで使用される。
System.Windows.Forms この名前空間はWindows Formsアーキテクチャを含み、ネイティブのWindowsインターフェイス(Windows API)をラッピングする。これによりWindows向けのGUIアプリケーションをマネージドコードで記述することが可能になる。MSDN Documentation - System.Windows.Forms Namespace このシステムはWindows Presentation Foundationにより置き換えられる予定である。
関連項目 ADO.NET ASP.NET Windows Forms Javaクラスライブラリ 標準ライブラリ
.NET frameworkの将来的な機能 Windows Presentation Foundation (WPF) Windows Communication Foundation (WCF) Windows Workflow Foundation (WF) Windows CardSpace
参照
外部リンク .NET Framework Developer Center Microsoft Developer Network (MSDN). Base Class Libraries Community More information and FAQs about the BCL. .NET Framework 3.5 namespaces MSDN BCL Documentation BCLTeam's WebLog