(57)【特許請求の範囲】
【請求項１】
第１及び第２のプラットフォームのそれぞれに対応し互いに同一機能の第１及び第２のネイティブライブラリと、
該第１のネイティブライブラリと該第２のネイティブライブラリとで共通に用いられ、
第１の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第１ラッパークラスと、
該第１のネイティブライブラリと該第２のネイティブライブラリとで共通に用いられ、第２の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第２ラッパークラスと、
を有し、該第１及び第２のネイティブライブラリ並びに該第１ラッパークラス及び該第２ラッパークラスを中間言語用拡張ライブラリとして備えていることを特徴とするコンピューター実行可能なプログラム。
【請求項２】
該第１の中間言語はＣ＃の中間言語であり、該第２の中間言語はＪａｖａ（登録商標）の中間言語であることを特徴とする請求項１に記載のコンピューター実行可能なプログラム。
【請求項３】
画像形成装置のＷｅｂサービスと通信するＷｅｂサービスインターフェイスをさらに備えていることを特徴とする請求項１又は２に記載のコンピューター実行可能なプログラム。
【請求項４】
携帯端末のユーザアプリケーション開発用であることを特徴とする請求項１乃至３のいずれか１つに記載のコンピューター実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプラットフォーム及びマルチ言語に対応したソフトウェア開発キットに関する。
【背景技術】
【０００２】
セキュリティを確保するため、企業内に私用コンピュータを持ち込むことは一般に禁止されている。
【０００３】
しかしながら、スマートフォンの普及に伴い、一定条件の下でこの禁止を解除することにより、ビジネス上の処理の効率化が図られようとしている。
【０００４】
ｉＰｈｏｎｅ（登録商標）、Ａｎｄｏｒｏｉｄ（登録商標）及びＷｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）などのスマートフォンは、それぞれ異なるプラットフォームを用いており、また、各プラットフォームについて複数の言語のいずれかでプログラミング可能であるので、マルチプラットフォーム且つマルチ言語に対応したプログラム開発キットが必要となり、その構成が複雑になる。
【０００５】
一方、スマートフォンはデスクトップコンピュータに比べ、ＣＰＵ能力やメモリ容量の点で劣るものの、データサイズが比較的大きい画像を処理する必要があるので、高速処理が要求される。この要求に応えるため、プログラム開発キットにネイティブライブラリを備える必要があり、プログラム開発キットの構成がさらに複雑になる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−３６６３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、このような問題点に鑑み、ネイティブライブラリを用い且つマルチプラットフォーム及びマルチ言語に対応した、構成が簡単なソフトウェア開発キットを提供することにある。
【課題を解決するための手段】
【０００８】
本発明によるコンピューター実行可能なプログラムの第１態様では、
第１及び第２のプラットフォームのそれぞれに対応し互いに同一機能の第１及び第２のネイティブライブラリと、
該第１のネイティブライブラリと該第２のネイティブライブラリとで共通に用いられ、第１の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第１ラッパークラスと、
該第１のネイティブライブラリと該第２のネイティブライブラリとで共通に用いられ、
第２の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第２ラッパークラスとを有し、該第１及び第２のネイティブライブラリ並びに該第１ラッパークラス及び該第２ラッパークラスを中間言語用拡張ライブラリとして備えている。
【発明の効果】
【０００９】
上記第１態様の構成によれば、例えばＣ／Ｃ＋＋言語で、プラットフォーム毎に、互いに同一機能のネイティブライブラリを作成しておき、各ネイティブライブラリに共通のマルチ言語対応ラッパークラスを作成することにより、高速処理が可能なネイティブライブラリを用いつつマルチプラットフォーム対応且つマルチ言語対応のソフトウェア開発キットを容易に作成することができるという効果を奏し、特に、各種スマートフォンアプリケーション用コンピューター実行可能なプログラムの構成の簡単化に寄与するところが大きい。
【００１０】
本発明の他の目的、特徴的な構成及び効果は、以下の説明を特許請求の範囲及び図面の記載と関係づけて読むことにより明らかになる。 
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例１に係る、複数のクラウドサービスを利用する画像形成システムの概略構成図である。
【図２】図１中の画像形成装置の階層構造を示すブロック図である。
【図３】図１中のスマートフォンの階層構造を示すブロック図である。
【図４】図１中のＰＣのハードウェア構成を示す概略ブロック図である。
【図５】該ＰＣをソフトウェア開発装置として利用する場合の概略機能ブロック図である。
【図６】（Ａ）及び（Ｂ）はそれぞれ第１及び第２のプラットフォーム用の制御モジュール及びその下位側のラッパーＡＰＩの概略ブロック図である。
【図７】（Ａ）は第１のプラットフォーム用の制御モジュール作成手順を示す概略フローチャート、（Ｂ）は（Ａ）中のステップＳ０の説明図である。
【図８】（Ａ）は第２のプラットフォーム用の制御モジュール作成手順を示す概略フローチャート、（Ｂ）は（Ａ）の処理の説明図である。
【実施例１】
【００１２】
図１は、本発明の実施例１に係る、複数のクラウドサービスを利用する画像形成システムの概略構成図である。
【００１３】
このシステムでは、イントラネット１０に、画像形成装置１１と、ユーザ端末としてのパーソナルコンピュータ（ＰＣ）１２と、無線ＬＡＮのアクセスポイント１３とが結合され、スマートフォン１４がアクセスポイント１３を介してイントラネット１０に結合される。このイントラネット１０がルータ（不図示）を介してインターネット２０に結合される。インターネット２０には、複数のクラウド２１〜２３が結合されている。また、インターネット２０に基地局２４が結合され、スマートフォン１４及び２５から基地局２４を介しイントラネット１０に結合される。
【００１４】
複数のクラウド２１〜２３はそれぞれ、クラウドサービス３１〜３３を各種クライアント端末に対し提供可能となっている。
【００１５】
ユーザは、ＰＣ１２、スマートフォン１４及び２５などに拡張アプリケーションをインストールすることにより、これらからＷｅｂサービスとして、画像形成装置１１のコピー、プリント及びファクシミリなどの基本的なサービスやクラウドサービス３１〜３３並びにこれらサービスを組み合わせたものを実行したり、画像形成装置１１の設定情報を取得したり、この設定を変更したりすることが可能となる。
【００１６】
図１では、簡単化の為に、複数のＰＣ端末を１つのＰＣ１２で代表し、アクセスポイント１３に対する複数の携帯端末を１つのスマートフォン１４で代表し、基地局２４に対する複数の携帯端末を１つのスマートフォン２５で代表している。
【００１７】
図２は、画像形成装置１１の階層構造を示すブロック図である。
【００１８】
画像形成装置１１は、ハードウェアとしてスキャナ４０、プリンタ４１、ＦＡＸ４２、操作パネル４３及びネットワークインターフェイス（ＮＩＣ）４４を備え、プラットフォーム５０を介してそれぞれの基本的な入出力制御を行うことが可能となっている。
【００１９】
プラットフォーム５０は、前記制御を行ったり、電源を管理したり、ＴＣＰ／ＩＰなどのプロトコルで通信したりするオペレーティングシステム（ＯＳ）と、ＯＳの下層の各種デバイスドライバと、ＯＳ上のＪａｖａ（登録商標）ＶＭやＣＬＲ（Common Language Runtime）などの仮想マシン（クラスライブラリ）と、標準ライブラリとを備えている。
【００２０】
制御モジュール５１は、拡張クラスライブラリであって、プラットフォーム５０のＡＰＩ５２を介してこれらハードウェアのそれぞれを機能単位で制御可能となっている。基本アプリケーション５３は、制御モジュール５１のＡＰＩ５４を介し、ハードウェア４０〜４４をコピー、プリント及びファクシミリなどのような論理的な機能単位で制御可能となっている。
【００２１】
ハードウェア４０〜４４に対する設定情報は、操作パネル４３の操作に応答して、制御モジュール５１により設定情報データベース５５に格納され、また、格納された設定情報は、操作パネル４３の操作に応答して制御モジュール５１により、操作パネル４３に表示される。
【００２２】
システム管理部５６は、ＡＰＩ５２又はＡＰＩ５４を介して、ユーザに対する認証、認可の処理を行ったり、エラー管理を行ったり、省電力管理を行ったりする。
【００２３】
ＰＣ１２又はスマートフォン１４若しくは２５から画像形成装置１１へのサービス要求は、ＮＩＣ４４及びプラットフォーム５０を介してＷｅｂサービスプロバイダ５７に伝えられ、Ｗｅｂサービスプロバイダ５７はその要求に応じて、ＡＰＩ５８を介し基本アプリケーション５３を動作させ、ＡＰＩ５４を介し設定情報データベース５５から設定情報を読み出し又は設定情報データベース５５の設定を変更し、それらの結果を返信する。
【００２４】
図３は、スマートフォン１４の階層構造を示すブロック図である。
【００２５】
スマートフォン１４は、ハードウェアとしてカメラ６０、傾きセンサ６１、ブルーツース通信部６２、操作パネル６３及び通信アダプタ６４などを備え、通信アダプタ６４にアンテナ６５が結合され、プラットフォーム７０を介してそれぞれの基本的な入出力制御を行うことが可能となっている。
【００２６】
プラットフォーム７０は、前記制御を行ったり、電源を管理したり、ＴＣＰ／ＩＰなどのプロトコルで通信したりするＯＳと、ＯＳの下層の各種デバイスドライバと、ＯＳ上の仮想マシンと、標準ライブラリとを備えている。
【００２７】
制御モジュール７１は、拡張クラスライブラリであって、プラットフォーム７０のＡＰＩ７２を介してこれらハードウェアのそれぞれを機能単位で制御可能となっている。基本アプリケーション７３は、ブラウザ、動画プレーヤ及びアドレス帳などを含み、制御モジュール７１のＡＰＩ７４を介し、ハードウェア６０〜６４を論理的な機能単位で制御可能となっている。
【００２８】
ハードウェア６０〜６４に対する設定情報は、操作パネル６３の操作に応答して、制御モジュール７１により設定情報データベース７５に格納され、また、格納された設定情報は、操作パネル６３の操作に応答して制御モジュール７１により、操作パネル６３に表示される。
【００２９】
システム管理部７６は、ＡＰＩ７２又は７４を介して、ユーザに対する認証、認可の処理を行ったり、エラー管理を行ったり、省電力管理を行ったりする。
【００３０】
Ｗｅｂクライアント７７は、操作パネル６３の操作に応答してＡＰＩ７２を介しそのＵＲＬにＨＴＴＰプロトコルで要求を送信し、返信された内容を操作パネル６３に表示させる。
【００３１】
拡張アプリケーション（ユーザアプリケーション）７８は、基本アプリケーション７３のＡＰＩ７９を介して、単一又は複数の機能の組み合わせを実行させ、ＡＰＩ７４を介し設定情報データベース７５の設定情報を読み取って操作パネル６３に表示させ又は設定情報データベース７５の設定情報を変更させる。
【００３２】
Ｗｅｂサービスインターフェイス７Ａは、Ｗｅｂサービスを内部メソッドのように呼び出すためのサービスプロキシと、送信時に該メソッドの呼び出しをＸＭＬに変換するシリアライザと、受信時にＸＭＬを該メソッドの戻り値に変換するデシリアライザとを備えている。
【００３３】
上記拡張アプリケーション７８はまた、Ｗｅｂサービスインターフェイス７Ａ及びＷｅｂクライアント７７を介し画像形成装置１１のＷｅｂサービスプロバイダ５７又はクラウド２１〜２３のサービス３１〜３３に対し要求を行い、その結果を、Ｗｅｂクライアント７７及びＷｅｂサービスインターフェイス７Ａを介して受信し、その内容を操作パネル６３に表示させる。
【００３４】
図４は、ＰＣ１２のハードウェア構成を示す概略ブロック図である。図５は、ＰＣ１２をソフトウェア開発装置として利用する場合の概略機能ブロック図である。
【００３５】
ホストコンピュータＰＣ１２では、ＣＰＵ９１がインターフェイス９２を介してメモリ９３、補助記憶装置９４、会話型入出力装置９５及びネットワークインターフェイス９６に結合されている。図４では、簡単化の為に、複数種のインターフェイスを１つのブロック９２で表している。
【００３６】
メモリインターフェイス９２は例えば、ＢＩＯＳが格納されたフラッシュメモリと、主記憶装置として用いられるＤＲＡＭとを備えている。補助記憶装置９４には、ＯＳ、各種デバイスドライバ、ライブラリ及び仮想マシンがプラットフォーム（ＰＦ）として格納され、さらにソフトウェア開発キット（ＳＤＫ）が格納されている。ネットワークインターフェイス９６は、イントラネット１０に結合されている。
【００３７】
このソフトウェア開発装置は、図３中の拡張アプリケーション７８の開発を支援するものであり、ネイティブライブラリを備えてスマートフォンでの処理を高速化可能にするとともに、複数のプラットフォームのうちの任意の１つを搭載したスマートフォンの拡張アプリケーション７８を開発可能にし、しかも、マルチ言語対応にしてプログラミング言語を選択可能にしている。
【００３８】
図５中、構成要素７２Ａ、１７１、１７３〜１７６及び１７９はそれぞれ図３中の構成要素７２、７１、７３〜７６及び７９に対応している。これら構成要素７２Ａ、１７１、１７３〜１７６及び１７９は、図３中の対応する構成要素のうち、拡張アプリケーション７８を開発するのに必要な部分のみを備えていればよい。ラッパーＡＰＩ１７２は、ＡＰＩ１１０をラッパーすることによりＡＰＩ７２と同じに見せかけるものである。
【００３９】
ＰＣ１２は、通常のＳＤＫと同様に、テキストエディタ１００、デザイナ１０１、デバッガ１０２及びビルダ１０３と、ユーザの操作に応答してこれらのいずれかを呼び出す処理やプロジェクト生成処理等を行うアプリ開発統合管理部１０４とを備えている。
【００４０】
デザイナ１０１は、操作パネル６３の画面設計のアプリケーション開発を支援するためのものであって、対話的ビジュアル設計に基づいてプログラムを自動生成するものである。
【００４１】
ビルダ１０３は、複数の言語、例えばＣ＃、Ｃ＋＋、Ｃ及びＪａｖｅ（登録商標）のそれぞれに対応したコンパイラを備えている。
【００４２】
ここで、図５の制御モジュール１７１は、アプリケーションレベルの通信や画像などを高速処理するクラスライブラリを備えており、これは、図６（Ａ）に示すように、Ｃ又はＣ＋＋のソースコードをコンパイルしたネイティブライブラリ１２０と、マルチ言語対応にするためＣ＃及びＪａｖａ（登録商標）のラッパークラスのソースコードをコンパイルしたラッパーＡＰＩ１２１及び１２２とを備えている。
【００４３】
Ｃ＃用ラッパーＡＰＩ１２１は、拡張アプリケーション７８の中間コードの一部が、ネイティブライブラリ１２０内のＣ関数又はＣ＋＋クラスのメソッド（ネイティブサブルーチン）を、Ｃ＃のクラスのインスタンスのメソッドとして呼び出せるようにするためのクラスライブラリであり、Ｃ＃の該メソッドのシグネチャをネイティブライブラリ１２０内のＣ関数又はＣ＋＋クラスのメソッドのシグネチャに変換する。ラッパーＡＰＩ１２１はまた、Ｃ＃の方式でメモリ管理を行えるようにするメソッドも含んでいる。
【００４４】
Ｊａｖａ（登録商標）用ラッパーＡＰＩ１２２についても、Ｃ＃用ラッパーＡＰＩ１２１と同様である。
【００４５】
ネイティブライブラリ１２０は、特定のプラットフォーム７０（ＰＬ１）のＯＳ又は／及びライブラリ、例えば．ＮＥＴフレームワークの標準ライブラリを用いて作成されている。ラッパーＡＰＩ１７２は、ネイティブライブラリ１２０から見てプラットフォーム７０をＰＬ１と見なせるようにするためのものである。
【００４６】
ＰＣ１２はまた、図６（Ｂ）に示すような制御モジュール１７１Ａも備えている。
【００４７】
制御モジュール１７１Ａは、ネイティブライブラリ１２０と同一機能のネイティブライブラリ１２０Ａと、Ｃ＃用ラッパーＡＰＩ１２１及びＪａｖａ（登録商標）用ラッパーＡＰＩ１２２とを備え、これらラッパーＡＰＩ１２１及びＡＰＩ１２２は制御モジュール１７１のものと共用である。
【００４８】
ネイティブライブラリ１２０Ａは、他のプラットフォーム７０（ＰＬ２）のＯＳ又は／及びライブラリ、例えばＬｉｎａｘ（登録商標）のクラスライブラリを用いて作成されている。ラッパーＡＰＩ１７２Ａは、ネイティブライブラリ１２０Ａから見てプラットフォーム７０をＰＬ２と見なせるようにするためのものである。
【００４９】
上記共用を可能にするため、ネイティブライブラリ１２０Ａ内の各メソッドのシグネチャはネイティブライブラリ１２０のそれと同一になっている。すなわち、ネイティブライブラリ１２０と１２０ＡのＣ又はＣ＋＋ソースコードでの相違部分は、プラットフォームＰＬ１とＰＬ２のいずれのＡＰＩを使用しているか及びその周辺部分であり、他は互いに同一である。
【００５０】
図７（Ａ）は、制御モジュール１７１の作成手順を示す概略フローチャートである。
【００５１】
（Ｓ０）プラットフォームＰＬ１用のネイティブライブラリ１２０を作成する。このネイティブライブラリ１２０は、図７（Ｂ）に示すようにラッパーＡＰＩ１７２（クラスライブラリ）内の例えばＡＰＩ１〜ＡＰＩ３を用いている。
【００５２】
（Ｓ１）各言語用のラッパークラスライブラリ、すなわちラッパーＡＰＩ１２１及びラッパーＡＰＩ１２２を作成する。
【００５３】
図８（Ａ）は、制御モジュール１７１Ａの作成手順を示す概略フローチャートである。
【００５４】
（Ｓ１０）プラットフォームＰＬ２用のネイティブライブラリ１２０Ａを作成する。このネイティブライブラリ１２０Ａは、図８（Ｂ）に示すように、ラッパーＡＰＩ１７２Ａ内の例えばＡＰＩ１Ａ〜ＡＰＩ３Ａを用いている。
【００５５】
ラッパーＡＰＩ１２１及びＡＰＩ１２２は既に作成され、制御モジュール１７１のそれらと共用であるので、さらに作成する必要がない。
【００５６】
図５に戻って、ＰＣ１２はさらに、スマートフォン１４のハードウェアに対応したシミュレータ１０５を備えている。入力装置９５０及び表示装置９５１は図４中の会話型入出力装置９５を構成している。図５中、拡張アプリケーション７８及びＷｅｂサービスインターフェイス７Ａ中のサービスプロキシ以外は、開発環境として予め備えられている。
【００５７】
本実施例１によれば、例えばＣ／Ｃ＋＋言語で、プラットフォーム毎に、互いに同一機能のネイティブライブラリ１２０、１２０Ａを作成しておき、各ネイティブライブラリに共通のマルチ言語対応ラッパークラス１２１、１２２を作成することにより、高速処理が可能なネイティブライブラリを用いつつマルチプラットフォーム対応且つマルチ言語対応のソフトウェア開発キットを容易に作成することができるという効果を奏し、特に、各種スマートフォンアプリケーション用ソフトウェア開発キットの構成の簡単化に寄与するところが大きい。
【００５８】
以上において、本発明の好適な実施例を説明したが、本発明には他にも種々の変形例が含まれ、上記各構成要素の機能を実現する他の構成を用いたもの、当業者であればこれらの構成又は機能から想到するであろう他の構成も、本発明に含まれる。
【００５９】
例えば、ラッパーＡＰＩ１２０、１２２は、ＡＰＩ１７４の一部であってもよい。換言すれば、ラッパーＡＰＩ１２０、１２２をＡＰＩ１７４の一部として用いる構成であってもよい。
【００６０】
また、中間言語にコンパイルされるオブジェクト指向言語は、上記以外のものであってもよい。ネイティブライブラリはアセンブリ言語を一部又は全部用いて作成したものであってもよい。
【符号の説明】
【００６１】
１０  イントラネット
１１  画像形成装置
１２  ＰＣ
１３  アクセスポイント
１４、２５  スマートフォン
２０  インターネット
２１〜２３  クラウド
２４  基地局
３１〜３３  クラウドサービス
４０  スキャナ
４１  プリンタ
４２  ＦＡＸ  
４３  操作パネル
４４  ＮＩＣ
５０、７０、１１０、ＰＬ１、ＰＬ２  プラットフォーム
５１、７１、１７１  制御モジュール
５２、５４、５８、７２、７４、７９、１７４、１７９  ＡＰＩ
５３、７３、１７３  基本アプリケーション
５５、７５、１７５  設定情報データベース
５６、７６、１７６  システム管理部
５７  Ｗｅｂサービスプロバイダ
６０  カメラ
６１  傾きセンサ
６２  ブルーツース通信部
６３  操作パネル
６４  通信アダプタ
６５  アンテナ
７２Ａ、１７２、１７２Ａ、１２１、１２２  ラッパーＡＰＩ
７７  Ｗｅｂクライアント
７８、７８Ａ  拡張アプリケーション
７Ａ、７Ｂ  Ｗｅｂサービスインターフェイス
９１  ＣＰＵ
９２  インターフェイス
９３  メモリ
９４  補助記憶装置
９５  会話型入出力装置
９６  ネットワークインターフェイス
１００  テキストエディタ
１０１  デザイナ
１０２  デバッガ
１０３  ビルダ
１０４  アプリ開発統合管理部
１０５  スマートフォンハードウェアシミュレータ
１２０、１２０Ａ  ネイティブライブラリ
【図１】
0005420623.tif 000002
【図２】
0005420623.tif 000003
【図３】
0005420623.tif 000004
【図４】
0005420623.tif 000005
【図５】
0005420623.tif 000006
【図６】
0005420623.tif 000007
【図７】
0005420623.tif 000008
【図８】
0005420623.tif 000009