Visual Component Library (VCL) とは、視覚化された(ビジュアルな)ソフトウェアコンポーネントを元にして、Microsoft Windows用GUIアプリケーションを作成するためのソフトウェアライブラリおよびフレームワークである。ボーランドが、自社のソフトウェア統合開発環境 (IDE) であるDelphiとC++ Builderのために開発した。Object Pascalで記述されている。

VCLはボーランドのRADツールと密接に統合されており、プログラミング言語でコードを記述することなくGUI部品の配置や外観設定をGUI(フォームデザイナー)で視覚的かつ直感的に行なうこともできるようになっているObject Pascalが言語機能としてサポートしているプロパティが、IDEと親和性が高いことも寄与している。。これが人気の元である。

後に、同等の機能を持つクロスプラットフォームのライブラリとしてComponent Library for Cross Platform (CLX) がDelphi、C++ Builder、Kylix用に開発されたが、VCLの人気の前には太刀打ちできなかった。

VCLはオブジェクト指向のクラスライブラリであり、System.TObjectクラスTObjectは、Javaにおける暗黙の最上位基底クラスであるオブジェクト型に相当するが、Object Pascalにおけるオブジェクト型という用語は意味が異なるので注意されたい。を最上位基底クラスとする単一継承のオブジェクト階層をもっている。Object Pascalは(C++と異なり)実装の多重継承をサポートしておらず、代わりにインターフェイスを実装することによる型の多重継承をサポートするC++であっても、Microsoft Foundation Class (MFC) などのように単一継承のクラス階層で設計されているライブラリもある。。VCLでもインターフェイスによるポリモーフィズムが利用されている。例えばSystem.Classes.TComponentクラスSystem.Classes.TComponent - RAD Studio API Documentationは、 TComponent = class(TPersistent, IInterface, IInterfaceComponentReference) というようにTPersistentクラスから派生し、さらにIInterfaceおよびIInterfaceComponentReferenceインターフェイスを実装する。

Object Pascalにおける継承の機能やメカニズムはJavaとよく似ており、のちにC#にも受け継がれることになった。

派生 1999年6月8日、インプライズ(ボーランド)はマイクロソフトに対し12,500万ドルでその特許使用を認める契約をし、後にVCLの派生ライブラリとして.NET Frameworkの基本クラスライブラリが公開され、現在ではC#やVisual Basic .NETを中心としたWindowsアプリケーション開発における主力ライブラリとなっているほか、Monoや.NET CoreによりWindows以外のプラットフォームにも広がりを見せている。特にWindows Formsは、VCLの設計や開発スタイルを強く受け継いでいる。

問題点 VCLはWindows専用であり、他プラットフォームへの移植性はない。また、Delphi側の仕様起因でUnicode対応が遅れていたが、Delphi 2009でUnicode対応が強化されたDelphiにおける一般的なUnicodeへの移行テクニック。

関連項目 Component Library for Cross Platform (CLX)

Delphi ソフトウェアコンポーネント Microsoft Visual Basic 基本クラスライブラリ Windows Forms

脚注

外部リンク Delphi 1.0 Visual Component Library Reference JEDI Visual Component Library (JVCL) and JEDI Code Library (JCL) - huge open source collection of components based on VCL CodePedia C++ VCL page (no Pascal page yet)