This article needs additional citations for verification. (November 2025) |
PIGUI (プラットフォームに依存しないグラフィカルユーザーインターフェース) パッケージは、プログラマが複数のコンピュータプラットフォーム用の GUI コードを作成するために使用するソフトウェアライブラリです。 [ 1 ]このパッケージは、プログラマが対象とする GUI に依存しないサブルーチンやオブジェクト(およびプログラミング手法) を提供します。ソフトウェアが PIGUI として認められるためには、少なくとも 2 つの異なるオペレーティングシステムで複数の GUI をサポートする必要があります(たとえば、2 台のUnixボックスでOPEN LOOKとX11をサポートするだけでは PIGUI として認められません)。このパッケージは、必ずしも追加の移植性機能を提供するわけではありません。ネイティブのルックアンドフィールは望ましい機能ですが、PIGUI に必須ではありません。
考慮事項
PIGUI の使用には制限があります。たとえば、PIGUI はプログラムの GUI 側面のみを扱うため、他の移植性の問題はプログラマーが担当すること、ほとんどの PIGUI では結果のコード実行が遅くなること、プログラマーは PIGUI によって提供される機能セットに大きく制限されることなどです。
PIGUIへの依存は、プラットフォーム固有のGUIのコーディング方法を知っている人よりもPIGUIのコーディング方法を知っている人が少ないため、プロジェクトの困難につながる可能性があります。また、ベンダーが倒産した場合、将来のOS拡張を含め、サポートが受けられなくなる可能性があります。ただし、ソースコードが公開されていれば、この問題は軽減されるものの、完全に解消されるわけではありません。さらに、 PIGUIを含むあらゆるパッケージのバグは、製品版のコードにも影響を及ぼします。
代替アプローチ
Webブラウザは多くのアプリケーションにとって便利な代替手段となります。Webブラウザは、中央サーバー上でホストされるアプリケーションのプレゼンテーション層としてHTMLを利用し、ほぼすべてのプラットフォームで利用可能です。しかし、一部のアプリケーションはWebパラダイムに適しておらず、GUI機能を備えたローカルアプリケーションが必要になります。そのようなアプリケーションが複数のプラットフォームをサポートする必要がある場合、PIGUIがより適している場合があります。
PIGUI を使用する代わりに、開発者はアプリケーションを GUI 部分と非 GUI 部分に分割し、GUI 部分をネイティブAPIで実装することができます。そうすれば、移植時に新しいプラットフォーム用に GUI 部分のみを書き換えれば済みます。この方法は各プラットフォームへの適合性を高め、 PIGUI ツールキットによく伴うオーバーヘッドを排除できるため、この方法を推奨するソフトウェア開発者もいます。 [要出典]当然ながら、この方法は初期開発と継続的な保守(単一ソースコードベースではない)の両方でより多くの労力を必要とする可能性があります。また、すべての対象プラットフォーム向けのコーディング方法を習得する必要があり、これは(通常は)簡単な作業ではありません。そのため、PIGUI パッケージの市場が存在するのです。
ユーザーインターフェースのアプローチ
PIGUIパッケージのほとんど(あるいはすべて)は、プラットフォーム非依存を実現するために、3つのアプローチのいずれかを採用しています。最も一般的なアプローチは「階層化」と「エミュレート」のユーザーインターフェースですが、最近注目されているアプローチは「APIエミュレート」インターフェースです。
階層化インターフェースを使用するパッケージは、ネイティブのサードパーティ製GUI構築ツールキットにアクセスして、各GUIのルックアンドフィールに準拠した実装を実現します。階層化ユーザーインターフェースの利点は、単一のGUIに特化した他の製品に依存するため、エミュレートされたインターフェースよりもソフトウェアの提供量が少なく、結果としてコストも抑えられることです。また、階層化インターフェースは、あらゆるプラットフォームでネイティブのルックアンドフィールを正しく実現できる可能性が高くなります。
エミュレートされたユーザー インターフェースでは、PIGUI の結果のコードは低レベルの呼び出しを生成し、ルック アンド フィールの準拠はすべて PIGUI ソフトウェア自体によって処理されます (たとえば、OpenWindowsをサポートする場合、ソフトウェアはXView ツールキットでコンパイルする必要があるXViewプログラムを生成しません。ソフトウェアはX の組み込み関数と直接インターフェースするコードを生成します)。エミュレートされたユーザー インターフェースを提供するために、パッケージ プロバイダーはルック アンド フィールのサポート用に大量の追加コードを開発する必要があります。エミュレートされたユーザー インターフェースの利点は、たとえば X11 ワークステーションを使用しているユーザーがMacintoshスタイルの UI がどのように見えるかを確認できることです (ルック アンド フィールが製品の一部であるため)。エミュレートされたインターフェースは、階層化インターフェースよりも高速な GUI を提供できる可能性があります。さらに、GUI ソフトウェアを構築するために他のパッケージを購入する必要も、使用方法を習得する必要もありません。
プラットフォーム非依存を実現する3つ目のアプローチは、サポートされているターゲットAPI(通常はMicrosoft Windows API)の1つをエミュレートして、他のGUIをターゲットとすることです。これらの製品のいずれかを使用すれば、エミュレートされたAPIを使用してプログラミングすることができ、そのコードは(製品が移植性を提供している範囲で)他のGUIにも移植可能です。
特徴
PIGUIパッケージは基本的な機能において非常に似ています。それぞれがサブルーチンまたはオブジェクトを提供し、ユーザーがウィンドウ、ボタン(通常のボタンだけでなく、ラジオボタンやチェックボックスも)、メニューなどを作成できるようにします。いくつかの違いは以下のとおりです。
- 必要なプラットフォームのサポート、
- 実装言語の選択、
- ソースコードの入手可能性、
- プリンターやその他のデバイスのサポート、
- Unicodeを含むさまざまな文字エンコード方式のサポート、
- 描画パッケージのような機能をサポートする機能、
- ビットマップ(およびアイコン)のサポート、
- プラットフォーム独立へのアプローチ
- 気の利いた高レベルウィジェット、そして
- 価格(ロイヤリティおよび流通手数料を含む完全な価格)、
- 一部のパッケージには、グラフィックスをレンダリングしたり、ベクター グラフィックスを処理したりする機能が含まれており、カスタム デザインの作成に役立ちます。
参照
参考文献
- ^ Guthrie, Wade (1995年1月). 「ポータブルGUIソフトウェアの概要」. SIGCHI Bulletin . 27 (1): 55– 69. 2025年11月7日閲覧。
外部リンク
- 古くて時代遅れのPIGUI FAQ
- GUIツールキット、フレームワークページ
- シンプルユーザーインターフェースツールキットSUITから学んだ教訓
- wyoGuide - 優れたクロスプラットフォーム開発に関するチュートリアル
- 再構成可能な超音波システムチップハードウェア用のプラットフォームに依存しないGUI