(57)【要約】【課題】同じＵＩ表示機能を有するコントロール間で当該コントロール識別情報を一致させ、ＵＩ画面の自動操作手順を機器間において共通化する。【解決手段】  ＵＩ画面で表示するコントロールに係るＵＩレイアウト表３３４を生成するＵＩレイアウト部３３２と、生成したＵＩレイアウト表３３４に基づきコントロールを配置したＵＩ画面を生成しかつ表示するＵＩ画面表示部３３３を備えた情報処理装置であって、コントロールと当該コントロールに割り付けたＵＩ番号を定義したＵＩ割付テーブル３７を備え、前記ＵＩレイアウト部３３２は、前記ＵＩレイアウト表３３４を生成するとき、前記ＵＩ割付テーブル３７中に、生成するＵＩレイアウト表３３４中のコントロールと同じコントロールがあるとき、生成するＵＩ画面のコントロールに対してＵＩ割付テーブル３７のコントロール番号を割り付ける。【選択図】図１８
2016170507.tif 000002
【特許請求の範囲】
【請求項１】
ＵＩ画面で表示するコントロールに係るＵＩレイアウトデータを生成するＵＩレイアウト部と、
生成したＵＩレイアウトデータに基づきコントロールを配置したＵＩ画面を生成しかつ表示するＵＩ画面表示部を備えた情報処理装置であって、
コントロールと当該コントロールに割り付けたコントロール識別情報を定義したＵＩ割付テーブルを備え、
前記ＵＩレイアウト部は、前記ＵＩレイアウトデータを生成するとき、前記ＵＩ割付テーブル中に、生成するＵＩレイアウトデータ中のコントロールと同じコントロールがあるとき、生成するＵＩ画面のコントロールに対してＵＩ割付テーブルのコントロール識別情報を割り付ける情報処理装置。
【請求項２】
請求項１に記載された情報処理装置において、
前記ＵＩレイアウト部は、前記ＵＩ割付テーブル中に、生成するＵＩレイアウトデータ中のコントロールと同じコントロールがないときは、前記生成するＵＩレイアウトデータ中のコントロールに対して、前記ＵＩ割付テーブル中のコントロール識別情報と異なる識別情報を割り付ける情報処理装置。
【請求項３】
請求項１又は２に記載された情報処理装置において、
前記ＵＩ割付テーブルのコントロール識別情報を外部から指定する入力装置を備えた情報処理装置。
【請求項４】
請求項１ないし３のいずれかに記載された情報処理装置において、
前記ＵＩレイアウト部は、製品に依存しないコントロールの名前と前記ＵＩ画面中の配置を定義するＵＩ定義データと、製品に応じて当該製品で使用するコントロールの機能を定義する機能定義データとに基づき、当該製品で使用するコントロールのＵＩレイアウトデータを作成する情報処理装置。
【請求項５】
請求項１ないし４のいずれかに記載された情報処理装置と、前記ＵＩ画面においてなされる印刷設定に基づき印刷を行う画像形成装置とを有する画像処理システム。
【請求項６】
請求項１ないし４のいずれかに記載された情報処理装置のコンピュータを、
前記ＵＩレイアウト部及びＵＩ画面表示部として機能させる情報処理プログラム。
【請求項７】
ＵＩ画面で表示するコントロールに係るＵＩレイアウトデータをＵＩレイアウト部で生成する工程と、
生成したＵＩレイアウトデータに基づき、ＵＩ画面表示部でコントロールを配置したＵＩ画面を生成しかつ表示する工程と、を有する情報処理装置における情報処理方法であって、
コントロールと当該コントロールに割り付けたコントロール識別情報を定義したＵＩ割付テーブルを用い、
前記ＵＩレイアウトデータを生成するとき、前記ＵＩ割付テーブル中に、生成するＵＩレイアウトデータ中のコントロールと同じコントロールがあるとき、生成するＵＩ画面のコントロールに対してＵＩ割付テーブルのコントロール識別情報を割り付ける工程を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、画像処理システム、情報処理プログラムに関する。
【背景技術】
【０００２】
ソフトウェアのＵＩ（ユーザーインターフェース）画面として、ウィンドウを表示して、そのウィンドウ内にボタンなどのコントロールを配置する方法が広く用いられている。ウィンドウ内のコントロールに対して、多くの場合はマウスやキーボードなどの外部デバイスを用いて、コントロールに対する処理を行い、対象となるソフトウェアを操作する。
ソフトウェアのＵＩ画面を通じて品質評価を実施する場合には、実際に評価者がデバイスを通じてソフトウェアを操作することが多い。そのデバイス操作により生じるソフトウェア的なイベントシーケンスを、対象となるコントロールのコントロールＩＤ番号を指定して、ソフトウェア処理で実現する。これにより、ソフトウェアのＵＩ画面操作シーケンスを予めスクリプトとして記述しておき、そのスクリプトによりＵＩ画面操作を自動実行することが既に知られている。
【０００３】
ＵＩ画面の自動操作は、操作手順をテキスト形式のスクリプトとして作成されることが多い。このスクリプトの作成には品質の確保まで考慮すると無視できない工数（コスト）が発生する。そのため、一度作成したスクリプトが繰り返し使用できなければ、スクリプト作成の利点が得られない。
ある場合には、スクリプトは、同一のソフトウェアのバージョンアップに伴う自動テストに用いられることがある。また他の場合には、スクリプトはデバイスドライバのように、シリーズ（同一機能を共有する製品群）化された製品のドライバ設定画面で共通に使用できる自動テストで使用することもできる。
【０００４】
ＵＩ画面操作の自動実行を実現しようとする人（ユーザー）は、操作対象となるソフトウェア機能に該当するコントロールのコントロールＩＤ番号を調べて、そのＩＤ番号情報に基づいて自動実行スクリプトを作成する。
このようにＩＤ番号情報に基づいて作成する自動実行スクリプトは、従来のように、ＵＩ画面のコントロールＩＤ番号を固定的に割り付けるタイプのソフトウェアでＵＩ画面自動操作を行う場合は支障がない。しかし、ソフトウェアの実行時にＵＩ画面を動的に生成して、それに対してコントロールＩＤ番号を割り付けるタイプのソフトウェアでは、実行時に同じ機能のコントロールに割り付けられるコントロールＩＤ番号が変わることが起きる。そのため、予め作成した自動実行スクリプトが期待通りに動作しなくなるという問題がある。
【０００５】
なお、ここで「ＵＩ画面を動的に生成」することを説明すると共に、比較のために従来のＵＩ画面の生成方法について説明する。
従来のＵＩ画面の生成方法では、ソフトウェアの実行前にＵＩ画面設計を完全形で定義しておき、実行時は予め定義されたコントロールの配置のまま、そのコントロール（オブジェクト）を表示するか非表示（隠す）か否かだけを制御している。
この方法では、例えばデバイスドライバが制御する機器の全く不要なコントロールも表示はしないが作成することになる。
【０００６】
これに対し、「ＵＩ画面を動的に生成」する場合は、そのソフトウェアは予め既知の機能に関連する画面ごとのコントロールの一覧データは持っているものの、予めどのコントロールを生成するか、コントロールをどこに配置するか、各コントロールに何番のＩＤ番号を割り付けるかについては定義していない。代りに、対応している機能（コントロール）の一覧データや、そのソフトウェア（デバイスドライバなど）の仕様や状況に応じて、どの機能（コントロール）を使用するか定義されたデータを参照して、仕様や状況に応じてコントロール（オブジェクト）を生成・配置してＵＩ画面を動的に生成・表示する。
【０００７】
ここで、特許文献１（特開２０１２−２２１０９３号公報）には、印刷ドライバーの変更を容易に行うため、印刷ドライバーが、ＵＩ定義データ（ＵＩリソーススクリプト）に、画面へ表示するコントロール（オブジェクト）を複数定義して、機能定義データ（制御ファイル）にコントロールに対応付けられた動作やアイテムを定義しておく。その上で、ＵＩ画面上でこのコントロールが選択されたときに、コントロールに対応する動作を実行した表示画面を表示出力するようにした、名称を「印刷ドライバー及び印刷指令装置」とする発明が開示されている。
【０００８】
この発明ではソフトウェアのＵＩ表示の変更を容易に行うことができる。しかし、動的にＵＩ表示させる機能を付加した場合に、類似したＵＩ表示機能を有するソフトウェア間でコントロールのＩＤ番号が一致しなくなるという問題は解消できていない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、前記従来の問題を解決すべくなされたものであって、その目的は、コントロールを配置したＵＩ画面を動的に生成する際に、同じＵＩ表示機能を有するコントロール間で当該コントロールの識別情報を一致させることで、ＵＩ画面の自動操作手順を機器間において共通化することである。
【課題を解決するための手段】
【００１０】
本発明は、ＵＩ画面で表示するコントロールに係るＵＩレイアウトデータを生成するＵＩレイアウト部と、生成したＵＩレイアウトデータに基づきコントロールを配置したＵＩ画面を生成しかつ表示するＵＩ画面表示部を備えた情報処理装置であって、コントロールと当該コントロールに割り付けたコントロール識別情報を定義したＵＩ割付テーブルを備え、前記ＵＩレイアウト部は、前記ＵＩレイアウトデータを生成するとき、前記ＵＩ割付テーブル中に、生成するＵＩレイアウトデータ中のコントロールと同じコントロールがあるとき、生成するＵＩ画面のコントロールに対してＵＩ割付テーブルのコントロール識別情報を割り付ける情報処理装置である。
【発明の効果】
【００１１】
本発明によれば、コントロールを配置したＵＩ画面を動的に生成する際に、同じＵＩ表示機能を有するコントロール間で当該コントロールの識別情報を一致させることで、ＵＩ画面の自動操作手順を機器間において共通化することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の前提技術に係るＰＣとＭＦＰとを含むネットワーク構成の一例を示す図である。
【図２】図１に示すＰＣのハードウェア構成の一例を示す図である。
【図３】図１に示すＰＣのソフトウェア構成の一例を示す図である。
【図４】図３に示したＰＣのソフトウェア構成のうち、ＵＩ制御部の構成を詳細に示す図である。
【図５】ＭＦＰのプリンタドライバのＵＩ画面表示部の印刷設定ダイアログ画面の一例を示す図である。
【図６】ＵＩ定義データの一例を示す図である。
【図７】ＭＦＰの機能定義データの一例を示す図である。
【図８】デバイス制御データの一例を示す図である。
【図９】第１の製品（Ａ）の印刷設定画面（図５）の各コントロールにＩＤ番号がどのように割り付けられるか、その一例を示す図である。
【図１０】図６のＵＩ定義データをＵＩレイアウト部が読み込んで、その内容に従い、ＵＩレイアウト表を初期化した状態を示す図である。
【図１１】第１の製品（Ａ）でＵＩ画面を表示するために更新されたＵＩレイアウト表の一例を示した図である。
【図１２】プリンタドライバで実行される、図６（ＵＩ定義データ）から図１１（ＵＩレイアウト作成）に関わる処理の手順を示すフロー図である。
【図１３】図５（又は図９）に示す印刷設定画面に対して、ＩＤ番号でＵＩ自動操作を実施するスクリプトの一例を示す図である。
【図１４】第２の製品（Ｂ）の印刷設定画面に関する機能定義データについて説明する図である。
【図１５】第２の製品（Ｂ）で動的にＵＩ表示するために更新されたＵＩレイアウト表の一例を示す図である。
【図１６】図１４の機能定義データに基づき表示された第２の製品（Ｂ）の印刷設定画面を示す図である。
【図１７】本実施形態のＰＣのソフトウェア構成の一例を示す図である。
【図１８】図１７に示したＰＣのソフトウェア構成のうち、本実施形態に係る部分を詳細に示す図である。
【図１９】第１の製品（Ａ）のＵＩ割付テーブルの一例を示す図である。
【図２０】第２の製品（Ｂ）の印刷設定画面の一例を示す図である。
【図２１】ＵＩ割付テーブルに基づきＩＤ番号割り付け中のＵＩレイアウト表の一例を示す図である。
【図２２】ＵＩ割付テーブルに基づきＩＤ番号割り付けされたＵＩレイアウト表の一例を示す図である。
【図２３】第２の製品（Ｂ）における動的ＵＩ表示のための処理手順の一例を示すフロー図である。
【図２４】第２の製品（Ｂ）に、さらに指定された別の第３の製品（Ｃ）から書き出されたＵＩ割付テーブルの一例を示す図である。
【図２５】第２の製品（Ｂ）におけるＵＩ画面表示処理の手順の一例を示すフロー図である。
【図２６】第２の製品（Ｂ）のプリンタドライバから書き出されたＵＩ割付テーブルを示す図である。
【発明を実施するための形態】
【００１３】
本発明の実施形態について説明する前に、その前提となる従来技術について図１〜図１６を参照して説明する。
ＰＣ（Personal Computer）のソフトウェアの中でも、デバイスドライバは、短期間で類似した機種やモデル向けに複数のソフトウェアが市場に投入されることが多い。
例えば、シリーズ製品では、多くの同一の機能を持ち、ソフトウェア表示画面も同一であることが多い。そこで、シリーズ製品として、ここでは印刷機能を持つＭＦＰ（多機能プリンタ）を例に採り、それに対応したプリンタドライバ（ソフトウェア）について、その印刷設定画面の表示を具体例として説明する。
なお、ここでは、具体例として、プリンタドライバを用いて説明を行うが、同じ特徴を持つソフトウェアであれば、プリンタドライバやデバイスドライバに限定されない。
【００１４】
図１は、本発明の前提技術に係るＰＣ２とＭＦＰ３とを含むネットワーク構成１の一例を示す図である。
図１Ａと図１Ｂは、プリンタドライバ（ソフトウェア）が動作するＰＣ２と、印刷機能を持つＭＦＰ３との接続形態の代表的な例を示す。即ち、図１Ａは、ネットワーク４を介してＰＣ２とＭＦＰ３が接続されている例を、また図１Ｂは、ＵＳＢ（Universal Serial Bus）などの直結ケーブル５を介して接続されている例を示している。
【００１５】
図２は、図１に示すＰＣ２のハードウェア構成の一例を示す図である。
補助記憶装置１４は、ハードディスクなどのデータ格納装置であり、ソフトウェア（プログラム）やデータがファイルシステムなどの形態で格納される。
演算処理装置１６は、主記憶装置１５のプログラムを読み込み、そのプログラムに応じて演算やデータ処理を行う。
記録媒体１８は光ディスクなどが用いられる。ソフトウェアやデータは、補助記憶装置１４やドライブ装置１３を経由して記録媒体１８からメモリー装置などの主記憶装置１５に読み込む。
ＰＣ２のマンマシンインターフェースとして、キーボードやマウスなどの入力装置１１、ディスプレイなどの出力装置１２が接続される。
ＰＣ２は、印刷データを送信するために、インターフェース装置１７によりネットワーク４や直結ケーブル５を介して外部のＭＦＰ３に接続されている。
これらの装置（図２における入力装置１１からインターフェース装置１７までの装置）はＰＣ２内でバスＢを介して相互に接続されている。
【００１６】
図３は、図１に示すＰＣ２のソフトウェア構成の一例を示す図である。
ＰＣ２のソフトウェアは、アプリケーション２１と、ＯＳ（Operating System）２２と、プリンタドライバ２３と、ＵＩ自動操作アプリケーション２４と、を有している。ここで、アプリケーションは、文書作成、表計算、プレゼンテーション作成、画像編集などのアプリケーションである。
ＯＳ２２は、アプリケーション２１からＭＦＰ３に対する要求を受け付けると、プリンタドライバ２３経由でＭＦＰ３を制御する。
ＵＩ自動操作アプリケーション２４は、通常はユーザーがアプリケーション２１に対して入力装置１１を用いて実施する操作を、ユーザーに代わり実施するソフトウェアである。
【００１７】
プリンタドライバ２３は、データ処理部３１、デバイス制御データ３２、ＵＩ制御部３３、データ通信部３４、機能定義データ３５、ＵＩ定義データ３６を有するように構成されている。
なお、図３に示すプリンタドライバ２３の構成は、ここでの説明に不要な部分は省略してある。また、図３に示すプリンタドライバ２３の構成は一例であって、複数のファイルに分かれていてもよい。なお、プリンタドライバ２３を構成する機能定義データ３５、ＵＩ定義データ３６の詳細は後述する。
【００１８】
アプリケーション２１で作成した文書や画像データなどをＭＦＰ３に印刷する場合、アプリケーション２１からＯＳ２２を介してプリンタドライバ２３を呼び出して印刷を実行する。ここで、印刷設定の確認や変更を行う場合は、まずはプリンタドライバ２３のＵＩ制御部３３に印刷設定画面を表示させて、その表示画面でユーザーが操作することにより、印刷設定の変更ができる。なお、このようなユーザーが手作業で実施する操作を、ＵＩ自動操作アプリケーション２４で代わりに実施させることもできる。
【００１９】
図４は、図３に示したＰＣ２のソフトウェア構成のうち、ＵＩ制御部３３の構成をより詳細に示した図である。
ＵＩ制御部３３は、ＵＩコア部３３１、ＵＩ画面表示部３３３、ＵＩレイアウト部３３２及びＵＩレイアウト表３３４を有している。ここで、ＵＩ画面表示部３３３、ＵＩレイアウト部３３２は、いずれもＵＩ制御部（ＵＩコア部３３１）のコンピュータにプログラム（情報処理プログラム）を読み取らせることで実現される機能実現手段である。
ＵＩコア部３３１は、ＵＩ制御部３３の主要な処理を受け持つ。ＵＩレイアウト部３３２は、ＵＩコア部３３１の指示を受けて、ＵＩ定義データ３６と機能定義データ３５を読み込み、どのような印刷設定画面を表示するかを表すＵＩレイアウト表３３４を作成する。ＵＩレイアウト部３３２によるＵＩレイアウト表３３４の作成が終わると、ＵＩコア部３３１は、ＵＩ画面表示部３３３に作成されたＵＩレイアウト表３３４に従いＵＩ画面表示を行うよう指示する。ユーザーもしくはＵＩ自動操作アプリケーション２４による印刷設定が完了すると、ＵＩコア部３３１はデバイス制御データ３２に書き込む。
プリンタドライバ２３は、アプリケーション２１からＯＳ２２を介して印刷開始指示を受けて、印刷対象となるデータを受け取ると、デバイス制御データ３２の設定内容に応じて印刷処理を実施する。
【００２０】
図５は、ＭＦＰの第１の製品（Ａ）のプリンタドライバ２３のＵＩ画面表示部３３３の印刷設定ダイアログ画面の一例を示す図である。
ＵＩ画面表示部３３３の印刷設定画面（ＵＩ画面）には、図示のように、原稿サイズ、印刷用紙サイズ、部数、カラー、ステープル、ソートの各指示画面（コントロールが配置された画面）が表示される。
ユーザーは、この印刷設定画面において、印刷設定項目を指定して、ＯＫボタン３３３ａを操作することで印刷設定を行い、キャンセルボタン３３３ｂを押すことで、一旦指定した印刷項目をキャンセルして指定し直すことなどができる。
【００２１】
以下、各コントロールを表示するＵＩ画面の生成までの処理手順及びそれに用いる各データなどについて説明する。
まず、最も基本的なデータであるコントロール一覧を示したＵＩ定義データについて説明する。
図６は、ＵＩ定義データ３６（図４）の一例を示す図である。
ＵＩ定義データ３６は、特定の製品には依存しないデータである。同一シリーズで対応する最大機能が変わらなければ共通に使用することができる。
図中、２行目と３行目「“ダイアログ”」、「“印刷設定”」は、このＵＩ定義データが、印刷設定ダイアログ画面に表示される可能性があるコントロール一覧を示した定義ファイルであることを示している。
５行目「“原稿サイズ”」以降は、表示される可能性のあるコントロールとして、原稿サイズコンボボックス、印刷用紙サイズコンボボックス、部数スピンボックス、集約コンボボックス、カラーコンボボックス、ステープルコンボボックス、パンチコンボボックス、ソートコンボボックスがＵＩ制御部３３に対応していることを表す。
【００２２】
ＵＩ制御部３３は、ＵＩ定義データ３６を読み込んで、印刷設定ダイアログを作成して、そのダイアログ内に自動的にコントロールを配置して、印刷設定ダイアログ画面を表示する制御を行う。
図６に示すＵＩ定義データの１行目の“ベース”で指定された値（1000）は、コントロールのコントロールＩＤ番号を動的に割り付ける時の割り付け開始番号である。
【００２３】
次に、製品に応じて各コントロールの機能定義を行う機能定義データについて説明する。
図７は、ＭＦＰの第１の製品（Ａ）の機能定義データ３５の一例を示す図である。
図６のＵＩ定義データ３６には、コントロールとして集約とパンチが存在するが、図７の機能定義データ３５には存在しない。これは、この機能定義データ３５は第１の製品（Ａ）用であり、第１の製品（Ａ）は集約とパンチに対応していないために、図５に示す集約とパンチのコントロールが存在しない印刷設定画面を表示するプリンタドライバ２３（ＵＩ画面表示部３３３）を想定したからである。
機能定義データ３５とＵＩ制御部３３を高機能化することにより、ＭＦＰ３の状態や印刷設定内容に応じて、コントロールを表示したり或いはしなかったり、固定値としてユーザー操作ができないコントロールとしたりすることもできる。
【００２４】
コントロールを生成してＵＩ画面を動的に生成する際に、ＵＩ制御部３３（ＵＩレイアウト部）は、コントロールにＩＤ番号を割り付ける。即ち、ここでは、図６のＵＩ定義データ３６の１行目のベースの値“1000”から、“1001・・・”のようにコントロールを生成する順番に割り付ける。本例では、ＵＩ定義データ３６の中で割り付ける番号の基準となる値を指定しているが、この値は他の方法で指定してもよい。
機能定義データ３５は、コンボボックスに表示するアイテムを定義する、あるいはスピンボックスで指定できる値の範囲など、対応する製品に応じて各コントロールの機能定義を行うデータである。
【００２５】
印刷設定情報であるデバイス制御データ３２について説明する。
データ処理部３１は、アプリケーション２１からＯＳ２２を通じて印刷ドキュメントのデータを受け取ると、ＭＦＰ３の印刷装置が印刷可能なデータ形式（印刷データ）に変換生成処理を実施する。デバイス制御データ３２はその場合の印刷設定情報である。
図８は、デバイス制御データ３２の一例を示す図である。
データ処理部３１が生成した印刷データは、データ通信部３４を介してＭＦＰ３に送信される。
デバイス制御データ３２は、プリンタドライバ２３がＰＣ２に導入された初期状態では存在しないか、或いは対象製品用の機能定義データ３５で指定されたデフォルト値が設定されている。
【００２６】
図９は、第１の製品（Ａ）の印刷設定画面（図５）の各コントロールにＩＤ番号がどのように割り付けられるか、その一例を示す図である。
図９では、網掛けの噴出しとして、各コントロールに動的に割り付けられたＩＤ番号が付されている。但し、この部分はＵＩ表示されているわけではない。
ＯＫボタン３３３ａとキャンセルボタン３３３ｂは、ＯＳ２２で予約されたコントロールなので、ＩＤ番号の動的割り付けの対象とはならず固定の番号（ここでは、１、２）が割り付けられている。
【００２７】
図１０は、図６のＵＩ定義データ３６をＵＩレイアウト部３３２が読み込んで、その内容に従い、ＵＩレイアウト表３３４を初期化した状態を示す図である。
フラグ（ＦＬＡＧ）は、対象製品の機能を定義した機能定義データ３５を読み込んで、読み込んだＵＩ定義データ３６が対象製品に必要なコントロールとなるかどうかをマークするためのものである。対象製品のＵＩ表示で必要なコントロールの場合は１がセットされ、初期化状態では０がセットされている。
名前には、ＵＩ定義データ３６を読み込み初期化されると、名前の値がセットされる。
ＩＤ番号は、フラグが１のコントロールに対して、ＵＩレイアウト部３３２がコントロール番号（本発明のコントロール識別情報に対応する）を割り付けてセットする番号である。初期状態では、すべてＩＤ番号割り付け前で０がセットされている。
タイプには、名前で指定された原稿サイズなどのコントロールのタイプ（種類）を、ＵＩ定義データ３６に従いセットされる。
【００２８】
同様に、幅にはＵＩ定義データ３６から読み込んだ値がセットされる。ＵＩ表示画面に表示した場合の対象のコントロールの表示幅（Ｘ座標方向、水平方向の幅）が指定される。なお、ここに示す例では、表示高さは、システムで使用されるフォントサイズからコントロールと一緒に表示されるラベルも含めて自動計算されるものと仮定して、ＵＩ定義データ３６やＵＩレイアウト表３３４には挙げていない。
Ｘ座標、Ｙ座標としては、各コントロールを印刷設定画面に表示する場合に動的にレイアウトした結果、左上を原点として水平方向、垂直方向の表示開始位置がセットされる。
【００２９】
初期値には、印刷設定画面を表示する時の各コントロールが持つ最初の値がセットされる。
アイテムは、コントロールの種類によって意味が変わってくる。本例では、コンボボックスの場合にはコンボボックスの選択肢を列挙したものであり、スピンボックスでは最小値と最大値が列挙された値がセットされる。
【００３０】
図１１は、第１の製品（Ａ）でＵＩ画面を表示するために更新されたＵＩレイアウト表３３４の一例を示した図である。
即ち、図１１は、第１の製品（Ａ）において、図１０に示す初期化されたＵＩレイアウト表３３４に対して、ＵＩレイアウト部３３２が図７に示す第１の製品（Ａ）の機能定義データ３５を読み込んで処理を施し、第１の製品（Ａ）の印刷設定のＵＩ画面表示に必要な情報として、完成させた状態のＵＩレイアウト表３３４を示す。ＵＩ画面表示部３３３は、図１１に示すＵＩレイアウト表３３４を読み込んで、図９に示すＵＩ画面（印刷設定画面）を表示する。
【００３１】
第１の製品（Ａ）で必要なコントロールだけフラグに１がセットされる。それらのコントロールに対して、ＩＤ番号がＵＩ定義データ３６のベースで指定された１０００から順番に割り付けられている。
幅、Ｘ座標、Ｙ座標には、それぞれ具体的な数値が書き込まれており、また、初期値、アイテムには具体的な内容が書き込まれている。
【００３２】
次に、プリンタドライバ２３（ＵＩレイアウト部３３２）において実行される、ＵＩ定義データ３６に基づくＵＩレイアウト表３３４作成に関わる処理手順について説明する。なお、ＵＩレイアウト表３３４は、本発明のＵＩレイアウトデータに対応する。
図１２は、プリンタドライバ２３（ＵＩレイアウト部３３２）で実行される、図６（ＵＩ定義データ３６）から図１１（ＵＩレイアウト表３３４作成）に関わる処理の手順を示すフロー図である。
まず、ＵＩレイアウト部３３２は、図６の内容を持つＵＩ定義データ３６を読み込む（Ｓ１０１）。ここで、読み込んだＵＩ定義データ３６のベースで指定されている値（ここでは1000）を、ＩＤ番号を動的に割り付けるための開始番号とする（Ｓ１０２）。
【００３３】
ＵＩレイアウト部３３２は、ステップＳ１０１で読み込んだ内容を基に、図１０の状態のＵＩレイアウト表３３４を作成（つまり、初期化）する（Ｓ１０３）。
次に、ＵＩレイアウト部３３２は、図７の第１の製品（Ａ）用の機能定義データ３５を読み込む（Ｓ１０４）。
ＵＩレイアウト部３３２は、読み込んだ機能定義データ３５を元に、第１の製品（Ａ）に存在するコントロールに対して、ＵＩレイアウト表３３４のフラグに１をセットする（Ｓ１０５）。
ＵＩレイアウト部３３２は、フラグに１がセットされたコントロールに、ＩＤ番号をベース値の1000から順番にセットする（割り振る）。つまり、ＩＤ番号を図１１で示す値（1001、1002・・・）にセットする（Ｓ１０６）。
【００３４】
プリンタドライバ２３の作り方によっては、プリンタドライバ２３がＰＣ２に導入された直後は存在しない可能性もある。そこで、次に、デバイス制御データ３２が存在する否かチェック（判定）する（Ｓ１０７）。存在する場合には（Ｓ１０７、ＹＥＳ）、ステップＳ１０８に進む。
ステップＳ１０８では、図８に示すデバイス制御データ（印刷設定情報）３２を読み込み、ＵＩレイアウト表の初期値に対応する値をセットし、次にステップＳ１１０に進む。なお、図８のデバイス制御データ３２には、集約とパンチのデバイス制御データが例示されているが、第１の製品（Ａ）においてはこの２つの項目は存在しない。
【００３５】
ステップＳ１０７において、デバイス制御データ３２が存在しない場合には（Ｓ１０７、ＮＯ）、図７に示す第１の製品（Ａ）の機能定義データ３５のデフォルトの値をＵＩレイアウト表３３４の初期値にセットする（Ｓ１０９）。初期値にセットしたＵＩレイアウト表３３４に対して、図７の第１の製品（Ａ）の機能定義データ３５のアイテムで指定されたコンボボックスの選択肢やスピンボックスの最小値最大値をＵＩレイアウト表３３４のアイテムにセットする（Ｓ１１０）。
次に、図１１のＵＩレイアウト表３３４においてフラグが１になっているコントロール（即ち、この製品の印刷設定画面表示に必要なコントロール）に対して、動的なレイアウト処理を行い、Ｘ座標とＹ座標を決めてＵＩレイアウト表３３４にセットする（Ｓ１１１）。
最後に、ＵＩ画面表示部３３３は、図１１に示す状態のＵＩレイアウト表３３４を読み込み、図９に示す印刷設定画面（ＵＩ画面）を表示して（Ｓ１１２）、この処理を終了する。
【００３６】
図１３は、図５（又は図９）に示す印刷設定画面に対して、ＩＤ番号でＵＩ自動操作を実施するスクリプトの一例を示す図である。
このスクリプトでは、ＩＤ番号１０００のコントロール、本例では原稿サイズ（size）に対してＡ３をセットし、ＩＤ番号１００２のコントロール、本例では部数（no of prints）に１０をセットし、ＩＤ番号１００５のコントロール、本例では“ソート（sort）する”をセットして、最後に印刷設定ダイアログのＯＫボタン３３３ａを押して（BUTTON DOWN）、印刷設定操作を自動的に実行することを表している。
【００３７】
このスクリプトを作成するためには、操作対象となるコントロールのＩＤ番号を予め知る必要がある。しかし、第１の製品（Ａ）のプリンタドライバのソースコードとして、動的にコントロールのＩＤ番号が割り付けられるためのＩＤ番号定義データテーブルなどが存在するわけではない。そのため、予め各コントロールのＩＤ番号を知るのは容易ではない。
そこで、例えば、ＯＳ２２の機能を用いて、即ち、ＵＩ画面表示されているコントロールのＩＤ番号を調べるユーティリティが存在する場合には、そのユーティリティを使用してＩＤ番号を調べることになる。同一製品の同一条件化において、同一の（ランダムではない）動的ＵＩ生成ロジックを用いている場合には、各コントロールに一定のＩＤ番号が割り付けられることになる。その結果、作成したＵＩ自動操作スクリプトは有効な（正常に動作する）ものとなる。
【００３８】
図１４は、第２の製品（Ｂ）の印刷設定画面に関する機能定義データについて説明する図である。
図１４の第２の製品（Ｂ）向けの機能定義データでは、図７で示した第１の製品（Ａ）向けの機能定義データに対して、更に集約機能とパンチ機能が追加されている。その理由は、第２の製品（Ｂ）は、第１の製品（Ａ）では対応していなかった集約とパンチ機能に対応しているためである。
【００３９】
図１５は、第２の製品（Ｂ）で動的にＵＩ表示するために更新されたＵＩレイアウト表３３４の一例を示す図である。
図１５は、第２の製品（Ｂ）において、図１０に示す初期化されたＵＩレイアウト表３３４に対して、図１４の第２の製品（Ｂ）の機能定義データ３５を読み込んで処理を施し、第２の製品（Ｂ）の印刷設定のＵＩ画面表示に必要な情報として完成させた状態を示している。
ＵＩ画面表示部３３３は、図１５に示すＵＩレイアウト表３３４を読み込んで、後述の図１６に示す印刷設定画面を表示する。
第２の製品（Ｂ）に必要なコントロールに対して、ＵＩレイアウト表３３４のフラグに１がセットされる。印刷設定画面では、後述するように、それらのコントロールに対して、ＵＩ定義データ３６のベースで指定された１０００から順番にＩＤ番号が割り付けられている。
【００４０】
図１６は、第２の製品（Ｂ）の印刷設定画面の各コントロールにＩＤ番号がどのように割り付けられているかを例示する図であり、図１４の機能定義データに基づき表示された第２の製品（Ｂ）の印刷設定画面を示す図である。
図１６の印刷設定画面では、図９に示したと同様に網掛けの噴出しで動的に割り付けられたＩＤ番号を示しているが、これらは実際のＵＩ表示画面で表示されていない。
ただ、図１３に示すＵＩ自動操作スクリプトを、そのままこのＵＩ画面に対して適用して実行しようとすると問題が生じる。その理由は、印刷設定画面内に存在するコントロールが増加したために、動的にコントロールのＩＤ番号を割り付けた結果、例えば、ソートコンボボックス（ソート）のＩＤ番号が１００５ではなく１００７になっており、図１３に示すスクリプトをそのまま使用することができないためである。
以上が、本発明の前提技術についての説明である。
【００４１】
次に、本発明の実施形態について説明する。
本実施形態では、コントロールを配置したＵＩ画面（印刷設定画面）を動的に生成する際に、コントロールＩＤ番号を外部から指定するようにしている。その際、同一の名前を持つコントロールに対しては同じコントロールＩＤ番号を指定する。それによってコントロールＩＤ番号が共通のコントロールに対して、一度作成したスクリプトを繰り返し使用できるようにする。
図１７は、本実施形態のＰＣ２のソフトウェア構成の一例を示す図である。
図１７のソフトウェア構成図では、図３に示すソフトウェア構成図に対して、ＵＩ割付テーブル３７が追加されており、その他の点においては同じである。
本実施形態においては、ＵＩ割付テーブル３７を備えたことにより、コントロールＩＤ番号を外部から指定すると、ＵＩ割付テーブル３７に基づき指定したコントロールＩＤ番号を、当該コントロール番号に対応するコントロールに自動的に割り付け、ＵＩ画面に配置するコントロールを選択することができる。
【００４２】
図１８は、図１７に示したＰＣのソフトウェア構成のうち、本実施形態に係る部分を詳細に示す図である。
図１８に示すソフトウェア構成は、図４の示すソフトウェア構成に対して、ＵＩ割付テーブル３７が追加されており、その他の点においては、既に説明した図４のソフトウェア構成と同様である。
【００４３】
図１９は、第１の製品（Ａ）のＵＩ割付テーブル３７の一例を示す図である。
プリンタドライバ２３のＵＩ制御部３３は、外部から与えられたＵＩ割付テーブル３７のデータを読み取り、機能定義データ３５とＵＩ定義データ３６に従い動的にＩＤ番号を割り付ける。その際に、同一の名前を持つコントロールが存在する場合には、ＵＩ割付テーブル３７で指定されたＩＤ番号を使用する。
図１９のＵＩ割付テーブル３７では、ＵＩ割付テーブル３７のデータとして、“タイプ”として“コンボボックス”と“スピンボックス”別に、“名前”として“原稿サイズ”、“印刷用紙サイズ”、“部数”、“カラー”、“ステープル”、“ソート”が、それぞれ“番号（ＩＤ番号）”と共に挙げられている。
【００４４】
図２０は、第２の製品（Ｂ）の印刷設定画面の一例を示す図であり、後述する図２３に示す処理（動的ＵＩ表示のための処理手順）の結果として表示される印刷設定画面である。
図２０に示す印刷設定画面は、図９に示した印刷設定画面と同様に、網掛けの噴出しで動的に割り付けられたＩＤ番号を示しているが、これらは実際のＵＩ表示画面で表示されていない。
ここでは、集約コンボボックスとパンチコンボボックス以外は、図１９のＵＩ割付テーブル３７でＩＤ番号が指定している。本例では、図９の第１の製品（Ａ）の印刷設定画面と同じＩＤ番号になるようにＵＩ割付テーブル３７が作成されている。その結果、集約コンボボックスとパンチコンボボックス以外は図９と同一のＩＤ番号が割り付けられている。他方、図１９のＵＩ割付テーブル３７で指定されなかった集約コンボボックスとパンチコンボボックスに対しては、まだ使用されていないＩＤ番号として、それぞれ１００６と１００７が動的に割り付けられている。
この結果、図９に示す印刷設定画面を持つ製品用に作成された図１３に示すＵＩ自動操作スクリプトが、図２０の印刷設定画面を持つ第２の製品（Ｂ）に対してもそのまま使用することができる。
【００４５】
図２１は、ＵＩ割付テーブル３７に基づきＩＤ番号割り付け中のＵＩレイアウト表３３４の一例を示す図である。
プリンタドライバ２３のＵＩ制御部３３は、外部から与えられたＵＩ割付テーブル３７のデータを読み取り、機能定義データ３５とＵＩ定義データ３６に従いＩＤ番号を割り付ける。その際に、同一の名前を持つコントロールが存在する場合には、ＵＩ割付テーブル３７で指定されたＩＤ番号を使用する。
図２１のＵＩレイアウト表３３４では、フラグ、名前、ＩＤ番号、タイプ、幅の欄にはそれぞれ数値や名称等の項目が記入されているが、Ｘ座標、Ｙ座標、初期値、アイテムの項目は未記入である。なお、ここでは“集約”と“パンチ”については、フラグは１であるものの未だＩＤ番号が割り付けられていない。
【００４６】
図２２は、ＵＩ割付テーブル３７に基づきＩＤ番号割り付けされたＵＩレイアウト表３３４の一例を示す図である。
ここでは、全ての項目に内容が記入されかつ、“集約”、“パンチ”に対してＩＤ番号１００６と１００７が割り付けられている。
【００４７】
図２３は、第２の製品（Ｂ）における動的ＵＩ表示のための処理手順の一例を示すフロー図である。
図２３を参照して、第２の製品（Ｂ）における動的ＵＩ表示のための処理手順を説明する。
即ち、まず、ＵＩレイアウト部３３２は、図６の内容を持つＵＩ定義データ３６を読み込む（Ｓ２０１）。ＵＩレイアウト部３３２は、読み込んだ内容を元に、ＵＩレイアウト表３３４を図１０に示す状態に初期化（作成）する（Ｓ２０２）。次に、ＵＩレイアウト部３３２は、図１４の第２の製品（Ｂ）用の機能定義データ３５を読み込む（Ｓ２０３）。
ＵＩレイアウト部３３２は、読み込んだ機能定義データ３５を基に、第２の製品（Ｂ）に存在するコントロールに対して、ＵＩレイアウト表３３４のフラグに１をセットする（Ｓ２０４）。
【００４８】
ＵＩレイアウト部３３２は、図１９に示す第１の製品（Ａ）のＵＩ割付テーブル３７を読み込み、ＵＩレイアウト表３３４の名前と一致するものがあれば、ＵＩ割付テーブル３７の番号を、ＵＩレイアウト表３３４のＩＤ番号にセットする（Ｓ２０５）。
また、この時点でＵＩレイアウト表３３４は図２１の状態になっている（即ち、ＵＩレイアウト表３３４には各名称毎に、フラグに１、ＩＤ番号には数値、幅欄には数値が記入されており、Ｘ、Ｙ座標値、初期値、アイテムの欄には０が記入されている）。ここで、ＩＤ番号で既に使用されている最大値は１００５なので、次に使用される番号としてベース番号は最大値＋１で１００６となる（Ｓ２０６）。
本例ではＩＤ番号未指定のコントロールとして、集約とパンチが存在するので、それぞれ順番に１００６と１００７をＩＤ番号として割り振る（又はセットする）（Ｓ２０７）。また、この時点のＵＩレイアウト表３３４に基づきＵＩ割付テーブル３７を書き出す（Ｓ２０８）。この時点のＵＩレイアウト表３３４の内容、即ち書き出しに必要な情報は図２２のＵＩレイアウト表３３４と同じである。その結果、書き出したＵＩ割付テーブル３７の内容は後述の図２６のＵＩ割付テーブル３７に示すものと同じになる。
【００４９】
プリンタドライバ２３の作り方によっては、プリンタドライバ２３がＰＣ２に導入された直後は存在しない可能性もある。そこで、次に、デバイス制御データ３２が存在するか否かチェックする（Ｓ２０９）。存在する場合には（Ｓ２０９、ＹＥＳ）、ステップＳ２１０に進む。
ステップＳ２１０では、図８に示すデバイス制御データ３２を読み込み、ＵＩレイアウト表３３４の初期値に対応する値をセットして、ステップ２１２に進む。
【００５０】
ステップＳ２０９において、デバイス制御データ３２が存在しない場合には（Ｓ２０９、ＮＯ）、図１４に示す第２の製品（Ｂ）の機能定義データ３５のデフォルトの値をＵＩレイアウト表３３４の初期値にセットする（Ｓ２１１）。
初期値にセットしたＵＩレイアウト表３３４に対して、図１４の第２の製品（Ｂ）の機能定義データ３５のアイテムで指定されたコンボボックスの選択肢やスピンボックスの最小値最大値を、図２２に示すＵＩレイアウト表３３４のアイテムにセットする（Ｓ２１２）。次に、ＵＩレイアウト表３３４のフラグが１になっている本製品の印刷設定画面表示に必要なコントロールに対して、動的なレイアウト処理を行いＸ座標とＹ座標を決めてＵＩレイアウト表３３４にセットする（Ｓ２１３）。
ＵＩ画面表示部３３３は、図２２の状態になっているＵＩレイアウト表３３４を読み込み、図２０に示す印刷設定画面（ＵＩ画面）を表示して（Ｓ２１４）、この処理を終了する。
【００５１】
図２４は、第２の製品（Ｂ）に、さらに指定された別の第３の製品（Ｃ）から書き出されたＵＩ割付テーブル３７の一例を示す図である。なお、図２４の内容は図１９と同じである。
プリンタドライバ２３のＵＩ制御部３３（ＵＩレイアウト部３３２）は、外部から与えられたＵＩ割付テーブル３７のデータを読み取り、機能定義データ３５とＵＩ定義データ３６に従い動的にＩＤ番号を割り付ける際に、同一の名前を持つコントロールが存在する場合には、ＵＩ割付テーブル３７で指定されたＩＤ番号を使用する。
【００５２】
図２５は、第２の製品（Ｂ）におけるＵＩ画面表示処理の手順の一例を示すフロー図である。
第２の製品（Ｂ）におけるＵＩ画面表示のための処理手順を、図２５を参照して、説明する。
まず、ＵＩレイアウト部３３２は、図６の内容を持つＵＩ定義データ３６を読み込む（Ｓ３０１）。ここで、ＵＩレイアウト部３３２は、ステップＳ３０１で読み込んだ内容を元に、ＵＩレイアウト表３３４を図１０の状態に作成（初期化）する（Ｓ３０２）。
ＵＩレイアウト部３３２は、図１４の第２の製品（Ｂ）用の機能定義データ３５を読み込む（Ｓ３０３）。次に、ＵＩレイアウト部３３２は、読み込んだ機能定義データ３５を元に、第２の製品（Ｂ）に存在するコントロールに対して、ＵＩレイアウト表３３４のフラグに１をセットする（Ｓ３０４）。
【００５３】
ステップＳ３０５で、ＵＩレイアウト部３３２は、図２４に示す第３の製品（Ｃ）のＵＩ割付テーブル３７を読み込み、ＵＩレイアウト表３３４の名前と一致するものがあり、ＩＤ番号がまだ割り付けられていないＵＩ割付テーブル３７の番号をＩＤ番号にセットする。本例では、第３の製品（Ｃ）は第１の製品（Ａ）に存在しなかった集約とパンチ機能を持つ。したがって、第１の製品（Ａ）と第３の製品（Ｃ）の機能を合わせると、第２の製品（Ｂ）が持つ機能が全部網羅される例となっている。したがって、この時点でＵＩ割付テーブルのフラグとＩＤ番号は図２２の状態と同じ内容になる。
【００５４】
次に、ＵＩレイアウト部３３２は、他にＵＩ割付テーブル３７が存在しないかどうかをチェック（判別）する（Ｓ３０６）。本例では、他にＵＩ割付テーブル３７が存在しないので、ステップＳ３０７に進む。
この時点でＵＩレイアウト表３３４のＩＤ番号で使用されている最大値は１００７なので、次に使用される番号としてベース番号は最大値＋１の１００８とする（Ｓ３０７）。
【００５５】
次にフラグに１をセットしたコントロールでＩＤ番号が未指定のベース番号から順番にＩＤ番号を割り振る（Ｓ３０８）。但し、本例ではＩＤ番号未指定のコントロールはＵＩレイアウト表３３４に残っていないので、ＵＩレイアウト表３３４のＩＤ番号を割り振られるコントロールは存在しない。この時点のＵＩレイアウト表３３４に基づきＵＩ割付テーブル３７を書き出す（Ｓ３０９）。この時点のＵＩレイアウト表３３４に内容は、書き出しに必要な情報は図２２と同じである。その結果、書き出したＵＩ割付テーブル３７の内容は図２６に示すものとなる。
プリンタドライバ２３の作り方によっては、プリンタドライバ２３がＰＣ２に導入された直後は存在しない可能性もある。そこでＵＩ制御部３３（ＵＩレイアウト部３３２）は、デバイス制御データ３２が存在するかチェック（判別）する（Ｓ３１０）。存在する場合には（Ｓ３１０、ＹＥＳ）、ステップＳ３１１に進む。
【００５６】
ステップＳ３１１では、図８に示すデバイス制御データ３２を読み込み、ＵＩレイアウト表３３４の初期値に対応する値をセットしてステップＳ３１３に進む。
デバイス制御データ３２が存在しない場合には（Ｓ３１０、ＮＯ）、ステップＳ３１２の処理に進み、図１４に示す第２の製品（Ｂ）の機能定義データ３５のデフォルトの値をＵＩレイアウト表３３４の初期値にセットする（Ｓ３１２）。
次に、図１４に示す第２の製品（Ｂ）の機能定義データ３５のアイテムで指定されたコンボボックスの選択肢やスピンボックスの最小値最大値をＵＩレイアウト表３３４のアイテムにセットする（Ｓ３１３）。
【００５７】
さらに、ＵＩレイアウト表３３４のフラグが１になっているこの製品の印刷設定画面表示に必要なコントロールに対してレイアウト処理を行いＸ座標とＹ座標を決めてＵＩレイアウト表３３４にセットする（Ｓ３１４）。
ＵＩ画面表示部３３３は、図２２に示す状態になっているＵＩレイアウト表３３４を読み込み、図２０の印刷設定画面を表示して（Ｓ３１５）、この処理を終了する。
【００５８】
図２６は、第２の製品（Ｂ）のプリンタドライバ２３から書き出されたＵＩ割付テーブル３７を示す図である。
図１９に示されたＵＩ割付テーブル３７と対比すると、“コンボボックス”の“集約”と“パンチ”が付加されており、ＵＩ番号は、独立したものとなっている。ＵＩ割付テーブル３７の機能などは既に説明したとおりである。
以上、本発明の実施形態について説明したが、本実施形態によれば、ＵＩ制御部（ＵＩレイアウト部）がＵＩ画面を動的に生成する機能を持つソフトウェアにおいて、動的生成を制御する情報をソフトウェアの外部からＵＩ制御部（ＵＩレイアウト部）に提供することにより、動的に生成する複数のソフトウェアで共通のコントロールのＩＤ番号を同一にすることができる。
【符号の説明】
【００５９】
１・・・ネットワーク構成、２・・・ＰＣ、３・・・ＭＦＰ、１１・・・入力装置、１２・・・出力装置、１３・・・ドライブ装置、１４・・・補助記憶装置、１５・・・主記憶装置、１６・・・演算処理装置、１７・・・インターフェース装置、１８・・・記録媒体、２３・・・プリンタドライバ、３２・・・デバイス制御データ、３３・・・ＵＩ制御部、３５・・・機能定義データ、３６・・・ＵＩ定義データ、３７・・・ＵＩ割付テーブル、３３１・・・ＵＩコア部、３３２・・・ＵＩレイアウト部、３３３・・・ＵＩ画面表示部、３３４・・・ＵＩレイアウト表。
【先行技術文献】
【特許文献】
【００６０】
【特許文献１】特開２０１２−２２１０９３号公報
【図１】
2016170507.tif 000003
【図２】
2016170507.tif 000004
【図３】
2016170507.tif 000005
【図４】
2016170507.tif 000006
【図５】
2016170507.tif 000007
【図６】
2016170507.tif 000008
【図７】
2016170507.tif 000009
【図８】
2016170507.tif 000010
【図９】
2016170507.tif 000011
【図１０】
2016170507.tif 000012
【図１１】
2016170507.tif 000013
【図１２】
2016170507.tif 000014
【図１３】
2016170507.tif 000015
【図１４】
2016170507.tif 000016
【図１５】
2016170507.tif 000017
【図１６】
2016170507.tif 000018
【図１７】
2016170507.tif 000019
【図１８】
2016170507.tif 000020
【図１９】
2016170507.tif 000021
【図２０】
2016170507.tif 000022
【図２１】
2016170507.tif 000023
【図２２】
2016170507.tif 000024
【図２３】
2016170507.tif 000025
【図２４】
2016170507.tif 000026
【図２５】
2016170507.tif 000027
【図２６】
2016170507.tif 000028