Solaris 共通デスクトップ環境 Motif への移行

アーキテクチャの影響

コードをすぐに Solaris Motif に変換しないでください。まずアプリケーションのアーキテクチャを調べてから、アプリケーションを Motif と CDE に移植してください。

アプリケーションのアーキテクチャが大きいほど、アプリケーションを正しく構成し直す作業は重要になります。このような場合に「変換と配置」戦略を使用すると、移植プロセスがさらに複雑になります。

GUI と内部

重要な機能が周辺の GUI から分離されているプログラムの場合は、OPEN LOOK ユーザインタフェースと Motif との違いが及ぼす影響を無視してもかまいません。しかし、コードがユーザのアクションにリンクされている場合や、OPEN LOOK の特定の機能に依存している場合は、それと同等の Solaris Motif 機能を作成するのが難しい場合があります。

コードモジュールを介して線を描画して、ユーザインタフェースを構成する部分をアプリケーションの残りの部分を構成する部分から完全に分離できる場合は、ユーザインタフェースモジュールを Motif 用に開発されたものと同等のモジュールに置き換えるプロセスに移行作業を集中できます。多くのアプリケーション開発者は、この種の明確な分離が必要なソフトウェア開発方式に従っており、ユーザインタフェースとアプリケーション内部の間でプログラムの境界を正式に指定している場合もあります。

また、ソフトウェアがよりモノリシックで 、ユーザインタフェースを提供する機能にアプリケーション固有の機能が埋め込まれている場合は、この 2 つのタイプの機能を分離するのに膨大な時間が必要になるため移行作業は複雑になります。極端な場合には、スタイルガイドに違反するか、プログラムの一部を設計変更するかを選択しなければなりません。

Solaris CDE ソフトウェアの持つすべての機能を活用するための所要時間は、アプリケーションの配置に大きく左右されます。適切に設計されたアプリケーションほど簡単に移植でき、保守しやすく読みやすいように適切に分割できます。

静的配置と動的配置

前述のように、アプリケーションを Motif に移植する作業は、オブジェクトごとにスワップするわけではありません。このようなスワップは、アプリケーションユーザインタフェースの静的面に集中しています。特に、複雑なアプリケーションには、アプリケーションの基盤を管理する多数のオブジェクトが入っており、基盤を動的な状況で機能させます (アプリケーションの動的面には、ウィンドウのサイズ変更、ローカリゼーション、フォントの変更などが含まれますが、他の要素も含まれます)。OPEN LOOK と Motif のツールキットでは、アプリケーション内の動的ジオメトリを処理するこれらの「マネージャウィジェット」が異なります。マネージャウィジェットをオブジェクトごとにスワップしようとすると、アプリケーションは希望どおりの動的面を示しません。通常、アプリケーションの動的面の処理に適した設計を導入すると、アーキテクチャはより複雑になります。

XView では、多様な動的配置は使用できません。主として、オブジェクトは位置 (x,y) で固定されているため、アプリケーションフォントの変更や、アプリケーションの言語対応化は難しい場合があります。Motif と OLIT には、多様なジオメトリマネージャウィジェットがありますが、両者は大きく異なります。

表 6-1 OLIT と Motif のジオメトリマネージャウィジェット

OLIT 

Motif 

コメント 

BulletinBoard

XmBulletinBoard

基本的には同等。子を静的な x,y ピクセルベースで配置できます。 

Caption

(なし) 

OLIT の Caption ウィジェットを使用すると、コントロールウィジェットの 4 面のいずれかにラベルを自動的に配置できます。

この機能を Motif に導入するには、ラベルとコントロールという 2 つの子が入った別の XmRowColumn ウィジェットを作成します。

ControlArea

XmRowColumn

どちらのウィジェットを使用しても、行と列で子を配置できます。OLIT の ControlArea ウィジェットは、コロンを使用した Caption ウィジェットの子の垂直整列をサポートしています。これは、Motif の XmRowColumn ウィジェットにはない機能です。1

