説明

ソフトウェア開発キット

【課題】ネイティブライブラリを用い且つマルチプラットフォーム及びマルチ言語に対応した構成を簡単化する。
【解決手段】C/C++言語で、プラットフォーム毎に、互いに同一機能のネイティブライブラリ120、120Aを作成しておき、各ネイティブライブラリに共通のマルチ言語対応ラッパークラス121、122を作成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチプラットフォーム及びマルチ言語に対応したソフトウェア開発キットに関する。
【背景技術】
【0002】
セキュリティを確保するため、企業内に私用コンピュータを持ち込むことは一般に禁止されている。
【0003】
しかしながら、スマートフォンの普及に伴い、一定条件の下でこの禁止を解除することにより、ビジネス上の処理の効率化が図られようとしている。
【0004】
iPhone(登録商標)、Andoroid(登録商標)及びWindows Phone(登録商標)などのスマートフォンは、それぞれ異なるプラットフォームを用いており、また、各プラットフォームについて複数の言語のいずれかでプログラミング可能であるので、マルチプラットフォーム且つマルチ言語に対応したプログラム開発キットが必要となり、その構成が複雑になる。
【0005】
一方、スマートフォンはデスクトップコンピュータに比べ、CPU能力やメモリ容量の点で劣るものの、データサイズが比較的大きい画像を処理する必要があるので、高速処理が要求される。この要求に応えるため、プログラム開発キットにネイティブライブラリを備える必要があり、プログラム開発キットの構成がさらに複雑になる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2002−366352号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、このような問題点に鑑み、ネイティブライブラリを用い且つマルチプラットフォーム及びマルチ言語に対応した、構成が簡単なソフトウェア開発キットを提供することにある。
【課題を解決するための手段】
【0008】
本発明によるソフトウェア開発キットの第1態様では、
第1及び第2のプラットフォームのそれぞれに対応し互いに同一機能の第1及び第2のネイティブライブラリと、
該第1のネイティブライブラリと該第2のネイティブライブラリとで共通に用いられ、第1の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第1ラッパークラスと、
該第1のネイティブライブラリと該第2のネイティブライブラリとで共通に用いられ、第2の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第2ラッパークラスとを有し、該第1及び第2のネイティブライブラリ並びに該第1ラッパークラス及び該第2ラッパークラスを中間言語用拡張ライブラリとして備えている。
【発明の効果】
【0009】
上記第1態様の構成によれば、例えばC/C++言語で、プラットフォーム毎に、互いに同一機能のネイティブライブラリを作成しておき、各ネイティブライブラリに共通のマルチ言語対応ラッパークラスを作成することにより、高速処理が可能なネイティブライブラリを用いつつマルチプラットフォーム対応且つマルチ言語対応のソフトウェア開発キットを容易に作成することができるという効果を奏し、特に、各種スマートフォンアプリケーション用ソフトウェア開発キットの構成の簡単化に寄与するところが大きい。
【0010】
本発明の他の目的、特徴的な構成及び効果は、以下の説明を特許請求の範囲及び図面の記載と関係づけて読むことにより明らかになる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施例1に係る、複数のクラウドサービスを利用する画像形成システムの概略構成図である。
【図2】図1中の画像形成装置の階層構造を示すブロック図である。
【図3】図1中のスマートフォンの階層構造を示すブロック図である。
【図4】図1中のPCのハードウェア構成を示す概略ブロック図である。
【図5】該PCをソフトウェア開発装置として利用する場合の概略機能ブロック図である。
【図6】(A)及び(B)はそれぞれ第1及び第2のプラットフォーム用の制御モジュール及びその下位側のラッパーAPIの概略ブロック図である。
【図7】(A)は第1のプラットフォーム用の制御モジュール作成手順を示す概略フローチャート、(B)は(A)中のステップS0の説明図である。
【図8】(A)は第2のプラットフォーム用の制御モジュール作成手順を示す概略フローチャート、(B)は(A)の処理の説明図である。
【実施例1】
【0012】
図1は、本発明の実施例1に係る、複数のクラウドサービスを利用する画像形成システムの概略構成図である。
【0013】
このシステムでは、イントラネット10に、画像形成装置11と、ユーザ端末としてのパーソナルコンピュータ(PC)12と、無線LANのアクセスポイント13とが結合され、スマートフォン14がアクセスポイント13を介してイントラネット10に結合される。このイントラネット10がルータ(不図示)を介してインターネット20に結合される。インターネット20には、複数のクラウド21〜23が結合されている。また、インターネット20に基地局24が結合され、スマートフォン14及び25から基地局24を介しイントラネット10に結合される。
【0014】
複数のクラウド21〜23はそれぞれ、クラウドサービス31〜33を各種クライアント端末に対し提供可能となっている。
【0015】
ユーザは、PC12、スマートフォン14及び25などに拡張アプリケーションをインストールすることにより、これらからWebサービスとして、画像形成装置11のコピー、プリント及びファクシミリなどの基本的なサービスやクラウドサービス31〜33並びにこれらサービスを組み合わせたものを実行したり、画像形成装置11の設定情報を取得したり、この設定を変更したりすることが可能となる。
【0016】
図1では、簡単化の為に、複数のPC端末を1つのPC12で代表し、アクセスポイント13に対する複数の携帯端末を1つのスマートフォン14で代表し、基地局24に対する複数の携帯端末を1つのスマートフォン25で代表している。
【0017】
図2は、画像形成装置11の階層構造を示すブロック図である。
【0018】
画像形成装置11は、ハードウェアとしてスキャナ40、プリンタ41、FAX42、操作パネル43及びネットワークインターフェイス(NIC)44を備え、プラットフォーム50を介してそれぞれの基本的な入出力制御を行うことが可能となっている。
【0019】
プラットフォーム50は、前記制御を行ったり、電源を管理したり、TCP/IPなどのプロトコルで通信したりするオペレーティングシステム(OS)と、OSの下層の各種デバイスドライバと、OS上のJava(登録商標)VMやCLR(Common Language Runtime)などの仮想マシン(クラスライブラリ)と、標準ライブラリとを備えている。
【0020】
制御モジュール51は、拡張クラスライブラリであって、プラットフォーム50のAPI52を介してこれらハードウェアのそれぞれを機能単位で制御可能となっている。基本アプリケーション53は、制御モジュール51のAPI54を介し、ハードウェア40〜44をコピー、プリント及びファクシミリなどのような論理的な機能単位で制御可能となっている。
【0021】
ハードウェア40〜44に対する設定情報は、操作パネル43の操作に応答して、制御モジュール51により設定情報データベース55に格納され、また、格納された設定情報は、操作パネル43の操作に応答して制御モジュール51により、操作パネル43に表示される。
【0022】
システム管理部56は、API52又はAPI54を介して、ユーザに対する認証、認可の処理を行ったり、エラー管理を行ったり、省電力管理を行ったりする。
【0023】
PC12又はスマートフォン14若しくは25から画像形成装置11へのサービス要求は、NIC44及びプラットフォーム50を介してWebサービスプロバイダ57に伝えられ、Webサービスプロバイダ57はその要求に応じて、API58を介し基本アプリケーション53を動作させ、API54を介し設定情報データベース55から設定情報を読み出し又は設定情報データベース55の設定を変更し、それらの結果を返信する。
【0024】
図3は、スマートフォン14の階層構造を示すブロック図である。
【0025】
スマートフォン14は、ハードウェアとしてカメラ60、傾きセンサ61、ブルーツース通信部62、操作パネル63及び通信アダプタ64などを備え、通信アダプタ64にアンテナ65が結合され、プラットフォーム70を介してそれぞれの基本的な入出力制御を行うことが可能となっている。
【0026】
プラットフォーム70は、前記制御を行ったり、電源を管理したり、TCP/IPなどのプロトコルで通信したりするOSと、OSの下層の各種デバイスドライバと、OS上の仮想マシンと、標準ライブラリとを備えている。
【0027】
制御モジュール71は、拡張クラスライブラリであって、プラットフォーム70のAPI72を介してこれらハードウェアのそれぞれを機能単位で制御可能となっている。基本アプリケーション73は、ブラウザ、動画プレーヤ及びアドレス帳などを含み、制御モジュール71のAPI74を介し、ハードウェア60〜64を論理的な機能単位で制御可能となっている。
【0028】
ハードウェア60〜64に対する設定情報は、操作パネル63の操作に応答して、制御モジュール71により設定情報データベース75に格納され、また、格納された設定情報は、操作パネル63の操作に応答して制御モジュール71により、操作パネル63に表示される。
【0029】
システム管理部76は、API72又は74を介して、ユーザに対する認証、認可の処理を行ったり、エラー管理を行ったり、省電力管理を行ったりする。
【0030】
Webクライアント77は、操作パネル63の操作に応答してAPI72を介しそのURLにHTTPプロトコルで要求を送信し、返信された内容を操作パネル63に表示させる。
【0031】
拡張アプリケーション(ユーザアプリケーション)78は、基本アプリケーション73のAPI79を介して、単一又は複数の機能の組み合わせを実行させ、API74を介し設定情報データベース75の設定情報を読み取って操作パネル63に表示させ又は設定情報データベース75の設定情報を変更させる。
【0032】
Webサービスインターフェイス7Aは、Webサービスを内部メソッドのように呼び出すためのサービスプロキシと、送信時に該メソッドの呼び出しをXMLに変換するシリアライザと、受信時にXMLを該メソッドの戻り値に変換するデシリアライザとを備えている。
【0033】
上記拡張アプリケーション78はまた、Webサービスインターフェイス7A及びWebクライアント77を介し画像形成装置11のWebサービスプロバイダ57又はクラウド21〜23のサービス31〜33に対し要求を行い、その結果を、Webクライアント77及びWebサービスインターフェイス7Aを介して受信し、その内容を操作パネル63に表示させる。
【0034】
図4は、PC12のハードウェア構成を示す概略ブロック図である。図5は、PC12をソフトウェア開発装置として利用する場合の概略機能ブロック図である。
【0035】
ホストコンピュータPC12では、CPU91がインターフェイス92を介してメモリ93、補助記憶装置94、会話型入出力装置95及びネットワークインターフェイス96に結合されている。図4では、簡単化の為に、複数種のインターフェイスを1つのブロック92で表している。
【0036】
メモリインターフェイス92は例えば、BIOSが格納されたフラッシュメモリと、主記憶装置として用いられるDRAMとを備えている。補助記憶装置94には、OS、各種デバイスドライバ、ライブラリ及び仮想マシンがプラットフォーム(PF)として格納され、さらにソフトウェア開発キット(SDK)が格納されている。ネットワークインターフェイス96は、イントラネット10に結合されている。
【0037】
このソフトウェア開発装置は、図3中の拡張アプリケーション78の開発を支援するものであり、ネイティブライブラリを備えてスマートフォンでの処理を高速化可能にするとともに、複数のプラットフォームのうちの任意の1つを搭載したスマートフォンの拡張アプリケーション78を開発可能にし、しかも、マルチ言語対応にしてプログラミング言語を選択可能にしている。
【0038】
図5中、構成要素72A、171、173〜176及び179はそれぞれ図3中の構成要素72、71、73〜76及び79に対応している。これら構成要素72A、171、173〜176及び179は、図3中の対応する構成要素のうち、拡張アプリケーション78を開発するのに必要な部分のみを備えていればよい。ラッパーAPI172は、API110をラッパーすることによりAPI72と同じに見せかけるものである。
【0039】
PC12は、通常のSDKと同様に、テキストエディタ100、デザイナ101、デバッガ102及びビルダ103と、ユーザの操作に応答してこれらのいずれかを呼び出す処理やプロジェクト生成処理等を行うアプリ開発統合管理部104とを備えている。
【0040】
デザイナ101は、操作パネル63の画面設計のアプリケーション開発を支援するためのものであって、対話的ビジュアル設計に基づいてプログラムを自動生成するものである。
【0041】
ビルダ103は、複数の言語、例えばC#、C++、C及びJave(登録商標)のそれぞれに対応したコンパイラを備えている。
【0042】
ここで、図5の制御モジュール171は、アプリケーションレベルの通信や画像などを高速処理するクラスライブラリを備えており、これは、図6(A)に示すように、C又はC++のソースコードをコンパイルしたネイティブライブラリ120と、マルチ言語対応にするためC#及びJava(登録商標)のラッパークラスのソースコードをコンパイルしたラッパーAPI121及び122とを備えている。
【0043】
C#用ラッパーAPI121は、拡張アプリケーション78の中間コードの一部が、ネイティブライブラリ120内のC関数又はC++クラスのメソッド(ネイティブサブルーチン)を、C#のクラスのインスタンスのメソッドとして呼び出せるようにするためのクラスライブラリであり、C#の該メソッドのシグネチャをネイティブライブラリ120内のC関数又はC++クラスのメソッドのシグネチャに変換する。ラッパーAPI121はまた、C#の方式でメモリ管理を行えるようにするメソッドも含んでいる。
【0044】
Java(登録商標)用ラッパーAPI122についても、C#用ラッパーAPI121と同様である。
【0045】
ネイティブライブラリ120は、特定のプラットフォーム70(PL1)のOS又は/及びライブラリ、例えば.NETフレームワークの標準ライブラリを用いて作成されている。ラッパーAPI172は、ネイティブライブラリ120から見てプラットフォーム70をPL1と見なせるようにするためのものである。
【0046】
PC12はまた、図6(B)に示すような制御モジュール171Aも備えている。
【0047】
制御モジュール171Aは、ネイティブライブラリ120と同一機能のネイティブライブラリ120Aと、C#用ラッパーAPI121及びJava(登録商標)用ラッパーAPI122とを備え、これらラッパーAPI121及びAPI122は制御モジュール171のものと共用である。
【0048】
ネイティブライブラリ120Aは、他のプラットフォーム70(PL2)のOS又は/及びライブラリ、例えばLinax(登録商標)のクラスライブラリを用いて作成されている。ラッパーAPI172Aは、ネイティブライブラリ120Aから見てプラットフォーム70をPL2と見なせるようにするためのものである。
【0049】
上記共用を可能にするため、ネイティブライブラリ120A内の各メソッドのシグネチャはネイティブライブラリ120のそれと同一になっている。すなわち、ネイティブライブラリ120と120AのC又はC++ソースコードでの相違部分は、プラットフォームPL1とPL2のいずれのAPIを使用しているか及びその周辺部分であり、他は互いに同一である。
【0050】
図7(A)は、制御モジュール171の作成手順を示す概略フローチャートである。
【0051】
(S0)プラットフォームPL1用のネイティブライブラリ120を作成する。このネイティブライブラリ120は、図7(B)に示すようにラッパーAPI172(クラスライブラリ)内の例えばAPI1〜API3を用いている。
【0052】
(S1)各言語用のラッパークラスライブラリ、すなわちラッパーAPI121及びラッパーAPI122を作成する。
【0053】
図8(A)は、制御モジュール171Aの作成手順を示す概略フローチャートである。
【0054】
(S10)プラットフォームPL2用のネイティブライブラリ120Aを作成する。このネイティブライブラリ120Aは、図8(B)に示すように、ラッパーAPI172A内の例えばAPI1A〜API3Aを用いている。
【0055】
ラッパーAPI121及びAPI122は既に作成され、制御モジュール171のそれらと共用であるので、さらに作成する必要がない。
【0056】
図5に戻って、PC12はさらに、スマートフォン14のハードウェアに対応したシミュレータ105を備えている。入力装置950及び表示装置951は図4中の会話型入出力装置95を構成している。図5中、拡張アプリケーション78及びWebサービスインターフェイス7A中のサービスプロキシ以外は、開発環境として予め備えられている。
【0057】
本実施例1によれば、例えばC/C++言語で、プラットフォーム毎に、互いに同一機能のネイティブライブラリ120、120Aを作成しておき、各ネイティブライブラリに共通のマルチ言語対応ラッパークラス121、122を作成することにより、高速処理が可能なネイティブライブラリを用いつつマルチプラットフォーム対応且つマルチ言語対応のソフトウェア開発キットを容易に作成することができるという効果を奏し、特に、各種スマートフォンアプリケーション用ソフトウェア開発キットの構成の簡単化に寄与するところが大きい。
【0058】
以上において、本発明の好適な実施例を説明したが、本発明には他にも種々の変形例が含まれ、上記各構成要素の機能を実現する他の構成を用いたもの、当業者であればこれらの構成又は機能から想到するであろう他の構成も、本発明に含まれる。
【0059】
例えば、ラッパーAPI120、122は、API174の一部であってもよい。換言すれば、ラッパーAPI120、122をAPI174の一部として用いる構成であってもよい。
【0060】
また、中間言語にコンパイルされるオブジェクト指向言語は、上記以外のものであってもよい。ネイティブライブラリはアセンブリ言語を一部又は全部用いて作成したものであってもよい。
【符号の説明】
【0061】
10 イントラネット
11 画像形成装置
12 PC
13 アクセスポイント
14、25 スマートフォン
20 インターネット
21〜23 クラウド
24 基地局
31〜33 クラウドサービス
40 スキャナ
41 プリンタ
42 FAX
43 操作パネル
44 NIC
50、70、110、PL1、PL2 プラットフォーム
51、71、171 制御モジュール
52、54、58、72、74、79、174、179 API
53、73、173 基本アプリケーション
55、75、175 設定情報データベース
56、76、176 システム管理部
57 Webサービスプロバイダ
60 カメラ
61 傾きセンサ
62 ブルーツース通信部
63 操作パネル
64 通信アダプタ
65 アンテナ
72A、172、172A、121、122 ラッパーAPI
77 Webクライアント
78、78A 拡張アプリケーション
7A、7B Webサービスインターフェイス
91 CPU
92 インターフェイス
93 メモリ
94 補助記憶装置
95 会話型入出力装置
96 ネットワークインターフェイス
100 テキストエディタ
101 デザイナ
102 デバッガ
103 ビルダ
104 アプリ開発統合管理部
105 スマートフォンハードウェアシミュレータ
120、120A ネイティブライブラリ

