(57)【要約】【課題】ＨＭＩプログラムについてメモリ消費量および転送を最適化する。【解決手段】プログラム処理装置は、ＦＡのためのＨＭＩプログラムを処理するプログラム処理装置である。プログラム処理装置は、プログラム処理装置を制御する制御部を備える。制御部は、ＨＭＩプログラムのＵＩ機能に対応した複数のＵＩ（ユーザインターフェイス）データからなるデータ群において、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出する検出部と、同一であると検出されたＵＩデータについて１つ分の当該ＵＩデータのみを含むようデータ群を変更する変更部と、を備える。【選択図】図５
2018045544.tif 000002
【特許請求の範囲】
【請求項１】
ＦＡ（ファクトリオートメーション）のためのＨＭＩ（ヒューマンマシンインターフェース）プログラムを処理するプログラム処理装置であって、
前記プログラム処理装置を制御する制御部を備え、
前記制御部は、
前記ＨＭＩプログラムのＵＩ機能に対応した複数のＵＩ（ユーザインターフェイス）データからなるデータ群において、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出する検出部と、
同一であると検出されたＵＩデータについて１つ分の当該ＵＩデータのみを含むよう前記データ群を変更する変更部と、を備える、プログラム処理装置。
【請求項２】
前記データ群は、前記ＵＩデータを格納するための複数のライブラリを含み、
前記検出部は、
異なるライブラリに格納されたＵＩデータのうち、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出する一致検出部を含み、
前記変更部は、
同一であると検出された１つ分の前記ＵＩデータのみを含むよう前記複数のライブラリを変更するライブラリ変更部を含む、請求項１に記載のプログラム処理装置。
【請求項３】
前記検出部は、
前記データ群の前記ＵＩデータが作成されるときに前記同一を検出する、請求項１または２に記載のプログラム処理装置。
【請求項４】
前記検出部は、
前記ＨＭＩプログラムがコンパイルされるときに前記同一を検出する、請求項１または２に記載のプログラム処理装置。
【請求項５】
同一であると検出されたＵＩデータは、前記１つ分のＵＩデータと他のＵＩデータからなり、
前記制御部は、さらに、
前記ＨＭＩプログラム中の前記他のＵＩデータを参照する部分に、前記１つ分のＵＩデータへの参照を指示する参照データを設定する参照先設定部を備える、請求項１から４のいずれか１項に記載のプログラム処理装置。
【請求項６】
前記参照先設定部は、前記ＨＭＩプログラムがコンパイルされるときに、前記参照データの設定を実施する、請求項５に記載のプログラム処理装置。
【請求項７】
前記プログラム処理装置は、
ディスプレイと、
前記ディスプレイを表示データに従い制御する表示コントローラと、を備え、
前記制御部は、さらに、
前記他のＵＩデータの識別子と、当該他のＵＩデータの参照部分に設定される前記１つ分のＵＩデータの識別子との関連付け情報を作成する作成部を、含み、
作成された前記関連付け情報を表示するための表示データを前記表示コントローラに出力する、請求項１から６のいずれか１項に記載のプログラム処理装置。
【請求項８】
情報処理装置を用いて、ＦＡ（ファクトリオートメーション）のためのＨＭＩ（ヒューマンマシンインターフェース）プログラムを処理する方法を、前記情報処理装置のプロセッサに実行させるためのプログラムであって、
前記方法は、
前記ＨＭＩプログラムのＵＩ機能に対応した複数のＵＩ（ユーザインターフェイス）データからなるデータ群において、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出するステップと、
同一であると検出されたＵＩデータについて１つ分のＵＩデータのみを含むよう前記データ群を変更するステップと、を備える、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はプログラム処理装置およびプログラムに関し、特に、ＦＡ（Factory  Automationの略）に適用されるＨＭＩ（Human  Machine  Interface)のためのアプリケーションプログラムの最適化を行なうプログラム処理装置およびプログラムに関する。
【背景技術】
【０００２】
ＦＡの分野に適用されるプログラマブルターミナルは、タッチパネル式の入力装置である。プログラマブルターミナルは、ＨＭＩに関して、ユーザ（この明細書においては、プログラマブルターミナルの画面を設計または実装する人を指す）が、彼らの目的に合うように画面を作成して表示し、上記のデータ入力を可能ならしめる機器である。
【０００３】
ユーザによるアプリケーションの作成を効率化する方法として、頻繁に利用されるオブジェクトまたはプログラムの組合せを、予めパッケージ化しておき、そのパッケージを繰返し使用する方法がある。たとえば、特許文献１（特表２０１６−５０６５５９号公報）は、パッケージに対応したオブジェクトの再使用を容易化するための方法を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１６−５０６５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
パッケージは、他のパッケージとは独立して作成されるため、パッケージ内に他のパッケージと同一のリソース（画像ファイル、または動画ファイルなど）が含まれる場合がある。異なるパッケージに同一のリソースがそれぞれ含まれる場合は、プログラマブルターミナルなどのデバイスの内部のストレージの消費量、またはアプリケーションの動作に必要なメモリ容量、またはリソースのロード処理が必要以上に増加するという課題があった。特許文献１は、この課題を解消する方法を提案しない。
【０００６】
それゆえに本開示の目的は、ＨＭＩプログラムについてメモリ消費量および転送を最適化するプログラム処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００７】
この開示のある局面にかかるプログラム処理装置は、ＦＡ（ファクトリオートメーション）のためのＨＭＩ（ヒューマンマシンインターフェース）プログラムを処理するプログラム処理装置である。プログラム処理装置は、プログラム処理装置を制御する制御部を備える。制御部は、ＨＭＩプログラムのＵＩ機能に対応した複数のＵＩ（ユーザインターフェイス）データからなるデータ群において、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出する検出部と、同一であると検出されたＵＩデータについて１つ分の当該ＵＩデータのみを含むようデータ群を変更する変更部と、を備える。
【０００８】
好ましくは、データ群は、ＵＩデータを格納するための複数のライブラリを含み、検出部は、異なるライブラリに格納されたＵＩデータのうち、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出する一致検出部を含み、変更部は、同一であると検出された１つ分のＵＩデータのみを含むよう複数のライブラリを変更するライブラリ変更部を含む。
【０００９】
好ましくは、検出部は、データ群のＵＩデータが作成されるときに上記の同一を検出する。
【００１０】
好ましくは、検出部は、ＨＭＩプログラムがコンパイルされるときに上記の同一を検出する。
【００１１】
好ましくは、同一であると検出されたＵＩデータは、上記の１つ分のＵＩデータと他のＵＩデータからなる。制御部は、さらに、ＨＭＩプログラム中の上記の他のＵＩデータを参照する部分に、上記の１つ分のＵＩデータへの参照を指示する参照データを設定する参照先設定部を備える。
【００１２】
好ましくは、参照先設定部は、ＨＭＩプログラムがコンパイルされるときに、参照データの設定を実施する。
【００１３】
好ましくは、プログラム処理装置は、ディスプレイと、ディスプレイを表示データに従い制御する表示コントローラと、を備える。
【００１４】
制御部は、さらに、上記の他のＵＩデータの識別子と、当該他のＵＩデータの参照部分に設定される上記の１つ分のＵＩデータの識別子との関連付け情報を作成する作成部を、含む。制御部は、作成された関連付け情報を表示するための表示データを表示コントローラに出力する。
【００１５】
この開示の他の局面ではプログラムが提供される。このプログラムは、ＦＡのためのＨＭＩプログラムを処理する方法を、情報処理装置のプロセッサに実行させるためのプログラムである。上記の方法は、ＨＭＩプログラムのＵＩ機能に対応した複数のＵＩ（ユーザインターフェイス）データからなるデータ群において、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出するステップと、同一であると検出されたＵＩデータについて１つ分のＵＩデータのみを含むようデータ群を変更するステップと、を備える。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかるプログラマブルシステムの構成を概略的に示す図である。
【図２】実施の形態１にかかるＰＣ１００の構成を概略的に示す図である。
【図３】実施の形態１にかかるプログラマブルターミナル４の構成を概略的に示す図である。
【図４】実施の形態１にかかるＨＭＩプログラムの開発環境を概略的に示す図である。
【図５】実施の形態１にかかるコンパイラ１０Ｂとその周辺部を模式的に示す図である。
【図６】実施の形態１にかかる処理フローチャートである。
【図７】実施の形態１にかかるリソースＲが削除される過程を模式的に示す図である。
【図８】実施の形態１にかかるリソースＲが削除される過程の具体例を示す図である。
【図９】実施の形態１にかかるリソースＲが削除される過程の具体例を示す図である。
【図１０】実施の形態１にかかるリソースＲが削除される過程の具体例を示す図である。
【図１１】実施の形態１にかかるリソースＲが削除される過程の具体例を示す図である。
【図１２】同一のリソースＲが作成されるケースを説明するための図である。
【図１３】同一のリソースＲが作成されるケースを説明するための図である。
【図１４】同一のリソースＲが作成されるケースを説明するための図である。
【図１５】同一のリソースＲが作成されるケースを説明するための図である。
【図１６】同一のリソースＲが作成されるケースを説明するための図である。
【図１７】実施の形態１にかかる類似しているリソースＲの画像を模式的に示す図である。
【図１８】実施の形態１にかかるリソース削除の可否をユーザに問合せる画面の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下に、図面を参照しつつ、各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【００１８】
［用語の説明］
「ＨＭＩプログラム」は、アプリケーションプログラムである。「ＨＭＩプログラム」は、プログラマブルターミナルを動作させるために必要な画面上のオブジェクト配置またはプログラムコード、各種の設定データなどを含む。
【００１９】
ＵＩ（User  Interface)ライブラリは、ＨＭＩプログラムで利用（再利用）できるＵＩ部品のライブラリ（ファイル）である。ＵＩ部品は、ＵＩデータに相当した画像データ、文字列データ、プログラムコードを含む。ＨＭＩプログラムが実行されるとき、ＵＩ部品によるＵＩ機能（画像表示、データ入出力、操作受付などの機能）が提供される。
【００２０】
「リソース」は、画像データおよび文字列データなどの画面データに組込まれるデータを含む。また、リソースには、プログラムコードが含まれてもよい。ＵＩライブラリには、ＵＩ部品としてリソースのデータがファイル形式で含まれる。
【００２１】
「プロジェクト」は、１つのアプリケーションプログラムを構成するための情報である。
【００２２】
「ＵＩライブラリプロジェクト」は、上記のＵＩライブラリを作成するためのプロジェクトである。
【００２３】
「標準プロジェクト」は、ＨＭＩプログラムを作成するためのプロジェクトである。ＨＭＩプログラムの「プロジェクト」は、ＨＭＩプログラムが参照するリソースデータを有した１以上のＵＩライブラリ、ページ一覧データ、変数定義、ユーザが定義したデータ型、通信の設定データなどを含む。
【００２４】
「ＵＩライブラリパッケージ」は、ＵＩライブラリを標準プロジェクトにインポートできるようにするために、ＵＩライブラリを構成する外観定義、プログラムコード、リソースを１つのファイルにまとめたものである。「ＵＩライブラリパッケージ」は、ＵＩライブラリプロジェクトから予め定められた操作が実施された場合に生成される。
【００２５】
[実施の形態１]
（概要）
実施の形態１では、ＨＭＩアプリケーション処理装置（以下、処理装置と称する）は、標準プロジェクトに含まれるリソース（ＵＩ部品またはＵＩ機能を提供するＵＩデータに相当）の全部を「データの種類」と「データ長」との両方が一致するものどうしでグループ化する。処理装置は、「データの種類」を、リソースのデータを格納したファイルの拡張子に基づき判別する。
【００２６】
続いて、処理装置は、各グループについて１つ分のリソースを残し、他のリソースを削除する（削除処理）。この削除処理に伴い、処理装置は、標準プロジェクトのＨＭＩプログラムを、削除されたリソースを参照していたプログラム中の部分に、残されたリソースへの参照を指示する参照データを設定する（書換える）。
【００２７】
このように、標準プロジェクトのＨＭＩプログラムにおいて同一のリソースが参照される場合には（以下、重複ともいう）、標準プロジェクト（特定的には、ＵＩライブラリ）において同一リソースのうちの１つが残されて他は削除される。したがって、標準プロジェクトのデータ量を少なくすることができる。これにより、標準プロジェクトをメモリに格納する場合に、当該メモリの消費量を削減することができる。また、標準プロジェクトのＨＭＩプログラムを実行する場合に必要なメモリ容量も少なくすることができる。また、標準プロジェクトを装置に通信により、または記憶媒体を介してロード（転送して格納）する場合に、ロードの所要時間を削減することができる。
【００２８】
なお、上記に述べた削除処理は、同一であると検出されたＵＩデータの各グループについて、１つ分のＵＩデータのみを含むようＵＩライブラリを変更する処理（変更処理）の一実施例であり、変更処理は当該削除処理に限定されない。たとえば、同一であると検出されたＵＩデータをＵＩライブラリから削除し、そしてＵＩライブラリに各グループに対応した１つ分のＵＩデータを新たに作成（追加）するとしてもよい。実施の形態１では、説明を簡単にするために、変更処理の一例である上記の削除処理を示す。
【００２９】
また、以下の実施の形態では、複数のＵＩデータからなるデータ群として、ＵＩライブラリに格納されたＵＩデータの群を例示するが、データ群はライブラリに格納される形式に限定されない。
【００３０】
（システム構成）
図１は、実施の形態１にかかるプログラマブルシステムの構成を概略的に示す図である。図１を参照して、プログラマブルシステムは、ＦＡに適用される複数のＰＬＣ（Programmable  Logic  Controller）1，ＰＬＣ２，ＰＬＣ３、プログラマブルターミナル４およびＰＣ（Personal  Computer）１００を備える。ＰＬＣ１〜３のそれぞれは同様の構成を有する。ＰＬＣは、典型的には、プログラムを実行する主体であるＣＰＵ（Central  Processing  Unit）を有したＣＰＵユニット１０、ＣＰＵユニット１０などへ電力を供給する電源ユニット１２、フィールド機器と信号をやり取りするＩＯ（Input  Output）ユニット１４とを含む。ＩＯユニット１４は、ＣＰＵユニット１０とシステムバス１１を介して接続されている。ＩＯユニット１４は、ＣＰＵユニット１０とシステムバス１１を介して接続される。典型的には、ＩＯユニット１４は、フィールド機器である検出センサ１５からの信号を取得し、またはＣＰＵユニット１０でのプログラムの実行結果に応じてフィールド機器であるリレー１６を駆動する。なお、フィールド機器は、検出センサ１５およびリレー１６に限定されない。
【００３１】
プログラマブルターミナル４は、ＨＭＩのためのＧＵＩとしての役割りを果たす。プログラマブルターミナル４は、ＰＬＣ１〜３のＣＰＵユニット１０と通信する処理、各ＰＬＣに関する情報をタッチスクリーン４１８のディスプレイに表示する表示処理、操作キー１０８を介して入力されたユーザの指示をＰＬＣ１〜３に伝送する入力処理などの各種の処理を実行する。また、プログラマブルターミナル４は、通信処理、表示処理および入力処理などを実施するためのＵＩ画面を含む各種の画面をディスプレイ１０７に表示する。これら表示にための表示データは、プログラマブルターミナル４がプロジェクトを実行することにより生成されて、生成された画面データによりディスプレイ１０７を駆動することにより、画面が表示される。
【００３２】
ＰＣ１００は、ＨＭＩプログラムを処理するプログラム処理装置の一実施例である。ＰＣ１００は、有線または無線の通信路１１１を介してプログラマブルターミナル４に接続される。ＰＣ１００は、ユーザがプロジェクトを開発（生成）する環境を提供する。ＰＣ１００で生成されたプロジェクトは、プログラマブルターミナル４に送信される。通信路１１１は、例えばＬＡＮ（Local  Area  Network）を含む。
【００３３】
（ＰＣ機器１００の構成）
図２は、実施の形態１にかかるＰＣ１００の構成を概略的に示す図である。図２を参照して、ＰＣ１００は、ＣＰＵ１１０、記憶部としてのメモリ１１２およびハードディスク１１４、計時し計時データをＣＰＵ１１０に出力するタイマ１１３、入力インターフェイス１１８、表示コントローラ１２０、通信インターフェイス１２４、データリーダ／ライタ１２６を含む。これらの各部は、バス１２８を介して互いにデータ通信が可能なように接続されている。
【００３４】
ＣＰＵ１１０は、ハードディスク１１４に格納されたプログラム（コード）を実行することで、各種の演算を実施する。メモリ１１２は、典型的には、ＤＲＡＭ（Dynamic  Random  Access  Memory）などの不揮発性の記憶装置である、メモリ１１２は、ハードディスク１１４から読出されたプログラム・データに加えて、データリーダ／ライタ１２６から受信されたデータ、およびワークデータなどが格納される。
【００３５】
入力インターフェイス１１８は、ＣＰＵ１１０とキーボード１０４、マウス（図示せず）、タッチパネル（図示せず）などの入力装置との間のデータ伝送を仲介する。すなわち、入力インターフェイス１１８は、ユーザが入力装置を操作することで与えられる操作命令を受付ける。
【００３６】
表示コントローラ１２０は、表示装置の典型例であるディスプレイ１０２と接続され、ＣＰＵ１１０における処理の結果などを表示する。表示コントローラ１２０は、ＣＰＵ１１０からの表示データに従いディスプレイ１０２を駆動する。これにより、ディスプレイ１０２には、表示データに従う画像が表示される。
【００３７】
通信インターフェイス１２４は、ＬＡＮを介してＮＡ４との間のデータ伝送を仲介する。データリーダ／ライタ１２６は、ＣＰＵ１１０と外部の記憶媒体であるメモリカード１０６との間のデータ伝送を仲介する。
【００３８】
なお、メモリカード１０６は、ＰＣ１００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１２６は、このメモリカード１０６からプログラムを読出す。なお、メモリカード１０６は、ＣＦ（Compact  Flash）、ＳＤ（Secure  Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible  Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）などの光学記憶媒体などからなる。
【００３９】
また、ＰＣ１００には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００４０】
（プログラマブルターミナル４の構成）
図３は、実施の形態１にかかるプログラマブルターミナル４の構成を概略的に示す図である。図３を参照して、プログラマブルターミナル４は、各種の演算を行なうＣＰＵ４１１、ＲＯＭ（Read  Only  Memory）４１２、ＲＡＭ（Random  Access  Memory）４１３、各種のプログラムおよびデータを不揮発的に格納するためのフラッシュＲＯＭ４１４、時計４１５、ユーザの操作を受付けるための操作キー４１６、データリーダ/ライタ４１７、タッチスクリーン４１８および通信インターフェイス４１９を備える。なお、これらの各部は、内部バスを介して互いに接続される。
【００４１】
タッチスクリーン４１８は、表示部として機能するディスプレイ４８１、ユーザの入力を受付けるためのタッチパネル４８２を含む。タッチパネル４８２は、ディスプレイ４８１を覆うように設置される。通信インターフェイス４１９は、ＰＣ１００およびＰＬＣ１〜３の各種の機器と通信する。
【００４２】
データリーダ／ライタ４１７は、ＣＰＵ４１１と外部の記憶媒体であるメモリカード４２０との間のデータ伝送を仲介する。メモリカード４２０は、プログラマブルターミナル４で実行されるプログラムなどが格納された状態で流通し得る。データリーダ／ライタ１２６は、メモリカード４２０からプログラムを読出す。なお、メモリカード４２０は、ＣＦ（Compact  Flash）、ＳＤ（Secure  Digital）などの汎用的な半導体記憶デバイスや、フレキシブルディスク（Flexible  Disk）などの磁気記憶媒体や、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）などの光学記憶媒体などからなる。
【００４３】
また、プログラマブルターミナル４には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００４４】
（ＨＭＩプログラムの開発環境）
図４は、実施の形態１にかかるＨＭＩプログラムの開発環境を概略的に示す図である。図４では、ＰＣ１００における開発環境に関連付けて、プログラマブルターミナル４におけるＨＭＩプログラムの実行環境が示されている。
【００４５】
図４を参照して、ＰＣ１１０の開発環境は、ＯＳ（オペレーティングシステム）２２０およびＨＭＩデバイスツールプログラム２２１を備える。ＨＭＩデバイスツールプログラム２２１は、ハードディスク１１４からメモリ１１２にロードされてもよい。ＨＭＩデバイスツールプログラム２２１は、ＨＭＩプログラム、ＵＩライブラリおよび各種プロジェクトなどを作成するためのエディタ１０Ａおよび各種プロジェクトをコンパイルするためのコンパイラ１０Ｂを含む。また、ＰＣ１００は、ＵＩライブラリおよびＨＭＩプログラムを作成するためのリソース、関数などのデータを有したライブラリ２２４を備える。ＨＭＩプログラムは、たとえば表示要素の配置および外観の定義、プログラミング言語による動作指示などを含む。
【００４６】
実施の形態１では、コンパイラ１０Ｂが、エディタ１０Ａにより作成された標準プロジェクト２２５をコンパイルする。なお、実際には、ユーザは標準プロジェクト２２５をコンパイルする前に、ＨＭＩプログラム２２７で参照されるＵＩライブラリを作成することが一般的である。標準プロジェクト２２５は、ライブラリ２２４のデータを用いて作成、編集される。標準プロジェクト２２５は１つ以上のＵＩライブラリ２２６、ＵＩライブラリ２２６のリソースを参照するＨＭＩプログラム２２７、および各種のデータの定義を記載した定義ファイル２２８などを含む。標準プロジェクト２２５は後述する図５の記憶部９０に格納される。記憶部９０は、ハードディスク１１４、メモリ１１２などの記憶領域を含んで構成される。
【００４７】
ユーザは、標準プロジェクト２２５をコンパイルする場合には、コンパイラ１０Ｂを起動する。コンパイラ１０Ｂは、格納された標準プロジェクト２２５をパーサ処理などしてコンパイルし、実行形式のコードに変換された実行形式プロジェクト２２９を出力する。実行形式プロジェクト２２９は、記憶部９０に格納される。コンパイル時には、標準プロジェクト２２５のデータ量を削減するために、上記の削除処理が実施される。この削除処理の詳細は後述する。
【００４８】
ＰＣ１００は、通信路１１１を介して実行形式プロジェクト２２９をプログラマブルターミナル４にロードする。プログラマブルターミナル４は、ＰＣ１００から転送された実行形式プロジェクト２２９をフラッシュＲＯＭ４１４などに格納する。
【００４９】
プログラマブルターミナル４のオペレータがＨＭＩプログラムの実行を指示すると、プログラマブルターミナル４のＯＳ２３０の制御のもとで、フラッシュＲＯＭ４１４から実行形式プロジェクト２２９が読出されて、読出された実行形式プロジェクト２２９はランタイムを介して実行される。
【００５０】
（機能構成）
図５は、実施の形態１にかかるコンパイラ１０Ｂとその周辺部を模式的に示す図である。図５を参照して、コンパイラ１０Ｂに関連してエディタ１０Ａ、インターフェイス部８０および記憶部９０が示される。エディタ１０Ａはプログラム、ＵＩライブラリ、リソース、プロジェクトなど各種のデータを、ユーザ操作に従い作成する。コンパイラ１０Ｂは、エディタ１０Ａにより作成された各種のデータ、プログラムをコンパイルする。
【００５１】
コンパイラ１０Ｂが、エディタ１０Ａにより作成された標準プロジェクト２２５をコンパイルする場合に、上記の削除処理に関連して、標準プロジェクト２２５のリソースＲを同一のリソースＲどうしでグループ分けするためのグループ化部２０、同一である（重複する）と検出されたリソースＲのうちの１つのリソースＲのみを含むよう標準プロジェクト２２５を変更する変更処理を実施する変更部５０、表作成部６０、および参照先設定部７０を備える。同一である（重複する）と検出されたリソースＲのグループは、上記の１つのリソースＲと他のリソースＲからなる。参照先設定部７０は、ＨＭＩプログラム２２７中の当該他のリソースＲを参照する部分に、当該１つのリソースＲへの参照を指示する参照データを設定する。表作成部６０は上記の他のリソースＲの識別子と、当該他のリソースＲの参照部分に設定された上記の１つのリソースＲの識別子との関連付け情報（リソース置換表ＴＢ）を作成する。
【００５２】
以下の説明では、変更部５０が備える削除部５５が、各グループにおいて重複するリソースＲのうち１つ（上記の１つのリソースＲに相当）を残し、残りのリソースＲ（上記の他のリソースに相当）を削除する削除処理により上記の変更処理を実現する。削除処理が実施される場合は、表作成部６０は、削除されたリソースＲと残されたリソースＲとの対応関係を示す表（リソース置換表ＴＢ）を作成する。また、参照先設定部７０は、ＨＭＩプログラム２２７において削除されたリソースＲを参照する部分を特定し、この部分に、残されたリソースＲへの参照を指示する参照データを設定する。
【００５３】
グループ化部２０は、同一のリソースＲを検出するための一致検出部３０、および検出された同一のリソースＲのグループ、さらに細かいグループに分ける細分化部４０を含む。
【００５４】
（処理フローチャート）
図６は、実施の形態１にかかる処理フローチャートである。図６の処理フローチャートは、プログラムとしてメモリ１１２またはハードディスク１１４などに格納されて、ＣＰＵ１１０により読出されて実行される。このプログラムは、メモリカード１０６に格納された状態で流通し得る。ＣＰＵ１１０は、データリーダ/ライタ１２６を介して、メモリカード１０６からプログラムを読出し、読出されたプログラムをハードディスク１１４またはメモリ１１２に格納する。
【００５５】
また、プログラムは、図示しないネットワークを介して通信インターフェイス１２４により受信されて、ＣＰＵ１１０は受信されたプログラムをメモリ１１２またはハードディスク１１４などに格納するとしてもよい。
【００５６】
図７は、実施の形態１にかかるリソースＲが削除される過程を模式的に示す図である。図７では、説明のために、記憶部９０を、標準プロジェクト２２５のＵＩライブラリ２２６が格納される領域Ｅ１と、リソース置換表ＴＢが格納されるべき領域Ｅ２とに分けている。図８〜図１１は、実施の形態１にかかるリソースＲが削除される過程の具体例を示す図である。
【００５７】
まず、ユーザはエディタ１０Ａを起動して、標準プロジェクト２２５を作成する。作成される標準プロジェクト２２５は記憶部９０に格納される。このとき、同一のリソースＲが標準プロジェクト２２５にインポート（組込み）される。この詳細は、後述する。
【００５８】
標準プロジェクト２２５の作成が完了すると、ユーザは、標準プロジェクト２２５をコンパイルするためにコンパイル開始の操作を行う。
【００５９】
ＣＰＵ１１０は、ユーザからコンパイルの開始指示を受付けるか否かを判断する（ステップＳ２）。コンパイルの開始指示を受けないときは（ステップＳ２でＮＯ）、処理はステップＳ１に戻る。ＣＰＵ１１０は、コンパイルの開始指示を受付けると（ステップＳ２でＹＥＳ）、コンパイラ１０Ｂを起動する。
【００６０】
コンパイラ１０Ｂが起動されると、まず、グループ化部２０はリソースＲのグループ化処理を実施する（ステップＳ３）。具体的には、一致検出部３０は、図７（Ａ）の領域Ｅ１のＵＩライブラリ２２６に含まれた複数のリソースＲを、「データの種類」と「データ長」との両方が一致するものどうしで１つ以上のグループＧに分ける（図７（Ｂ）参照）。一致検出部３０は、「データの種類」を、リソースＲのデータファイルの拡張子に基づき判別する。図８の具体例では、領域Ｅ１（より具体的にはＵＩライブラリ２２６）の複数のリソースＲは、データ種類は「ＢＭＰ」およびデータ長は「４００ｂｙｔｅ」であるグループＧ１、データ種類は「ＢＭＰ」およびデータ長は「５００ｂｙｔｅ」であるグループＧ２、データ種類は「ＰＮＧ」およびデータ長は「１００ｂｙｔｅ」であるグループＧ３に分けられる（図８参照）。
【００６１】
なお、図８のグループＧ１の矢印で示されたリソースＲは、当該グループの他のリソースとは異なる画像データではあるが、この時点ではグループＧ１に分類されている。
【００６２】
このように、一致検出部３０は、「データの種類」と「データ長」という簡単な判断基準に従い、複数のＵＩライブラリにおいて使用される（含まれる）同一のリソースＲを検出する。この判断基準は単純である（複雑ではない）から、ＵＩライブラリはパッケージ化されてそれぞれ独立に作成されるとしても、これらＵＩライブラリから比較的高速に同一のリソースＲを検出することができる。
【００６３】
上記の「データの種類」と「データ長」に基づく同一性の分類の場合には、グループ内に他のリソースＲとは異なる画像データ（リソースＲ）が含まれる可能性がある。これを回避するために、リソースＲの同一性をより正確に検出する。具体的には、一致検出部３０は、２つ以上のリソースＲを含む各グループＧに対して同一性を検出し（ステップＳ４）、その結果に基づき、細分化部４０は、当該グループＧのリソースＲをさらに等値であるものどうしでグループ化する（ステップＳ５）。ステップＳ４において、一致検出部３０は、リソースＲの等値性は、各グループについて以下の手順で判定する。
【００６４】
（ａ）ハッシュ値が異なるリソースＲどうしは異なるリソースＲと判定する。
（ｂ）上記の（ａ）により異なると判定されないリソースＲどうしについては、各リソースＲのデータの全バイトの値が一致すれば当該リソースどうしは一致すると判定し、そうでなければ異なると判定する。
【００６５】
上記の一致検出部３０および細分化部４０の処理により、図８のグループＧ１のリソースＲを、図９のグループＧ１１とＧ１２に細分化することができる。グループＧ１１とＧ１２のそれぞれにおいて、グループ内に含まれるリソースＲは全く同一となる。なお、元のグループＧ２は、グループ内のリソースＲどうしは等値性を有すると判断されるので、細分化は実施されない。
【００６６】
削除部５５は、図７（Ｂ）の各グループＧについて、当該グループＧに含まれたリソースＲのうちの１つのリソースＲを残し、他のリソースＲを削除する（ステップＳ６、図７（Ｃ）参照）。図１０の具体例では、グループＧ１１からは２個のリソースＲが削除され、グループＧ２からは１個のリソースＲが削除される。これにより、標準プロジェクト２２５（より特定的にはＵＩライブラリ２２６）に含まれるリソースＲの総数を削減することができる。
【００６７】
表作成部６０は、リソース置換表ＴＢを作成する（ステップＳ７、図７（Ｄ）参照）。リソース置換表ＴＢは、各グループＧについて、削除されたリソースＲと置換先リソースＲ（すなわち残されたリソースＲ）との対応関係を示すデータを有する。実施の形態１では、表作成部６０は、リソース置換表ＴＢに、削除されたリソースＲのファイル名と、残されたリソースのファイル名とを関連付けて格納する。
【００６８】
図１０の具体例では、リソース置換表ＴＢには、削除したリソースＲの識別子ＴＢ１と、これに関連付けて置換先の識別子ＴＢ２とが関連付けて格納される。例えば、識別子ＴＢ１としてグループＧ１１から削除された２個のリソースＲのファイル名（C.bmpとF.bmp)が格納されて、これに関連付けた識別子ＴＢ２として、残されたリソースＲのファイル名（A.bmp）が格納されている。また、グループＧ２については、識別子ＴＢ１として削除された１個のリソースＲのファイル名（G.bmp)が格納されて、これに関連付けた識別子ＴＢ２として、残されたリソースＲのファイル名（B.bmp）が格納されている。なお、リソースＲの識別子は、当該リソースＲのファイル名に限定されない。
【００６９】
これにより、標準プロジェクト２２５に含まれるリソースＲの総数を、重複を排除することで削減することができる。また、リソース置換表ＴＢにより、削除されたリソースＲと残されたリソースＲとを関連付けを記憶しておくことができる。
【００７０】
次に、参照先設定部７０は、標準プロジェクト２２５のＨＭＩプログラム２２７において、削除されたリソースＲを参照している部分に、残されたリソースＲへの参照を指示する参照データを設定する（ステップＳ８）。具体的には、参照先設定部７０は、ＨＭＩプログラム２２７をパースする過程において、リソース置換表ＴＢの削除されたリソースＲのファイル名を記載した部分を特定する。参照先設定部７０は、図１１に示されるように、ＨＭＩプログラム２２７の特定された部分に記載されたファイル名を、リソース置換表ＴＢにおいて関連付けされたファイル名（残されたリソースＲのファイル名）に変更する（書換える）。これにより、ＨＭＩプログラム２２７は、削除処理により残ったリソースＲのみを参照するようにコンパイルされる。
【００７１】
コンパイラ１０Ｂによるコンパイル後において実行形式プロジェクト２２９が記憶部９０に格納される。ＣＰＵ１１０は、コンパイル後に、ユーザから実行形式プロジェクト２２９の転送指示を受付けるか否かを判断する（ステップＳ９）。ＣＰＵ１１０は、転送指示を受付けないと判断する間は（ステップＳ９でＮＯ）、ステップＳ９の処理を繰返すが、転送指示を受付けたと判断すると（ステップＳ９でＹＥＳ）、ＣＰＵ１１０は、記憶部９０から実行形式プロジェクト２２９を読出して、プログラマブルターミナル４に転送する（ステップＳ１０）。これにより、プログラマブルターミナル４は、上記のリソースＲの削除処理がされてデータサイズが削減された実行形式プロジェクト２２９を取得することができる。
【００７２】
（重複したリソースの作成例）
図１２〜図１６は、同一のリソースＲが作成されるケースを説明するための図である。これらの図を参照して、エディタ１０Ａを用いた標準プロジェクト２２５の作成時に、同一のリソースＲが作成される場合を説明する。まず、ユーザは、ある機械を始動させるボタン（ＵＩデータ）のリソースを持つＵＩライブラリ（Ａ）と、当該機械を停止させるボタン（ＵＩデータ）のリソースを持つＵＩライブラリ（Ｂ）とを作成する（図１２と図１３参照）。両ＵＩライブラリとも、機械メーカーのロゴマーク（Example  Co.,  Ltd）の画像をボタンの上方に配置する。ユーザは、両ＵＩライブラリを１つの標準プロジェクト２２５にインポートする（図１４）。
【００７３】
図１４を参照すると、インポートされた個々のＵＩライブラリは、矢印で示される画像のリソースＲを有している。なお、図１４では複数のＵＩライブラリ間でリソースのファイル名が衝突しないようにするため、インポート時にリソースのファイル名は自動的にユニークな別名に変更される。
【００７４】
図１５では、ユーザは両方のリソースＲを画面（ページ）に配置して、両方のリソースＲの表示画面での位置を決定する。その後、標準プロジェクト２２５の作成を完了する。
【００７５】
作成された上記の標準プロジェクト２２５は、同一のリソースＲを含んでいる（図１６（Ａ）参照）ため、実行形式プロジェクト２２９は、同一のリソースＲについての実行形式データを重複して含む（図１６（Ｂ）の部分Ｃを参照）ことになる。
【００７６】
これに対して、本実施の形態では、図１６（Ａ）のように標準プロジェクト２２５中にリソースＲが重複している場合においては、標準プロジェクト２２５のコンパイル時において、重複しているリソースＲが検出されて、検出されたリソースＲについて上述の削除処理を実施することができる。
【００７７】
（変形例１）
上記の実施の形態１の変形例を説明する。上記の実施の形態では、リソースデータが完全に一致することをリソースＲの重複を判断する基準とした。画像であるリソースＲに対しては、前処理を適用して一致の判断を実施することができる。例えば、グループ化部２０は、幅と高さが一致する類似のリソースＲの画像どうしでグループを作成し、グループごとにグループ内の画像を非圧縮のピクセルデータに展開する前処理を実施する。一致検出部３０は、展開後の画像データどうしをピクセル単位で照合し完全一致を検出する。
【００７８】
図１７は、実施の形態１にかかる類似しているリソースＲの画像を模式的に示す図である。図１７（Ａ）は、リソースＲの画像ファイルの形式は異なるが、内容（画像）は一致しているケースを示す。図１７（Ｂ）は、画像の拡大または縮小の差はあるが、内容（画像）は一致しているケースである。この両方のケースであっても、上記の前処理を実施することにより、一致検出部３０により画像の同一性が検出される。
【００７９】
（変形例２）
上記の実施の形態１では、リソースＲの重複・類似の判定がなされると自動的に削除部５５によるリソースＲの削除が実施されたが、リソースＲの削除は、ユーザからの指示を受付けたときに実施されるとしてもよい。
【００８０】
図１８は、実施の形態１にかかるリソース削除の可否をユーザに問合せる画面の一例を示す図である。図１８を参照して、ディスプレイ１０２には、グループ化部２０から出力される各グループについて、同一グループのリソースＲのアイコンは同じ輪の中に入った画面が表示される。画面により、ユーザに対して、同じ輪の中の複数のリソースＲは、太枠で縁取られたリソースＲのみ残されて、他のリソースＲは削除して良いかの問合わせがなされる。
【００８１】
ユーザは、画面上の問合わせを確認し、重複しているリソースＲを削除したくない場合は、削除対象から外したいリソースＲのアイコンをドラッグして輪の外に移動させる。その後、実行ボタン１０２Ａを操作することにより、輪の外に移動させたリソースＲを残した状態の標準プロジェクト２２５について実行形式プロジェクト２２９が作成される。
【００８２】
（変形例３）
ＰＣ１００は、リソース置換表ＴＢをディスプレイ１０２に表示するために、リソース置換表ＴＢから表示データを生成し、生成された表示データを表示コントローラ１２０に出力する。これにより、ユーザに対して、削除されたリソースＲ、残されたリソースＲ、両者の置換の対応関係が報知される。また、削除されたリソースＲが属していたＵＩライブラリ、または残されたリソースＲが属するＵＩライブラリの識別子（ＵＩライブラリのライブラリ名など）をディスプレイ１０２に表示してもよい。
【００８３】
（変形例４）
上記の一致検出部３０は、ＵＩライブラリ２２６のＵＩデータが作成されるときに同一性を検出するとしてもよい。上述の一致検出部３０は、コンパイラ１０Ｂによる標準プロジェクト２２５のコンパイル時にリソースＲの一致を検出したが、次のように、コンパイル時以外に検出するとしてもよい。
【００８４】
具体的には、ＰＣ１００では、ユーザが、エディタ１０ＡによりＵＩライブラリにリソースＲを追加する、または既存のリソースＲを編集するなどしてエディト（作成）し、エディト後のＵＩライブラリを標準プロジェクト２２５にインポートする。このときに、一致検出部３０による同一のリソースＲの検出と、削除部５５によるリソースＲの削除と、参照先設定部７０による参照先設定が実施されるとしてもよい。
【００８５】
その後、コンパイル時にも一致検出部３０による同一のリソースＲの検出がされるとしてもよい。この場合には、ＵＩライブラリ２２６のＵＩデータが作成される時の一致検出とコンパイル時の一致検出とが組合わせて実施される。
【００８６】
また、ユーザがリソースＲの最適化機能を明示的に指示したときに、ＵＩライブラリ２２６のリソースＲについての同一性の検出と、削除部５５による同一であった（すなわち重複した）リソースＲの削除とが実施されるとしてもよい。
【００８７】
（変形例５）
ＰＣ１００の参照先設定部７０は、コンパイル中ではなく、コンパイル完了後の実行形式のＨＭＩプログラムについて、またはプログラマブルターミナル４に実行形式プロジェクト２２９への転送が指示されたときに、上記に述べた参照先設定の処理を実施してもよい。
【００８８】
[実施の形態２]
実施の形態２は、上記の実施の形態１の変形例を示す。実施の形態２では、プログラマブルターミナル４がリソースＲの同一検出、削除処理と参照先設定処理を実行する。この場合は、プログラマブルターミナル４が、上記のプログラム処理装置の一実施例となる。
【００８９】
実施の形態２では、ＰＣ１００が標準プロジェクト２２５のコンパイルを実施する。ただし、コンパイル時にはリソースＲの同一検出は実行されない。コンパイルにより得られた実行形式プロジェクト２２９は、重複したリソースＲを含んだままプログラマブルターミナル４に転送され得る。
【００９０】
プログラマブルターミナル４のＣＰＵ４１１は、ＰＣ１００から受信した実行形式プロジェクト２２９に含まれるＵＩライブラリ２２６のリソースＲについて、実施の形態１で説明したグループ化処理（ステップＳ３、Ｓ４およびＳ５）、削除処理（ステップＳ６）、表作成処理（ステップＳ７）および参照先設定処理（ステップＳ７）を実施する。
【００９１】
また、プログラマブルターミナル４では、ユーザからの指示を受付けたときに、上記の重複しているリソースの検出、リソースＲの削除および参照先設定処理を実施するとしてもよい。
【００９２】
[実施の形態３]
実施の形態３は、実施の形態１または実施の形態２の変形例を示す。実施の形態３では、グループ化処理（ステップＳ３、Ｓ４およびＳ５）、削除処理（ステップＳ６）、表作成処理（ステップＳ７）および参照先設定処理（ステップＳ７）は、ＰＣ１００とプログラマブルターミナル４との間で協同して実施される。
【００９３】
例えば、標準プロジェクト２２５について、ＰＣ１００ではグループ化処理（ステップＳ３、Ｓ４およびＳ５）、削除処理（ステップＳ６）および表作成処理（ステップＳ７）が実施されて、実行形式プロジェクト２２９が作成される。ＰＣ１００は、実行形式プロジェクト２２９とリソース置換表ＴＢとをプログラマブルターミナル４に転送する。
【００９４】
プログラマブルターミナル４は、ＰＣ１００から実行形式プロジェクト２２９とリソース置換表ＴＢを受信すると、リソース置換表ＴＢに従い、実行形式プロジェクト２２９のＨＭＩプログラム２２７に参照先設定を実施する。
【００９５】
[実施の形態の構成]
上記の各実施の形態は、以下の構成を開示する。
【００９６】
プログラム処理装置（ＰＣ１００、プログラマブルターミナル４）は、ＦＡのためのＨＭＩプログラムを処理する。このプログラム処理装置は、ＨＭＩプログラム２２７のＵＩ機能に対応したＵＩデータ（リソースＲ）を格納するための複数のライブラリ（ＵＩライブラリ）と、プログラム処理装置を制御する制御部（ＣＰＵ１１０、ＣＰＵ４１１）と、を備える。制御部は、異なるライブラリに格納された同一であるＵＩデータのうち、少なくともデータの種類とサイズとに基づき、同一であるＵＩデータを検出する一致検出部３０と、同一であると検出されたＵＩデータのうち１つを残し、他をライブラリから削除する削除部５５とを備える。
【００９７】
上記の構成によれば、同一であるＵＩデータについては、１つのＵＩデータを残し、他は削除される（ライブリから削除される）から、ライブラリのデータ量を削減することができる。データ量の削減により、ＨＭＩプログラム２２７に関するデータ（ＵＩデータを含む）格納するのに必要とされる記憶領域を小さくでき、またデータを転送する場合には転送速度を速くすることができる。
【００９８】
一致検出部３０は、ライブラリ（ＵＩライブラリ）のＵＩデータ（リソースＲ）が作成されるときに同一のＵＩデータを検出する。したがって、ライブラリの作成時に、既にライブラリにあるＵＩデータと同一のＵＩデータが作成されてライブラリに格納される事態を防止することができる。
【００９９】
一致検出部３０は、ＨＭＩプログラム２２７がコンパイルされるときに上記の同一を検出する。したがって、コンパイル時に、同一のＵＩデータを検出し、削除することができる。
【０１００】
ＵＩデータ（リソースＲ）は、ＨＭＩプログラム２２７の中において参照される。制御部は、さらに、ＨＭＩプログラム２２７中の削除されたＵＩデータを参照する部分に、残されたＵＩデータへの参照を指示する参照データを設定する参照先設定部７０を備える。この構成によれば、ＨＭＩプログラム２２７中で参照されているＵＩデータが削除された場合には、参照部分において、参照先は残されたＵＩデータ（削除されたものと同一のＵＩデータ）を指示するようなデータを設定することができる。これにより、ＵＩデータの削除前と後において、ＨＭＩプログラムの内容の実質的な同一性は保たれる。
【０１０１】
参照先設定部７０は、ＨＭＩプログラム２２７がコンパイルされるときに、参照データの設定を実施する。したがって、コンパイル中に参照データを設定することができる。
【０１０２】
好ましくは、プログラム処理装置は、ディスプレイ１０２と、ディスプレイ１０２を表示データに従い制御する表示コントローラ１２０と、を備える。制御部は、さらに、削除されたＵＩデータの識別子（リソースＲのファイル名）と、当該削除されたＵＩデータの参照部分に設定される残されたＵＩデータの識別子（リソースＲのファイル名）との関連付け情報（リソース置換表ＴＢ）を作成する作成部（参照先設定部７０）を、含む。制御部は、作成された関連付け情報を表示するための表示データを表示コントローラに出力する。
【０１０３】
この構成によれば、ユーザはＨＭＩプログラム２２７中の、ＵＩデータの参照先がどのように変更されたかを確認することができる。また、削除されたＵＩデータと残されたＵＩデータとが何であるかを確認することもできる。
【０１０４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１０５】
４  プログラマブルターミナル、１０Ａ  エディタ、１０Ｂ  コンパイラ、１１  システムバス、１２  電源ユニット、１５  検出センサ、１６  リレー、２０  グループ化部、３０  一致検出部、４０  細分化部、５０  変更部、５５  削除部、６０  表作成部、７０  参照先設定部、８０  インターフェイス部、９０  記憶部、１０２，１０７，４８１  ディスプレイ、１０２Ａ  実行ボタン、１０４  キーボード、１０６，４２０  メモリカード、１０８，４１６  操作キー、１１１  通信路、１１２  メモリ、１１３  タイマ、１１４  ハードディスク、１１８  入力インターフェイス、１２０  表示コントローラ、１２４，４１９  通信インターフェイス、１２６，４１７  データリーダ／ライタ、１２８  バス、２２１  デバイスツールプログラム、２２４  ライブラリ、２２５  標準プロジェクト、２２７  プログラム、２２８  定義ファイル、２２９  実行形式プロジェクト、４１４  ＲＯＭ、４１５  時計、４１８  タッチスクリーン、４８２  タッチパネル、ＴＢ  リソース置換表。
【図１】
2018045544.tif 000003
【図２】
2018045544.tif 000004
【図３】
2018045544.tif 000005
【図４】
2018045544.tif 000006
【図５】
2018045544.tif 000007
【図６】
2018045544.tif 000008
【図７】
2018045544.tif 000009
【図８】
2018045544.tif 000010
【図９】
2018045544.tif 000011
【図１０】
2018045544.tif 000012
【図１１】
2018045544.tif 000013
【図１２】
2018045544.tif 000014
【図１３】
2018045544.tif 000015
【図１４】
2018045544.tif 000016
【図１５】
2018045544.tif 000017
【図１６】
2018045544.tif 000018
【図１７】
2018045544.tif 000019
【図１８】
2018045544.tif 000020