ウィジェット・ツールキット




ウィジェット・ツールキット (widget toolkit) あるいは GUIツールキット とは、グラフィカルユーザインタフェース (GUI) を構成する部品の集まりである。通常、ライブラリやアプリケーションフレームワークの形式で実装される。分野によって、ウィジェットはコントロール、コンポーネントとも呼ばれる。デスクトップアプリケーションの作成に用いられる。


個々の部品についてはウィジェット (GUI)を参照されたい。




目次






  • 1 概要


  • 2 主要なウィジェット・ツールキット


    • 2.1 低レベルなもの


      • 2.1.1 オペレーティングシステムに組み込まれているもの


      • 2.1.2 オペレーティングシステム上の分離した層として実装されているもの




    • 2.2 高レベルなもの


      • 2.2.1 macOS


      • 2.2.2 Windows


      • 2.2.3 UNIX と X Window System


      • 2.2.4 クロスプラットフォーム




    • 2.3 カテゴリ分けされていないもの




  • 3 脚注


  • 4 外部リンク





概要


高レベルなウィジェット・ツールキットは、GUIの生成と振る舞いを管理するAPIである。



  • GUIは、ウィジェットの木構造として生成されることが多く、その一部がユーザーとのやり取りが可能となっていて(ボタン、チェックボックスなど)、他はウィジェットをグループ化するコンテナである(ウィンドウ、パネルなど)。

  • ウィジェットの木構造の中身やウィジェットの属性は、実行時に変更可能であるものが多い(例えば、木構造からウィジェットを追加・削除できる)。

  • ツールキットはボタンをクリックするなどのユーザーイベントを扱う。イベント検出後のアクションはツールキットが指定するものではなく、アプリケーションが指定する。例えば、ファイルダイアログからユーザーがファイルを選択したら、ファイルダイアログ・ウィジェット自身の反応とそのユーザーイベントの検出はウィジェット・ツールキットが扱うが、ファイルを選択したことに対応する具体的なアクション(そのファイルを読み込むなど)はアプリケーション自身が行う。


ウィジェット・ツールキットは、コンテナの中でのウィジェットの位置決めの手段を必ず持っている。最も簡単な方法は、画面上の絶対座標や上位ウィジェットからの相対座標をピクセル単位で指定する方法だが、ウィジェット同士の相対的な位置関係だけを指定して具体的な座標を指定しない方法もある(レイアウトマネージャ)。


ウィジェットのルック・アンド・フィールはツールキット内でハードコードされる場合もあるが、ウィジェットツールキットによってはユーザーがルック・アンド・フィールを定義できるAPIを提供している。



主要なウィジェット・ツールキット



低レベルなもの



オペレーティングシステムに組み込まれているもの




  • Classic Mac OSのツールボックス、あるいは従来はROMに組み込まれていた Macintosh の API。Mac OS Xでの改良版はCarbon


  • Windowsで使われている Windows API。描画機能をつかさどるGraphics Device Interface (GDI) と呼ばれる下位レベルレイヤーの上に、ウィンドウシステムをつかさどる上位レベルレイヤーが構築されている。主にC言語形式関数群あるいはCOMコンポーネントの形で公開・提供される。



オペレーティングシステム上の分離した層として実装されているもの




  • X Window System は基本的な構成要素 (Xt) を含んでおり、Motif はそれを使っているが、GTK+ や Qt など大部分のツールキットはこれを使わず、直接 Xlib を使っている。


  • AmigaOS の Intuition は、Amiga の ROM に含まれていて、やや高レベルなウィジェットを使い Amiga の GUI である Workbench を呼び出している。Amiga OS 2.0 の Intuition からはディスク上のオブジェクト指向ライブラリとなった。同時に Workbench も Icon もディスクベースとなっている。



高レベルなもの



macOS




  • Cocoa - macOSで使用される(Aquaも参照されたい)。


  • MacApp Macintosh フレームワーク。


  • MacZoop Macintosh C++フレームワーク。


  • PowerPlant Macintoshフレームワーク。