【特許請求の範囲】
【請求項1】
第1及び第2のプラットフォームのそれぞれに対応し互いに同一機能の第1及び第2のネイティブライブラリと、
該第1のネイティブライブラリと該第2のネイティブライブラリとで共通に用いられ、第1の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第1ラッパークラスと、
該第1のネイティブライブラリと該第2のネイティブライブラリとで共通に用いられ、第2の中間言語で該ネイティブライブラリ内の関数又はメソッドを呼出可能にする第2ラッパークラスと、
を有し、該第1及び第2のネイティブライブラリ並びに該第1ラッパークラス及び該第2ラッパークラスを中間言語用拡張ライブラリとして備えていることを特徴とするソフトウェア開発キット。
【請求項2】
該ネイティブライブラリは、複数のネイティブ関数又はネイティブメソッドをネイティブサブルーチンとして備え、
該第1ラッパークラスは、該複数のネイティブサブルーチンのそれぞれについて、該第1の中間言語で記述された関数呼出しに応答して、該第1の中間言語で記述された関数呼出しコードの各引数の型を該ネイティブサブルーチンの対応する引数の型に変換して該ネイティブサブルーチンを呼出し、該ネイティブサブルーチンの戻り値の型を該第1の中間言語の対応する型に変換して該第1の中間言語で記述された関数の呼び出し元に返す型変換メソッドを備え、
該第2ラッパークラスは、該複数のネイティブサブルーチンのそれぞれについて、該第2の中間言語で記述された関数呼出しに応答して、該第2の中間言語で記述された関数呼出しコードの各引数の型を該ネイティブサブルーチンの対応する引数の型に変換して該ネイティブサブルーチンを呼出し、該ネイティブサブルーチンの戻り値の型を該第2の中間言語の対応する型に変換して該第2の中間言語で記述された関数の呼び出し元に返す型変換メソッドを備えている、
ことを特徴とする請求項1に記載のソフトウェア開発キット。
【請求項3】
該第1の中間言語はC#の中間言語であり、該第2の中間言語はJava(登録商標)の中間言語であることを特徴とする請求項1又は2に記載のソフトウェア開発キット。
【請求項4】
画像形成装置のWebサービスと通信するWebサービスインターフェイスをさらに備えていることを特徴とする請求項1乃至3のいずれか1つに記載のソフトウェア開発キット。
【請求項5】
携帯端末のユーザアプリケーション開発用であることを特徴とする請求項1乃至4のいずれか1つに記載のソフトウェア開発キット。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−97747(P2013−97747A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−242939(P2011−242939)
【出願日】平成23年11月5日(2011.11.5)
【出願人】(000006150)京セラドキュメントソリューションズ株式会社 (13,173)
【Fターム(参考)】