(57)【要約】【課題】コンピュータ知識の十分ではない一般ユーザも容易にアプリケーションを開発できる環境を提供しつつ、アプリケーションのアップロード過程及びダウンロード過程が不要な、画像形成装置のアプリケーションを開発する方法を提供する。【解決手段】画像形成装置のアプリケーションを開発するためのツールを提供するソリューションが画像形成装置に保存されており、このアプリケーション開発ソリューションの実行によって、画像形成装置の機能を表示する。ユーザの入力情報に基づいて、画像形成装置の機能を組み合わせることによって、ユーザの入力情報に対応するアプリケーションを生成した後に画像形成装置に保存する。【選択図】図３
2012252706.tif 000002
【特許請求の範囲】
【請求項１】
画像形成装置のアプリケーションを開発する方法において、
前記画像形成装置に保存され、前記画像形成装置のアプリケーションを開発するためのツールを提供するソリューションを実行する段階と、
前記ソリューションの実行によって、前記画像形成装置の機能を表示する段階と、
ユーザの入力情報に基づいて、前記機能を組み合わせることによって、前記入力情報に対応するアプリケーションを生成する段階と、
前記生成されたアプリケーションを前記画像形成装置に保存する段階と、を含むアプリケーション開発方法。
【請求項２】
前記表示する段階は、前記画像形成装置のＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）関数のうちの一部のＡＰＩ関数の組み合わせに該当する前記画像形成装置の機能を記述するモジュールを表示し、
前記生成する段階は、前記入力情報に基づいて、前記表示されたモジュールのうちの一部のモジュールを組み合わせることによって、前記入力情報に対応するアプリケーションを生成することを特徴とする請求項１に記載のアプリケーション開発方法。
【請求項３】
前記モジュールそれぞれは、前記画像形成装置のＡＰＩ関数のうちの一部のＡＰＩ関数の組み合わせを利用し、前記組み合わせに該当する前記画像形成装置の機能を前記画像形成装置で実行可能なコードで記述することを特徴とする請求項１に記載のアプリケーション開発方法。
【請求項４】
前記表示する段階は、前記画像形成装置の機能を記述するＡＰＩ関数を表示し、
前記生成する段階は、前記入力情報に基づいて、前記表示されたＡＰＩ関数のうちの一部のＡＰＩ関数を組み合わせることによって、前記入力情報に対応するアプリケーションを生成することを特徴とする請求項１に記載のアプリケーション開発方法。
【請求項５】
前記生成されたアプリケーションに係わるクロスコンパイリングを遂行することによって、前記画像形成装置によって実行可能なコードを有するアプリケーションを生成する段階をさらに含むことを特徴とする請求項４に記載のアプリケーション開発方法。
【請求項６】
前記画像形成装置に連結されたホストで、前記画像形成装置のストレージを認識する段階をさらに含み、
前記実行する段階は、前記ホストで前記認識された画像形成装置のストレージから、前記ソリューションを読み取って実行することを特徴とする請求項１に記載のアプリケーション開発方法。
【請求項７】
前記画像形成装置のストレージと前記ホストは、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）によって連結され、
前記認識する段階は、前記画像形成装置のストレージを、前記ＵＳＢのＭＳＣ（ｍａｓｓ  ｓｔｏｒａｇｅ  ｃｌａｓｓ）プロトコルを介して認識することを特徴とする請求項６に記載のアプリケーション開発方法。
【請求項８】
前記画像形成装置と前記ホストは、ネックワークによって連結され、
前記認識する段階は、前記画像形成装置のストレージを、前記ネックワークのＳＭＢ（ｓｅｒｖｅｒ  ｍｅｓｓａｇｅ  ｂｌｏｃｋ）プロトコルを介して認識することを特徴とする請求項６に記載のアプリケーション開発方法。
【請求項９】
画像形成装置において、
少なくとも画像を形成する機能を含む複数個の機能を有するハードウェア要素と、
前記画像形成装置のアプリケーションを開発するためのツールを提供するソリューション、及び、前記ソリューションを使用して開発された少なくとも１つのアプリケーション、が保存されているストレージと、
前記ストレージに保存されたアプリケーションを実行することによって、前記アプリケーションによって、前記ハードウェア要素の動作を制御するプロセッサと、を含み、
前記アプリケーションは、前記ソリューションの実行によって表示される前記画像形成装置の機能の組み合わせから生成される画像形成装置。
【請求項１０】
前記ストレージには、前記画像形成装置のＡＰＩ関数、及び、前記ＡＰＩ関数のうちの一部のＡＰＩ関数の組み合わせを利用し前記画像形成装置の機能を前記画像形成装置において実行可能なコードで記述するモジュール、がさらに保存されており、
前記プロセッサは、前記モジュールのうちの一部のモジュールの組み合わせから生成されたアプリケーションを実行することを特徴とする請求項９に記載の画像形成装置。
【請求項１１】
前記ストレージには、前記画像形成装置のＡＰＩ関数と、前記画像形成装置のアプリケーションとを、前記画像形成装置で実行可能なコードに翻訳するためのクロスコンパイラがさらに保存されており、
前記プロセッサは、前記クロスコンパイラを実行することによって、前記ＡＰＩ関数のうちの一部のＡＰＩ関数の組み合わせから生成されたアプリケーションをコンパイルし、前記コンパイルされたアプリケーションを実行することを特徴とする請求項９に記載の画像形成装置。
【請求項１２】
前記ハードウェア要素は、ホストによって前記ストレージが認識されるように、前記ストレージとホストとを連結する機能を有する通信部を含み、
前記ストレージに保存されたソリューションは、前記通信部を介して、前記ホストによって読み取られて実行されることを特徴とする請求項９に記載の画像形成装置。
【請求項１３】
前記通信部は、ＵＳＢのＭＳＣプロトコルを利用し、前記ストレージとホストとを連結し、
前記ストレージは、前記ホストによって、前記ＭＳＣプロトコルを介して認識されることを特徴とする請求項１２に記載の画像形成装置。
【請求項１４】
前記通信部は、ネックワークのＳＭＢプロトコルを利用し、前記ストレージとホストとを連結し、
前記ストレージは、前記ホストによって、前記ＳＭＢプロトコルを介して認識されることを特徴とする請求項１２に記載の画像形成装置。
【請求項１５】
画像形成装置の記録媒体において、
前記画像形成装置のネイティブ関数を含むファームウェアに該当するファームウェア・ブロックと、
前記ネイティブ関数と、前記画像形成装置のＡＰＩ関数とを連結するラッパ関数の集合に該当するラッパ・ブロックと、
前記画像形成装置のＡＰＩ関数の集合に該当するＡＰＩブロックと、
前記ＡＰＩ関数を利用し、前記画像形成装置のアプリケーションを開発するためのツールを提供するソリューションに該当するソリューション・ブロックと、を含む階層的構造のデータブロックが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置のアプリケーション開発方法及び装置に関する。
【背景技術】
【０００２】
最近、携帯電話機能とコンピュータ機能とが結合されたスマートフォン（ｓｍａｒｔ  ｐｈｏｎｅ）が一般化されるにつれ、スマートフォンのアプリケーション開発への関心が高まっている。特に、殆どのスマートフォンのメーカーやベンダー（ｖｅｎｄｏｒ）は、アプリケーション開発を活発に行うために、一般人にスマートフォンの内部構造、例えば、ＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を公開する開放型構造（ｏｐｅｎ  ａｒｃｈｉｔｅｃｔｕｒｅ）を採択している。かようなスマートフォンのアプリケーション開発政策が成功裏に進められることによって、テレビ（ＴＶ）分野でも、スマートフォンと同様に、スマートＴＶに係わる開発がなされている。ただ、プリンタのような画像形成装置分野では、まだアプリケーション開発への研究が微弱な状態である。
【０００３】
該画像形成装置におけるアプリケーション開発に関わる先行技術文献としては、特許文献１、２及び３などがある
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７４４００
【特許文献２】特開２００５−０８００１９
【特許文献３】特開２００９−０６５７１３
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の課題は、コンピュータ知識の十分ではない一般ユーザも容易にアプリケーションを開発できる環境を提供しつつ、アプリケーションのアップロード過程及びダウンロード過程が不要な、画像形成装置のアプリケーションを開発する方法及びその装置を提供することである。また、かようなアプリケーションを開発する方法及びその装置を具現するための記録媒体を提供することである。また、前記のような技術的課題に限定されるものではなく、本明細書の内容から類推される他の技術的課題を含む。
【課題を解決するための手段】
【０００６】
本発明の一側面による画像形成装置のアプリケーションを開発する方法は、前記画像形成装置に保存され、前記画像形成装置のアプリケーションを開発するためのツールを提供するソリューションを実行する段階、前記ソリューションの実行によって、前記画像形成装置の機能を表示する段階、ユーザの入力情報に基づいて、前記機能を組み合わせることにより、前記入力情報に対応するアプリケーションを生成する段階、及び前記生成されたアプリケーションを前記画像形成装置に保存する段階を含む。
【０００７】
本発明の他の側面による画像形成装置は、少なくとも画像を形成する機能を含む複数個の機能を有するハードウェア要素と、前記画像形成装置のアプリケーションを開発するためのツールを提供するソリューション、及び、前記ソリューションを使用して開発された少なくとも一つのアプリケーション、が保存されているストレージと、前記ストレージに保存されたアプリケーションを実行することによって、前記アプリケーションによって、前記ハードウェア要素の動作を制御するプロセッサと、を含み、前記アプリケーションは、前記ソリューションの実行によって表示される前記画像形成装置の機能の組み合わせから生成される。
【０００８】
本発明のさらに他の側面による画像形成装置の記録媒体には、前記画像形成装置のネイティブ関数（ｎａｔｉｖｅ  ｆｕｎｃｔｉｏｎ）を含むファームウェア（ｆｉｒｍｗａｒｅ）に該当するファームウェア・ブロックと、前記ネイティブ関数と前記画像形成装置のＡＰＩ関数とを連結するラッパ関数（ｗｒａｐｐｅｒ  ｆｕｎｃｔｉｏｎ）の集合に該当するラッパ・ブロックと、前記画像形成装置のＡＰＩ関数の集合に該当するＡＰＩブロックと、前記ＡＰＩ関数を利用し、前記画像形成装置のアプリケーションを開発するためのツールを提供するソリューションに該当するソリューション・ブロックと、を含む階層的構造のデータブロックが記録される。
【発明の効果】
【０００９】
アプリケーション開発ソリューションが画像形成装置に保存されており、該アプリケーション開発ソリューションを利用して開発されたアプリケーションが、画像形成装置に直ちに保存されるので、アプリケーションのアップロード過程及びダウンロード過程がなくなる。また、ユーザがグラフィック形態で表示された画像形成装置の機能を組み合わせてアプリケーションを開発できるので、コンピュータ知識の十分ではない一般ユーザも、容易にアプリケーションを開発できる環境を提供する。これにより、画像形成装置に対するユーザ要求事項が即座に充足される。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態によるプリンタのアプリケーション開発環境を示した図面である。
【図２】本発明の一実施形態によるプリンタの構成図である。
【図３】本発明の一実施形態によるプリンタのアプリケーション開発装置を示した図面である。
【図４】図３に示したＡＰＩブロックとモジュール・ブロックとの連結関係の一例を示した図面である。
【図５】本発明の他の実施形態によるプリンタのアプリケーション開発装置を示した図面である。
【図６】図５のＡＰＩブロックとソリューション・ブロックとの連結関係の一例を示した図面である。
【図７】本発明の一実施形態によるプリンタのアプリケーション開発方法のフローチャートである。
【図８】本発明の一実施形態によるプリンタのアプリケーション実行方法のフローチャートである。
【図９】本発明の他の実施形態によるプリンタのアプリケーション開発方法のフローチャートである。
【図１０】本発明の他の実施形態によるプリンタのアプリケーション実行方法のフローチャートである。
【図１１】本発明の一実施形態によるプリンタのアプリケーションを開発するためのグラフィック・ツールを含むウィンドウを示した図面である。
【図１２】図１１に示したウィンドウのグラフィック・ツールを利用してアプリケーションを開発する一例を示した図面である。
【図１３】図１１に示したウィンドウのグラフィック・ツールを利用してアプリケーションを開発する他の例を示した図面である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ、本発明の実施形態について詳細に説明する。特に、以下では、特許請求の範囲に示す画像形成装置の具体的な例として、用紙に物理的な画像を形成する印刷機能、用紙に記録された画像を検出するスキャン機能などを有するプリンタについて、本発明の一実施形態として説明する。ただし、かようなプリンタは、複合機（ＭＦＰ、ｍｕｌｔｉｆｕｎｃｔｉｏｎａｌ  ｐｅｒｉｐｈｅｒａｌ）のような他の名称で呼称される場合もある。また、特許請求の範囲の画像形成装置は、以下で記述するプリンタ以外にも、他種の画像形成装置にも適用される。
【００１２】
図１は、本発明の一実施形態によるプリンタのアプリケーション開発環境を示した図面である。図１には、プリンタ１００の一例として印刷機能、スキャン機能などを有する複合機が示されている。しかし、これは一例であって、プリンタ１００は、かような複合機以外にも、他種のプリンタ、例えば、スキャン機能を有さないプリンタになる場合がある。また、図１には、ホスト２００の一例としてＰＣ（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）が示されている。しかし、これは一例であって、ホスト２００は、ＰＣ以外にも他種のホスト、例えば、スマートフォンのように、コンピュータ機能を有する携帯電話になる場合がある。
【００１３】
プリンタ１００は、ホスト２００から伝送されたテキスト、イメージのようなコンテンツを印刷する機能を基本的に遂行せねばならないので、プリンタ１００とホスト２００は、ほぼ常に有線又は無線で連結されている。従って、ホスト２００は、スマートフォン、ＴＶのような他の電子機器に比べて、プリンタ１００にさらに容易に接続される。かようなプリンタ１００のアクセス容易性は、ホスト２００でプリンタ１００のアプリケーションを開発する際に要求される優秀な環境を提供できる。
【００１４】
一方、スマートフォンのような埋め込みシステム（ｅｍｂｅｄｄｅｄ  ｓｙｓｔｅｍ）の場合、アプリケーション開発を活発に行うために、ハードウェアメーカーやベンダーが一般人にＡＰＩを公開する開放型構造を採択している。一般的に、アプリケーション開発は、埋め込みシステムでない、アプリケーション開発に要求されるハードウェア性能を支援するＰＣでなされる。ＰＣで、スマートフォンのアプリケーションを開発するためには、アプリケーションを、スマートフォンで実行（ｅｘｅｃｕｔｅ）可能なコードで構成されたバイナリファイル（ｂｉｎａｒｙ  ｆｉｌｅ）に翻訳するクロスコンパイラ（ｃｒｏｓｓ  ｃｏｍｐｉｌｅｒ）と、アプリケーションをＰＣで仮想的に実行するためのエミュレータ（ｅｍｕｌａｔｏｒ）と、がＰＣに設置されていなければならない。このように、ＰＣで開発されたアプリケーションは、オンライン・アプリケーションストア（ｏｎｌｉｎｅ  ａｐｐｌｉｃａｔｉｏｎ  ｓｔｏｒｅ）にアップロード（ｕｐｌｏａｄ）される。ユーザは、このように、アップロードされたアプリケーションを、自身のスマートフォンにダウンロード（ｄｏｗｎｌｏａｄ）して使用する。
【００１５】
前記のように、既存のアプリケーション開発環境では、アプリケーション開発者が、ＰＣにクロスコンパイラ、エミュレータのようなプログラムを設置して使用せねばならない。このことは、コンピュータに係わる知識が十分ではない殆どの一般人には、アプリケーションを開発するにあたって障害として作用する。また、オンライン・アプリケーションストアにアプリケーションをアップロードし、オンライン・アプリケーションストアからアプリケーションをダウンロードする過程は、スマートフォンとＰＣとをＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）やネットワークで連結する過程などが要求されるので、ユーザにとって、使い勝手が思わしくない。特に、コンピュータ知識が十分ではない一般ユーザの場合、スマートフォンのような埋め込みシステムについて、いかなる要求事項が生じても、これを充足させるファームウェア・アップデートやアプリケーション公開がなされるまで待たなければならなかった。
【００１６】
以下で説明する実施形態では、プリンタ１００のアクセス容易性を利用し、ＰＣにクロスコンパイラ、エミュレータのようなプログラムを設置せずとも、ＰＣの画面上のグラフィック・ツールを利用し、コンピュータ知識の十分ではない一般ユーザも、容易にアプリケーションを開発できる環境を提供するものである。これにより、プリンタ１００に対するユーザの要求事項が即座に充足される。また、以下で説明する実施形態では、オンライン・アプリケーションストアにアプリケーションをアップロードし、オンライン・アプリケーションストアからアプリケーションをダウンロードする過程を除去することにより、ユーザの不便さを最小化できる。
【００１７】
図２は、本発明の一実施形態によるプリンタ１００の構成図である。図２を参照すれば、本実施形態によるプリンタ１００は、プロセッサ１１０、ストレージ１２０、印刷部１３０、スキャン部１４０、通信部１５０、及びユーザインターフェース（ＵＩ）パネル１６０から構成される。図２に示したプリンタ１００は、印刷機能、スキャン機能などを有する。しかし、これは一例であって、以下で記述する実施形態の技術的特徴は、他種のプリンタ、例えば、スキャン機能を有さないプリンタにも適用される。また、前記のようなハードウェア要素は、プリンタの一般的な機能を有する基本的な構成要素の例示であって、図２に示したプリンタ１００に、他のハードウェア要素がさらに追加される場合がある。例えば、プリンタ１００は、ＦＡＸ機能を支援するために、ＰＳＴＮ（ｐｕｂｌｉｃ  ｓｗｉｔｃｈｅｄ  ｔｅｌｅｐｈｏｎｅ  ｎｅｔｗｏｒｋ）ベースの電話機能を有するハードウェア要素をさらに含んでもよい。
【００１８】
プロセッサ１１０は、ストレージ１２０に保存されたアプリケーションを実行することにより、このアプリケーションによって、プリンタ１００のハードウェア要素の動作を制御する。さらに詳細に説明すれば、プロセッサ１１０は、ＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）、デバイスドライバ（ｄｅｖｉｃｅ  ｄｒｉｖｅｒ）のようなプリンタ１００のファームウェアに基づいて、アプリケーションの命令（ｉｎｓｔｒｕｃｔｉｏｎｓ）を実行することによって、このアプリケーションの命令によって、プリンタ１００のハードウェア要素、例えば、ストレージ１２０、通信部１５０、印刷部１３０、スキャン部１４０、ＵＩパネル１６０の動作を制御する。これにより、アプリケーションは、プリンタ１００のある機能を遂行（ｐｅｒｆｏｒｍ）できる。本実施形態で、用語「実行」は、プロセッサ１１０がアプリケーションの命令を履行（ｃａｒｒｙ  ｏｕｔ）することを意味し、用語「遂行」は、アプリケーションのようなコンピュータ・プログラムが実行され、プリンタ１００のある機能を遂行することを意味する。かようなプロセッサ１１０は、１つのチップ（ｃｈｉｐ）から具現されるか、又は、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）や専用プロセッサのような複数個のチップに分離されて具現される。専用プロセッサは、プリンタ１００の特定作業を専門的に担当するプロセッサであり、ネットワークを介して送受信されるデータパケットを処理するネットワーク・プロセッサなどを例に挙げることができる。
【００１９】
ストレージ１２０は、プロセッサ１１０の制御によってデータを保存及び提供する。ストレージ１２０には、ＯＳ、デバイスドライバなどのファームウェア、アプリケーションのような実行ファイル、印刷部１３０に印刷が要請されたテキスト、イメージのようなコンテンツなどの多様なデータが保存される。ストレージ１２０は、不揮発性メモリの一種であるフラッシュメモリ（ｆｌａｓｈ  ｍｅｍｏｒｙ）のような１つの記録媒体で具現されるか、又は、ＲＡＭ（ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ハードディスク（ｈａｒｄ  ｄｉｓｋ）のようなさまざまな記録媒体に分割して具現される。さらに、ストレージ１２０は、プリンタ１００に着脱可能なメモリ装置も含み得る。以下で記述するアプリケーション開発ソリューションというプログラムは、例えば、プリンタ１００に着脱可能なメモリ装置に保存される。
【００２０】
印刷部１３０は、プロセッサ１１０の制御によって、プロセッサ１１０から入力されたテキスト、イメージのようなコンテンツを印刷する。印刷部１３０は、用紙を移送する機械的な部分と、この用紙に画像を形成するエンジン部分と、に区分される。スキャン部１４０は、プロセッサ１１０の制御によって、スキャン部１４０に挿入された用紙上の画像を検出する。スキャン部１４０は、用紙上の画像を検出するイメージセンサと、イメージセンサを移送する機械的な部分と、に区分される。印刷部１３０とスキャン部１４０との具体的な構造と動作は、本実施形態の特徴に該当せず、図２に示した実施形態が属する技術分野で周知の事項であるから、これらについての詳細な説明は省略する。
【００２１】
通信部１５０は、プロセッサ１１０の制御によって、ホスト２００など他の装置との通信を遂行する。例えば、通信部１５０は、ホスト２００が伝送したコンテンツと、これについてのホスト２００からの印刷命令とを受信し、ホスト２００に、その処理結果を示す応答を伝送できる。通信部１５０は、ＵＳＢケーブル、ネットワーク・ケーブルのような通信ケーブルが挿入されるコネクタ（ｃｏｎｎｅｃｔｏｒ）のような機械的な部分と、ＵＳＢ規格、ネットワーク通信規格のようなさまざまな通信方式によって、データ伝送を制御する回路的な部分と、に区分される。前記のＵＳＢ、ネットワークなどは、現在使用中である多様な通信方式のうち一例に過ぎず、通信部１５０は、他の通信方式、例えば、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ（登録商標））を支援することもできる。
【００２２】
本実施形態では、ホスト２００で開発されたアプリケーションを、そのアップロード過程及びダウンロード過程なしに、ストレージ１２０にすぐに保存させるために、ホスト２００は、プリンタ１００のアプリケーションを開発するためのツールを提供するアプリケーション開発ソリューションを、ストレージ１２０から読み取って実行し、このアプリケーション開発ソリューションを使用して開発されたアプリケーションを、ストレージ１２０に保存できる。このために、通信部１５０は、ホスト２００によって、ストレージ１２０が認識されることができるように、ストレージ１２０とホスト２００とを連結する機能を保有できる。もしホスト２００ではないプリンタ１００でアプリケーションを開発する場合であるならば、通信部１５０は、かような機能を有する必要がない。
【００２３】
プリンタ１００は、ワード作業、インターネット・サーフィング（ｗｅｂ  ｓｕｒｆｉｎｇ）などの一般的なデータ処理作業を遂行するＰＣとは異なり、印刷作業やスキャン作業を処理するための制限された資源を有する埋め込みシステムの形態に設計されるので、プリンタ１００には、マウス、キーボード、モニタのような一般的な入出力装置が一般的には装着されない。以下で記述する実施形態によれば、アプリケーションを開発するためのツールが、ＧＵＩ（ｇｒａｐｈｉｃ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）の形態で提供され、テキスト入力が要求されないので、ＵＩパネル１６０のタッチスクリーンを利用してアプリケーションを開発可能である。この場合、むしろ、アプリケーション開発が可能なほどのプリンタ１００のハードウェア性能、例えば、プロセッサ１１０の性能及びストレージ１２０の容量のサポートがなければならない。
【００２４】
通信部１５０が、ストレージ１２０とホスト２００とを連結する機能を有する場合、ストレージ１２０に保存されたアプリケーション開発ソリューションは、通信部１５０を介して、ホスト２００によって読み取られて実行される。例えば、プリンタ１００とホスト２００とがＵＳＢによって連結されている場合、通信部１５０は、ＵＳＢのＭＳＣ（ｍａｓｓ  ｓｔｏｒａｇｅ  ｃｌａｓｓ）プロトコルを利用し、ストレージ１２０とホスト２００とを連結する。その場合、ストレージ１２０は、ホスト２００によって、ＭＳＣプロトコルを介して、移動式ディスク（ｒｅｍｏｖａｂｌｅ  ｄｉｓｋ）として認識される。また、プリンタ１００とホスト２００とがネットワークによって連結されている場合、通信部１５０は、ネックワークのＳＭＢ（ｓｅｒｖｅｒ  ｍｅｓｓａｇｅ  ｂｌｏｃｋ）プロトコルを利用し、ストレージ１２０とホスト２００とを連結する。その場合、ストレージ１２０は、ホスト２００によって、ＳＭＢプロトコルを介して、ネットワークドライブとして認識される。
【００２５】
前記のＵＳＢ、ネットワークなどは、現在使用中である多様な通信媒体のうち一例に過ぎず、ホスト２００とプリンタ１００のストレージ１２０は、他の通信媒体を介して連結されもする。ホスト２００と、プリンタ１００のストレージ１２０とを連結する通信媒体を介して、プリンタ１００のアプリケーション開発のために使われるデータ、例えば、アプリケーション開発ソリューション、ユーザ入力情報、及び、これを使用して生成されたアプリケーションが伝送される。また、ホスト２００が印刷しようとするコンテンツデータなどのような、プリンタ１００のある機能遂行のためのデータを伝送するための通信媒体も要求される。前者の通信媒体と後者の通信媒体は、別途に存在するか、又は、１つの媒体である。例えば、ホスト２００とプリンタ１００は、ＵＳＢを介して、アプリケーション開発と関連したデータを伝送しつつ、ネットワークを介して、プリンタ１００の印刷作業と関連したデータを伝送する。あるいは、ホスト２００とプリンタ１００は、１つのＵＳＢを介して、アプリケーション開発と関連したデータと、プリンタ１００の印刷作業と関連したデータとを同時に伝送する。その場合、通信部１５０は、ＵＳＢのプリンタクラス（ｐｒｉｎｔｅｒ  ｃｌａｓｓ）・プロトコルを利用し、プリンタ１００とホスト２００とを連結し、ホスト２００は、プリンタクラス・プロトコルを利用し、プリンタ１００の印刷作業と関連したデータを伝送する。
【００２６】
ＵＩパネル１６０は、プロセッサ１１０の制御によって、ユーザとプリンタ１００とのインターフェーシングを遂行する。例えば、ＵＩパネル１６０は、プロセッサ１１０の制御によって、ユーザをしてプリンタ１００の機能の選択及び組み合わせを行わせるためのツールをグラフィック形態で表示できる。ユーザがこのツールを利用し、ある命令又は情報をＵＩパネル１６０に入力すると、ＵＩパネル１６０は、この命令又は情報を、プロセッサ１１０に伝達する。ＵＩパネル１６０は、ユーザにプリンタ１００の機能を利用するためのツールをグラフィック形態で表示するので、プリンタ１００の機能をアイコン形態で表示できる。ここで、プリンタ１００の機能は、ＡＰＩ関数の機能でもあり、ＡＰＩ関数の組み合わせに該当するモジュールの機能でもある。前述のように、プリンタ１００は、印刷作業やスキャン作業を処理するための制限された資源を有する埋め込みシステムの形態で設計されるので、一般にプリンタ１００には、マウス、キーボード、モニタのような一般的な入出力装置が装着されない。そこで一般にＵＩパネル１６０は、タッチスクリーン（ｔｏｕｃｈ  ｓｃｒｅｅｎ）や、小さいＬＣＤ（ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ）画面や、いくつの入力ボタンによって具現される。
【００２７】
図３は、本発明の一実施形態によるプリンタ１００のアプリケーション開発装置を示した図面である。図３に示した実施形態は、ＡＰＩ関数の組み合わせが、あらかじめクロスコンパイルされた形態のバイナリファイルであるモジュールを利用し、プリンタ１００のアプリケーションを開発する場合である。ホスト２００に保存されたクロスコンパイラによってコンパイルされる場合とは異なり、あらかじめクロスコンパイルされた形態のバイナリファイルであるモジュールの組み合わせに該当するアプリケーションが生成され、プリンタ１００のストレージ１２０に自動的に保存されるので、ホスト２００にクロスコンパイラとエミュレータとを設置する必要がなく、アプリケーションのアップロード過程及びダウンロード過程も不要になる。図３を参照すれば、ストレージ１２０には、Ｆ／Ｗ（ｆｉｒｍｗａｒｅ）ブロック３１、ラッパ（ｗｒａｐｐｅｒ）・ブロック３２、ＡＰＩブロック３３、モジュール（ｍｏｄｕｌｅ）・ブロック３４、及びソリューション（ｓｏｌｕｔｉｏｎ）・ブロック３５の階層的構造を有するデータブロックが保存されている。前述のように、ストレージ１２０には、かようなデータブロック以外にも、テキスト、イメージなどのコンテンツやアプリケーションなど多様なデータが保存される。
【００２８】
Ｆ／Ｗブロック３１は、プロセッサ１１０によって実行され、プリンタ１００のハードウェア要素を駆動することによって、プリンタ１００の多様な機能を遂行（ｐｅｒｆｏｒｍ）するファームウェアに該当するデータブロックである。かようなファームウェアの代表的な例としては、プリンタ１００のプラットホーム（ｐｌａｔｆｏｒｍ）を構成するＯＳ、デバイスドライバなどを挙げることができる。プリンタ１００のハードウェア要素の例としては、通信部１５０、印刷部１３０、スキャン部１４０、ＵＩパネル１６０などを挙げることができる。ファームウェアは、プリンタ１００の多様な機能それぞれを遂行するためのプリンタ１００のハードウェア要素の動作を、プロセッサ１１０で実行可能なバイナリコード（ｂｉｎａｒｙ  ｃｏｄｅ）で記述し、プロセッサ１１０は、かようなファームウェアによって、プリンタ１００の構成要素の動作を制御する。Ｆ／Ｗブロック３１は、プロセッサ１１０によって実行され、プリンタ１００の単位機能それぞれを遂行するネイティブ関数（ｎａｔｉｖｅ  ｆｕｎｃｔｉｏｎ）を含む。１つのネイティブ関数は、プリンタ１００の１つの単位機能を遂行するためのプリンタ１００のハードウェア構成要素の動作を、バイナリコードで記述する。例えば、１つのネイティブ関数は、スキャン部１４０のスキャン開始のような大きい機能を遂行し、別の１つのネイティブ関数は、印刷部１３０での用紙移送のためのモータの１°回転のような小さい機能を遂行する。プロセッサ１１０は、Ｆ／Ｗブロック３１に含まれたネイティブ関数それぞれによって、各ネイティブ関数に対応する機能が遂行されるように、プリンタ１００の少なくとも１つの構成要素の動作を制御する。
【００２９】
ラッパ・ブロック３２は、Ｆ／Ｗブロック３１のネイティブ関数と、ＡＰＩブロック３３のＡＰＩ関数とを１対１で連結するラッパ関数（ｗｒａｐｐｅｒ  ｆｕｎｃｔｉｏｎ）の集合に該当するデータブロックである。ＡＰＩブロック３３は、ラッパ・ブロック３２のラッパ関数を介して、Ｆ／Ｗブロック３１のネイティブ関数に１対１で連結され、プロセッサ１１０によって実行され、プリンタ１００の単位機能それぞれを遂行するＡＰＩ関数の集合に該当するデータブロックである。かようなＡＰＩ関数は、ネイティブ関数の上位階層に存在し、ネイティブ関数とは異なり、アプリケーション内で直接呼び出し（ｃａｌｌ）され、いかなるコンピュータシステムのＯＳにも関係なく使われてもよい。それにより、アプリケーション開発者は、ＰＣでかようなＡＰＩ関数を使用し、ＰＣではない他の埋め込みシステムのアプリケーションを開発できる。即ち、本実施形態でＡＰＩ関数は、アプリケーションが、プリンタ１００のファームウェアで、ある機能を遂行することを要請できるように、ファームウェアとアプリケーションとのインターフェーシングを行う役割を果たす。
【００３０】
モジュール・ブロック３４は、プロセッサ１１０によって実行され、ＡＰＩブロック３３のＡＰＩ関数のうちの一部のＡＰＩ関数の組み合わせに該当する機能を遂行するモジュールの集合に該当するデータブロックである。従来は、アプリケーション開発者がＰＣ上で、開発言語として指定されたプログラミング言語で、ハードウェアメーカーやベンダーから提供されたＡＰＩ関数を組み合わせ、スマートフォンのような埋め込みシステムのアプリケーションを作成した。それにより、プログラミング言語で作成されたアプリケーションを、埋め込みシステムで実行可能なバイナリファイルに翻訳するクロスコンパイルが要求される。本実施形態では、かようなクロスコンパイル過程を除去するために、モジュールそれぞれは、ＡＰＩブロック３３のＡＰＩ関数のうちの一部のＡＰＩ関数の組み合わせが、あらかじめクロスコンパイルされた形態のバイナリファイルである。即ち、本実施形態でのモジュールそれぞれは、ＡＰＩブロック３３のＡＰＩ関数のうちの一部のＡＰＩ関数の組み合わせを利用し、この組み合わせに該当するプリンタ１００の機能を、プリンタ１００で実行可能なバイナリコードで記述する。ここで、プリンタ１００で実行可能なバイナリコードとは、プリンタ１００のファームウェアによって実行可能なバイナリコードを意味し、結局、プロセッサ１１０によって実行可能なバイナリコードを意味する。
【００３１】
図４は、図３に示したＡＰＩブロック３３と、モジュール・ブロック３４との連結関係の一例を示した図面である。図４を参照すれば、モジュール１は、ＡＰＩ＿１とＡＰＩ＿２との組み合わせに該当し、モジュール２は、ＡＰＩ＿２、ＡＰＩ＿３及びＡＰＩ＿４の組み合わせに該当し、モジュール３は、ＡＰＩ＿３とＡＰＩ＿５との組み合わせに該当する。例えば、プリンタ１００のストレージ１２０に保存されたアドレスブックから、ユーザのメールアドレスを読み取るＡＰＩ関数、メールアドレスのうち一部を指定するＡＰＩ関数、及びあるメールアドレスを介して受信された電子メールを検出するＡＰＩ関数を組み合わせて、プリンタ１００のユーザのうち、あらかじめ指定された少なくとも１ユーザのメールアドレスを介して受信されたメールを検出するモジュールを生成できる。
【００３２】
再び図３を参照すれば、ソリューション・ブロック３５は、プリンタ１００のＡＰＩ関数を利用し、プリンタ１００のアプリケーションを開発するためのツールを、ＧＵＩ（ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）の形態で提供するアプリケーション開発ソリューションに該当するデータブロックである。図３に示した実施形態で、アプリケーション開発ソリューションは、ユーザが、ＡＰＩ関数の組み合わせに該当するモジュールのうち一部を選択して組み合わせることができるようにするためのグラフィック・ツールを提供する。さらに詳細に説明すれば、アプリケーション開発ソリューションは、ユーザとのインタラクション（ｉｎｔｅｒａｃｔｉｏｎ）を担当する最上位階層であり、この実行によって、モジュール・ブロック３４からモジュールの情報を読み取ることができ、モジュールの情報を、ユーザに提供できる。例えば、アプリケーション開発ソリューションは、モジュールの情報をアイコンの形態でユーザに表示できる。ユーザは、かようなモジュールの情報を参照し、モジュールを多様に組み合わせ、多様なアプリケーションを作成できる。さらに、アプリケーション開発ソリューションは、ユーザがモジュールを修正するか、あるいは新しいモジュールを生成できるようにする機能を提供する。例えば、アプリケーション開発ソリューションは、ＡＰＩブロック３３から、ＡＰＩ関数の情報を読み取ることができ、ＡＰＩ関数の情報をユーザに提供できる。ユーザは、かようなＡＰＩ関数の情報を参照し、モジュールを修正し、あるいは新しいモジュールを生成できる。
【００３３】
図３に示した実施形態でのアプリケーション開発ソリューションは、プリンタ１００のアプリケーションを開発するためのツールを、ホスト２００のＯＳで実行可能なバイナリコードで記述でき、アプリケーション開発ソリューションが、ホスト２００によって実行されるのである。あるいは、アプリケーション開発ソリューションは、プリンタ１００のアプリケーションを開発するためのツールを、プリンタ１００のＯＳで実行可能なバイナリコードで記述でき、アプリケーション開発ソリューションが、プリンタ１００によって実行されるのである。
【００３４】
図５は、本発明の他の実施形態によるプリンタ１００のアプリケーション開発装置を示した図面である。図５に示した実施形態は、ユーザによって開発されたアプリケーションが、プリンタ１００のストレージ１２０に保存されたクロスコンパイラによってコンパイルされる場合である。ホスト２００に保存されたクロスコンパイラによってコンパイルされる場合とは異なり、ユーザによって開発されたアプリケーションは、プリンタ１００のストレージ１２０に自動的に保存されてコンパイルされるので、ホスト２００にクロスコンパイラとエミュレータとを設置する必要がなく、アプリケーションのアップロード過程及びダウンロード過程も不要となる。図５を参照すれば、ストレージ１２０には、Ｆ／Ｗブロック５１、ラッパ・ブロック５２、コンパイラ・ブロック５３、ＡＰＩブロック５４及びソリューション・ブロック５５の階層的構造を有するデータブロックが保存されている。Ｆ／Ｗブロック５１、ラッパ・ブロック５２及びＡＰＩブロック５４は、図３に示したＦ／Ｗブロック３１、ラッパ・ブロック３２及びＡＰＩブロック３３と同じデータブロックであるから、これらについての説明は省略する。
【００３５】
コンパイラ・ブロック５３は、アプリケーション開発ソリューションを使用して開発されたアプリケーションのプログラミングコードを、プリンタ１００で実行可能なバイナリコードに翻訳するためのクロスコンパイラに該当するデータブロックである。ソリューション・ブロック５５は、プリンタ１００のＡＰＩ関数を利用し、プリンタ１００のアプリケーションを開発するためのツールを、ＧＵＩの形態で提供するアプリケーション開発ソリューションに該当するデータブロックである。図５に示した実施形態で、アプリケーション開発ソリューションは、ユーザがＡＰＩ関数のうち、一部を選択して組み合わせることができるようにするためのグラフィック・ツールを提供する。さらに詳細に説明すれば、アプリケーション開発ソリューションは、ユーザとのインタラクションを担当する最上位階層であり、ＡＰＩブロック５４から、この実行によって、ＡＰＩの情報を読み取ることができ、ＡＰＩの情報をユーザに提供できる。例えば、アプリケーション開発ソリューションは、ＡＰＩの情報をアイコンの形態でユーザに表示できる。ユーザは、かようなＡＰＩの情報を参照し、ＡＰＩを多様に組み合わせて多様なアプリケーションを作ることができる。
【００３６】
図５に示した実施形態でのアプリケーション開発ソリューションは、プリンタ１００のアプリケーションを開発するためのツールを、ホスト２００のＯＳで実行可能なバイナリコードで記述でき、アプリケーション開発ソリューションが、ホスト２００によって実行されるのである。あるいは、アプリケーション開発ソリューションは、プリンタ１００のアプリケーションを開発するためのツールを、プリンタ１００のＯＳで実行可能なバイナリコードで記述でき、アプリケーション開発ソリューションが、プリンタ１００によって実行できるのである。
【００３７】
図６は、図５に示したＡＰＩブロック５４と、ソリューション・ブロック５５との連結関係の一例を示した図面である。図６を参照すれば、アプリケーション（ＡＰＰ）１は、ＡＰＩ＿１とＡＰＩ＿２との組み合わせに該当し、アプリケーション２は、ＡＰＩ＿２、ＡＰＩ＿３及びＡＰＩ＿４の組み合わせに該当し、アプリケーション３は、ＡＰＩ＿３とＡＰＩ＿５との組み合わせに該当する。例えば、プリンタ１００のストレージ１２０に保存されたアドレスブックから、ユーザのメールアドレスを読み取るＡＰＩ関数、メールアドレスのうち一部を指定するＡＰＩ関数、あるメールアドレスを介して受信された電子メールを検出するＡＰＩ関数、電子メールのコンテンツを印刷可能な形態に変換するＡＰＩ関数、印刷用紙を移送するＡＰＩ関数、印刷可能な形態のデータを印刷するＡＰＩ関数などを組み合わせ、プリンタ１００のユーザのうち、あらかじめ指定された少なくとも１ユーザのメールアドレスを介して受信されたメールを印刷するアプリケーションを生成できる。前記のＡＰＩ関数は、一例に過ぎず、ハードウェアメーカーやベンダーによって、多様なＡＰＩ関数が提供される。
【００３８】
図７は、本発明の一実施形態によるプリンタ１００のアプリケーション開発方法のフローチャートである。図７に示したプリンタ・アプリケーション開発方法は、ＡＰＩ関数の組み合わせが、あらかじめクロスコンパイルされた形態のバイナリファイルであるモジュールを利用し、プリンタ１００のアプリケーションを開発する場合であり、図３に示したプリンタ１００及びホスト２００で、時系列的に処理される段階から構成される。従って、以下省略された内容であっても、図３に示したプリンタ１００及びホスト２００について、以上で説明された内容は、図７に示したプリンタ・アプリケーション開発方法にも適用される。
【００３９】
７１段階で、ユーザによって、プリンタ１００の電源がオン（ＯＮ）になれば、プリンタ１００のハードウェア要素に電力が供給になる。プリンタ１００は、ホスト２００と、ＵＳＢケーブル、ネットワーク・ケーブルのような通信ケーブルによって連結されている。
７２段階でホスト２００は、プリンタ１００を認識する。例えば、ホスト２００には、プリンタ１００のドライバが設置されており、ホスト２００のＯＳは、このドライバによって、プリンタ１００を認識できる。ホスト２００とプリンタ１００とが１対１で連結されていれば、ホスト２００は、プリンタ１００をローカルプリンタと認識する。ホスト２００とプリンタ１００とが、ネットワークを介して連結されていれば、ホスト２００は、プリンタ１００をネットワークプリンタと認識する。
【００４０】
図３に示した実施形態で、プリンタ１００のアプリケーション開発ソリューションなど、プリンタ１００のアプリケーション開発のためのデータは、プリンタ１００のストレージ１２０に保存されている。ホスト２００は、プリンタ１００のストレージ１２０から、プリンタ１００のアプリケーション開発ソリューションを読み取って実行する。ホスト２００は、プリンタ１００のアプリケーション開発ソリューションを利用して生成されたアプリケーションを、プリンタ１００のストレージ１２０に保存する。このように、ホスト２００がプリンタ１００のストレージ１２０からあるデータを読み込み、又は、プリンタ１００のストレージ１２０にあるデータを保存するためには、ホスト２００は、プリンタ１００のストレージ１２０を、ホスト２００のローカルストレージのように認識できねばならない。即ち、図７に示した実施形態でホスト２００は、プリンタ１００をローカルプリンタ又はネットワークプリンタと認識すると同時に、プリンタ１００のストレージ１２０を認識する。
【００４１】
ホスト２００がプリンタ１００のストレージ１２０を認識するためには、ホスト２００が、ホスト２００と、プリンタ１００のストレージ１２０とを連結する通信媒体が何かであるかを識別せねばならず、この通信媒体のタイプによって、ホスト２００と、プリンタ１００のストレージ１２０とを連結する通信プロトコルが変わる。それにより、７３段階でホスト２００は、ホスト２００と、プリンタ１００のストレージ１２０との連結方式を識別する。例えば、ホスト２００と、プリンタ１００のストレージ１２０とが、ＵＳＢで連結されている場合、７３段階でホスト２００は、ホスト２００と、プリンタ１００のストレージ１２０との連結方式をＵＳＢと識別し、７４段階に進む。もしホスト２００と、プリンタ１００のストレージ１２０とがネットワークで連結されている場合、７３段階でホスト２００は、ホスト２００と、プリンタ１００のストレージ１２０との連結方式をネットワークと識別し、７５段階に進む。７４段階でホスト２００は、ＵＳＢのＭＳＣプロトコルを介して、プリンタ１００のストレージ１２０を移動式ディスクとして認識する。７５段階でホスト２００は、ＳＭＢプロトコルを介して、プリンタ１００のストレージ１２０をネットワークドライブとして認識する。
【００４２】
７６段階で、ホスト２００がユーザからプリンタ１００のアプリケーション開発ソリューションに対する実行命令を入力され、これをプリンタ１００に伝達すると、プリンタ１００は、プリンタ１００のストレージ１２０のＡＰＩブロック３３に含まれたＡＰＩ関数の実行、モジュール・ブロック３４に含まれたモジュールの実行、及び、ソリューション・ブロック３５に含まれたアプリケーション開発ソリューションの実行に必要なストレージ１２０のメモリ空間を確保し、ＡＰＩ関数、モジュール、アプリケーション開発ソリューションを初期化することによって、アプリケーション開発に要求されるプリンタ１００の環境を設定する。
例えば、ホスト２００の画面には、プリンタ１００のアプリケーション開発ソリューションを示すアイコンが表示される。ユーザが、マウスのような入力装置を利用してこのアイコンをクリックすれば、ホスト２００は、ユーザからプリンタ１００のアプリケーション開発ソリューションに対する実行命令を入力され、このように入力された実行命令をプリンタ１００に伝達する。ＡＰＩ関数、モジュール、アプリケーション開発ソリューションの初期化の例としては、ＡＰＩ関数、モジュール、アプリケーション開発ソリューションのプログラム内部変数を初期値に設定することを挙げることができる。７６段階でのプリンタ１００の環境設定が完了すれば、プリンタ１００のストレージ１２０に保存されたアプリケーション開発ソリューションは、ホスト２００によって読み取り可能な状態に置かれる。７６段階でのプリンタ１００の環境設定過程は、プリンタ１００のハードウェア性能、プリンタ１００のＡＰＩ関数の特性などによっては省略できる。
【００４３】
７７段階でホスト２００は、７４段階又は７５段階で認識されたプリンタ１００のストレージ１２０から、プリンタ１００のアプリケーション開発ソリューションを読み取って実行する。即ち、アプリケーション開発ソリューションの実行によって、プリンタ１００のアプリケーションを開発するためのグラフィック・ツールが表示されたウィンドウ（ｗｉｎｄｏｗ）が、ホスト２００の画面上に現れる。７８段階でホスト２００は、プリンタ１００のアプリケーションを開発するためのグラフィック・ツールを含むウィンドウ内で、７４段階又は７５段階で認識されたプリンタ１００のストレージ１２０から、プリンタ１００の機能を示すモジュールを読み取ってアイコンで表示する。
【００４４】
７９段階でホスト２００は、ユーザから入力された情報によって、７８段階で表示されたモジュールのうちの一部のモジュールを組み合わせることによって、ユーザの入力情報に対応するアプリケーションを生成する。ユーザが、７７段階で表示されたウィンドウ内のモジュールに対応するアイコンそれぞれの機能を認知すると、ユーザは、マウスのような入力装置を利用し、ユーザが所望するアプリケーションの構成要素に該当するモジュールを組み合わせる。前述のように、各モジュールは、ＡＰＩ関数の特定組み合わせに該当するプリンタ１００の機能を、プリンタ１００で実行可能なバイナリコードで記述する。ホスト２００は、ユーザによって指定されたモジュールの組み合わせによって、このモジュールそれぞれによって、バイナリコードで記述されたプリンタ１００の機能を組み合わせることによって、バイナリコードで記述されたアプリケーションを生成できる。７１０段階でホスト２００は、７９段階で生成されたアプリケーションを、７４段階又は７５段階で認識されたプリンタ１００のストレージ１２０に保存する。
【００４５】
一方、ホスト２００ではないプリンタ１００で、アプリケーションを開発する場合には、ホスト２００が、プリンタ１００及びプリンタ１００のストレージを認識する必要がないので、７２段階ないし７５段階は省略され、７６段階ないし７１０段階は、ホスト２００ではないプリンタ１００によって遂行される。例えば、プリンタ１００が、ユーザからプリンタ１００のアプリケーション開発ソリューションに対する実行命令を入力されれば、アプリケーション開発に要求されるプリンタ１００の環境を設定した後、アプリケーション開発ソリューションを実行する。
【００４６】
図８は、本発明の一実施形態によるプリンタ１００のアプリケーション実行方法のフローチャートである。図８に示したプリンタ・アプリケーション実行方法は、ＡＰＩ関数の組み合わせが、あらかじめクロスコンパイルされた形態のバイナリファイルであるモジュールを利用して開発されたプリンタ１００のアプリケーションを実行する場合であり、図３に示したプリンタ１００で、時系列的に処理される段階から構成される。従って、以下で省略された内容であっても、図３に示したプリンタ１００について、以上で説明した内容は、図８に示したプリンタ・アプリケーション実行方法にも適用される。
【００４７】
８１段階でプリンタ１００は、プリンタ１００のストレージ１２０に保存されたアプリケーションを表示する。アプリケーションは、ＵＩパネル１６０上にアイコン形態で表示される。
８２段階でプリンタ１００は、ユーザから８１段階で表示されたアプリケーションのうちいずれか一つを指示する情報を入力されると、ユーザによって選択されたアプリケーションを実行する。ユーザは、ＵＩパネル１６０上に表示されたアイコンのうちいずれか一つをタッチすることによって、アプリケーションを選択できる。
８３段階でプリンタ１００は、８２段階でのアプリケーションの実行によって、このアプリケーションに含まれたモジュールをそのモジュールの組み合わせ順序に従って、順序通りモジュール・ブロック３４から読み取って実行する。
８４段階でプリンタ１００は、８４段階でのモジュールの実行によって、このモジュールそれぞれに含まれたＡＰＩ関数を、このＡＰＩ関数の組み合わせ順序に従って順序通りＡＰＩブロック３３から読み取って実行する。８５段階でプリンタ１００は、８４段階でのＡＰＩ関数の実行によって、このＡＰＩ関数それぞれをネイティブ関数それぞれに連結するラッパ関数を介して、ＡＰＩ関数それぞれに対応するネイティブ関数を、Ｆ／Ｗブロック３１から順序通り読み取って実行することによって、プリンタ１００のハードウェア要素を駆動させる。このように、プリンタ１００のハードウェア要素が駆動されることによって、アプリケーションが示すプリンタ１００の機能が遂行される。
【００４８】
図９は、本発明の他の実施形態によるプリンタ１００のアプリケーション開発方法のフローチャートである。図９に示したプリンタ・アプリケーション開発方法は、ユーザによって開発されたアプリケーションが、プリンタ１００のストレージ１２０に保存されたクロスコンパイラによってコンパイルされる場合であり、図５に示したプリンタ１００及びホスト２００で、時系列的に処理される段階から構成される。従って、以下で省略された内容であっても、図５に示したプリンタ１００及びホスト２００について、以上で説明した内容は、図９に示したプリンタ・アプリケーション開発方法にも適用される。
【００４９】
ホスト２００がプリンタ１００及びプリンタ１００のストレージを認識する過程は、図８に示したアプリケーション開発方法と同一であるので、９１段階ないし９５段階についての説明は、７１段階ないし７５段階の説明を引用する。また、残りの段階についても、図８に示したアプリケーション開発方法と違いのある部分を中心に説明する。
【００５０】
９６段階で、ホスト２００がユーザからプリンタ１００のアプリケーション開発ソリューションに対する実行命令を入力され、これをプリンタ１００に伝達すると、プリンタ１００は、プリンタ１００のストレージ１２０のコンパイラ・ブロック５３に含まれたクロスコンパイラの実行、ＡＰＩブロック３３に含まれたＡＰＩ関数の実行、及び、ソリューション・ブロック３５に含まれたアプリケーション開発ソリューションの実行に必要なストレージ１２０のメモリ空間を確保して、クロスコンパイラ、ＡＰＩ関数、アプリケーション開発ソリューションを初期化することによって、アプリケーション開発に要求されるプリンタ１００の環境を設定する。
９７段階でホスト２００は、９４段階又は９５段階で認識されたプリンタ１００のストレージ１２０から、プリンタ１００のアプリケーション開発ソリューションを読み取って実行する。
９８段階でホスト２００は、プリンタ１００のアプリケーションを開発するためのグラフィック・ツールを含むウィンドウ内で、９４段階又は９５段階で認識されたプリンタ１００のストレージ１２０からプリンタ１００の機能それぞれを示すＡＰＩを読み取ってアイコンで表示する。
９９段階でホスト２００は、ユーザから入力された情報によって、９８段階で表示されたＡＰＩのうち、一部ＡＰＩを組み合わせることによって、ユーザの入力情報に対応するアプリケーションを生成する。
９１０段階でホスト２００は、９９段階で生成されたアプリケーションを、９４段階又は９５段階で認識されたプリンタ１００のストレージ１２０に保存する。
９１１段階でプリンタ１００は、９１０段階で保存されたアプリケーションに係わるクロスコンパイルを遂行することによって、プリンタ１００で実行可能なバイナリコードを有するアプリケーションを生成し、プリンタ１００のストレージ１２０に保存する。
【００５１】
図７に示したアプリケーション開発方法と同様に、ホスト２００ではないプリンタ１００で、アプリケーションを開発する場合であるならば、ホスト２００がプリンタ１００及びプリンタ１００のストレージを認識する必要がないので、９２段階ないし９５段階は省略され、９６段階ないし９１０段階は、ホスト２００ではないプリンタ１００によって遂行される。
【００５２】
図１０は、本発明の他の実施形態によるプリンタ１００のアプリケーション実行方法のフローチャートである。図１０に示したプリンタ・アプリケーション実行方法は、プリンタ１００のストレージ１２０に保存されたクロスコンパイラによって、アプリケーションがコンパイルされて実行される場合であり、図５に示したプリンタ１００で、時系列的に処理される段階から構成される。従って、以下で省略された内容であっても、図５に示したプリンタ１００について、以上で説明した内容は、図１０に示したプリンタ・アプリケーション実行方法にも適用される。
【００５３】
ユーザによってアプリケーションが選択される過程は、図８に示したアプリケーション実行方法と同一であるので、１０１段階及び１０２段階についての説明は、８１段階及び８２段階の説明を引用する。また、残りの段階についても、図８に示したアプリケーション実行方法と違いのある部分を中心に説明する。
【００５４】
１０３段階でプリンタ１００は、１０２段階でのアプリケーションの実行によって、このアプリケーションに含まれたＡＰＩ関数を、そのＡＰＩ関数の組み合わせ順序に従って順序通りＡＰＩブロック３３から読み取って実行する。
１０４段階でプリンタ１００は、１０３段階でのＡＰＩ関数の実行によって、このＡＰＩ関数それぞれをネイティブ関数それぞれに連結するラッパ関数を介して、ＡＰＩ関数それぞれに対応するネイティブ関数をＦ／Ｗブロック３１から順序通り読み取って実行することによって、プリンタ１００のハードウェア要素を駆動する。
【００５５】
図１１は、本発明の一実施形態によるプリンタ１００のアプリケーションを開発するためのグラフィック・ツールを含むウィンドウ１１を示した図面である。図１１に示したウィンドウ１１は、プリンタ１００の機能それぞれを記述するモジュールを示すアイコンが表示されているモジュール領域１１４、このアイコンを組み合わせてモジュールの組み合わせに該当するアプリケーションを生成するべき作業領域１１５、及び残りのツールから構成される。
前記残りのツールの例を挙げれば、図１１に示しているように、ウィンドウ１１の上端には、アプリケーションの目録が表示されている「Ａｐｐｌｉｃａｔｉｏｎ  Ｌｉｓｔ」（アプリケーションリスト）ボックス１１１、アプリケーション目録に新たなアプリケーションを追加するための「Ａｄｄ  Ｉｔｅｍ」（アイテム追加）ボタン１１２、アプリケーション目録から既存のアプリケーションを削除するための「Ｄｅｌｅｔｅ  Ｉｔｅｍ」（アイテム削除）ボタン１１３がある。また、ウィンドウ１１の下端には、アプリケーションの生成を完了するための「ＯＫ」ボタン１１６、アプリケーションの生成作業を取消すための「Ｃａｎｃｅｌ」ボタン１１７が表示される。
【００５６】
モジュール領域１１４に表示されるアイコンの例を挙げれば、図１１に示しているように、モジュール領域１１４には、プリンタ１００に投入された文書をスキャンする機能を具現する「Ｄｏｃｕｍｅｎｔ  Ｓｃａｎ」モジュール、プリンタ１００に保存されたデータ、例えば、テキスト、イメージなどを印刷する機能を具現する「Ｄａｔａ  Ｐｒｉｎｔ」モジュール、及び、プリンタ１００に投入された文書をスキャンして印刷することによって、この文書を複写する機能を具現する「Ｄｏｃｕｍｅｎｔ  Ｃｏｐｙ」モジュール、の各アイコンが表示される。
【００５７】
さらに、モジュール領域１１４には、プリンタ１００に保存されたデータ、例えば、テキスト、イメージなどを含むメールを作成する機能を具現する「Ｍａｉｌ  Ｍａｋｅ」モジュール、プリンタ１００のユーザのうちあらかじめ指定された少なくとも１ユーザのメールアドレスにメールを発送する機能を具現する「Ｍａｉｌ  Ｔｒａｎｓｍｉｔ」モジュール、及び、プリンタ１００のユーザのうちあらかじめ指定された少なくとも１ユーザのメールアドレスを介して受信されたメールを検出する「Ｍａｉｌ  Ｒｅｃｅｉｖｅ」モジュール、の各アイコンが表示される。
【００５８】
アイコンは、一般的に同じ大きさの四角形ないし円形の特定形態で表示されるので、あるアイコン上にこのアイコンに対応するモジュールの情報を示すには限界がある。従って、ユーザによって、あるアイコンがダブルクリックされた場合、このアイコンの周辺に別途の風船状に、このアイコンに対応するモジュールの詳細情報ないし追加情報が表示されるように設定できる。あるいは、ユーザによって、あるアイコンがダブルクリックされた場合、このアイコンの周辺でない、ウィンドウ１１の特定領域に、このアイコンに対応するモジュールの詳細情報が表示されるように設定できる。例えば、プリンタ１００のユーザのうち、あらかじめ指定された少なくとも１ユーザのメールアドレスにメールを発送する機能を遂行する「Ｍａｉｌ  Ｔｒａｎｓｍｉｔ」モジュールのアイコンがダブルクリックされれば、プリンタ１００のアドレスブックに登録されているユーザのメールアドレスが風船状に表示されるように設定できる。
【００５９】
プリンタ１００のアプリケーション開発者、即ち、ホスト２００のユーザは、モジュール領域１１４に表示されたアイコンをクリックした状態で、作業領域１１５に移動させ、このように移動したアイコンをユーザが所望の順序に整列した後、「ＯＫ」ボタン１１６をクリックすることによって、アプリケーションを生成できる。図１１に示したウィンドウ１１の作業領域１１５でのアイコンの整列順序は、アイコンに対応するモジュール間のデータ入出力関係を示している。例えば、次のような方式で、アイコンに対応するモジュール間のデータ入出力関係を定義できる。Ａアイコンの左側ないし上側にＢアイコンを位置させれば、Ａアイコンに対応するモジュールに、Ｂアイコンに対応するモジュールから出力されたデータが入力され、Ａアイコンの右側ないし下側にＣアイコンを位置させれば、Ａアイコンに対応するモジュールから出力されたデータが、Ｂアイコンに対応するモジュールに入力されるように、アイコンに対応するモジュール間のデータ入出力関係を定義できる。ユーザがアイコンに対応するモジュール間のデータ入出力関係を容易に識別できるように、アイコン間には、データ入出力関係を示す矢印が表示される。
【００６０】
図１２は、図１１に示したウィンドウ１１のグラフィック・ツールを利用し、アプリケーションを開発する一例を示した図面である。図１２に示した例は、プリンタ１００に投入された文書をスキャンした後、このようにスキャンされた文書をプリンタ１００のアドレスブックに登録されているユーザのうち、あらかじめ指定されたユーザに自動的に発送するアプリケーションを開発する場合である。プリンタ１００のアプリケーション開発者、即ち、ホスト２００のユーザが、ホスト２００の画面上で、プリンタ１００のアプリケーション開発ソリューションを示すアイコンをクリックすると、そのアプリケーション開発ソリューションが実行開始され、ホスト２００の画面上には、図１１に示したウィンドウ１１が表示される。
【００６１】
次に、ホスト２００のユーザは、例えば前記のような機能を遂行するアプリケーションを生成するために、「Ｄｏｃｕｍｅｎｔ  Ｓｃａｎ」モジュールのアイコン、「Ｍａｉｌ  Ｍａｋｅ」モジュールのアイコン、「Ｍａｉｌ  Ｔｒａｎｓｍｉｔ」モジュールのアイコンを作業領域１１５に移動させて整列させた後、「ＯＫ」ボタン１１６をクリックする。さらに詳細に説明すれば、図１２に示しているように、ホスト２００のユーザは、プリンタ１００に投入された文書のスキャンイメージを含むメールが作成されるようにするために、「Ｄｏｃｕｍｅｎｔ  Ｓｃａｎ」モジュールのアイコンの右側に、「Ｍａｉｌ  Ｍａｋｅ」モジュールのアイコンを位置させる。それにより、「Ｄｏｃｕｍｅｎｔ  Ｓｃａｎ」モジュールの、当該アプリケーション生成後の実行により出力された文書のスキャンイメージは、「Ｍａｉｌ  Ｍａｋｅ」モジュールに入力され、「Ｍａｉｌ  Ｍａｋｅ」モジュールの、当該アプリケーション生成後の実行により文書のスキャンイメージを含むメールを作成する。また、ホスト２００のユーザは、プリンタ１００に投入された文書のスキャンイメージを含むメールを、プリンタ１００のアドレスブックに登録されているユーザのうち、ホスト２００のユーザによって指定された少なくとも１ユーザのメールアドレスに発送するために、「Ｍａｉｌ  Ｍａｋｅ」モジュールのアイコンの右側に、「Ｍａｉｌ  Ｔｒａｎｓｍｉｔ」モジュールのアイコンを位置させる。ホスト２００のユーザが「Ｍａｉｌ  Ｔｒａｎｓｍｉｔ」モジュールをダブルクリックすれば、プリンタ１００のアドレスブックに登録されているユーザのメールアドレスが表示される。次に、ホスト２００のユーザは、このメールアドレスのうち少なくとも一つをクリックすることによって、メールのあて先に該当する少なくとも１つのメールアドレスを選択する。それにより、「Ｍａｉｌ  Ｍａｋｅ」モジュールの実行により出力されたメールは、「Ｍａｉｌ  Ｔｒａｎｓｍｉｔ」モジュールに入力され、「Ｍａｉｌ  Ｔｒａｎｓｍｉｔ」モジュールの、当該アプリケーション生成後の実行により、このメールは、ユーザによって選択された少なくとも１つのメールアドレスに発送される。
【００６２】
次に、ホスト２００のユーザは、「ＯＫ」ボタン１１６をクリックすることによって、前記のような機能を遂行するアプリケーションの生成が完了し、ウィンドウ１１の作業領域１１５に「Ｎｅｗ＿Ａｐｐｌｉｃａｔｉｏｎ」（新たなアプリケーション）アイコンが表示される。ホスト２００のユーザが、ウィンドウ１１の作業領域１１５に表示された該アイコンをダブルクリックすれば、アプリケーションの名称を入力できるボックスが生成され、このボックスにアプリケーションの名称を入力する。例えば、ホスト２００のユーザによって選択されたユーザが、Ａグループであるならば、「Ａグループ文書発送」という名称を入力できる。次に、ホスト２００のユーザは、「Ａｄｄ  Ｉｔｅｍ」ボタン１１２をクリックすることによって、アプリケーション目録に新たなアプリケーションを追加できる。アプリケーション目録に新たなアプリケーションが追加されれば、プリンタ１００のＵＩパネル１６０には、このアプリケーションが表示される。プリンタ１００のユーザは、プリンタ１００のＵＩパネル１６０を介して、アプリケーションを実行できる。
【００６３】
例えば、プリンタ１００のＵＩパネル１６０は、タッチスクリーンに具現され、ユーザは、タッチスクリーン上のアプリケーションを指でタッチすることによって、このアプリケーションを実行できる。プリンタ１００のユーザが、プリンタ１００にある文書を投入し、プリンタ１００のＵＩパネル１６０に表示された前記のアプリケーションをタッチすると、あらかじめ指定されたユーザに、この文書の複写が自動的に発送される。
【００６４】
図１３は、図１１に示したウィンドウのグラフィック・ツールを利用し、アプリケーションを開発する他の例を示した図面である。図１３に示した例は、あらかじめ指定されたメールアドレスを介して、プリンタ１００にメールが受信された場合、このメールを自動的に印刷するアプリケーションを開発する場合である。プリンタ１００のアプリケーション開発のために、プリンタ１００のアプリケーション開発ソリューションを実行し、完成したアプリケーションを追加する部分は、図１２に示した例と同一であるので、以下では、ウィンドウ１１の作業領域１１５で、アプリケーションを生成する過程だけについて説明する。
【００６５】
ホスト２００のユーザは、前記のような機能を遂行するアプリケーションを生成するために、「Ｍａｉｌ  Ｒｅｃｅｉｖｅ」モジュールのアイコン、及び「Ｄａｔａ  Ｐｒｉｎｔ」モジュールのアイコンを、作業領域１１５に移動させて整列させた後、「ＯＫ」ボタン１１６をクリックする。さらに詳細に説明すれば、図１３に示しているように、あらかじめ指定されたメールアドレスを介して、プリンタ１００に受信されたメールを印刷するために、「Ｍａｉｌ  Ｒｅｃｅｉｖｅ」モジュールのアイコンの右側に、「Ｄａｔａ  Ｐｒｉｎｔ」モジュールのアイコンを位置させる。それにより、「Ｍａｉｌ  Ｒｅｃｅｉｖｅ」モジュールの、当該アプリケーション生成後の実行により出力されたメールは、「Ｄａｔａ  Ｐｒｉｎｔ」モジュールに入力され、「Ｄａｔａ  Ｐｒｉｎｔ」モジュールの、当該アプリケーション生成後の実行により、このメールは印刷される。
【００６６】
図１１ないし図１３に示したアプリケーション開発例は、図５に示したアプリケーション開発装置及び図９に示したアプリケーション開発方法にも適用される。例えば、ウィンドウ１１には、プリンタ１００の機能それぞれを記述するモジュールを示すアイコンが表示されているモジュール領域１１４の代わりに、プリンタ１００の機能それぞれを記述するＡＰＩ関数を示すアイコンが表示されるＡＰＩ領域が含まれてもよい。一方、このように開発されたアプリケーションは、プリンタ１００と同一のプロセッサやファームウェアを使用する他種の製品でも実行できるので、ＤＬＮＡ（ｄｉｇｉｔａｌ  ｌｉｖｉｎｇ  ｎｅｔｗｏｒｋ  ａｌｌｉａｎｃｅ）技術などを利用し、プリンタ１００が保有したアプリケーションを、他種製品と共有することも可能である。
【００６７】
前記のような実施形態によれば、アプリケーション開発ソリューションが、プリンタ１００に保存されており、このアプリケーション開発ソリューションを利用して開発されたアプリケーションが、プリンタ１００に即、保存されるので、アプリケーションのアップロード過程及びダウンロード過程がなくなる。また、ユーザが、グラフィック形態で表示されたプリンタ１００の機能を組み合わせてアプリケーションを開発できるので、コンピュータ知識が十分ではない一般ユーザも、容易にアプリケーションを開発できる環境を提供できる。また、あらかじめクロスコンパイルされた形態のバイナリファイルであるモジュールを組み合わせることによってアプリケーションを生成し、プリンタ１００に保存されたクロスコンパイラを利用してアプリケーションをコンパイルすることによって、ホスト２００にクロスコンパイラとエミュレータとが設置される必要がなく、コンピュータ知識が十分ではない一般ユーザも、容易にアプリケーションを開発できる環境を提供できる。それにより、プリンタ１００に対するユーザ要求事項が即座に充足される。
【００６８】
一方、前記のようなアプリケーション開発方法及びアプリケーション実行方法は、コンピュータで実行できるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を利用し、前記プログラムを動作させる汎用デジタルコンピュータで具現される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体（例えば、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、フロッピー（登録商標）ディスク、ハードディスクなど）、光学的判読媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤ）のような記録媒体を含む。
【００６９】
以上、本発明についてその望ましい実施形態を中心に説明した。本発明が属する技術分野で当業者であるならば、本発明が、本発明の本質的な特性からはずれない範囲で変形された形態で具現可能であるということを理解できるであろう。従って、開示された実施形態は、限定的な観点でなく、説明的な観点から考慮されねばならない。本発明の範囲は、前述の説明でなく特許請求の範囲に示されており、それと同等な範囲内にあるあらゆる差異点は、本発明に含まれたものであると解釈されねばならない。
【産業上の利用可能性】
【００７０】
本発明の画像形成装置のアプリケーションを開発する方法及びその装置は、ＰＣのようなホストや、プリンタのような画像形成装置に係わる技術分野に効果的に適用可能である。
【符号の説明】
【００７１】
１１        ウィンドウ
３１，５１        Ｆ／Ｗブロック
３２，５２        ラッパ・ブロック
３３，５４        ＡＰＩブロック
３４        モジュール・ブロック
３５，５５        ソリューション・ブロック
５３        コンパイラ・ブロック
１００        プリンタ
１１０        プロセッサ
１１１        「Ａｐｐｌｉｃａｔｉｏｎ  Ｌｉｓｔ」ボックス
１１２        「Ａｄｄ  Ｉｔｅｍ」ボタン
１１３        「Ｄｅｌｅｔｅ  Ｉｔｅｍ」ボタン
１１４        モジュール領域
１１５        作業領域
１１６        「ＯＫ」ボタン
１１７        「Ｃａｎｃｅｌ」ボタン
１２０        ストレージ
１３０        印刷部
１４０        スキャン部
１５０        通信部
１６０        ユーザインターフェース（ＵＩ）パネル
２００        ホスト
【図１】
2012252706.tif 000003
【図２】
2012252706.tif 000004
【図３】
2012252706.tif 000005
【図４】
2012252706.tif 000006
【図５】
2012252706.tif 000007
【図６】
2012252706.tif 000008
【図７】
2012252706.tif 000009
【図８】
2012252706.tif 000010
【図９】
2012252706.tif 000011
【図１０】
2012252706.tif 000012
【図１１】
2012252706.tif 000013
【図１２】
2012252706.tif 000014
【図１３】
2012252706.tif 000015