(57)【要約】【課題】  ソースコードの構造にかかわらずアプリケーションプログラムの移植を効率化することができるアプリケーション移植支援装置、アプリケーション移植支援プログラムおよびアプリケーション移植方法を提供する。【解決手段】  アプリケーションプログラムを構成する命令を示すコードのうち、プラットフォームに固有の固有コードをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称によって特定し（Ｓ５２）、特定した固有コードに関連する関連コードを特定する（Ｓ５８）アプリケーション移植支援装置は、アプリケーションプログラムに含まれる複数の固有コードのそれぞれの直前コード部および直後コード部のセットの複数がコードのパターンに関して同一である場合に、コードのパターンに関して同一の複数のセットに含まれる全てのコードを関連コードとして特定することを特徴とする。【選択図】  図５
2019046002.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムを構成する命令を示すコードのうち、前記アプリケーションプログラムが動作させられるプラットフォームに固有の固有コードをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称によって特定する固有コード特定手段と、
前記固有コード特定手段によって特定された前記固有コードに関連する関連コードを特定する関連コード特定手段と
を備え、
前記関連コード特定手段は、
前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直前の少なくとも１つの前記コードからなる直前コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直前コード部に含まれる全ての前記コードを前記関連コードとして特定することと、
前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直後の少なくとも１つの前記コードからなる直後コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直後コード部に含まれる全ての前記コードを前記関連コードとして特定することと
の少なくとも１つを実行することを特徴とするアプリケーション移植支援装置。
【請求項２】
前記コードのうち、前記固有コードおよび前記関連コードのいずれでもない非依存コードの移植後のソースコードの候補を生成するコード候補生成手段を備え、
前記コード候補生成手段は、
前記アプリケーションプログラムの移植前後のコンピューター言語が一致する場合に、前記アプリケーションプログラムの移植前の前記非依存コードのソースコードを前記候補とすることと、
前記アプリケーションプログラムの移植前後のコンピューター言語が一致しない場合に、前記アプリケーションプログラムの移植前の前記非依存コードのソースコードを前記アプリケーションプログラムの移植前後のコンピューター言語に応じて機械的に変換したソースコードを前記候補とすることと
の少なくとも１つを実行することを特徴とする請求項１に記載のアプリケーション移植支援装置。
【請求項３】
アプリケーションプログラムを構成する命令を示すコードのうち、前記アプリケーションプログラムが動作させられるプラットフォームに固有の固有コードをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称によって特定する固有コード特定手段と、
前記固有コード特定手段によって特定された前記固有コードに関連する関連コードを特定する関連コード特定手段と
をコンピューターに実現させ、
前記関連コード特定手段は、
前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直前の少なくとも１つの前記コードからなる直前コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直前コード部に含まれる全ての前記コードを前記関連コードとして特定することと、
前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直後の少なくとも１つの前記コードからなる直後コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直後コード部に含まれる全ての前記コードを前記関連コードとして特定することと
の少なくとも１つを実行することを特徴とするアプリケーション移植支援プログラム。
【請求項４】
アプリケーションプログラムを構成する命令を示すコードのうち、前記アプリケーションプログラムが動作させられるプラットフォームに固有の固有コードをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称によって特定する固有コード特定ステップと、
前記固有コード特定ステップによって特定された前記固有コードに関連する関連コードを特定する関連コード特定ステップと
を備え、
前記関連コード特定ステップは、
前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直前の少なくとも１つの前記コードからなる直前コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直前コード部に含まれる全ての前記コードを前記関連コードとして特定することと、
前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直後の少なくとも１つの前記コードからなる直後コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直後コード部に含まれる全ての前記コードを前記関連コードとして特定することと
の少なくとも１つを実行するステップであることを特徴とするアプリケーション移植方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムの移植を支援するためのアプリケーション移植支援装置、アプリケーション移植支援プログラムおよびアプリケーション移植方法に関する。
【背景技術】
【０００２】
アプリケーションプログラムは、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）、Ｊａｖａ（登録商標）プラットフォームなど、アプリケーションプログラムが動作するための基盤であるプラットフォームに応じたコンピューター言語で開発される。
【０００３】
アプリケーションプログラムが実行される電子機器は、現在搭載されているハードウェアが新たなハードウェアに変更される場合に、現在搭載されているプラットフォームが新たなハードウェアに対応していないとき、現在搭載されているプラットフォームも、新たなハードウェアに対応している新たなプラットフォームに変更される必要がある。電子機器に搭載されているアプリケーションプログラムは、電子機器に搭載されているプラットフォームが新たなプラットフォームに変更される場合に、新たなプラットフォームに応じたコンピューター言語で開発され直す必要がある。
【０００４】
また、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの汎用的な電子機器上で実行されるアプリケーションであっても、例えば電子機器の使用者が所属する組織のＩＴ（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）部門の方針によって電子機器へのＪａｖａプラットフォームのインストールが禁止されているなど、電子機器の使用者の事情によって特定のコンピューター言語で開発されることができない場合がある。したがって、アプリケーションは、電子機器の様々な使用者に提供される必要がある場合に、電子機器の使用者に応じて異なるコンピューター言語で開発される必要がある場合がある。
【０００５】
このように、アプリケーションプログラムは、様々な事情によって、複数のプラットフォームのそれぞれ向けの形式で、すなわち、複数種類の形式で、開発される必要がある場合がある。
【０００６】
そこで、従来、アプリケーションプログラムのソースコードを、特定のコンピューター言語で記述されたソースコードから、他のコンピューター言語で記述されたソースコードに変換する方法、すなわち、アプリケーションプログラムの移植方法が様々提案されている。
【０００７】
例えば、従来のアプリケーションプログラムの移植方法として、アプリケーションプログラムのソースコードをｐＴＡＬという特定のコンピューター言語から他のコンピューター言語へ変換する方法が知られている（例えば、特許文献１参照。）。しかしながら、特許文献１に記載された移植方法は、Ｊａｖａなどの広く普及したコンピューター言語で記述されたソースコードを他のコンピューター言語に変換することができないという問題がある。
【０００８】
広く普及したコンピューター言語で記述されたソースコードを他のコンピューター言語に変換することができる、従来のアプリケーションプログラムの移植方法として、アプリケーションプログラムの機能をラップする方法が知られている。以下、アプリケーションプログラムの機能をラップする方法について説明する。アプリケーションプログラムを構成する命令には、プラットフォームに対して発行されるもの、すなわち、プラットフォームに依存するものと、プラットフォームに依存しないものとが存在する。オリジナルのアプリケーションプログラムの開発者は、プラットフォームに依存しない抽象度の高い命令と、この抽象度の高い命令が置き換えられるための、より抽象度の低い複数の命令のセットとでアプリケーションプログラムのソースコードを作成する。ここで、抽象度の低い命令には、プラットフォームに依存する命令が含まれている。したがって、移植後のアプリケーションプログラムの作成者は、アプリケーションプログラムの移植時に、アプリケーションプログラムのソースコードを手動で書き換える場合に、抽象度の高い命令の部分と、抽象度の低い命令の部分とのうち、抽象度の低い命令の部分のみに対して、ソースコードを手動で書き換えれば良い。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表平１０−５０８３９８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、アプリケーションプログラムの機能をラップする方法は、予め移植が考慮されたソースコードの構造でオリジナルのアプリケーションプログラムを開発しなければならず、オリジナルのアプリケーションプログラムのソースコードの構造が、アプリケーションプログラムが動作させられるプラットフォームに最適化されたソースコードの構造ではない場合があるという問題がある。
【００１１】
そこで、本発明は、ソースコードの構造にかかわらずアプリケーションプログラムの移植を効率化することができるアプリケーション移植支援装置、アプリケーション移植支援プログラムおよびアプリケーション移植方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明のアプリケーション移植支援装置は、アプリケーションプログラムを構成する命令を示すコードのうち、前記アプリケーションプログラムが動作させられるプラットフォームに固有の固有コードをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称によって特定する固有コード特定手段と、前記固有コード特定手段によって特定された前記固有コードに関連する関連コードを特定する関連コード特定手段とを備え、前記関連コード特定手段は、前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直前の少なくとも１つの前記コードからなる直前コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直前コード部に含まれる全ての前記コードを前記関連コードとして特定することと、前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直後の少なくとも１つの前記コードからなる直後コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直後コード部に含まれる全ての前記コードを前記関連コードとして特定することとの少なくとも１つを実行することを特徴とする。
【００１３】
この構成により、本発明のアプリケーション移植支援装置は、アプリケーションプログラムの移植時にソースコードが手動で書き換えられる必要がある固有コードおよび関連コードを特定するので、ソースコードの構造にかかわらずアプリケーションプログラムの移植を効率化することができる。
【００１４】
本発明のアプリケーション移植支援装置は、前記コードのうち、前記固有コードおよび前記関連コードのいずれでもない非依存コードの移植後のソースコードの候補を生成するコード候補生成手段を備え、前記コード候補生成手段は、前記アプリケーションプログラムの移植前後のコンピューター言語が一致する場合に、前記アプリケーションプログラムの移植前の前記非依存コードのソースコードを前記候補とすることと、前記アプリケーションプログラムの移植前後のコンピューター言語が一致しない場合に、前記アプリケーションプログラムの移植前の前記非依存コードのソースコードを前記アプリケーションプログラムの移植前後のコンピューター言語に応じて機械的に変換したソースコードを前記候補とすることとの少なくとも１つを実行しても良い。
【００１５】
この構成により、本発明のアプリケーション移植支援装置は、アプリケーションプログラムの移植前後のコンピューター言語が一致する場合に、アプリケーションプログラムの移植前の非依存コードのソースコードを、アプリケーションプログラムの移植後の非依存コードのソースコードの候補とするとき、移植後のアプリケーションプログラムの作成者の労力を抑えることができるので、アプリケーションプログラムの移植を効率化することができる。また、本発明のアプリケーション移植支援装置は、アプリケーションプログラムの移植前後のコンピューター言語が一致しない場合に、アプリケーションプログラムの移植前の非依存コードのソースコードをアプリケーションプログラムの移植前後のコンピューター言語に応じて機械的に変換したソースコードを、アプリケーションプログラムの移植後の非依存コードのソースコードの候補とするとき、移植後のアプリケーションプログラムの作成者の労力を抑えることができるので、アプリケーションプログラムの移植を効率化することができる。
【００１６】
本発明のアプリケーション移植支援プログラムは、アプリケーションプログラムを構成する命令を示すコードのうち、前記アプリケーションプログラムが動作させられるプラットフォームに固有の固有コードをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称によって特定する固有コード特定手段と、前記固有コード特定手段によって特定された前記固有コードに関連する関連コードを特定する関連コード特定手段とをコンピューターに実現させ、前記関連コード特定手段は、前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直前の少なくとも１つの前記コードからなる直前コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直前コード部に含まれる全ての前記コードを前記関連コードとして特定することと、前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直後の少なくとも１つの前記コードからなる直後コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直後コード部に含まれる全ての前記コードを前記関連コードとして特定することとの少なくとも１つを実行することを特徴とする。
【００１７】
この構成により、本発明のアプリケーション移植支援プログラムを実行するコンピューターは、アプリケーションプログラムの移植時にソースコードが手動で書き換えられる必要がある固有コードおよび関連コードを特定するので、ソースコードの構造にかかわらずアプリケーションプログラムの移植を効率化することができる。
【００１８】
本発明のアプリケーション移植方法は、アプリケーションプログラムを構成する命令を示すコードのうち、前記アプリケーションプログラムが動作させられるプラットフォームに固有の固有コードをＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称によって特定する固有コード特定ステップと、前記固有コード特定ステップによって特定された前記固有コードに関連する関連コードを特定する関連コード特定ステップとを備え、前記関連コード特定ステップは、前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直前の少なくとも１つの前記コードからなる直前コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直前コード部に含まれる全ての前記コードを前記関連コードとして特定することと、前記アプリケーションプログラムに含まれる複数の前記固有コードのそれぞれの直後の少なくとも１つの前記コードからなる直後コード部の複数が前記コードのパターンに関して同一である場合に、前記コードのパターンに関して同一の複数の前記直後コード部に含まれる全ての前記コードを前記関連コードとして特定することとの少なくとも１つを実行するステップであることを特徴とする。
【００１９】
この構成により、本発明のアプリケーション移植方法は、アプリケーションプログラムの移植時にソースコードが手動で書き換えられる必要がある固有コードおよび関連コードを特定するので、ソースコードの構造にかかわらずアプリケーションプログラムの移植を効率化することができる。
【発明の効果】
【００２０】
本発明のアプリケーション移植支援装置、アプリケーション移植支援プログラムおよびアプリケーション移植方法は、ソースコードの構造にかかわらずアプリケーションプログラムの移植を効率化することができる。
【図面の簡単な説明】
【００２１】
【図１】ＭＦＰである場合の、本発明の一実施の形態に係る電子機器のブロック図である。
【図２】図１に示す電子機器におけるソフトウェアの構成図である。
【図３】本発明の一実施の形態に係るアプリケーション移植支援装置のブロック図である。
【図４】図３に示すアプリケーション移植支援装置を用いたアプリケーション移植方法のフローチャートである。
【図５】図３に示すアプリケーション移植支援装置によるソースコード変換支援処理のフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本発明の一実施の形態について、図面を用いて説明する。
【００２３】
まず、アプリケーションプログラムを実行する、本実施の形態に係る電子機器の構成について説明する。
【００２４】
本実施の形態に係る電子機器は、ＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）、プリンター専用機、コピー専用機、ファックス専用機、スキャナー専用機などの画像形成装置でも良いし、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）など、画像形成装置以外の電子機器でも良い。
【００２５】
図１は、ＭＦＰである場合の、本実施の形態に係る電子機器１０のブロック図である。
【００２６】
図１に示す電子機器１０は、種々の操作が入力されるボタンなどの入力デバイスである操作部１１と、種々の情報を表示するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などの表示デバイスである表示部１２と、原稿から画像を読み取る読取デバイスであるスキャナー１３と、用紙などの記録媒体に画像を印刷する印刷デバイスであるプリンター１４と、図示していない外部のファクシミリ装置と公衆電話回線などの通信回線経由でファックス通信を行うファックスデバイスであるファックス通信部１５と、ネットワーク経由で、または、ネットワークを介さずに有線または無線によって直接に、外部の装置と通信を行う通信デバイスである通信部１６と、各種の情報を記憶する半導体メモリー、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの不揮発性の記憶デバイスである記憶部１７と、電子機器１０全体を制御する制御部１８とを備えている。
【００２７】
記憶部１７は、制御部１８によって実行されるソフトウェアであるプラットフォーム１７ａと、プラットフォーム１７ａ上で動作させられるアプリケーションプログラム２０とを記憶している。プラットフォーム１７ａは、例えば、Ｌｉｎｕｘ、ＷｉｎｄｏｗｓおよびＪａｖａプラットフォームのいずれかである。プラットフォーム１７ａおよびアプリケーションプログラム２０は、それぞれ、例えば、電子機器１０の製造段階で電子機器１０にインストールされていても良いし、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリーなどの外部の記憶媒体から電子機器１０に追加でインストールされても良いし、ネットワーク上から電子機器１０に追加でインストールされても良い。
【００２８】
制御部１８は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、プログラムおよび各種のデータを記憶しているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ＣＰＵの作業領域として用いられるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とを備えている。ＣＰＵは、ＲＯＭまたは記憶部１７に記憶されているプログラムを実行する。
【００２９】
図２は、電子機器１０におけるソフトウェアの構成図である。
【００３０】
図２に示すように、アプリケーションプログラム２０は、プラットフォーム１７ａ上で動作させられる。アプリケーションプログラム２０は、例えば、コンポーネント２１、コンポーネント２２、コンポーネント２３およびコンポーネント２４で構成されている。
【００３１】
アプリケーションプログラム２０は、複数の命令によって構成されている。したがって、アプリケーションプログラム２０のソースコードは、アプリケーションプログラム２０を構成する命令を示すコードによって構成されている。アプリケーションプログラム２０を構成する命令を示すコードには、プラットフォーム１７ａに依存する依存コードと、プラットフォーム１７ａに依存しない非依存コードとが存在する。
【００３２】
依存コードには、プラットフォーム１７ａに固有の固有コードと、固有コードに関連する関連コードとが存在する。
【００３３】
固有コードの直前の少なくとも１つのコードは、固有コードの前処理用のコード、すなわち、関連コードである可能性がある。固有コードの前処理としては、例えば、固有コードが画面の色を変更するコードであって、画面の色を赤色に変更する場合に引数として一般的な文字列（理解を容易にするために、例えば「Ｒｅｄ」として説明する。）ではなく、数値「１」をとる必要があるとき、文字列「Ｒｅｄ」を数値「１」に変換する処理などが存在する。固有コードの前処理用のコードは、固有コードではない一般的なコードであるが、処理内容がプラットフォーム１７ａに固有の内容となっているコードである。
【００３４】
固有コードの直後の少なくとも１つのコードは、固有コードの後処理用のコード、すなわち、関連コードである可能性がある。固有コードの後処理としては、例えば、固有コードが画面の色を変更するコードであって、画面の色の変更に成功した場合の戻り値として一般的な文字列（理解を容易にするために、例えば「ＯＫ」として説明する。）ではなく、数値「１」を返すとき、数値「１」を文字列「ＯＫ」に変換する処理などが存在する。固有コードの後処理用のコードは、固有コードではない一般的なコードであるが、処理内容がプラットフォーム１７ａに固有の内容となっているコードである。
【００３５】
非依存コードは、固有コードおよび関連コードのいずれでもないコードである。
【００３６】
コンポーネント２１およびコンポーネント２２は、それぞれ、依存コードおよび非依存コードのうち、非依存コードのみによって構成されている。コンポーネント２３は、依存コードおよび非依存コードのうち、少なくとも依存コード２３ａを含んで構成されている。コンポーネント２４は、依存コードおよび非依存コードのうち、少なくとも依存コード２４ａを含んで構成されている。
【００３７】
次に、アプリケーションプログラム２０などのアプリケーションプログラムの移植を支援するための、本実施の形態に係るアプリケーション移植支援装置の構成について説明する。
【００３８】
図３は、本実施の形態に係るアプリケーション移植支援装置３０のブロック図である。
【００３９】
図３に示すように、アプリケーション移植支援装置３０は、種々の操作が入力される例えばキーボード、マウスなどの入力デバイスである操作部３１と、種々の情報を表示するＬＣＤなどの表示デバイスである表示部３２と、ネットワーク経由で、または、ネットワークを介さずに有線または無線によって直接に、外部の装置と通信を行う通信デバイスである通信部３３と、各種の情報を記憶する半導体メモリー、ＨＤＤなどの不揮発性の記憶デバイスである記憶部３４と、アプリケーション移植支援装置３０全体を制御する制御部３５とを備えている。アプリケーション移植支援装置３０は、例えばＰＣなどのコンピューターによって構成されている。
【００４０】
記憶部３４は、アプリケーションプログラムの移植を支援するためのアプリケーション移植支援プログラム３４ａを記憶している。アプリケーション移植支援プログラム３４ａは、例えば、アプリケーション移植支援装置３０の製造段階でアプリケーション移植支援装置３０にインストールされていても良いし、ＵＳＢメモリー、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）などの外部の記憶媒体からアプリケーション移植支援装置３０に追加でインストールされても良いし、ネットワーク上からアプリケーション移植支援装置３０に追加でインストールされても良い。
【００４１】
記憶部３４は、アプリケーションプログラムが動作するプラットフォームのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）の名称を示すＡＰＩリスト３４ｂをプラットフォームの種類毎に記憶している。ＡＰＩリスト３４ｂに示されるＡＰＩは、通常はシステムコールなどと呼ばれ、プラットフォームの固有の機能を実行するためのものであり、プラットフォーム毎に大きく異なっていることが多い。ＡＰＩリスト３４ｂは、通常、プラットフォームの開発者から提供される。
【００４２】
制御部３５は、例えば、ＣＰＵと、プログラムおよび各種のデータを記憶しているＲＯＭと、ＣＰＵの作業領域として用いられるＲＡＭとを備えている。ＣＰＵは、ＲＯＭまたは記憶部３４に記憶されているプログラムを実行する。
【００４３】
制御部３５は、アプリケーション移植支援プログラム３４ａを実行することによって、ＡＰＩの名称によって固有コードを特定する固有コード特定手段３５ａと、固有コード特定手段３５ａによって特定された固有コードに関連する関連コードを特定する関連コード特定手段３５ｂと、非依存コードの移植後のソースコードの候補を生成するコード候補生成手段３５ｃとを実現する。
【００４４】
次に、アプリケーション移植支援装置３０を用いてアプリケーションプログラムを移植する方法、すなわち、アプリケーション移植方法について説明する。
【００４５】
図４は、アプリケーション移植支援装置３０を用いたアプリケーション移植方法のフローチャートである。
【００４６】
図４に示すように、移植後のアプリケーションプログラムの作成者（以下「移植後アプリ作成者」という。）は、移植対象のアプリケーションプログラムをアプリケーション移植支援装置３０に入力して、移植対象のアプリケーションプログラムのソースコードの変換の支援の処理（以下「ソースコード変換支援処理」という。）をアプリケーション移植支援装置３０に実行させる（Ｓ４１）。
【００４７】
図５は、アプリケーション移植支援装置３０によるソースコード変換支援処理のフローチャートである。
【００４８】
図５に示すように、固有コード特定手段３５ａは、記憶域０〜記憶域Ｎ１のそれぞれを空にする（Ｓ５１）。ここで、記憶域０〜記憶域Ｎ１のそれぞれは、ＲＡＭ上または記憶部３４上に存在する。また、Ｎ１は、例えば１０など、事前に設定されている特定の固定値であり、１以上の整数である。
【００４９】
固有コード特定手段３５ａは、Ｓ５１の処理の後、移植対象のアプリケーションプログラムの対象のファームウェアの種類に対応したＡＰＩリスト３４ｂに含まれるＡＰＩの名称によって、移植対象のアプリケーションプログラムのソースコードにおける全ての固有コードを特定する（Ｓ５２）。
【００５０】
次いで、固有コード特定手段３５ａは、Ｓ５２において少なくとも１つの固有コードを特定することができたか否かを判断する（Ｓ５３）。
【００５１】
固有コード特定手段３５ａは、少なくとも１つの固有コードを特定することができたとＳ５３において判断すると、Ｓ５２において特定した全ての固有コードの、移植対象のアプリケーションプログラムのソースコードにおける位置（以下「固有コード位置」という。）を記憶域０に記憶する（Ｓ５４）。
【００５２】
次いで、関連コード特定手段３５ｂは、変数Ｎに１を代入する（Ｓ５５）。
【００５３】
次いで、関連コード特定手段３５ｂは、記憶域（Ｎ−１）に記憶されている全ての固有コード位置のそれぞれについて、記憶域（Ｎ−１）に記憶されている固有コード位置に存在する固有コードと、この固有コードの直前のＮ個のコードからなる直前コード部と、この固有コードの直後のＮ個のコードからなる直後コード部とのセットを抽出する（Ｓ５６）。ここで、関連コード特定手段３５ｂは、コードのセットを抽出する場合に、コードの引数を考慮せず、コードのみを抽出する。
【００５４】
次いで、関連コード特定手段３５ｂは、Ｓ５６において抽出したセットにおいて、共通するセットが存在するか否かを判断する（Ｓ５７）。ここで、共通するセットとは、セットに含まれるコードの種類および順番からなるパターンが互いに同一であるセットのことである。移植対象のアプリケーションプログラムのソースコードにおいて、コードのパターンが同一のセットが複数存在する場合、それらのセットにおける、固有コードの直前のＮ個のコードは、固有コードに必要な前処理のためのコード、すなわち、固有コードに関連する関連コードである可能性が高く、固有コードの直後のＮ個のコードは、固有コードに必要な後処理のためのコード、すなわち、固有コードに関連する関連コードである可能性が高い。
【００５５】
関連コード特定手段３５ｂは、共通するセットが存在するとＳ５７において判断すると、Ｓ５６において抽出したセットのうち、Ｓ５７において共通すると判断した全てのセットの固有コード位置を記憶域Ｎに記憶し（Ｓ５８）、Ｓ５８において記憶域Ｎに記憶した固有コード位置を記憶域（Ｎ−１）から削除する（Ｓ５９）。
【００５６】
次いで、関連コード特定手段３５ｂは、変数Ｎに１を加算し（Ｓ６０）、変数Ｎが固定値Ｎ１を超えているか否かを判断する（Ｓ６１）。
【００５７】
関連コード特定手段３５ｂは、変数Ｎが固定値Ｎ１を超えていないとＳ６１において判断すると、Ｓ５６を実行する。
【００５８】
コード候補生成手段３５ｃは、固有コードを１つも特定することができなかったとＳ５３において判断されるか、共通するセットが存在しないとＳ５７において判断されるか、変数Ｎが固定値Ｎ１を超えているとＳ６１において判断されると、移植対象のアプリケーションプログラムのソースコードにおいて非依存コードが存在するか否かを判断する（Ｓ６２）。ここで、コード候補生成手段３５ｃは、移植対象のアプリケーションプログラムのソースコードにおける依存コードを、記憶域０〜Ｎ１に記憶されている固有コード位置に基づいて判断することができる。すなわち、Ｘが０〜Ｎ１のいずれかである場合、記憶域Ｘに固有コード位置が記憶されている場合、移植対象のアプリケーションプログラムのソースコードにおいて、記憶域Ｘに記憶されている固有コード位置に存在するコードは、固有コードであり、記憶域Ｘに記憶されている固有コード位置に存在するコードの直前のＸ個のコードと、直後のＸ個のコードとは、それぞれ、関連コードである。
【００５９】
コード候補生成手段３５ｃは、非依存コードが存在するとＳ６２において判断すると、移植対象のアプリケーションプログラムの移植前後のコンピューター言語が一致するか否かを判断する（Ｓ６３）。ここで、コード候補生成手段３５ｃは、例えば、移植対象のアプリケーションプログラムの移植前のコンピューター言語がＬｉｎｕｘ版のＣ＋＋であり、移植対象のアプリケーションプログラムの移植後のコンピューター言語がＷｉｎｄｏｗｓ版のＣ＋＋である場合、移植対象のアプリケーションプログラムの移植前後のコンピューター言語が共にＣ＋＋であるので、移植対象のアプリケーションプログラムの移植前後のコンピューター言語が一致すると判断する。一方、コード候補生成手段３５ｃは、例えば、移植対象のアプリケーションプログラムの移植前のコンピューター言語がＣ＋＋であり、移植対象のアプリケーションプログラムの移植後のコンピューター言語がＯｂｊｅｃｔｉｖｅ−ＣやＪａｖａである場合、移植対象のアプリケーションプログラムの移植前後のコンピューター言語が一致しないと判断する。
【００６０】
コード候補生成手段３５ｃは、移植対象のアプリケーションプログラムの移植前後のコンピューター言語が一致するとＳ６３において判断すると、移植対象のアプリケーションプログラムのソースコードにおいて、移植対象のアプリケーションプログラムの移植前の非依存コードのソースコードを、移植対象のアプリケーションプログラムの移植後の非依存コードのソースコードの候補とする（Ｓ６４）。すなわち、コード候補生成手段３５ｃは、非依存コードのソースコードをそのまま利用する。
【００６１】
コード候補生成手段３５ｃは、移植対象のアプリケーションプログラムの移植前後のコンピューター言語が一致しないとＳ６３において判断すると、移植対象のアプリケーションプログラムのソースコードにおいて、移植対象のアプリケーションプログラムの移植前の非依存コードのソースコードを、移植対象のアプリケーションプログラムの移植前後のコンピューター言語に応じて機械的に変換したソースコードを、移植対象のアプリケーションプログラムの移植後の非依存コードのソースコードの候補とする（Ｓ６５）。例えば、コード候補生成手段３５ｃは、移植対象のアプリケーションプログラムの移植前のコンピューター言語がＣ＋＋であり、移植対象のアプリケーションプログラムの移植後のコンピューター言語がＪａｖａである場合、移植対象のアプリケーションプログラムの非依存コードのソースコードをＣ＋＋からＪａｖａに機械的に変換する。
【００６２】
コード候補生成手段３５ｃは、非依存コードが存在しないとＳ６２において判断するか、Ｓ６４またはＳ６５の処理を終了すると、図５に示す動作を終了する。
【００６３】
図４に示すように、移植後アプリ作成者は、Ｓ４１の処理の後、図５に示す動作によって生成されたソースコードにおいて、依存コードを、移植対象のアプリケーションプログラムの移植に適した内容に手動で書き換える（Ｓ４２）。なお、依存コードは、上述したように、記憶域０〜Ｎ１に記憶されている固有コード位置に基づいて判断することができる。
【００６４】
次いで、移植後アプリ作成者は、移植対象のアプリケーションプログラムのソースコードにおける全てのコンポーネント、すなわち、Ｓ６４においてコードがそのまま利用され、Ｓ６５においてコードが機械的に変換され、または、Ｓ４２においてコードが書き換えられたコンポーネントのコンパイルおよびリンクをアプリケーション移植支援装置３０に実行させる（Ｓ４３）。
【００６５】
次いで、移植後アプリ作成者は、Ｓ４３において生成されたアプリケーションプログラムに、移植による予期せぬ不具合など、何らかの不具合が存在するか否かを評価する（Ｓ４４）。
【００６６】
移植後アプリ作成者は、何らかの不具合が存在するとＳ４４において評価すると、移植対象のアプリケーションプログラムのソースコードを手動で書き換えて不具合を修正する（Ｓ４５）。
【００６７】
移植対象のアプリケーションプログラムの移植は、不具合が存在しないとＳ４４において評価されるか、Ｓ４５の作業が実行されると、完了する。
【００６８】
以上に説明したように、アプリケーション移植支援装置３０は、アプリケーションプログラムの移植時にソースコードが移植後アプリ作成者によって手動で書き換えられる必要がある固有コードおよび関連コードを特定する（Ｓ５４およびＳ５８）ので、ソースコードの構造にかかわらずアプリケーションプログラムの移植時の作業負担を抑えることができる。すなわち、アプリケーション移植支援装置３０は、ソースコードの構造にかかわらずアプリケーションプログラムの移植を効率化することができる。
【００６９】
特に、アプリケーション移植支援装置３０は、アプリケーションプログラムのソースコードにおいて、他の関連コードと共通する関連コードを特定する（Ｓ５８）ので、共通する関連コードを移植後アプリ作成者に一括して書き換えさせることが可能な場合があり、アプリケーションプログラムの移植時の作業負担を抑えることができる。
【００７０】
従来のアプリケーションプログラムの機能をラップする方法は、アプリケーションプログラムが動作させられるプラットフォームに最適化されたソースコードの構造とは異なるソースコードの構造でアプリケーションプログラムを開発しなければならない場合があるので、アプリケーションプログラムが動作させられるプラットフォームに最適化されたソースコードの構造とは異なるソースコードの構造でアプリケーションプログラムを開発しなければならないときには、アプリケーションプログラムのソースコードの量が必要以上に多くなり、オリジナルのアプリケーションプログラムの開発者の作業負担が大きい。しかしながら、アプリケーション移植支援装置３０は、アプリケーションプログラムのソースコードの構造に関係なく移植時の作業負担を抑えることができるので、機能をラップしたアプリケーションプログラムが開発される必要がなく、オリジナルのアプリケーションプログラムの開発時の作業負担も抑えることができる。
【００７１】
アプリケーション移植支援装置３０は、アプリケーションプログラムの移植前後のコンピューター言語が一致する場合に（Ｓ６３でＹＥＳ）、アプリケーションプログラムの移植前の非依存コードのソースコードを、アプリケーションプログラムの移植後の非依存コードのソースコードの候補とする（Ｓ６４）ので、移植後アプリ作成者の労力を抑えることができる。したがって、アプリケーション移植支援装置３０は、アプリケーションプログラムの移植を効率化することができる。
【００７２】
アプリケーション移植支援装置３０は、アプリケーションプログラムの移植前後のコンピューター言語が一致しない場合に（Ｓ６３でＮＯ）、アプリケーションプログラムの移植前の非依存コードのソースコードをアプリケーションプログラムの移植前後のコンピューター言語に応じて機械的に変換したソースコードを、アプリケーションプログラムの移植後の非依存コードのソースコードの候補とする（Ｓ６５）ので、移植後アプリ作成者の労力を抑えることができる。したがって、アプリケーション移植支援装置３０は、アプリケーションプログラムの移植を効率化することができる。
【００７３】
なお、アプリケーション移植支援装置３０は、固有コードの直前のコードの数と、固有コードの直後のコードの数とが同一であるセットが他のセットと共通する場合に（Ｓ５７でＹＥＳ）、これらのセットに含まれる固有コード以外のコードを関連コードとする（Ｓ５８）。しかしながら、アプリケーション移植支援装置３０は、固有コードの直前のコードと、固有コードの直後のコードとのそれぞれに対して、Ｓ５４〜Ｓ６１の処理と同様な処理を実行することによって、固有コードの直前の関連コードと、固有コードの直後の関連コードとを別々に特定しても良い。
【符号の説明】
【００７４】
１７ａ  プラットフォーム
２０  アプリケーションプログラム
２３ａ  依存コード
２４ａ  依存コード
３０  アプリケーション移植支援装置（コンピューター）
３４ａ  アプリケーション移植支援プログラム
３５ａ  固有コード特定手段
３５ｂ  関連コード特定手段
３５ｃ  コード候補生成手段
【図１】
2019046002.tif 000003
【図２】
2019046002.tif 000004
【図３】
2019046002.tif 000005
【図４】
2019046002.tif 000006
【図５】
2019046002.tif 000007