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