Windows




  • Microsoft Foundation Class (MFC) は、多くの開発者がWindows上の開発で使用している。このC++フレームワークは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) のラッパーであり、独立したツールキットではない。


  • Windows Forms (WinForms) は、.NET Frameworkにおけるマネージコード向けWindows APIのラッパーであり、GUI制御用のクラスライブラリからなる。Monoによる互換実装も存在する[1][2]


  • Windows Presentation Foundation (WPF) は、.NET Framework 3.0以降で利用可能なグラフィックスサブシステムである。Direct3Dによるハードウェアレンダリングアクセラレーションをサポートしている。WPFでのユーザーインターフェイスは、任意のCLR言語(例えば C#)やXMLベースのXAML言語を使って定義できる。WPF向けのGUIビルダーとしてMicrosoft Expression Blendがある。


  • Windowsランタイム (WinRT) は、Windows 8で実装されたModern UIアプリケーション開発・実行用のCOMベースフレームワークである。WPF同様にXAMLを利用したUI定義が可能となっている。



UNIX と X Window System




  • Xawは、Project Athenaで開発されたX Window System用のウィジェットセット。


  • Motif は Common Desktop Environmentで使用されている。


  • LessTif はMotifのオープンソース版 (LGPL)。


  • InterViewsはC++で書かれたツールキット。



クロスプラットフォーム




  • Flashベース


    • Adobe Flashを使って多くのWebブラウザと一部の携帯電話で機能するウィジェットを作成できる。


    • Adobe Flex はWebブラウザ用の高度なウィジェットを提供する。FlashのウィジェットはFlexで利用可能。

    • FlashとFlexのウィジェットは Adobe Integrated Runtime (AIR) を使ってブラウザを用いずに利用可能となる予定である。

    • Flashのフリーソフトウェアとしての再実装が GNU Gnashである。開発中であるが、こちらもFlashのウィジェットをブラウザを使わずに利用可能。




  • XMLベース[3]

    • XUL


    • XAML

      • Silverlight

      • Xamarin.Forms






  • Ajaxベース


    • QooxdooはWeb用のQtである。

    • jQuery

    • Dojo Toolkit

    • Google Web Toolkit

    • Yahoo! UI Library

    • Ext JS




  • Javaベース


    • Abstract Window Toolkit (AWT) はJavaアプリケーションで使用される。プラットフォーム毎にウィジェットツールキットを切り替えて使用する。


    • Swing は サン・マイクロシステムズが AWTを改良・拡張したもの。


    • Standard Widget Toolkit (SWT) は Eclipse計画の一環としてIBMによって開発された Java用ウィジェット・ツールキット。動作する環境のウィジェットを使用する。100% Pure Javaではない。

    • JavaFX




  • 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、Mac OS X、さらに組み込みシステムで使用可能である。また、商用バージョン(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




  • Pascalベース


    • Lazarusは Free PascalおよびObject Pascal向けの統合開発環境であり、ウィジェット・ツールキットを含む。

    • IP Pascal

    • fpGUI





カテゴリ分けされていないもの



  • GNUstep

  • MetaCard



脚注




  1. ^ WinForms | Mono


  2. ^ Monoは.NETのクロスプラットフォームかつオープンソースの実装であり、Windows APIのないプラットフォームでも動く互換レイヤーすなわち共通言語基盤 (CLI) を一から実装している。これにより、.NET Framework 2.0の基本APIを提供するが、そのAPI実装は未だ[いつ?]不完全である。


  3. ^ QtやJavaFXなどでもレイアウト記述ファイルとしてXMLは広く使われている。



外部リンク




  • The GUI Toolkit, Framework Page(英語), 最近のGUIツールキットを比較している (geocities上のミラー(英語), 他のミラー(英語)).


  • 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日)









Popular posts from this blog

宮崎県

濃尾地震

シテ島