ウィジェット・ツールキット
ウィジェット・ツールキット (widget toolkit) あるいは GUIツールキット とは、グラフィカルユーザインタフェース (GUI) を
概要
[- GUIは、ウィジェットの
木 構造 として生成 されることが多 く、その一部 がユーザーとのやり取 りが可能 となっていて(ボタン、チェックボックスなど)、他 はウィジェットをグループ化 するコンテナである(ウィンドウ、パネルなど)。 - ウィジェットの
木 構造 の中身 やウィジェットの属性 は、実行 時 に変更 可能 であるものが多 い(例 えば、木 構造 からウィジェットを追加 ・削除 できる)。 - ツールキットはボタンをクリックするなどのユーザーイベントを
扱 う。イベント検出 後 のアクションはツールキットが指定 するものではなく、アプリケーションが指定 する。例 えば、ファイルダイアログからユーザーがファイルを選択 したら、ファイルダイアログ・ウィジェット自身 の反 応 とそのユーザーイベントの検出 はウィジェット・ツールキットが扱 うが、ファイルを選択 したことに対応 する具体 的 なアクション(そのファイルを読 み込 むなど)はアプリケーション自身 が行 う。
ウィジェット・ツールキットは、コンテナの
GUI
ウィジェットのルック・アンド・フィールはツールキット
GUIアプリケーションの
主要 なウィジェット・ツールキット
[低 レベルなもの
[オペレーティングシステムに組 み込 まれているもの
[- Classic Mac OSのツールボックス、あるいは
従来 はROMに組 み込 まれていたMacintoshのAPI。Mac OS Xでの改良 版 はCarbon。 - Windowsで
使 われているWindows API。描画 機能 をつかさどるGraphics Device Interface (GDI) と呼 ばれる下位 レベルレイヤーの上 に、ウィンドウシステムをつかさどる上位 レベルレイヤーが構築 されている。主 にC言語 形式 関数 群 あるいはCOMコンポーネントの形 で公開 ・提供 される。 - AndroidのActivity/View
オペレーティングシステム上 の分離 した層 として実装 されているもの
[- X Window Systemは
基本 的 な構成 要素 (Xt) を含 んでおり[1]、Motifはそれを使 っているが、GTKやQtなど大 部分 のツールキットはこれを使 わず、直接 Xlibを使 っている。 - AmigaOSのIntuitionは、AmigaのROMに
含 まれていて、やや高 レベルなウィジェットを使 いAmigaのGUIであるWorkbenchを呼 び出 している。Amiga OS 2.0のIntuitionからはディスク上 のオブジェクト指向 ライブラリとなった。同時 にWorkbenchもIconもディスクベースとなっている。
高 レベルなもの
[macOS
[- Cocoa - macOSのアプリ
開発 で使用 される(Aquaも参照 されたい)。UIフレームワークとしてAppKitを含 む[2][3]。 - MacApp - Macintosh (Mac OS XおよびMac OS 9) フレームワーク[4]。
- MacZoop - Macintosh C++フレームワーク。
- PowerPlant - Macintoshフレームワーク。
- SwiftUI - Swiftのみを
使用 してUIを宣言 的 に記述 できるフレームワーク[5]。
iOS
[Windows
[- Microsoft Foundation Class (MFC) は、1990
年代 から存在 するWindows専用 の古 いC++フレームワークである。MFCはWindows APIの薄 いラッパーであり、独立 したツールキットではない。 - Windows Template Library (WTL) は、ATLの
拡張 であり、C++テンプレートに基 づいたWindows APIのラッパーである。MFCよりも軽量 なフレームワークを提供 する。 - Object Windows LibraryはMFCに
相当 するボーランドのライブラリ。これもWindows API (Win32 API) のラッパーであり、独立 したツールキットではない。 - Visual Component Library (VCL) はボーランドのC++BuilderとDelphi
製品 に含 まれているツールキット。これもWindows API (Win32 API) のラッパーであり、独立 したツールキットではないが、MFCよりも高度 な抽象 化 およびRAD環境 を提供 する。 - Windows Forms (WinForms) は、.NET Frameworkにおけるマネージコード
向 けWindows APIのラッパーであり、GUI制御 用 のクラスライブラリからなる。設計 はVCLに近 く、Microsoft Visual Studioに統合 されたRADをサポートする。Monoによる互換 実装 も存在 する[8][注釈 1]。Windows限定 で.NET Core 3.0以降 にも移植 された。 - Windows Presentation Foundation (WPF) は、.NET Framework 3.0
以降 で利用 可能 なグラフィックスサブシステムである。Direct3Dによるハードウェアレンダリングアクセラレーションをサポートしている。WPFでのユーザーインターフェイスは、任意 のCLR言語 (例 えばC#/VB.NET)やXMLベースのXAML言語 を使 って定義 できる。WPF向 けのGUIビルダーとしてMicrosoft Expression Blendがある。Windows限定 で.NET Core 3.0以降 にも移植 された。 - Windowsランタイム (WinRT) およびWindows UI Library (WinUI) は、Windows 8で
実装 されたModern UIアプリケーション開発 ・実行 用 のCOMベースフレームワークである。WPF同様 にXAMLを利用 したUI定義 が可能 となっている。
Android
[- レイアウトXML -
独自 のXML形式 を利用 してレイアウトやカスタム部品 を定義 できる[9]。 - Jetpack Compose - Kotlinのみを
使用 してUIを宣言 的 に記述 できるフレームワーク[10]。SwiftUIと類似 のコンセプトを持 つ。
UNIX と X Window System
[- Xawは、Project Athenaで
開発 されたX Window System用 のウィジェットセット。 - MotifはCommon Desktop Environmentで
使用 されている。 - LessTif はMotifのオープンソース
版 (LGPL)。 - InterViewsはC++で
書 かれたツールキット。
クロスプラットフォーム
[- Flashベース
- Adobe Flashを
使 って多 くのウェブブラウザと一部 の携帯 電話 で機能 するウィジェットを作成 できる。 - Adobe Flexはウェブブラウザ
用 の高度 なウィジェットを提供 する。FlashのウィジェットはFlexで利用 可能 。 - FlashとFlexのウィジェットはAdobe Integrated Runtime (AIR) を
使 ってウェブブラウザを用 いずに利用 可能 となる予定 である[いつ?]。 - Flashのフリーソフトウェアとしての
再 実装 がGNU Gnashである。開発 中 であるが、こちらもFlashのウィジェットをウェブブラウザを使 わずに利用 可能 。
- Adobe Flashを
- XMLベース[
注釈 2] - XAMLおよび.NETベース
- Silverlight/Moonlight
- Xamarin.Forms
- .NET Multi-platform App UI (.NET MAUI)
- Ajaxベース
- Qooxdooはウェブ
用 のQtである。 - jQuery
- Dojo Toolkit
- Google Web Toolkit
- Yahoo! UI Library
- Ext JS
- Qooxdooはウェブ
- Javaベース
- Abstract Window Toolkit (AWT) はJavaアプリケーションで
使用 される。プラットフォーム毎 にウィジェット・ツールキットを切 り替 えて使用 する。 - Swingは サン・マイクロシステムズが AWTを
改良 ・拡張 したもの。 - Standard Widget Toolkit (SWT) は Eclipse
計画 の一環 としてIBMによって開発 された Java用 ウィジェット・ツールキット。動作 する環境 のウィジェットを使用 する。100% Pure Javaではない。 - JavaFX
- Abstract Window Toolkit (AWT) はJavaアプリケーションで
- C
言語 /C++ベースおよびマルチ言語 ベース- CLX (Component Library for Cross-platform) は、ボーランドのDelphi、C++Builder、Kylixで
使用 されている。Qtをベースにしており、同社 のVCLツールキットとよく似 たインタフェースとなっている。 - GTKは、オープンソース (LGPL) であり、
主 にX Window Systemで使 われている。他 のプラットフォーム上 にも移植 あるいはエミュレータが存在 する。GNOMEおよびXfceデスクトップ環境 で使 われている。 - Qtは、オープンソース (LGPL) であり、Unix/Linux (X Window System)、Windows、macOS、さらに
組 み込 みシステムで使用 可能 である。また、商用 バージョン (QPL) も存在 する。KDEで使 われている。 - Tkは、Tcl
上 あるいは他 のスクリプト言語 (Pythonなど)で使用 するウィジェットセット。 - wxWidgets(
以前 の名称 はwxWindows)は、オープンソース(ゆるいLGPL)であり、C++、Python、Perlから使 えるクロスプラットフォームなツールキットである。 - FLTKは、オープンソース (LGPL) であり、
小 さくて高速 なのが特徴 。 - FOX toolkit は、オープンソース (LGPL) であり、クロスプラットフォームである。
- Agar
移動 した? - CEGUI
- GLUI
- Juce
- Ultimate++
- Visual Component Framework (VCF)
- YAAF
- NWSTK
- CLX (Component Library for Cross-platform) は、ボーランドのDelphi、C++Builder、Kylixで
- Pascalベース
- LazarusはFree PascalおよびObject Pascal
向 けの統合 開発 環境 であり、ウィジェット・ツールキットを含 む。 - IP Pascal
- fpGUI
- LazarusはFree PascalおよびObject Pascal
カテゴリ分 けされていないもの
[脚注
[注釈
[出典
[- ^ D.A.ヤング
著 、川手 恭輔 訳 『X Toolkit プログラミング』株式会社 トッパン、1990年 7月 30日 、13頁 。ISBN 4-8101-8502-8。 - ^ a b Cocoa (Touch) | Apple Documentation Archive
- ^ AppKit | Apple Developer Documentation
- ^ “Developer - MacApp”. Apple. 2009
年 3月 2日 時点 のオリジナルよりアーカイブ。2022年 3月 13日 閲覧 。 - ^ SwiftUIの
概要 - Xcode - Apple Developer - ^ UIKit | Apple Developer Documentation
- ^ UIKit -
日本語 ドキュメント - Apple Developer - ^ WinForms | Mono
- ^ レイアウト | Android デベロッパー | Android Developers
- ^ Jetpack Compose | Android Developers
外部 リンク
[- The GUI Toolkit, Framework Page(
英語 ),最近 のGUIツールキットを比較 している (geocities上 のミラー(英語 ) - ウェイバックマシン(1999年 1月 17日 アーカイブ分 ),他 のミラー(英語 )). - Survey of Widget sets (for the X Window System) (Edward Falk)
- GUI Toolkits for The X Window System (Leslie Polzer、freshmeat.net、2003
年 7月 27日 )