Visual Component Library

Visual Component Library (VCL) とは、視覚化された(ビジュアルな)ソフトウェアコンポーネントを元にして、Microsoft WindowsGUIアプリケーションを作成するためのソフトウェアライブラリおよびフレームワークである。ボーランドが、自社のソフトウェア統合開発環境 (IDE) であるDelphiC++ 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]

関連項目

脚注

  1. ^ Object Pascalが言語機能としてサポートしているプロパティが、IDEと親和性が高いことも寄与している。
  2. ^ TObjectは、Javaにおける暗黙の最上位基底クラスであるオブジェクト型java.lang.Objectに相当するが、Object Pascalにおけるオブジェクト型という用語は意味が異なるので注意されたい。
  3. ^ C++であっても、Microsoft Foundation Class (MFC) などのように単一継承のクラス階層で設計されているライブラリもある。
  4. ^ System.Classes.TComponent - RAD Studio API Documentation
  5. ^ 日経BP (1999年6月9日). “USNews Microsoft、かつてのライバルInpriseに資本参加”. 2009年8月4日閲覧。
  6. ^ 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)
低レベル
高レベル
AmigaOS対応
  • BOOPSI(英語版)
  • Magic User Interface(英語版)
  • ReAction GUI(英語版)
  • Zune(英語版)
Mac OS/macOS対応
  • Cocoa (API)
  • MacApp(英語版)
  • MacZoop(英語版)
  • PowerPlant(英語版)
Windows対応
X11下のUnix対応
  • Athena/Xaw(英語版)
  • InterViews(英語版)
  • LessTif
  • Motif
言語別
クロスプラットフォーム
CLI
  • Gtk#
  • Moonlight(英語版)
  • Tao(英語版)
C/C++
  • CEGUI(英語版)
  • Component Library for Cross Platform
  • FLTK
  • FOX toolkit(英語版)
  • OpenGL User Interface Library(英語版)
  • GTK
  • Juce(英語版)
  • Qt
  • Wt(英語版)
  • Tk
  • TnFOX(英語版)
  • Ultimate++(英語版)
  • Visual Component Framework(英語版)
  • wxWidgets
  • YAAF(英語版)
  • XForms
  • XVT(英語版)
Objective-C
Flash
Java
デスクトップ
ウェブ
JavaScript
Common Lisp
Object Pascal
Perl
  • WxPerl(英語版)
  • Perl/Tk
PHP
  • PHP-GTK(英語版)
  • PHP-Qt(英語版)
  • WxPHP(英語版)
Python
Ruby
  • Shoes
  • QtRuby(英語版)
XML
  • Ample SDK(英語版)
  • CougarXML(英語版)
  • GladeXML
  • Lively Kernel(英語版)
  • Pyjamas(英語版)
  • Rialto Toolkit(英語版)
  • XAML
  • XML User Interface(英語版)
  • XUL
  • Wt(英語版)
  • 一覧記事一覧(英語版)
  • カテゴリカテゴリ