基本クラスライブラリ(BCL)とは
基本クラス
ライブラリ(Base Class Library、BCL)は、
共通言語基盤(Common Language Infrastructure、CLI)における標準
ライブラリです。共通言語仕様(Common Language Specification、CLS)に準拠した全てのCLI言語から利用できます。BCLは、
ボーランドと
マイクロソフトが1999年に締結した特許契約に基づき、
Visual Component Library(VCL)を基に開発されました。興味深いことに、一部のコンポーネントはバグまで完全に移植されており、互換性維持のため修正されず残されています。これらの問題は、新たなコンポーネントの追加で対処されています。
BCLの役割
CLIは多くの共通機能をカプセル化するためにBCLを含んでおり、プログラマーの作業を効率化します。BCLは、ネットワークやセキュリティなど、他の多くの言語の基盤
ライブラリよりも幅広い領域をカバーしており、Javaクラス
ライブラリに匹敵する機能を提供します。
BCLの起源と発展
CLIの最初の実装である
.NET Frameworkが、BCLの起源です。BCLの機能は、Monoや
.NET Coreにも移植されています。BCLは、Framework Class Library(FCL)と混同されることがありますが、FCLは
マイクロソフト固有の
名前空間を含む上位概念です。BCLは
.NET Frameworkの各バージョンで更新・機能追加が行われています。
BCLは、いくつかの
名前空間に整理されています。
マイクロソフトが公式にBCLの一部とみなすものもあれば、そうでないものもあります。しかし、
.NET Frameworkの一部として提供される
ライブラリには、すべて含まれています。
ECMA 335 6th EditionおよびISO/IEC 23271:2012 standardsとして標準化された
名前空間は以下の通りです。
System: プログラミングの中核となる機能を提供します。基本数値型、
文字列型、日時型、論理値型などのクラスや
構造体、コンソール、数学関数、属性、例外、
配列などが含まれます。
System.Collections: リスト、キュー、
スタック、
ハッシュテーブル、連想
配列などの共通
コレクションクラスを提供します。
.NET Framework 2.0以降では
ジェネリックプログラミングのサポートも含まれます。
System.Collections.Generic: ジェネリック
コレクションを定義するインターフェイスとクラスを提供します。
System.Diagnostics: アプリケーションの診断機能を提供します。イベントログ、パフォーマンスカウンタ、トレース、システムプロセスとの連携などが含まれます。
System.Globalization: 国際化対応アプリケーションを開発するための機能を提供します。文化、言語、地域、カレンダー、日付、通貨、数字などが定義されます。
System.IO: ストリーム、ファイルなどの読み書き機能を提供します。ファイルシステムへのアクセスも提供します。
System.Net: HTTP、FTP、SMTPなどのネットワークプロトコルのインターフェースを提供します。TLSによるセキュアな通信もサポートします。
System.Reflection: 型、メソッド、フィールドのオブジェクトビューを提供し、コードの動的な生成や型操作を可能にします。
System.Runtime: アプリケーションやCLRの実行時動作を管理する機能を提供します。COMやネイティブコードとの相互運用、
分散コンピューティング、オブジェクトの
シリアライズなどが含まれます。
System.Security: CLRセキュリティシステムの下層構造を提供します。ポリシーと権限に基づくセキュリティ機能や暗号化サービスが含まれます。
System.Text: さまざまなエンコード、
正規表現、
文字列操作メカニズム(StringBuilder)などをサポートします。
System.Threading: マルチスレッドプログラミングを容易にします。スレッドの同期やスレッドプールを提供します。
System.Xml: XML処理の標準サポートを提供します。読み書き、スキーマ、
シリアライズ、検索、変換などの機能が含まれます。
System.Diagnostics.CodeAnalysis: 分析ツールとの連携クラスが含まれます。命名規則やセキュリティ規則など、コードの準拠を分析するために使用されます。
System.Diagnostics.Contracts: 事前条件、事後条件、不変条件などのプログラム契約を表す静的クラスが含まれます。
System.Diagnostics.Eventing: アプリケーションのインストルメントに使用するクラスが含まれます。Event Tracing for Windows (ETW) にイベントデータを記録できます。
System.Diagnostics.PerformanceData: パフォーマンスカウンターのデータを提供するためのクラスが含まれます。
System.Diagnostics.SymbolStore: デバッグシンボル情報の読み書きを可能にするクラスを提供します。コンパイラはPDBファイルにデバッグシンボル情報を保存でき、デバッガやコードプロファイラーツールが実行時に読み取れます。
標準化されていない名前空間
これらの
名前空間はECMAまたはISO標準として標準化されていませんが、
マイクロソフトの実装に特有のものです。他のCLI実装にも実装されているものもあります。
System.CodeDom: 実行時にコードを生成・実行する機能を提供します。
System.ComponentModel: コンポーネントやコントロールの実行時およびデザイン時の動作を実装する機能を提供します。属性、型コンバーター、データソースバインディングなどが含まれます。
System.Configuration: 設定を扱うためのインフラを提供します。
System.Data: ADO
.NETアーキテクチャを表現します。データアクセスやデータサービスのためのコンポーネントを提供します。
System.Deployment:
ClickOnceを使用したアプリケーションのアップグレード方法をカスタマイズする機能を提供します。
System.DirectoryServices: マネージドコードから
Active Directoryへのアクセスを提供します。
System.Drawing: GDI+によるグラフィックス機能を提供します。2D、ベクターグラフィックス、画像処理、印刷、テキストサービスが含まれます。
System.EnterpriseServices: エンタープライズ向けアプリケーションのために、COM+サービスへのアクセスを
.NETオブジェクトに提供します。
System.Linq: IQueryable
インターフェースと関連メソッドを定義し、LINQを追加提供します。
System.Linq.Expressions: デリゲートやラムダ式を構文木として表現し、実行時に検査・実行を可能にします。
System.Management: HDDの空き容量、CPUの情報、データベース接続情報など、システム情報を検索する機能を提供します。
System.Media: システム音声やWaveファイルの再生機能を提供します。
System.Messaging: メッセージキューの監視、接続、送受信などの機能を提供します。Windows Communication Foundation(WCF)に置き換えられる予定です。
System.Resources: アプリケーションを異なる文化や言語向けに国際化するため、リソースを管理する機能を提供します。
System.ServiceProcess: アプリケーションをWindowsサービスとして起動する機能を提供します。
System.Timers: イベントを指定した間隔で発生させる機能を提供します。
System.Transactions: ローカルまたはネットワーク上のトランザクション処理を提供します。
System.Web: Web関連の機能を提供します。ブラウザとサーバー間の通信、XML Webサービスの作成などをサポートします。ASP.NETで使用されます。
System.Windows.Forms: Windows Formsアーキテクチャを含み、Windows APIをラップしてGUIアプリケーションを開発するための機能を提供します。Windows Presentation Foundation(WPF)に置き換えられる予定です。
関連技術
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.aspx)
BCLTeam's WebLog
[1]