(Translated by https://www.hiragana.jp/)
ウィジェット・ツールキット - Wikipedia コンテンツにスキップ

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

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
GUIツールキットから転送てんそう

ウィジェット・ツールキット (widget toolkit) あるいは GUIツールキット とは、グラフィカルユーザインタフェース (GUI) を構成こうせいする部品ぶひん集合しゅうごうである。通常つうじょうライブラリアプリケーションフレームワーク形式けいしき実装じっそうされる。分野ぶんやによって、ウィジェットコントロールあるいはコンポーネントともばれる。GUIを利用りようしたデスクトップアプリケーションモバイルアプリケーションといった、アプリケーションソフトウェア作成さくせいもちいられる。

個々ここ部品ぶひんについてはウィジェット (GUI)参照さんしょうされたい。

概要がいよう

[編集へんしゅう]

こうレベルなウィジェット・ツールキットは、GUI生成せいせいいを管理かんりするAPIである。

  • GUIは、ウィジェット構造こうぞうとして生成せいせいされることがおおく、その一部いちぶがユーザーとのやりりが可能かのうとなっていて(ボタンチェックボックスなど)、はウィジェットをグループするコンテナである(ウィンドウパネルなど)。
  • ウィジェットの構造こうぞう中身なかみやウィジェットの属性ぞくせいは、実行じっこう変更へんこう可能かのうであるものがおおい(たとえば、構造こうぞうからウィジェットを追加ついか削除さくじょできる)。
  • ツールキットはボタンをクリックするなどのユーザーイベントあつかう。イベント検出けんしゅつのアクションはツールキットが指定していするものではなく、アプリケーション指定していする。たとえば、ファイルダイアログ英語えいごばんからユーザーがファイル選択せんたくしたら、ファイルダイアログ・ウィジェット自身じしんはんおうとそのユーザーイベントの検出けんしゅつはウィジェット・ツールキットがあつかうが、ファイルを選択せんたくしたことに対応たいおうする具体ぐたいてきなアクション(そのファイルをむなど)はアプリケーション自身じしんおこなう。

ウィジェット・ツールキットは、コンテナなかでのウィジェット位置決いちぎめの手段しゅだんかならっている。もっと簡単かんたん方法ほうほうは、画面がめんじょう絶対ぜったい座標ざひょう上位じょういウィジェットからの相対そうたい座標ざひょうピクセル単位たんい指定していする方法ほうほうだが、ウィジェット同士どうし相対そうたいてき位置いち関係かんけいだけを指定していして具体ぐたいてき座標ざひょう指定していしない方法ほうほうもある(レイアウトマネージャ)。おおくのツールキットは、統合とうごう開発かいはつ環境かんきょう連携れんけいした視覚しかくてきなGUIデザイナーをサポートし、直感ちょっかんてきなGUI部品ぶひん配置はいちおよびプレビューを使用しようしたプロトタイピング (Rapid Application Development, RAD) も可能かのうとなっている。

GUI部品ぶひん配置はいち各種かくしゅプロパティの設定せっていは、ロジックを記述きじゅつするためのプログラミング言語げんごによって直接ちょくせつソースファイルに記述きじゅつする方法ほうほうのほか、独自どくじのリソーススクリプトやXMLなどの形式けいしきで、ロジックを記述きじゅつするソースファイルとはべつのファイルにけて記述きじゅつすることのできる機能きのうをサポートするツールキットもある。レイアウト定義ていぎべつファイルに分離ぶんりすることで、直感ちょっかんてきなプレビューやプロトタイピングを可能かのうにするデザイン補助ほじょツールを開発かいはつしやすくなるなどのメリットがあるが、複数ふくすうのファイルにUIの記述きじゅつ分散ぶんさんすることで、ぎゃく実装じっそう複雑ふくざつしてしまったりするデメリットもある。プログラマーが手作業てさぎょう編集へんしゅうせずに、デザイン補助ほじょツールを経由けいゆして操作そうさすることで自動じどう生成せいせいされたレイアウト定義ていぎファイルのコードは、バージョン管理かんりツールなどをもちいて複数ふくすうじんでソースコードを共有きょうゆうして開発かいはつするさいにコンフリクトの解消かいしょうむずかしくなることもある。

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

GUIアプリケーションの開発かいはつ効率こうりつやメンテナンスせい向上こうじょうするために、Model-View-Controller (MVC) やModel-View-ViewModel (MVVM) といった設計せっけいパターンが使用しようされることもある。ツールキットが標準ひょうじゅんてきにこれらの設計せっけいパターンをサポートしていることもある。MVVMにかんしてはデータバインディング機能きのうのサポートが前提ぜんていとなる。

主要しゅようなウィジェット・ツールキット

[編集へんしゅう]

ていレベルなもの

[編集へんしゅう]

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

[編集へんしゅう]
  • Classic Mac OSのツールボックス、あるいは従来じゅうらいROMまれていたMacintoshAPIMac OS Xでの改良かいりょうばんCarbon
  • Windows使つかわれているWindows API描画びょうが機能きのうをつかさどるGraphics Device Interface (GDI) とばれる下位かいレベルレイヤーのうえに、ウィンドウシステムをつかさどる上位じょういレベルレイヤーが構築こうちくされている。おもC言語げんご形式けいしき関数かんすうぐんあるいはCOMコンポーネントのかたち公開こうかい提供ていきょうされる。
  • AndroidのActivity/View

オペレーティングシステムじょう分離ぶんりしたそうとして実装じっそうされているもの

[編集へんしゅう]
  • X Window System基本きほんてき構成こうせい要素ようそ (Xt) をふくんでおり[1]Motifはそれを使つかっているが、GTKQtなどだい部分ぶぶんのツールキットはこれを使つかわず、直接ちょくせつXlib使つかっている。
  • AmigaOSIntuitionは、AmigaのROMにふくまれていて、ややこうレベルなウィジェットを使つかいAmigaのGUIであるWorkbenchをしている。Amiga OS 2.0のIntuitionからはディスクじょうオブジェクト指向しこうライブラリとなった。同時どうじにWorkbenchもIconもディスクベースとなっている。

こうレベルなもの

[編集へんしゅう]
  • 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++BuilderDelphi製品せいひんふくまれているツールキット。これも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定義ていぎ可能かのうとなっている。
  • レイアウトXML - 独自どくじのXML形式けいしき利用りようしてレイアウトやカスタム部品ぶひん定義ていぎできる[9]
  • Jetpack Compose - Kotlinのみを使用しようしてUIを宣言せんげんてき記述きじゅつできるフレームワーク[10]。SwiftUIと類似るいじのコンセプトをつ。

UNIX と X Window System

[編集へんしゅう]
  • Xawは、Project Athena開発かいはつされたX Window Systemようのウィジェットセット。
  • MotifCommon Desktop Environment使用しようされている。
  • LessTif はMotifのオープンソースばん (LGPL)。
  • InterViewsC++かれたツールキット。

クロスプラットフォーム

[編集へんしゅう]
  • Flashベース
    • Adobe Flash使つかっておおくのウェブブラウザ一部いちぶ携帯けいたい電話でんわ機能きのうするウィジェットを作成さくせいできる。
    • Adobe Flexはウェブブラウザよう高度こうどなウィジェットを提供ていきょうする。FlashのウィジェットはFlexで利用りよう可能かのう
    • FlashとFlexのウィジェットはAdobe Integrated Runtime (AIR) を使つかってウェブブラウザをもちいずに利用りよう可能かのうとなる予定よていである[いつ?]
    • Flashのフリーソフトウェアとしてのさい実装じっそうがGNU Gnashである。開発かいはつちゅうであるが、こちらもFlashのウィジェットをウェブブラウザを使つかわずに利用りよう可能かのう
  • XMLベース[注釈ちゅうしゃく 2]
  • XAMLおよび.NETベース
  • Ajaxベース
  • 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++、PythonPerlから使つかえるクロスプラットフォームなツールキットである。
    • FLTKは、オープンソース (LGPL) であり、ちいさくて高速こうそくなのが特徴とくちょう
    • FOX toolkit は、オープンソース (LGPL) であり、クロスプラットフォームである。
    • Agar移動いどうした?
    • CEGUI
    • GLUI
    • Juce
    • Ultimate++
    • Visual Component Framework (VCF)
    • YAAF
    • NWSTK

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

[編集へんしゅう]

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ Monoは.NETのクロスプラットフォームかつオープンソース実装じっそうであり、Windows APIのないプラットフォームでもうご互換ごかんレイヤーすなわち共通きょうつう言語げんご基盤きばん (CLI) をいちから実装じっそうしている。これにより、.NET Framework 2.0の基本きほんAPI提供ていきょうするが、そのAPI実装じっそういま[いつ?]不完全ふかんぜんである。
  2. ^ QtやJavaFXなどでもレイアウト記述きじゅつファイルとしてXMLはひろ使つかわれている。

出典しゅってん

[編集へんしゅう]
  1. ^ D.A.ヤング ちょ川手かわて恭輔きょうすけ やく『X Toolkit プログラミング』株式会社かぶしきがいしゃトッパン、1990ねん7がつ30にち、13ぺーじISBN 4-8101-8502-8 
  2. ^ a b Cocoa (Touch) | Apple Documentation Archive
  3. ^ AppKit | Apple Developer Documentation
  4. ^ Developer - MacApp”. Apple. 2009ねん3がつ2にち時点じてんオリジナルよりアーカイブ。2022ねん3がつ13にち閲覧えつらん
  5. ^ SwiftUIの概要がいよう - Xcode - Apple Developer
  6. ^ UIKit | Apple Developer Documentation
  7. ^ UIKit - 日本語にほんごドキュメント - Apple Developer
  8. ^ WinForms | Mono
  9. ^ レイアウト | Android デベロッパー | Android Developers
  10. ^ Jetpack Compose | Android Developers

外部がいぶリンク

[編集へんしゅう]