(57)【特許請求の範囲】
【請求項１】
コンピュータに実装されるオペレーティングシステムのシステムコールを前記コンピュータに呼び出させるための第１のサブプログラムと、
前記システムコールを呼び出しを含まず、かつ前記第１のサブプログラムの呼び出しを含むルーチンを前記コンピュータに実行させるための第２のサブプログラムと、
前記コンピュータに、前記第２のサブプログラムを呼び出す命令が記述されたリストに従って前記第２のサブプログラムを呼び出させるための第３のサブプログラムと
を備え、
前記第１のサブプログラムは、イベントハンドラにより操作を検知して操作情報を生成するラッパー関数を含み、
前記第１のサブプログラムは、前記ラッパー関数により前記コンピュータに前記操作情報を生成させ、
前記第３のサブプログラムは、前記コンピュータに前記操作情報に基づいて前記リストに従った処理を実行させる
プログラム。
【請求項２】
前記第１のサブプログラムと前記第２のサブプログラムとがそれぞれ別個のファイルとして構成される
請求項１に記載のプログラム。
【請求項３】
前記第１のサブプログラムが、第１の言語で記述されており、
前記第２のサブプログラムが、前記第１の言語と異なる第２の言語で記述されている
請求項１または請求項２に記載のプログラム。
【請求項４】
請求項１から請求項３の何れか１項に記載のプログラムを記憶する記憶装置と、
前記記憶装置が記憶する前記プログラムを実行するＣＰＵと
を備えるコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムおよびコンピュータに関する。
【背景技術】
【０００２】
近年、様々な機種の携帯端末が普及している。これらの携帯端末に業務用アプリケーションソフトウェアをインストールさせ、業務の遂行に用いることが提案されている。他方、画面サイズおよびオペレーティングシステムは、携帯端末の機種ごとに異なるため、開発者は、それぞれの携帯端末において同じ挙動となるようにアプリケーションソフトウェアを設計する必要がある。
特許文献１には、マルチプラットフォームおよびマルチ言語に対応したソフトウェア開発キットが開示されている。具体的には、特許文献１に記載のソフトウェア開発キットは、プラットフォームごとに設計された同一機能のネイティブライブラリと、各ネイティブライブラリに共通の、複数の言語のラッパークラスとを有する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−９７７４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載のソフトウェア開発キットは、プラットフォームごとにネイティブライブラリを用意する必要がある。特許文献１においては、各ネイティブライブラリが同一機能を有するものとされているが、各ネイティブライブラリは別個にコンパイルされることとなるために、同一機能を提供しつつも挙動に差が生じる可能性がある。そのため、アプリケーションソフトウェアを実行した場合に、プラットフォームごとに挙動の差が生じる可能性がある。
本発明の目的は、アプリケーションソフトウェアを実行した場合に、プラットフォームごとに挙動の差が生じなくさせるためのプログラムおよびコンピュータを提供することにある。
【課題を解決するための手段】
【０００５】
本発明の第１の態様によれば、プログラムは、コンピュータに実装されるオペレーティングシステムのシステムコールを前記コンピュータに呼び出させるための第１のサブプログラムと、前記システムコールを呼び出しを含まず、かつ前記第１のサブプログラムの呼び出しを含むルーチンを前記コンピュータに実行させるための第２のサブプログラムと、前記コンピュータに、前記第２のサブプログラムを呼び出す命令が記述されたリストに従って前記第２のサブプログラムを呼び出させるための第３のサブプログラムとを備え、前記第１のサブプログラムは、イベントハンドラにより操作を検知して操作情報を生成するラッパー関数を含み、前記第１のサブプログラムは、前記ラッパー関数により前記コンピュータに前記操作情報を生成させ、前記第３のサブプログラムは、前記コンピュータに前記操作情報に基づいて前記リストに従った処理を実行させる。
【０００６】
本発明の第２の態様によれば、第１の態様に係るプログラムは、前記第１のサブプログラムと前記第２のサブプログラムとがそれぞれ別個のファイルとして構成される。
【０００７】
本発明の第３の態様によれば、第１または第２の態様に係るプログラムは、前記第１のサブプログラムが、第１の言語で記述されており、前記第２のサブプログラムが、前記第１の言語と異なる第２の言語で記述されている。
【０００８】
本発明の第４の態様によれば、コンピュータは、第１から第３の何れかの態様に係るプログラムを記憶する記憶装置と、前記記憶装置が記憶する前記プログラムを実行するＣＰＵとを備える。
【発明の効果】
【０００９】
上記態様のうち少なくとも１つの態様によれば、プログラムは、システムコールを呼び出しを含まないルーチンをコンピュータに実行させる第２のサブプログラムをオペレーティングシステムごとに共通に持つ。そのため、第２のサブプログラムは、オペレーティングシステムごとに別個にコンパイルする必要がない。つまり、異なるオペレーティングシステムを実装する複数のコンピュータは、それぞれ同一の第２のサブプログラムを実行することができる。これにより、上記態様に係るプログラムは、異なるオペレーティングシステムを実装するコンピュータにアプリケーションプログラムを実行させた場合に、同一の挙動を実現させることができる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態による開発システムの構成を示す概略ブロック図である。
【図２】一実施形態に係るアプリケーションソフトウェアの実行処理を示すフローチャートである。
【図３】少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施形態について詳しく説明する。
図１は、一実施形態による開発システムの構成を示す概略ブロック図である。
開発システム１は、マルチプラットフォームのアプリケーションソフトウェアを開発するための開発環境である。開発システム１は、開発装置１００と複数の端末装置２００とを備える。なお、本実施形態において開発装置１００と端末装置２００とは、それぞれ異なる種類のオペレーティングシステムを実装する。具体的には、本実施形態において開発装置１００は、第１のオペレーティングシステムを実装し、端末装置２００は、第２のオペレーティングシステムを実装する。
【００１２】
開発装置１００は、アプリケーションソフトウェアを生成する装置である。開発装置１００は、設計部１０１、アプリＤＢ１０２、ベースプログラム記憶部１０３、実行部１０４、通信部１０５を備える。
【００１３】
設計部１０１は、利用者によるアプリケーションソフトウェアの設計情報の入力を受け付ける。設計情報は、アプリケーションソフトウェアの実行画面に表示させるパーツの表示態様を示すパーツ情報およびパーツに対するアクションに応じた処理の内容を示す処理情報を含む。パーツの表示態様の例としては、パーツの種別（ボタン、テキストボックス、ラベルなど）、パーツの大きさ、パーツの位置、およびパーツに対する操作があった場合の遷移先のページが挙げられる。処理情報は、予め定められた複数のコマンド（ルーチン）の中から、任意のものを組み合わせたものである。
【００１４】
アプリＤＢ１０２は、設計部１０１によって設計されたアプリケーションソフトウェアを記憶する。アプリケーションソフトウェアの実体は、バイナリ形式に変換されたパーツ情報のリストおよび処理情報のリストによって構成される。
【００１５】
ベースプログラム記憶部１０３は、アプリＤＢ１０２が記憶するアプリケーションソフトウェアを実行するためのベースプログラムを記憶する。ベースプログラムは、サブプログラムとして第１のシステムコールライブラリＰ１ａ、ロジックライブラリＰ２、および解釈プログラムＰ３を備える。第１のシステムコールライブラリＰ１ａは、第１のオペレーティングシステムに対するシステムコールのラッパー関数からなるライブラリである。つまり、第１のシステムコールライブラリＰ１ａは、第１のオペレーティングシステムのシステムコールをコンピュータに呼び出させるための第１のサブプログラムの一例である。第１のシステムコールライブラリＰ１ａは、第１のオペレーティングシステム用のプログラム開発言語として認められた第１の言語によって記述されるプログラム、または第１の言語により記述されたソースコードのコンパイルにより生成される実行ファイルである。ロジックライブラリＰ２は、予め定められた複数のコマンドを実装する関数からなるライブラリである。なお、ロジックライブラリＰ２に含まれる関数は、システムコール呼び出し手続を含まず、代わりに第１のシステムコールライブラリＰ１ａに含まれるラッパー関数の呼び出し手続を含み得る。ロジックライブラリＰ２は、第２のサブプログラムの一例である。ロジックライブラリＰ２は、Ｃ言語またはＣ＋＋言語により記述されたソースコードのコンパイルにより生成される実行ファイルである。つまり、ロジックライブラリＰ２は、機械語で記述される。解釈プログラムＰ３は、アプリＤＢ１０２が記憶するアプリケーションソフトウェアを読み出し、アプリケーションソフトウェアを構成する処理情報のリストに従って、ロジックライブラリＰ２に含まれる関数を呼び出させるためのプログラムである。解釈プログラムＰ３は、第３のサブプログラムの一例である。解釈プログラムＰ３は、Ｃ言語またはＣ＋＋言語により記述されたソースコードのコンパイルにより生成される実行ファイルである。つまり、解釈プログラムＰ３は、機械語で記述される。
【００１６】
実行部１０４は、ベースプログラム記憶部１０３が記憶するベースプログラムを起動し、アプリケーションソフトウェアを実行する。具体的には、実行部１０４は、解釈プログラムＰ３の実行により、アプリＤＢ１０２からアプリケーションソフトウェアを読み出し、処理情報のリストに記載されているコマンドが示す関数を特定する。また実行部１０４は、解釈プログラムＰ３の実行により特定した関数をロジックライブラリＰ２から呼び出す。また実行部１０４は、ロジックライブラリＰ２に含まれる関数の実行により、第１のシステムコールライブラリＰ１ａに含まれるラッパ関数を呼び出す。そして実行部１０４は、ラッパ関数の呼び出しにより、システムコールを呼び出す。
通信部１０５は、アプリＤＢ１０２に記録されたアプリケーションソフトウェアを端末装置２００に送信する。
【００１７】
端末装置２００は、開発装置１００によって開発されたアプリケーションソフトウェアを実行する装置である。端末装置２００は、通信部２０１、アプリＤＢ２０２、ベースプログラム記憶部２０３、実行部２０４を備える。
【００１８】
通信部２０１は、開発装置１００からアプリケーションソフトウェアを受信する。
アプリＤＢ２０２は、通信部２０１が受信したアプリケーションソフトウェアを記憶する。つまり、アプリＤＢ２０２は、バイナリ形式に変換されたパーツ情報のリストおよび処理情報のリストを記憶する。
ベースプログラム記憶部２０３は、アプリＤＢ２０２が記憶するアプリケーションソフトウェアを実行するためのベースプログラムを記憶する。ベースプログラムは、サブプログラムとして、第２のシステムコールライブラリＰ１ｂ、ロジックライブラリＰ２、および解釈プログラムＰ３を備える。第２のシステムコールライブラリＰ１ｂは、第２のオペレーティングシステムに対するシステムコールのラッパー関数からなるライブラリである。つまり、第２のシステムコールライブラリＰ１ｂは、第２のオペレーティングシステムのシステムコールをコンピュータに呼び出させるための第１のサブプログラムの一例である。第２のシステムコールライブラリＰ１ｂは、第２のオペレーティングシステム用のプログラム開発言語として認められた第２の言語によって記述されるプログラム、または第２の言語により記述されたソースコードのコンパイルにより生成される実行ファイルである。
ベースプログラム記憶部２０３が記憶するロジックライブラリＰ２および解釈プログラムＰ３は、それぞれ開発装置１００のベースプログラム記憶部１０３が記憶するロジックライブラリＰ２および解釈プログラムＰ３と同じものである。
実行部２０４は、ベースプログラム記憶部２０３が記憶するベースプログラムを起動し、アプリケーションソフトウェアを実行する。
【００１９】
なお、第１のシステムコールライブラリＰ１ａおよび第２のシステムコールライブラリＰ１ｂは、それぞれ同一の機能を有し、かつ同一のシグネチャで定義されたラッパー関数を格納する。例えば、第１のシステムコールライブラリＰ１ａおよび第２のシステムコールライブラリＰ１ｂは、いずれもユーザによる座標の指定を検出する指定検出関数を格納する。第１のシステムコールライブラリＰ１ａに格納された指定検出関数は、実装としてマウスの左クリックイベントおよびそのときにカーソルが示す座標を返す。第２のシステムコールライブラリＰ１ｂに格納された指定検出関数は、実装としてタッチパネルのタッチイベントおよびそのときにタッチされた座標を返す。これにより、どのようなオペレーティングシステムを実装するコンピュータにおいても、指定検出関数を示すシグネチャを呼び出す同一のロジックライブラリＰ２を実行することで、コンピュータにユーザによる座標の指定を検出させることができる。以下、第１のシステムコールライブラリＰ１ａおよび第２のシステムコールライブラリＰ１ｂを総称する場合、単にシステムコールライブラリＰ１という。
【００２０】
ここで、本実施形態に係る開発装置によるアプリケーションソフトウェアの実行処理について説明する。なお、ここでは開発装置１００のアプリケーションソフトウェアの実行処理について説明するが、端末装置２００のアプリケーションソフトウェアの実行処理も同様である。
図２は、一実施形態に係るアプリケーションソフトウェアの実行処理を示すフローチャートである。
実行部１０４は、ベースプログラム記憶部１０３が記憶するベースプログラムを起動すると、ベースプログラム記憶部１０３から解釈プログラムＰ３を読み出して実行する（ステップＳ１）。次に、実行部１０４は、解釈プログラムＰ３に従い、アプリＤＢ１０２からアプリケーションソフトウェアを読み出す（ステップＳ２）。実行部１０４は、読み出したアプリケーションソフトウェアに含まれるパーツ情報に基づいてアプリケーションソフトウェアの実行画面を生成する（ステップＳ３）。
【００２１】
開発者が開発装置１００に何かしらの操作を行うと、実行部１０４は、第１のシステムコールライブラリＰ１ａのイベントハンドラに相当するラッパー関数に従って、開発者の操作を検知し、オペレーティングシステムで共通のシグネチャにより操作情報を生成する（ステップＳ４）。例えば、操作情報には、操作の種別および操作のあった座標が含まれる。次に、実行部１０４は、解釈プログラムＰ３に従って、操作情報を読み取り、操作されたパーツを特定する（ステップＳ５）。具体的には、実行部１０４は、アプリケーションソフトウェアを構成するパーツ情報のリストから、シグネチャが示す座標に存在するパーツを示すパーツ情報を特定する。次に、実行部１０４は、解釈プログラムＰ３に従って、特定したパーツ情報に関連付けられた処理を示す処理情報を特定する（ステップＳ６）。具体的には、実行部１０４は、アプリケーションソフトウェアを構成する処理情報のリストから、特定したパーツに関連付けられた処理情報を特定する。
【００２２】
次に、実行部１０４は、読み出した処理情報に含まれるコマンドを記載順に選択し、すべてのコマンドについて、以下のステップＳ８からステップＳ１０の処理を実行する（ステップＳ７）。
まず実行部１０４は、解釈プログラムＰ３に従って、ロジックライブラリＰ２から選択されたコマンドに対応する関数を呼び出す（ステップＳ８）。実行部１０４は、呼び出されたロジックライブラリＰ２の関数に従って、第１のシステムコールライブラリＰ１ａのラッパー関数を呼び出す（ステップＳ９）。実行部１０４は、呼び出された第１のシステムコールライブラリＰ１ａの関数に従ってシステムコールを呼び出す（ステップＳ１０）。
実行部１０４は、処理情報に含まれるすべてのコマンドについてステップＳ８からステップＳ１０の処理を実行すると、ステップＳ４にもどり、開発者の操作を待機する。
【００２３】
このように、本実施形態によれば、開発装置１００および端末装置２００は、オペレーティングシステムごとに異なるシステムコールライブラリＰ１、ならびにオペレーティングシステムによらず共通のロジックライブラリＰ２および解釈プログラムＰ３を有するプログラムを実行する。これにより、開発装置１００および複数の端末装置２００は、アプリケーションソフトウェアの実行により、実装するオペレーティングシステムによらず同一の挙動をとることとなる。
【００２４】
また、本実施形態によれば、アプリケーションソフトウェアの実行によりなされる処理は、ロジックライブラリＰ２が実装するメソッドの呼び出しの組み合わせを示す処理情報のリストによって定義される。これにより、同一のアプリケーションソフトウェアを、異なるオペレーティングシステムを実装する端末装置２００に実行させることができる。また、端末装置２００のオペレーティングシステムの変更が生じた場合にも、システムコールライブラリＰ１の更新により、端末装置２００は、アプリケーションソフトウェアを改修することなくそのアプリケーションソフトウェアを実行することができる。
【００２５】
また、本実施形態によれば、開発装置１００および端末装置２００は、システムコールライブラリＰ１とロジックライブラリＰ２とを別個のファイルとして記憶する。これにより、開発者は、端末装置２００のオペレーティングシステムの更新が生じた場合に、システムコールライブラリＰ１のみを改修することで、ロジックライブラリＰ２を改修することなく、新たなオペレーティングシステムにおけるアプリケーションプログラムの実行環境を生成することができる。
【００２６】
また、本実施形態によれば、システムコールライブラリＰ１とロジックライブラリＰ２とがそれぞれ異なる言語で記述されている。具体的には、システムコールライブラリＰ１は、オペレーティングシステムでプログラム開発言語として認められた言語を用いて生成されたものである。またロジックライブラリＰ２は、Ｃ言語またはＣ＋＋言語のコンパイルにより生成されたものである。これにより、ベースプログラム記憶部１０３が記憶するプログラムは、プログラム開発言語として認められた言語を用いて生成されたプログラムとして振る舞いつつ、Ｃ系言語で生成されたプログラムの特徴である高速な処理を実現することができる。また、Ｃ言語およびＣ＋＋言語は、アセンブラとの親和性が高いため、異なるオペレーティングシステムを搭載するコンピュータに同一の挙動をとらせることができる。
【００２７】
また、本実施形態によれば、開発装置１００が設計部１０１に加え、実行部１０４およびベースプログラム記憶部１０３を備える。つまり、開発装置１００は、端末装置２００と同一のアプリケーションソフトウェア実行環境を備える。これにより、開発者は、実機と同じ環境で、アプリケーションソフトウェアのテストをすることができる。
【００２８】
以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。
例えば、上述した実施形態に係る開発装置１００が、実行部１０４およびベースプログラム記憶部１０３を備えるが、これに限られない。例えば、他の実施形態に係る開発装置１００は、テスト環境を備えていなくてもよい。
【００２９】
また、上述した実施形態に係る複数の端末装置２００は、いずれも第２のオペレーションシステムを実装するが、これに限られない。例えば、他の実施形態に係る端末装置２００は、それぞれ異なるオペレーションシステムを実装するものであってもよい。
【００３０】
また、上述した実施形態に係る複数の端末装置２００は、開発装置１００と異なるオペレーションシステムを実装するが、これに限られない。例えば、他の実施形態においては、一部の端末装置２００が、開発装置１００と同一のオペレーションシステムを実装するものであってもよい。
【００３１】
また、上述した実施形態によれば、システムコールライブラリＰ１とロジックライブラリＰ２と解釈プログラムＰ３とが別個のファイルであるが、これに限られない。例えば、他の実施形態においては、ロジックライブラリＰ２と解釈プログラムＰ３とが同一の実行ファイルに実装されてもよい。
【００３２】
まあ、上述した実施形態によれば、ロジックライブラリＰ２は、Ｃ言語またはＣ＋＋言語のコンパイルにより生成されたものであるが、これに限られない。例えば、他の実施形態においては、他のコンパイラ言語のコンパイルにより生成されたものであってもよい。また他の実施形態においては、他のインタープリタ言語により生成されたものであってもよい。
【００３３】
また、上述した実施形態によれば、開発装置１００は、端末装置２００との通信によりアプリケーションソフトウェアの受け渡しを行うが、これに限られない。例えば、他の実施形態に係る開発装置１００は、所定のサーバ装置にアプリケーションソフトウェアを記録し、端末装置２００がそのサーバ装置からアプリケーションソフトウェアをダウンロードするものであってもよい。また、他の実施形態に係る開発装置１００は、アプリケーションソフトウェアを取り外し可能な記録媒体に記録し、その記録媒体を端末装置２００に接続することで、アプリケーションソフトウェアを受け渡すものであってもよい。
【００３４】
図３は、少なくとも１つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
コンピュータ９は、ＣＰＵ９０１、主記憶装置９０２、補助記憶装置９０３、インタフェース９０４を備える。
上述の開発装置１００および端末装置２００は、コンピュータ９に実装される。そして、上述した処理部は、プログラムの形式で補助記憶装置９０３に記憶されている。また、上述したベースプログラム（システムコールライブラリＰ１、ロジックライブラリＰ２および解釈プログラムＰ３）、ならびにアプリケーションソフトウェアも、補助記憶装置９０３に記憶される。ＣＰＵ９０１は、プログラムを補助記憶装置９０３から読み出して主記憶装置９０２に展開し、当該プログラムに従って上記処理を実行する。
【００３５】
なお、少なくとも１つの実施形態において、補助記憶装置９０３は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インタフェース９０４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ９に配信される場合、配信を受けたコンピュータ９が当該プログラムを主記憶装置９０２に展開し、上記処理を実行しても良い。
【００３６】
また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置９０３に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００３７】
１  開発システム
１００  開発装置
１０３  ベースプログラム記憶部
２００  端末装置
２０３  ベースプログラム記憶部
Ｐ１ａ  第１のシステムコールライブラリ
Ｐ１ｂ  第２のシステムコールライブラリ
Ｐ２  ロジックライブラリ
Ｐ３  メインプログラム
【図１】
0006639238.tif 000002
【図２】
0006639238.tif 000003
【図３】
0006639238.tif 000004