Visual Component Library
Visual Component Library (VCL) とは、視覚化された(ビジュアルな)ソフトウェアコンポーネントを元にして、Microsoft Windows用GUIアプリケーションを作成するためのソフトウェアライブラリおよびフレームワークである。ボーランドが、自社のソフトウェア統合開発環境 (IDE) であるDelphiとC Builderのために開発した。Object Pascalで記述されている。
VCLはボーランドのRADツールと密接に統合されており、プログラミング言語でコードを記述することなくGUI部品の配置や外観設定をGUI(フォームデザイナー)で視覚的かつ直感的に行なうこともできるようになっている[1]。これが人気の元である。
後に、同等の機能を持つクロスプラットフォームのライブラリとしてComponent Library for Cross Platform (CLX) がDelphi、C Builder、Kylix用に開発されたが、VCLの人気の前には太刀打ちできなかった。
VCLはオブジェクト指向のクラスライブラリであり、System.TObject
クラス[2]を最上位基底クラスとする単一継承のオブジェクト階層をもっている。Object Pascalは(C と異なり)実装の多重継承をサポートしておらず、代わりにインターフェイスを実装することによる型の多重継承をサポートする[3]。VCLでもインターフェイスによるポリモーフィズムが利用されている。例えばSystem.Classes.TComponent
クラス[4]は、
TComponent = class(TPersistent, IInterface, IInterfaceComponentReference)
というようにTPersistent
クラスから派生し、さらにIInterface
およびIInterfaceComponentReference
インターフェイスを実装する。
Object Pascalにおける継承の機能やメカニズムはJavaとよく似ており、のちにC#にも受け継がれることになった。
派生
[編集]1999年6月8日、インプライズ(ボーランド)はマイクロソフトに対し12,500万ドルでその特許使用を認める契約をし[5]、後にVCLの派生ライブラリとして.NET Frameworkの基本クラスライブラリが公開され、現在ではC#やVisual Basic .NETを中心としたWindowsアプリケーション開発における主力ライブラリとなっているほか、Monoや.NET CoreによりWindows以外のプラットフォームにも広がりを見せている。特にWindows Formsは、VCLの設計や開発スタイルを強く受け継いでいる。
問題点
[編集]VCLはWindows専用であり、他プラットフォームへの移植性はない。また、Delphi側の仕様起因でUnicode対応が遅れていたが、Delphi 2009でUnicode対応が強化された[6]。
関連項目
[編集]- Component Library for Cross Platform (CLX)
- FireMonkey
- Delphi
- ソフトウェアコンポーネント
- Microsoft Visual Basic
- 基本クラスライブラリ
- Windows Forms
脚注
[編集]- ^ Object Pascalが言語機能としてサポートしているプロパティが、IDEと親和性が高いことも寄与している。
- ^
TObject
は、Javaにおける暗黙の最上位基底クラスであるオブジェクト型java.lang.Object
に相当するが、Object Pascalにおけるオブジェクト型という用語は意味が異なるので注意されたい。 - ^ C であっても、Microsoft Foundation Class (MFC) などのように単一継承のクラス階層で設計されているライブラリもある。
- ^ System.Classes.TComponent - RAD Studio API Documentation
- ^ 日経BP (1999年6月9日). “USNews Microsoft、かつてのライバルInpriseに資本参加”. 2009年8月4日閲覧。
- ^ Delphiにおける一般的なUnicodeへの移行テクニック
外部リンク
[編集]- 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)