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

ウィジェット・ツールキット () あるいは GUIツールキット とは、グラフィカルユーザインタフェース (GUI) を構成する部品の集合である。通常、ライブラリやアプリケーションフレームワークの形式で実装される。分野によって、ウィジェットはコントロールあるいはコンポーネントとも呼ばれる。GUIを利用したデスクトップアプリケーションやモバイルアプリケーションといった、アプリケーションソフトウェアの作成に用いられる。
個々の部品についてはウィジェット (GUI)を参照されたい。
概要.
高レベルなウィジェット・ツールキットは、GUIの生成と振る舞いを管理するAPIである。
ウィジェット・ツールキットは、コンテナの中でのウィジェットの位置決めの手段を必ず持っている。最も簡単な方法は、画面上の絶対座標や上位ウィジェットからの相対座標をピクセル単位で指定する方法だが、ウィジェット同士の相対的な位置関係だけを指定して具体的な座標を指定しない方法もある（レイアウトマネージャ）。多くのツールキットは、統合開発環境と連携した視覚的なGUIデザイナーをサポートし、直感的なGUI部品の配置およびプレビューを使用したプロトタイピング (Rapid Application Development, RAD) も可能となっている。
GUI部品の配置や各種プロパティの設定は、ロジックを記述するためのプログラミング言語によって直接ソースファイルに記述する方法のほか、独自のリソーススクリプトやXMLなどの形式で、ロジックを記述するソースファイルとは別のファイルに分けて記述することのできる機能をサポートするツールキットもある。レイアウト定義を別ファイルに分離することで、直感的なプレビューやプロトタイピングを可能にするデザイン補助ツールを開発しやすくなるなどのメリットがあるが、複数のファイルにUIの記述が分散することで、逆に実装が複雑化してしまったりするデメリットもある。プログラマーが手作業で編集せずに、デザイン補助ツールを経由して操作することで自動生成されたレイアウト定義ファイルのコードは、バージョン管理ツールなどを用いて複数人でソースコードを共有して開発する際にコンフリクトの解消が難しくなることもある。
ウィジェットのルック・アンド・フィールはツールキット内でハードコードされる場合もあるが、ウィジェット・ツールキットによってはユーザーがルック・アンド・フィールを定義できるAPIを提供している。
GUIアプリケーションの開発効率やメンテナンス性を向上するために、Model-View-Controller (MVC) やModel-View-ViewModel (MVVM) といった設計パターンが使用されることもある。ツールキットが標準的にこれらの設計パターンをサポートしていることもある。MVVMに関してはデータバインディング機能のサポートが前提となる。