基本クラスライブラリ

基本クラスライブラリ（、通称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


Category:.NET
Category:マイクロソフトの開発ツール
Category:マイクロソフトのAPI