Motif の XmRowColumn ウィジェットは、特定のサイズポリシー (通常は、特定の行または列内の子を同じサイズにする) を子に適用しますが、OLIT の ControlArea ウィジェットにはこの機能はありません。

FooterPanel

(なし) 

OLIT の FooterPanel ウィジェットを使用すると、最下部にフローティングフッタの子が付いたウィンドウを配置できます。

フッタとして使用できるウィジェット (XmForm または XmRowColumn ウィジェットなど) として「メッセージ領域の子」を設定すると、Motif の XmMainWindow ウィジェットをこの配置用に構成できます。

Form

XmForm

どちらのウィジェットを使用しても、その子を相互に相対的に接続し Form 自体に相対的に接続できますが、これらの「アタッチメント」の表示はそれぞれ異なります。OLIT の Form ウィジェットは x 軸と y 軸のアタッチメントリソースを提供しますが、Motif の XmForm ウィジェットは 4 面 (上下左右) すべてに別のアタッチメントを提供します。両方のアタッチメントパラダイムがよくわかっている場合は、OLIT の Form ウィジェットアタッチメントを同等の XmForm ウィジェットアタッチメントに変換できます。Motif の XmForm ウィジェットは、「Position」という特殊なアタッチメントタイプも提供します。Form ウィジェットのサイズが変化するたびに変化する Form ウィジェット内の動的位置に子を接続できます。これにより、Form ウィジェットの占有部分に常に一定のパーセントを占めるように子を構成できます。

RubberTile

(なし) 

OLIT の RubberTile ウィジェットは、RubberTile ウィジェットの高さ (垂直方向の場合) または幅 (水平方向の場合) に一定のパーセントを占めるように子を構成できます。

Motif では、XmForm ウィジェット内で Position ベースのアタッチメントリソースを使用すると、同様の機能を得られます。

ScrolledWindow

XmScrolledWindow

どちらのウィジェットを使用しても、子ウィジェットをスクロール可能な表示ポートに含むことができます。 

(なし) 

XmMainWindow

Motif の XmMainWindow ウィジェットは、子をウィンドウの特定の領域に配置するマネージャを提供します。これらの領域には、メニューバー領域、コマンド領域、作業領域、メッセージ領域が含まれます。

OLIT には、同等のウィジェットはありません。 

(なし) 

XmPanedWindow

Motif の XmPanedWindow ウィジェットを使用すると、子を垂直方向の区画内に配置できます。各区画には、垂直方向にサイズ変更できるサッシが付いています。

OLIT には、同等のウィジェットはありません。 

  1. CDE の AppBuilder は、コロンで垂直に整列させるなど、ウィジェットを共通の位置に自動的に配置できる「グループ」というジオメトリマネージャ抽象化を提供します。この機能を実装するために、AppBuilder はすべてのコードを生成します。

ターゲット環境を学習する

CDE デスクトップは OpenWindows デスクトップとはまったく異なりますが、同じタイプのツールが多数入っています。最も明らかな違いは、CDE デスクトップは Motif デスクトップであることです。エンドユーザ環境と開発環境のアーキテクチャ構造の詳細は、『共通デスクトップ環境 プログラマ概要』を参照してください。また、次のマニュアルも参照してください。

GUI 開発ツール

Motif GUI ビルダを使用してアプリケーションの GUI を作成した場合は、Solaris CDE デスクトップに簡単に移行できるはずです。ほとんどの場合、ビルダを使用するとユーザインタフェースの関数とアプリケーションの内部関数をある程度分離することになります。その長所については前述のとおりです。

通常、ビルダは汎用内部記憶形式を使用するか、相互交換ファイルを生成する機能があり、各ファイルは変換プロセスの一部を自動化するために後処理できます。ビルダのベンダーに、現在どんな移行ツールを販売しているか問い合わせてください。

その他にあまり確立されていないものの移行作業を容易にするようなツールには、機能要件に関する文書や高水準の設計を生成した開発設定が含まれます。これらは、CDE と Solaris Motif にマップするとソースコードよりも影響を受けやすい OPEN LOOK ユーザインタフェースに固有の用語を使わずに、アプリケーションを説明している場合があります。