(57)【要約】【課題】実装コードの開発知識のないユーザであっても、情報処理システムを新たな外部サービスに柔軟に対応させることが可能な技術を提供すること。【解決手段】外部サービスによって公開されるＡＰＩに関するＡＰＩ情報と、ＡＰＩの使用順序に関するＡＰＩシーケンス情報と、機能実行装置８０の内部機能をＡＰＩに基づき外部サービスに連携させる機能（ファンクション）に関するファンクション情報との少なくともいずれかを取得する外部サービス対応情報取得部１１と、外部サービス対応情報取得部１１によって取得された情報を記憶する外部サービス対応情報記憶部１２と、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報の少なくともいずれかに基づいて、機能実行装置８０の内部機能と外部サービスとを連携させたファンクションを実行する外部サービス連携部１３と、を備える。【選択図】図２
2015064682.tif 000002
【特許請求の範囲】
【請求項１】
外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得する外部サービス対応情報取得部と、
前記外部サービス対応情報取得部によって取得された情報を記憶する外部サービス対応情報記憶部と、
前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する外部サービス連携部と、
を備えた外部サービス連携装置。
【請求項２】
前記外部サービス対応情報取得部は、外部から受信する定義情報を解析することにより、前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかを生成して前記外部サービス対応情報記憶部に記憶させることを特徴とする請求項１に記載の外部サービス連携装置。
【請求項３】
前記ファンクション情報には、該ファンクションに対応する前記ＡＰＩシーケンス情報を特定するＡＰＩシーケンス特定情報および該ファンクションにおいて連携させる前記内部機能を特定する内部機能特定情報が含まれ、
前記外部サービス連携部は、前記ファンクション情報に含まれるＡＰＩシーケンス特定情報の示すＡＰＩシーケンス情報を参照し、該ＡＰＩシーケンス情報の示す使用順序で前記ＡＰＩ情報に基づき前記外部サービスとの通信を行うとともに、前記ファンクション情報に含まれる内部機能特定情報の示す内部機能を前記機能実行装置に実行させることにより、該ファンクションを実行することを特徴とする請求項１または請求項２に記載の外部サービス連携装置。
【請求項４】
前記外部サービス連携部に実行させるファンクションをユーザに選択させるユーザインタフェース部をさらに備えることを特徴とする請求項１から請求項３のいずれか１項に記載の外部サービス連携装置。
【請求項５】
前記外部サービス連携部は、前記内部機能の実行結果を用いて前記外部サービスとの通信を行うことを特徴とする請求項１から請求項４のいずれか１項に記載の外部サービス連携装置。
【請求項６】
前記外部サービス連携部は、前記外部サービスとの通信結果を用いて前記機能実行装置に前記内部機能を実行させることを特徴とする請求項１から請求項５のいずれか１項に記載の外部サービス連携装置。
【請求項７】
請求項１から請求項６のいずれか１項に記載の外部サービス連携装置と、
前記機能実行装置と、
を含む外部サービス連携システム。
【請求項８】
前記機能実行装置として画像形成装置を含むことを特徴とする請求項７に記載の外部サービス連携システム。
【請求項９】
外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得し、
前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する、外部サービス連携方法。
【請求項１０】
外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得する外部サービス対応情報取得ステップと、
前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する外部サービス連携ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内部機能と外部サービスとを連携させる技術に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング環境において、様々な外部サービスが提供されている。ユーザは、様々な外部サービスの中からニーズに合うものを選択し、自身の利用する情報処理システム内部の機能と連携させて利用したい。例えば、外部の文書管理サービスによって提供されるファイルをダウンロードして印刷したり、スキャナで取り込んだデータを外部の文書管理サービスにアップロードする利用形態がある。このため、内部の機能と連携させながら様々な外部サービスに柔軟に対応可能な外部サービス連携システムが望まれる。
【０００３】
このような課題に関連する技術が、特許文献１に記載されている。この関連技術は、外部サービス毎の個別の処理を行うサービス通信部と、複数のサービス通信部から共通に利用されるユーザインタフェース制御部とを有する。この関連技術では、サービス通信部は、該当する外部サービスの管理情報を管理するとともに、該当する外部サービスとの通信を行う。ユーザインタフェース制御部は、ユーザにより選択された外部サービスに対応するサービス通信部で管理される管理情報に基づいて、外部サービスを利用するためのユーザインタフェースを提供する。これにより、この関連技術は、新たな外部サービスに対応する際に、その外部サービスのためのユーザインタフェース制御部の実装コードを追加しなくてよく、その外部サービスに依存するサービス通信部の実装コードを追加すればよい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−４９７８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のように、特許文献１に記載された関連技術では、新たな外部サービスに対応するために、その外部サービスに依存するサービス通信部の実装コードを追加する必要がある。しかしながら、例えば、エンドユーザ、情報処理システムや外部サービスの保守員、または、システムインテグレーター等は、実装コードの開発知識を持たない場合も多い。そのため、この関連技術によって、情報処理システムを新たな外部サービスに対応させることは、実装コードの開発知識のないユーザにとって難しい。
【０００６】
本発明は、上述の課題を解決するためになされたもので、実装コードの開発知識のないユーザであっても、情報処理システムを新たな外部サービスに柔軟に対応させることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の外部サービス連携装置は、外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得する外部サービス対応情報取得部と、前記外部サービス対応情報取得部によって取得された情報を記憶する外部サービス対応情報記憶部と、前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する外部サービス連携部と、を備える。
【０００８】
また、本発明の外部サービス連携システムは、上述の外部サービス連携装置と、前記機能実行装置と、を含む。
【０００９】
また、本発明の外部サービス連携方法は、外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得し、前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する。
【００１０】
また、本発明のコンピュータ・プログラムは、外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得する外部サービス対応情報取得ステップと、前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する外部サービス連携ステップと、をコンピュータ装置に実行させる。
【発明の効果】
【００１１】
本発明は、実装コードの開発知識のないユーザであっても、情報処理システムを新たな外部サービスに柔軟に対応させることが可能な技術を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施の形態としての外部サービス連携システムの構成を示すブロック図である。
【図２】本発明の第１の実施の形態としての外部サービス連携システムの機能ブロック図である。
【図３】本発明の第１の実施の形態としての外部サービス連携システムのハードウェア構成の一例を示す図である。
【図４】本発明の第１の実施の形態としての外部サービス連携システムの外部サービス対応動作を説明するフローチャートである。
【図５】本発明の第１の実施の形態としての外部サービス連携システムの外部サービス連携動作を説明するフローチャートである。
【図６】本発明の第２の実施の形態としての外部サービス連携システムの機能ブロック図である。
【図７】本発明の第２の実施の形態としての外部サービス連携システムのハードウェア構成の一例を示す図である。
【図８】本発明の第２の実施の形態におけるＡＰＩ定義ファイルの一例を説明する図である。
【図９】本発明の第２の実施の形態におけるＡＰＩ情報の一例を説明する図である。
【図１０】本発明の第２の実施の形態におけるＡＰＩシーケンス定義ファイルの一例を説明する図である。
【図１１】本発明の第２の実施の形態におけるＡＰＩシーケンス情報の一例を説明する図である。
【図１２】本発明の第２の実施の形態におけるファンクション定義ファイルの一例を説明する図である。
【図１３】本発明の第２の実施の形態におけるファンクション情報の一例を説明する図である。
【図１４】本発明の第２の実施の形態としての外部サービス連携システムの外部サービス対応動作を説明するフローチャートである。
【図１５】本発明の第２の実施の形態としての外部サービス連携システムの外部サービス連携動作を説明するフローチャートである。
【図１６】本発明の第２の実施の形態における入力画面の一例を説明する図である。
【図１７】本発明の第２の実施の形態における入力画面において入力された情報の一例を説明する図である。
【図１８】（ａ）は、本発明の第２の実施の形態においてＡＰＩ情報に基づき外部サービスに送信される情報の一例を説明する図であり、（ｂ）は、（ａ）に対して外部サービスから受信される情報の一例を説明する図である。
【図１９】（ａ）は、本発明の第２の実施の形態において他のＡＰＩ情報に基づき外部サービスに送信される情報の一例を説明する図であり、（ｂ）は、（ａ）に対して外部サービスから受信される情報の一例を説明する図である。
【図２０】（ａ）は、本発明の第２の実施の形態においてさらに他のＡＰＩ情報に基づき外部サービスに送信される情報の一例を説明する図であり、（ｂ）は、（ａ）に対して外部サービスから受信される情報の一例を説明する図である。
【図２１】（ａ）は、本発明の第２の実施の形態においてユーザインタフェース部によって表示される正常終了を表す情報の一例を説明する図であり、（ｂ）は、異常終了を表す情報の一例を説明する図である。
【図２２】本発明の第３の実施の形態としての外部サービス連携システムの機能ブロック図である。
【図２３】本発明の第３の実施の形態における通信装置のハードウェア構成の一例を示す図である。
【図２４】本発明の第４の実施の形態としての外部サービス連携システムの機能ブロック図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１４】
（第１の実施の形態）
本発明の第１の実施の形態としての外部サービス連携システム１の構成を図１に示す。
【００１５】
図１において、外部サービス連携システム１は、外部サービス連携装置１０と、機能実行装置８０とを含む。外部サービス連携装置１０および機能実行装置８０は、通信可能に接続される。例えば、外部サービス連携装置１０および機能実行装置８０は、有線ＬＡＮ（Local Area Network）、無線ＬＡＮ、または、接続用ケーブル等を介して接続されていてもよい。
【００１６】
機能実行装置８０は、所定の機能を実行する装置である。例えば、機能実行装置８０は、プリンタ、スキャナ、複合機、カメラ、ビデオカメラ、サーバ装置、パーソナルコンピュータ装置、または、その他の各種電子機器等であってもよい。以降、機能実行装置８０によって実行される機能を、内部機能とも記載する。例えば、機能実行装置８０として、プリント機能とスキャナ機能とを有する複合機を適用する場合、内部機能とは、プリント機能およびスキャナ機能の各機能をいう。このように、１つの機能実行装置８０は、１つ以上の内部機能を有していてもよい。
【００１７】
外部サービス連携装置１０は、機能実行装置８０において実行される内部機能と外部サービスとを連携させた機能（以降、ファンクションと記載する）を提供する装置である。外部サービス連携装置１０は、外部サービスを提供する外部サーバ９０と通信可能に接続される。例えば、外部サービス連携装置１０は、インターネット、ＬＡＮ、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して、外部サーバ９０に接続されていてもよい。また、外部サーバ９０は、外部サービスのアプリケーションプログラミングインタフェース（ＡＰＩ：Application Programming Interface）を公開しているものとする。
【００１８】
なお、図１には、外部サービス連携装置１０および機能実行装置８０を１つずつ示したが、本発明の外部サービス連携システムが備える外部サービス連携装置の数および機能実行装置の数を限定するものではない。また、図１には、１つの外部サーバ９０を示したが、本発明の外部サービス連携システムが接続される外部サーバの数および外部サービスの数を限定するものではない。
【００１９】
次に、外部サービス連携装置１０の機能ブロック構成を図２に示す。図２において、外部サービス連携装置１０は、外部サービス対応情報取得部１１と、外部サービス対応情報記憶部１２と、外部サービス連携部１３とを含む。
【００２０】
ここで、外部サービス連携装置１０は、図３に示すように、ＣＰＵ（Central Processing Unit）１００１と、ＲＡＭ（Random Access Memory）１００２と、ＲＯＭ（Read Only Memory）１００３と、記憶装置１００４と、ネットワークインタフェース１００５と、入力装置１００６と、表示装置１００７とを備えたコンピュータ装置によって構成可能である。この場合、例えば、外部サービス対応情報取得部１１は、ネットワークインタフェース１００５と、ＲＯＭ１００３および記憶装置１００４に記憶されたコンピュータ・プログラムおよび各種データをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１とによって構成される。また、外部サービス対応情報記憶部１２は、記憶装置１００４によって構成される。また、外部サービス連携部１３は、ネットワークインタフェース１００５と、入力装置１００６と、表示装置１００７と、ＲＯＭ１００３および記憶装置１００４に記憶されたコンピュータ・プログラムおよび各種データをＲＡＭ１００２に読み込んで実行するＣＰＵ１００１とによって構成される。なお、外部サービス連携装置１０およびその各機能ブロックを構成するハードウェア構成は、上述の構成に限定されない。
【００２１】
次に、外部サービス連携装置１０の各機能ブロックについて説明する。
【００２２】
外部サービス対応情報取得部１１は、ＡＰＩ情報と、ＡＰＩシーケンス情報と、ファンクション情報との少なくともいずれかを取得する。ここで、ＡＰＩ情報とは、外部サービスによって公開されるＡＰＩに関する情報である。また、ＡＰＩシーケンス情報とは、ＡＰＩの使用順序に関する情報である。また、ファンクション情報とは、機能実行装置８０の内部機能をＡＰＩに基づき外部サービスに連携させて提供する機能（ファンクション）に関する情報である。例えば、ファンクション情報には、そのファンクションに対応するＡＰＩシーケンス情報を特定するＡＰＩシーケンス特定情報と、そのファンクションにおいて連携させる内部機能を特定する内部機能特定情報とが含まれていてもよい。
【００２３】
例えば、外部サービス対応情報取得部１１は、外部の装置において生成されたこれらの各情報を、ネットワークインタフェース１００５を介して受信することにより取得してもよい。また、例えば、外部サービス対応情報取得部１１は、記憶媒体に記憶されたこれらの各情報を、記憶媒体読取装置（図示せず）を用いて読み込むことにより取得してもよい。また、例えば、外部サービス対応情報取得部１１は、自装置における図示しない機能ブロックにより生成されたこれらの各情報を取得してもよい。また、例えば、外部サービス対応情報取得部１１は、入力装置１００６を介して入力されたこれらの各情報の格納場所を示す情報に基づいて、これらの各情報を取得してもよい。
【００２４】
外部サービス対応情報記憶部１２は、外部サービス対応情報取得部１１によって取得された情報（ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報の少なくともいずれか）を記憶する。
【００２５】
外部サービス連携部１３は、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報の少なくともいずれかに基づいて、機能実行装置８０の内部機能および外部サービスを連携させたファンクションを実行する。
【００２６】
例えば、ファンクション情報に、ＡＰＩシーケンス特定情報および内部機能特定情報が含まれる場合を考える。この場合、外部サービス連携部１３は、実行対象のファンクションに対応するファンクション情報を参照することにより、そのファンクション情報に含まれるＡＰＩシーケンス特定情報の示すＡＰＩシーケンス情報を読み込む。ここで、実行対象のファンクションは、入力装置１００６によって選択されたファンクションであってもよい。そして、外部サービス連携部１３は、読み込んだＡＰＩシーケンス情報の示す使用順序で、ＡＰＩ情報に基づき外部サービスとの通信を行う。また、外部サービス連携部１３は、実行対象のファンクションに対応するファンクション情報を参照することにより、そのファンクション情報に含まれる内部機能特定情報の示す内部機能を特定する。そして、外部サービス連携部１３は、特定した内部機能を機能実行装置８０に実行させて外部サービスと連携させる。
【００２７】
例えば、外部サービス連携部１３は、内部機能の実行結果を用いて外部サービスとの通信を行ってもよい。一例としては、外部サービス連携部１３は、内部機能の一例であるスキャナ機能の実行により得られたスキャンデータを用いて、データのアップロードサービスを行う外部サービスとの通信を行ってもよい。あるいは、外部サービス連携部１３は、データのダウンロードサービスを行う外部サービスとの通信により得られたダウンロードデータを用いて、内部機能の一例であるプリント機能を実行してもよい。
【００２８】
以上のように構成された外部サービス連携システム１の動作について、図面を参照して説明する。
【００２９】
まず、外部サービス連携システム１が、新たな外部サービスに対応するための動作を図４に示す。
【００３０】
図４において、まず、外部サービス対応情報取得部１１は、ＡＰＩ情報と、ＡＰＩシーケンス情報と、ファンクション情報との少なくともいずれかを取得する（ステップＳ１）。
【００３１】
次に、外部サービス対応情報取得部１１は、ステップＳ１で取得した情報を、外部サービス対応情報記憶部１２に記憶する（ステップＳ２）。
【００３２】
以上で、外部サービス連携システム１の外部サービス対応動作の説明を終了する。
【００３３】
次に、外部サービス連携システム１が、外部サービスと連携する動作を図５に示す。ここでは、外部サービス対応情報記憶部１２には、ＡＰＩシーケンス特定情報および内部機能特定情報を含むファンクション情報が記憶されているものとする。また、外部サービス対応情報記憶部１２には、このファンクション情報に含まれるＡＰＩシーケンス特定情報の示すＡＰＩシーケンス情報と、そのＡＰＩシーケンス情報の示す使用順序における各ＡＰＩに関するＡＰＩ情報とが、さらに記憶されているものとする。
【００３４】
図５において、まず、外部サービス連携部１３は、ファンクション情報を、外部サービス対応情報記憶部１２から読み込む（ステップＳ１１）。例えば、前述のように、外部サービス連携部１３は、入力装置１００６によって選択されたファンクションに対応するファンクション情報を読み込んでもよい。
【００３５】
次に、外部サービス連携部１３は、ファンクション情報に含まれる内部機能特定情報に基づいて、連携させる内部機能を特定する（ステップＳ１２）。
【００３６】
次に、外部サービス連携部１３は、ファンクション情報に含まれるＡＰＩシーケンス特定情報に基づいて、該当するＡＰＩシーケンス情報を読み込む（ステップＳ１３）。
【００３７】
次に、外部サービス連携部１３は、読み込んだＡＰＩシーケンス情報の示す使用順序でＡＰＩ情報に基づきＡＰＩを実行し、外部サービスとの通信を行う。このとき、外部サービス連携部１３は、ステップＳ１２で特定した内部機能を機能実行装置８０に実行させ、外部サービスとの通信と連携させる（ステップＳ１４）。例えば、前述のように、外部サービス連携部１３は、内部機能の実行結果を用いて外部サービスとの通信を行ってもよいし、外部サービスとの通信結果を用いて内部機能を実行してもよい。
【００３８】
以上で、外部サービス連携システム１は、ファンクション実行動作を終了する。
【００３９】
次に、本発明の第１の実施の形態の効果について述べる。
【００４０】
本発明の第１の実施の形態としての外部サービス連携システムは、実装コードの開発知識のないユーザであっても、機能実行装置の内部機能を新たな外部サービスに柔軟に対応させることができる。
【００４１】
その理由は、外部サービス対応情報取得部が、外部サービスによって公開されるＡＰＩに関するＡＰＩ情報と、ＡＰＩの使用順序に関するＡＰＩシーケンス情報と、機能実行装置の内部機能をＡＰＩに基づき外部サービスに連携させて提供するファンクションに関するファンクション情報との少なくともいずれかを取得して外部サービス対応情報記憶部に記憶させるからである。そして、外部サービス連携部が、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報の少なくともいずれかに基づいて、機能実行装置の内部機能と外部サービスとを連携させたファンクションを実行するからである。また、このとき、例えば、外部サービス連携部は、該当するファンクション情報に基づいて、対応するＡＰＩシーケンス情報の示す使用順序でＡＰＩ情報に基づきＡＰＩを実行することにより外部サービスとの通信を行うとともに、該ファンクションにおいて連携させる内部機能を機能実行装置に実行させて外部サービスと連携させるからである。
【００４２】
これにより、本実施の形態は、新たに対応させたい外部サービスのＡＰＩに関するＡＰＩ情報と、その外部サービスを使用する際のＡＰＩの使用順序に関するＡＰＩシーケンス情報と、内部機能に外部サービスを連携させて提供するファンクションに関するファンクション情報とを取得して記憶しておくだけで、機能実行装置の内部機能を新たなその外部サービスに連携させた処理を実行可能となる。
【００４３】
したがって、ユーザは、新たな外部サービスに内部機能を連携させるための実装コードを開発する必要はなく、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報を用意するだけでよい。
【００４４】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本実施の形態では、本発明の外部サービス連携システムを、画像形成装置によって構成する例について説明する。具体的には、本実施の形態では、本発明における機能実行装置として画像形成装置を適用し、本発明の外部サービス連携装置を、同じ画像形成装置内に構成する場合について述べる。なお、本実施の形態の説明において参照する各図面において、本発明の第１の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【００４５】
まず、本発明の第２の実施の形態としての外部サービス連携システム２の構成を図６に示す。
【００４６】
図６において、外部サービス連携システム２は、外部サービス連携装置２０と、スキャナ部８１と、プリンタ部８２とを備える。また、外部サービス連携装置２０は、本発明の第１の実施の形態における外部サービス連携装置１０に対して、外部サービス対応情報取得部１１に替えて外部サービス対応情報取得部２１と、外部サービス連携部１３に替えて外部サービス連携部２３とを備え、さらに、ユーザインタフェース部２４を備える点が異なる。
【００４７】
スキャナ部８１およびプリンタ部８２は、本発明の機能実行装置の一実施形態を構成する。スキャナ部８１は、本発明における内部機能としてスキャナ機能を実行する。プリンタ部８２は、本発明における内部機能としてプリント機能を実行する。
【００４８】
外部サービス連携装置２０は、スキャナ部８１によるスキャナ機能またはプリンタ部８２によるプリント機能と、外部サービスとを連携させたファンクションを提供する。外部サービス連携装置２０は、外部サービスを提供する外部サーバ９０と通信可能に接続される。例えば、外部サービス連携装置２０は、インターネット、ＬＡＮ、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して、外部サーバ９０に接続されていてもよい。本実施の形態では、外部サーバ９０は、外部サービスとして、文書を管理するサービスを提供しているものとする。また、外部サーバ９０は、外部サービスのＡＰＩとして、ＨＴＴＰ（Hypertext Transfer Protocol）に基づくＷＥＢ  ＡＰＩ（World Wide Web API）を公開しているものとする。
【００４９】
なお、図６には、外部サービス連携装置２０、スキャナ部８１、および、プリンタ部８２を１つずつ示したが、本発明の外部サービス連携システムが備える外部サービス連携装置の数および機能実行装置の数を限定するものではない。また、図６には、１つの外部サーバ９０を示したが、本発明の外部サービス連携システムが接続される外部サーバの数および外部サービスの数を限定するものではない。
【００５０】
次に、外部サービス連携システム２のハードウェア構成について説明する。
【００５１】
図７に示すように、外部サービス連携システム２は、プロセッサを含む制御部２００１と、不揮発性メモリ２００２と、ネットワークインタフェース２００３と、タッチパネルや操作ボタン等の入力装置２００４と、液晶ディスプレイ等の表示装置２００５と、スキャナ装置２００６と、プリンタ装置２００７とを含む画像形成装置によって構成可能である。
【００５２】
制御部２００１は、不揮発性メモリ２００２に記憶された情報、入力装置２００４からの入力情報およびネットワークインタフェース２００３を介して受信される情報に基づいて、画像形成装置の各部を制御する。
【００５３】
不揮発性メモリ２００２は、スキャナ装置２００６およびプリンタ装置２００７の動作に必要な情報、および、画像形成装置を外部サービス連携システム２として動作させるために必要な情報を記憶する。
【００５４】
ネットワークインタフェース２００３は、外部サーバ９０やその他の外部の装置との通信を行う。
【００５５】
入力装置２００４は、スキャナ装置２００６およびプリンタ装置２００７の動作における設定情報、および、画像形成装置が外部サービス連携システム２として動作する際の各種の入力情報の入力を受け付ける。
【００５６】
表示装置２００５は、入力装置２００４による入力操作をさせるための入力画面情報、および、自装置の動作の結果を表す情報等を表示する。
【００５７】
スキャナ装置２００６は、自動原稿送り装置（ＡＤＦ：Auto Document Feeder）または原稿台（ＦＢ：Flat Bed）に載置された原稿を読み取って画像データを生成する。また、スキャナ装置２００６は、各種のスキャン設定データ（ファイル形式、カラーモード、解像度、濃度、読取モード等)にしたがって、原稿の読み取りおよび画像処理を行う。各種のスキャン設定データは、あらかじめ設定されているか、または、入力装置２００４を介して設定される。また、スキャナ装置２００６は、必要に応じて、生成した画像データの圧縮または伸長を行う。スキャナ装置２００６は、スキャナ部８１を構成する。
【００５８】
プリンタ装置２００７は、印刷対象の画像データを紙等の記録媒体上に印刷する。また、プリンタ装置２００７は、プリント設定データ（部数、用紙サイズ、用紙種類、カラーモード、解像度、給紙トレイ等）にしたがって、印刷を行う。各種のプリント設定データは、あらかじめ設定されているか、または、入力装置２００４を介して設定される。プリンタ装置２００７は、プリンタ部８２を構成する。
【００５９】
外部サービス連携装置２０が以上のようなハードウェア要素を含む画像形成装置上に構成される場合、外部サービス対応情報取得部２１および外部サービス連携部２３は、制御部２００１およびネットワークインタフェース２００３によって構成される。また、外部サービス対応情報記憶部１２は、不揮発性メモリ２００２によって構成される。また、ユーザインタフェース部２４は、制御部２００１と、入力装置２００４と、表示装置２００５とによって構成される。なお、外部サービス連携装置２０およびその各機能ブロックのハードウェア構成は、上述の構成に限定されない。
【００６０】
次に、外部サービス連携装置２０の各機能ブロックについて説明する。
【００６１】
外部サービス対応情報取得部２１は、外部から取得した定義ファイルを解析することにより、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報を生成して外部サービス対応情報記憶部１２に記憶させる。
【００６２】
ここで、ＡＰＩ情報とは、本発明の第１の実施の形態において説明したように、外部サービスによって公開されるＡＰＩに関する情報である。本実施の形態では、ＡＰＩ情報を生成するために外部から取得される定義ファイルを、ＡＰＩ定義ファイルと呼ぶことにする。
【００６３】
また、ＡＰＩシーケンス情報とは、本発明の第１の実施の形態において説明したように、ＡＰＩの使用順序に関する情報である。本実施の形態では、ＡＰＩシーケンス情報を生成するために外部から取得される定義ファイルを、ＡＰＩシーケンス定義ファイルと呼ぶことにする。
【００６４】
また、ファンクション情報とは、本発明の第１の実施の形態において説明したように、内部機能をＡＰＩに基づき外部サービスに連携させて提供するファンクションに関する情報である。本実施の形態では、ファンクション情報を生成するために外部から取得される定義ファイルを、ファンクション定義ファイルと呼ぶことにする。
【００６５】
ここで、外部から受信されるＡＰＩ定義ファイル、ＡＰＩシーケンス定義ファイル、および、ファンクション定義ファイルは、ユーザによって記述されることにより生成されてもよい。例えば、これらの定義ファイルは、ＸＭＬ（Extensible Markup Language）形式やＪＳＯＮ（JavaScript（登録商標） Object Notation）形式で記述されるよう定められていてもよい。このような定義ファイルは、ユーザにより、テキストエディタや専用のアプリケーション等を用いて生成されたものであってもよい。また、この場合、外部サービス対応情報取得部２１は、ネットワークインタフェース２００３を介して接続された通信装置（図示せず）において生成されたこれらの定義ファイルを受信してもよい。また、外部サービス対応情報取得部２１は、公知のＸＭＬパーサ（Expat等）やＪＳＯＮパーサ（yajl等）の技術を採用することにより、これらの定義ファイルを解析してもよい。
【００６６】
ＡＰＩ定義ファイルの一例として、ＸＭＬ形式で記述されたものを図８に示す。また、図８に示したＡＰＩ定義ファイルに対応するＡＰＩ情報の一例を図９に示す。外部サービス対応情報取得部２１は、図８のＡＰＩ定義ファイルを解析することにより、ＡＰＩ定義ファイルで定義される各項目を表す情報を抽出し、図９のようなＡＰＩ情報を生成する。
【００６７】
図８および図９の例では、ＡＰＩ定義ファイルから抽出される項目は、ＡＰＩ名と、メソッドと、ＵＲＬ（Uniform Resource Locator）と、ヘッダ部と、ボディ部と、レスポンス形式と、レスポンス取得キーとをそれぞれ表す情報である。ここで、ＡＰＩ名は、そのＡＰＩの名称を表す。メソッドは、外部サービスへのＨＴＴＰリクエストで用いられるメソッドを表す。ＵＲＬは、ＨＴＴＰリクエストの送信先のパス名を表す。ヘッダ部は、ＨＴＴＰリクエストのヘッダ部を表す。ボディ部は、ＨＴＴＰリクエストのボディ部を表す。レスポンス形式は、ＨＴＴＰレスポンスのボディ部のデータ形式を表す。この例では、レスポンス形式としては、ＸＭＬまたはＪＳＯＮが設定される。レスポンス取得キーについては後述する。
【００６８】
また、ＡＰＩ定義ファイルから抽出されるこれらの各項目を表す情報は、入力変数、取得変数、内部機能関連変数、および、依存変数を含むことができる。
【００６９】
入力変数とは、ユーザによって入力される情報によって置き換えられる変数である。図８の例では、入力変数は、その変数名が括弧で囲まれた「(変数名)」として記載されている。例えば、各ＡＰＩのＵＲＬの項目は、入力変数として「(user)」を含む。
【００７０】
取得変数とは、取得値によって置き換えられる変数である。ここで、取得値とは、そのＡＰＩに基づく外部サービスとの通信結果から取得される情報である。ここで、通信結果からどの情報を取得値として取得するかについては、レスポンス取得キーによって定められる。例えば、「レスポンス取得キー」に要素名が設定されている場合、その要素の値が、ＨＴＴＰレスポンスのボディ部から取得値として取得される。例えば、ＡＰＩ名「login」の「レスポンス取得キー」には、要素名「REGISTID」が設定されている。なお、「レスポンス取得キー」の項目は、複数の要素名を含んでいてもよい。
【００７１】
内部機能関連変数とは、内部機能から得られる情報で置き換えられる変数である。図８の例では、内部機能関連変数は、変数名がドル記号で囲まれた「$変数名$」として記載されている。例えば、ＡＰＩ名「upload」の「ボディ部」には、スキャナ部８１のスキャン機能により得られる画像データを表す「$IMAGEDATA$」が含まれている。
【００７２】
依存変数は、他の変数の内容に依存して値が定まる変数である。図８の例では、依存変数は、変数名が波括弧で囲まれた「｛変数名｝」として記載されている。例えば、ＡＰＩ名「upload」の「ヘッダ部」には、ボディ部のデータ長を表す「{Content-Length}」が含まれている。ボディ部のデータ長は、このボディ部に含まれる内部機能関連変数「$IMAGEDATA$」に置き換えられる画像データの長さに依存して定まる。
【００７３】
ＡＰＩシーケンス定義ファイルの一例として、ＸＭＬ形式で記述されたものを図１０に示す。また、図１０に示したＡＰＩシーケンス定義ファイルに対応するＡＰＩシーケンス情報の一例を図１１に示す。外部サービス対応情報取得部２１は、図１０のＡＰＩシーケンス定義ファイルを解析することにより、ＡＰＩシーケンス定義ファイルで定義される各項目を表す情報を抽出し、図１１のようなＡＰＩシーケンス情報を生成する。
【００７４】
図１０および図１１の例では、ＡＰＩシーケンス定義ファイルから抽出される項目は、シーケンス名と、１つ以上のＡＰＩ名と、１つ以上の次処理判定情報とである。シーケンス名は、このＡＰＩシーケンスの名称を表す。１つ以上のＡＰＩ名は、このＡＰＩシーケンスにおいて順次使用される各ＡＰＩの名称を表す。次処理判定情報は、各ＡＰＩによる通信結果に基づいて次に行う処理を判定するための情報を表す。なお、この例では、あるＡＰＩ名「Ｘ」の次に記載された次処理判定情報は、そのＡＰＩ「Ｘ」に基づく通信の次に行う処理を判定するために用いられるものとする。また、この例に示すように、１つのＡＰＩ名に続けて、複数の次処理判定情報が記載される場合、それぞれの次処理判定情報は、そのＡＰＩ「Ｘ」を用いた通信結果に対する異なる判定情報を表している。
【００７５】
次処理判定情報は、ステータスコードと、結果キーと、結果値と、論理演算と、次処理ＡＰＩ名とをそれぞれ表す情報を含む。ステータスコードは、ＨＴＴＰレスポンスで得られる３桁の数字からなるコードである。結果キーは、ＨＴＴＰレスポンスのボディ部からＡＰＩの結果として取得する要素名である。結果値は、結果キーに対応する要素の内容である。論理演算は、ステータスコードの真偽判定および結果値の真偽判定の論理演算方法を表す。例えば、論理演算としては、ＯＲまたはＡＮＤが設定される。ここで、ステータスコードの真偽判定とは、実際に得られたＨＴＴＰレスポンスのステータスコードと、この次処理判定情報に含まれるステータスコードとが等しいかどうかの真偽判定である。また、結果値の真偽判定とは、実際に得られたＨＴＴＰレスポンスの結果値と、この次処理判定情報に含まれる結果値とが等しいかどうかの真偽判定である。後述の外部サービス連携部２３は、ステータスコードの真偽判定および結果値の真偽判定を、「論理演算」に設定された内容で論理演算した結果を、この次処理判定情報の判定結果とする。次処理ＡＰＩ名は、この次処理判定情報の判定結果が真であった場合に次に処理するＡＰＩ名または終了情報を表す。なお、次処理ＡＰＩ名に設定される「正常終了（NORMAL_END）は、この次処理判定情報の判定結果が真であった場合に、このＡＰＩシーケンスを正常終了させることを表す。また、次処理ＡＰＩ名に設定される「異常終了（ERROR_END）は、この次処理判定情報の判定結果が真であった場合に、このＡＰＩシーケンスを異常終了させることを表す。
【００７６】
ファンクション定義ファイルの一例として、ＸＭＬ形式で記述されたものを図１２に示す。また、図１２に示したファンクション定義ファイルに対応するファンクション情報の一例を図１３に示す。外部サービス対応情報取得部２１は、図１２のファンクション定義ファイルを解析することにより、ファンクション定義ファイルで定義される各項目を表す情報を抽出し、図１３のようなファンクション情報を生成する。
【００７７】
図１２および図１３の例では、ファンクション定義ファイルから抽出される項目は、ファンクション名と、ＡＰＩシーケンス特定情報としてのシーケンス名と、入力変数情報と、内部機能特定情報としての内部機能種別である。ファンクション名は、内部機能をＡＰＩに基づき外部サービスに連携させて提供するファンクションの名称を表す。シーケンス名は、このファンクションを提供するために用いられるＡＰＩシーケンス名を表す。入力変数情報は、このファンクションで用いられるＡＰＩ情報に含まれる入力変数に関する情報である。ファンクション定義ファイルは、１つのファンクションについて、１つ以上の入力変数情報を含んでいてもよい。入力変数情報は、変数名、型、初期値、長さ、表示名をそれぞれ表す情報を含む。変数名は、ＡＰＩ情報内で用いられるこの入力変数の名称を表す。型は、この入力変数の型を表し、例えば、整数型や文字列型等が設定される。初期値は、この入力変数の初期値を表し、例えば、空の文字列であれば「ＮＵＬＬ」等が設定される。表示名は、この入力変数の値をユーザにより入力させる際にユーザインタフェース部２４で用いられる名称である。図１２および図１３の例では、１つ目のファンクションは、図９のＡＰＩ情報に含まれる入力変数「(user)」に関する入力変数情報を含んでいる。内部機能種別は、このファンクションにおいて外部サービスと連携させる内部機能を特定する内部機能特定情報を表す。例えば、内部機能種別には、「スキャン」または「プリント」が設定される。
【００７８】
ユーザインタフェース部２４は、ファンクションをユーザに選択させるユーザインタフェースを提供する。例えば、ユーザインタフェース部２４は、自装置で提供可能なファンクションのリストを、入力装置２００４によってそのいずれかを選択可能に表示装置２００５に表示してもよい。
【００７９】
また、ユーザインタフェース部２４は、選択されたファンクションの実行において用いられる情報をユーザに入力させるためのユーザインタフェースを提供する。詳細には、ユーザインタフェース部２４は、入力装置２００４を使ってユーザに情報を入力させる入力画面情報を、表示装置２００５に表示する。
【００８０】
具体的には、ユーザインタフェース部２４は、選択されたファンクションの実行において、入力変数に置き換えるための入力値を、ユーザに入力させる入力用インタフェースを提供する。例えば、ユーザインタフェース部２４は、選択されたファンクションに対応するファンクション情報に含まれる入力変数情報に基づいて、入力用インタフェースを提供してもよい。
【００８１】
また、ユーザインタフェース部２４は、選択されたファンクションの実行において、外部サービスと連携させる内部機能で用いられる設定情報を、ユーザに入力させる設定用インタフェースを提供する。例えば、ユーザインタフェース部２４は、選択されたファンクションに対応するファンクション情報に含まれる内部機能特定情報に基づいて、スキャナ部８１またはプリンタ部８２に対する設定用インタフェースを提供してもよい。
【００８２】
また、ユーザインタフェース部２４は、ファンクションの実行結果を出力してもよい。
【００８３】
外部サービス連携部２３は、ユーザインタフェース部２４によって選択されたファンクションに対応するファンクション情報を参照することにより、このファンクションに対応するＡＰＩシーケンス情報を読み出す。
【００８４】
また、外部サービス連携部２３は、読み出したＡＰＩシーケンス情報に基づいて、そのＡＰＩシーケンス情報の示す使用順序でＡＰＩ情報を用いて外部サービスとの通信を行う。このとき、外部サービス連携部２３は、ＡＰＩシーケンス情報に含まれる次処理判定情報に基づいて、各ＡＰＩを用いた外部サービスとの通信を順次実行する。例えば、外部サービス連携部２３は、あるＡＰＩに基づく外部サービスとの通信結果に基づき真と判定された次処理判定情報に基づいて、次処理ＡＰＩ名の示すＡＰＩに基づく外部サービスとの通信を実行すればよい。
【００８５】
また、外部サービス連携部２３は、ＡＰＩ情報に含まれる入力変数を、ユーザインタフェース部２４において入力された入力値で置き換え、入力値で置き換えたＡＰＩ情報を用いて外部サービスとの通信を行う。
【００８６】
具体的には、例えば、外部サービス連携部２３は、このＡＰＩシーケンス情報に含まれる１つ目のＡＰＩ名に対応するＡＰＩ情報に基づいて、ＨＴＴＰリクエストを生成し、外部サービスに送信する。そして、外部サービス連携部２３は、受信されたＨＴＴＰレスポンスに含まれるステータスコードと、このＡＰＩの次処理判定情報に含まれるステータスコードとが等しいか否かを判定する。また、外部サービス連携部２３は、受信されたＨＴＴＰレスポンスに含まれる結果キーの値（結果値）と、次処理判定情報に含まれる結果値とが等しいか否かを判定する。そして、外部サービス連携部２３は、ステータスコードの真偽判定結果と、結果値の真偽判定結果とを用いて、次処理判定情報に含まれる論理演算を行い、その結果が真であるか否かを判定する。そして、外部サービス連携部２３は、真であると判定された次処理判定情報に含まれる次処理ＡＰＩ名に対応するＡＰＩ情報に基づいて、同様の処理を繰り返せばよい。
【００８７】
また、外部サービス連携部２３は、ＡＰＩ情報に含まれる内部機能関連変数を、内部機能から得られる情報で置き換え、その情報で置き換えたＡＰＩ情報を用いて外部サービスとの通信を行う。
【００８８】
例えば、外部サービス連携部２３は、内部機能関連変数を、内部機能の実行結果に置き換えてもよい。具体的には、ＡＰＩ情報に、スキャナ部８１からの画像データを表す内部機能関連変数が含まれている場合について考える。この場合、外部サービス連携部２３は、スキャナ部８１にスキャナ機能を実行させ、実行結果としての画像データを得る。このとき、外部サービス連携部２３は、ユーザインタフェース部２４において入力されたスキャン設定情報を用いて、スキャナ部８１にスキャナ機能を実行させてもよい。そして、外部サービス連携部２３は、内部機能関連変数を画像データで置き換えたＡＰＩ情報に基づいてＨＴＴＰリクエストを生成し、外部サービスに送信すればよい。
【００８９】
また、例えば、外部サービス連携部２３は、外部サービスとの通信結果から得られる取得値を用いて、内部機能を実行してもよい。具体的には、ＡＰＩ情報に含まれるレスポンス取得キーに、ＨＴＴＰレスポンスに含まれる画像データを指定する情報が設定されている場合について考える。この場合、外部サービス連携部２３は、レスポンス取得キーに基づいて画像データを取得値として取得する。そして、外部サービス連携部２３は、取得値をプリンタ部８２に渡してプリント機能を実行させればよい。このとき、外部サービス連携部２３は、ユーザインタフェース部２４において入力されたプリント設定情報を用いて、プリンタ部８２にプリント機能を実行させてもよい。
【００９０】
また、外部サービス連携部２３は、ＡＰＩ情報に含まれる取得変数を取得値で置き換え、取得値で置き換えたＡＰＩ情報を用いて外部サービスとの通信を行う。ここで、取得変数を置き換える取得値は、該当するファンクションの実行において、それまでの外部サービスとの通信結果から得られた取得値である。
【００９１】
また、外部サービス連携部２３は、ＡＰＩ情報に含まれる依存変数を置き換えるための値を、他の変数の置き換え内容に応じて算出する。そして、外部サービス連携部２３は、算出した値で依存変数を置き換えたＡＰＩ情報を用いて、外部サービスとの通信を行う。
【００９２】
このように、外部サービス連携部２３は、外部サービスとの通信において得られるＨＴＴＰレスポンス（ＸＭＬ形式やＪＳＯＮ形式）に基づいて、次処理判定情報に基づく処理や、レスポンス取得キーで定められた取得値の取得処理を行う。このため、外部サービス連携部２３は、公知のＸＭＬパーサやＪＳＯＮパーサの技術を採用してもよい。
【００９３】
以上のように構成された外部サービス連携システム２の動作について、図面を参照して説明する。
【００９４】
まず、外部サービス連携システム２が、新たな外部サービスに対応するための動作を図１４に示す。
【００９５】
図１４において、まず、外部サービス対応情報取得部２１は、ＡＰＩ定義ファイルと、ＡＰＩシーケンス定義ファイルと、ファンクション定義ファイルとを取得する（ステップＳ２１）。
【００９６】
次に、外部サービス対応情報取得部２１は、ステップＳ２１で取得した各定義ファイルを解析する（ステップＳ２２）。例えば、定義ファイルがＸＭＬ形式であれば、外部サービス対応情報取得部２１は、各定義ファイルをＸＭＬ構文解析し、必要な項目を表す要素の値を抽出すればよい。
【００９７】
次に、外部サービス対応情報取得部２１は、ステップＳ２２の解析においてエラーがあるか否かを判断する（ステップＳ２３）。
【００９８】
ここで、エラーがなければ、外部サービス対応情報取得部２１は、各定義ファイルから抽出した項目を、ＡＰＩ情報、ＡＰＩシーケンス情報、ファンクション情報として外部サービス対応情報記憶部１２に記憶する（ステップＳ２４）。
【００９９】
一方、エラーがあった場合、外部サービス対応情報取得部２１は、動作を終了する。このとき、外部サービス対応情報取得部２１は、ユーザインタフェース部２４に、定義ファイルのエラーを表す情報を出力させてもよい。
【０１００】
以上で、外部サービス連携システム２の外部サービス対応動作の説明を終了する。
【０１０１】
次に、外部サービス連携システム２が、ユーザによって選択されたファンクションを実行する動作を図１５に示す。ここでは、内部機能の実行結果を用いて外部サービスとの通信を行うファンクションを実行する動作について説明する。
【０１０２】
図１５において、まず、外部サービス連携部２３は、ユーザインタフェース部２４において選択されたファンクションに対応するファンクション情報を、外部サービス対応情報記憶部１２から読み込む（ステップＳ３１）。
【０１０３】
次に、ユーザインタフェース部２４は、ファンクション情報に含まれる入力変数情報と内部機能種別とに基づいて、入力値および内部機能の設定情報の入力画面を表示装置２００５に表示する（ステップＳ３２）。
【０１０４】
次に、ユーザインタフェース部２４は、入力装置２００４から入力された入力値および設定情報を取得する（ステップＳ３３）。
【０１０５】
次に、外部サービス連携部２３は、ステップＳ３３で入力された設定情報を用いて、内部機能種別の示す内部機能を実行する（ステップＳ３４）。
【０１０６】
次に、外部サービス連携部２３は、ファンクション情報に含まれるシーケンス名のＡＰＩシーケンス情報を、外部サービス対応情報記憶部１２から読み込む（ステップＳ３５）。
【０１０７】
次に、外部サービス連携部２３は、ＡＰＩシーケンス情報に含まれるＡＰＩ名のＡＰＩ情報を、外部サービス対応情報記憶部１２から読み込む（ステップＳ３６）。
【０１０８】
ここで、このファンクションの実行においてこのステップを最初に実行する場合、外部サービス連携部２３は、ＡＰＩシーケンス情報に含まれる１つ目のＡＰＩ名に対応するＡＰＩ情報を読み込めばよい。また、このファンクションの実行において２度目以降にこのステップを実行する場合、外部サービス連携部２３は、前回のステップ４０（詳細は後述）で得られる次処理ＡＰＩ名に対応するＡＰＩ情報を読み込めばよい。
【０１０９】
次に、外部サービス連携部２３は、ステップＳ３６で読み込んだＡＰＩ情報において、各種の変数の置き換えを行う（ステップＳ３７）。具体的には、外部サービス連携部２３は、該当するＡＰＩ情報に入力変数が含まれていれば、ステップＳ３３で入力された入力値で置き換える。また、外部サービス連携部２３は、該当するＡＰＩ情報に取得変数が含まれていれば、前回までのステップＳ３９（詳細は後述）で抽出された取得値に置き換える。また、外部サービス連携部２３は、該当するＡＰＩ情報に内部機能関連変数が含まれていれば、ステップＳ３４で実行された内部機能の実行結果で置き換える。また、外部サービス連携部２３は、該当するＡＰＩ情報に依存変数が含まれていれば、入力変数、取得変数、または、内部機能関連変数等の他の変数の置き換え内容に基づき算出した値で置き換える。
【０１１０】
次に、外部サービス連携部２３は、ステップＳ３７で値を置き換えたＡＰＩ情報に基づいて、外部サービスとの通信を行う（ステップＳ３８）。具体的には、外部サービス連携部２３は、置き換え後のＡＰＩ情報に基づいて、ＨＴＴＰリクエストを生成する。そして、外部サービス連携部２３は、生成したＨＴＴＰリクエストを外部サーバ９０に送信し、ＨＴＴＰレスポンスを受信する。
【０１１１】
次に、外部サービス連携部２３は、ＡＰＩ情報のレスポンス形式に基づいて外部サービスとの通信結果を解析し、必要な情報を抽出する（ステップＳ３９）。
【０１１２】
例えば、外部サービス連携部２３は、ＨＴＴＰレスポンスから、ステータスコードと、結果値とを抽出する。結果値は、ステップＳ３５で読み込んだＡＰＩシーケンス情報において、このＡＰＩの次処理判定情報で結果キーの項目に設定された要素の値である。また、外部サービス連携部２３は、このＡＰＩのＡＰＩ情報においてレスポンス取得キーに設定された要素があれば、その要素の値を取得値として保持する。
【０１１３】
次に、外部サービス連携部２３は、ステップＳ３９における解析結果と、ＡＰＩシーケンス情報に含まれる次処理判定情報とを用いて、次に実行するＡＰＩがあるか否かを判断する（ステップＳ４０）。
【０１１４】
具体的には、外部サービス連携部２３は、ステップＳ３９において抽出されたステータスコードが、次処理判定情報で設定されたステータスコードと一致するか否かの真偽判定を行う。また、外部サービス連携部２３は、ステップＳ３９において抽出された結果値が、次処理判定情報で設定された結果値と一致するか否かの真偽判定を行う。そして、外部サービス連携部２３は、ステータスコードの真偽判定結果と、結果値の真偽判定結果とに対して、次処理判定情報に設定された論理演算を行う。そして、外部サービス連携部２３は、論理演算結果が真となる次処理判定情報の次処理ＡＰＩ名に設定された内容を参照する。このとき、次処理ＡＰＩ名にＡＰＩ名が設定されていれば、外部サービス連携部２３は、次に実行するＡＰＩがあると判断する。また、次処理ＡＰＩ名に終了を表す情報が設定されていれば、次に実行するＡＰＩがないと判断する。
【０１１５】
ステップＳ４０において、次に実行するＡＰＩがあると判断した場合、外部サービス連携部２３は、次処理ＡＰＩ名に設定されたＡＰＩについて、ステップＳ３６からの処理を繰り返す。
【０１１６】
一方、ステップＳ４０において、次に実行するＡＰＩがないと判断した場合、ユーザインタフェース部２４は、ファンクションの実行結果を表示する（ステップＳ４１）。例えば、ユーザインタフェース部２４は、次処理ＡＰＩ名に設定されていた終了を表す情報の内容に応じて、正常終了または異常終了を表す情報を表示してもよい。
【０１１７】
以上で、外部サービス連携システム２のファンクション実行動作の説明を終了する。
【０１１８】
次に、外部サービス連携システム２の動作を具体例で示す。
【０１１９】
ここでは、図１４に示した外部サービス対応動作により、図９、図１１、図１３に示したＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報が、外部サービス対応情報記憶部１２に記憶されているものとする。また、ユーザインタフェース部２４において、「スキャンデータをサービスＡにアップロード（scan To service A）」というファンクションが選択されたことを想定する。
【０１２０】
まず、外部サービス連携部２３は、図１３に示した「scan To service A」という名称のファンクション情報を読み込む（ステップＳ３１）。以降、Ｘという名称のファンクション情報をファンクション情報「Ｘ」とも記載する。
【０１２１】
このファンクション情報「scan To service A」には、入力変数「user」に関する入力変数情報と、「スキャン」機能を示す内部機能特定情報とが含まれる。そこで、ユーザインタフェース部２４は、図１６に示すような入力画面を表示する（ステップＳ３２）。この入力画面では、変数「user」（表示名「ユーザ名」）に対しては、テキスト入力ボックスが表示されている。また、スキャン機能の設定情報の各項目に対しては、設定情報の選択肢が選択可能に表示されている。
【０１２２】
次に、ユーザインタフェース部２４は、入力された入力値および設定情報を取得する（ステップＳ３３）。ここでは、例えば、図１７に示すように、ユーザ名「taro」が入力され、網掛けで示した各設定情報が選択されたものとする。
【０１２３】
次に、外部サービス連携部２３は、ステップＳ３３で入力された設定情報を用いて、スキャナ部８１にスキャン機能を実行させる（ステップＳ３４）。このとき、スキャナ部８１は、必要に応じてスキャンデータの圧縮または伸長を行ってもよい。
【０１２４】
ここで、ファンクション情報「scan To service A」には、ＡＰＩシーケンス特定情報として、シーケンス名「service_upload」が含まれる。そこで、外部サービス連携部２３は、図１１に示した「service_upload」という名称のＡＰＩシーケンス情報を読み込む（ステップＳ３５）。以降、「Ｘ」という名称のＡＰＩシーケンス情報を、ＡＰＩシーケンス情報「Ｘ」とも記載する。
【０１２５】
このＡＰＩシーケンス情報「service_upload」には、１つ目のＡＰＩ名として「login」が含まれる。そこで、外部サービス連携部２３は、図９に示した「login」という名称のＡＰＩ情報を読み込む（ステップＳ３６）。以降、「Ｘ」という名称のＡＰＩ情報を、ＡＰＩ情報「Ｘ」とも記載する。
【０１２６】
次に、外部サービス連携部２３は、ＡＰＩ情報「login」において、ＵＲＬに含まれる入力変数「(user)」を、ステップＳ３３で入力されたユーザ名「taro」に置き換える（ステップＳ３７）。
【０１２７】
次に、外部サービス連携部２３は、ユーザ名を置き換え後のＡＰＩ情報「login」に含まれるメソッド、ＵＲＬ、ヘッダ部、ボディ部を用いて、外部サービスとのＨＴＴＰ通信を行う（ステップＳ３８）。具体的には、外部サービス連携部２３は、図１８（ａ）に示すようなＨＴＴＰリクエストを生成する。そして、外部サービス連携部２３は、生成したＨＴＴＰリクエストを外部サーバ９０に送信し、ＨＴＴＰレスポンスを受信する。ここでは、例えば、図１８（ｂ）に示すＨＴＴＰレスポンスが受信されたものとする。
【０１２８】
次に、外部サービス連携部２３は、ＡＰＩ情報「login」のレスポンス形式に設定された「ＸＭＬ」に基づいて、ステップＳ３８で得られたＨＴＴＰレスポンスを解析し、必要な情報を抽出して保持する（ステップＳ３９）。
【０１２９】
詳細には、外部サービス連携部２３は、図１８（ｂ）に示したＨＴＴＰレスポンスから、ステータスコード「２００」を抽出する。また、ＡＰＩシーケンス情報「service_upload」では、ＡＰＩ名「login」の次処理判定情報の１つにおいて結果キーに、要素「RESULT」が設定されている。そこで、外部サービス連携部２３は、このＨＴＴＰレスポンスから、要素「RESULT」の値「ＯＫ」を抽出し、結果値として保持する。また、ＡＰＩ情報「login」では、レスポンス取得キーに要素「REGISTID」が設定されている。そこで、外部サービス連携部２３は、このＨＴＴＰレスポンスのボディ部から、要素「REGISTID」の値「12345」を抽出し、取得値として保持する。
【０１３０】
次に、外部サービス連携部２３は、ステップＳ３９における解析結果と、ＡＰＩ名「login」の次処理判定情報とに基づいて、次に実行するＡＰＩがあるか否かを判断する（ステップＳ４０）。
【０１３１】
詳細には、外部サービス連携部２３は、ＨＴＴＰレスポンスから得られたステータスコード「２００」が、ＡＰＩ名「login」の次処理判定情報の１つに含まれるステータスコード「２００」に等しい（真）であると判断する。また、外部サービス連携部２３は、ＨＴＴＰレスポンスから得られた結果値「ＯＫ」が、この次処理判定情報に含まれる結果値「ＯＫ」に等しい（真）であると判断する。そして、外部サービス連携部２３は、ステータスコードの真偽判定（真）と、結果値の真偽判定（真）とに対して、この次処理判定情報に含まれる論理演算「ＡＮＤ」を施し、結果は真であると判定する。そこで、外部サービス連携部２３は、この次処理判定情報に含まれる次処理ＡＰＩ名「upload」を抽出し、次処理ありと判断する（ステップＳ４０でＹｅｓ）。そして、外部サービス連携システム２の動作はステップＳ３６に戻る。
【０１３２】
次に、外部サービス連携部２３は、図８に示したＡＰＩ情報「upload」を読み込む（ステップＳ３６）。
【０１３３】
次に、外部サービス連携部２３は、ＡＰＩ情報「upload」のＵＲＬに含まれる入力変数「(user)」を、ステップＳ３３で入力されたユーザ名「taro」に置き換える。また、外部サービス連携部２３は、ＵＲＬに含まれる取得変数「［REGSTID］」を、前回のステップＳ３９で保持した取得値「12345」に置き換える。また、外部サービス連携部２３は、ボディ部に含まれる内部機能関連変数「$IMAGEDATA$」を、ステップＳ３４でスキャナ部８１から得られた画像データに置き換える。また、外部サービス連携部２３は、ヘッダ部における依存変数「{Content-Length}」を、画像データを置き換えたボディ部のデータ長を算出した値に置き換える（ステップＳ３７）。
【０１３４】
次に、外部サービス連携部２３は、各種の値を置き換え後のＡＰＩ情報「upload」に含まれるメソッド、ＵＲＬ、ヘッダ部、ボディ部を用いて、外部サービスとのＨＴＴＰ通信を行う（ステップＳ３８）。具体的には、外部サービス連携部２３は、図１９（ａ）に示すようなＨＴＴＰリクエストを生成する。そして、外部サービス連携部２３は、生成したＨＴＴＰリクエストを外部サーバ９０に送信し、ＨＴＴＰレスポンスを受信する。ここでは、例えば、図１９（ｂ）に示すＨＴＴＰレスポンスが受信されたものとする。
【０１３５】
次に、外部サービス連携部２３は、ＡＰＩ情報「upload」のレスポンス形式に設定された「ＸＭＬ」に基づいて、ステップＳ３８で得られたＨＴＴＰレスポンスを解析し、必要な情報を抽出して保持する（ステップＳ３９）。
【０１３６】
詳細には、外部サービス連携部２３は、図１９（ｂ）に示したＨＴＴＰレスポンスから、ステータスコード「２００」を抽出する。また、ＡＰＩシーケンス情報「service_upload」では、ＡＰＩ名「upload」の次処理判定情報の１つにおいて結果キーに、要素「RESULT」が設定されている。そこで、外部サービス連携部２３は、このＨＴＴＰレスポンスから、要素「RESULT」の値「ＯＫ」を抽出し、結果値として保持する。
【０１３７】
次に、外部サービス連携部２３は、ステップＳ３９における解析結果と、ＡＰＩ名「upload」の次処理判定情報とに基づいて、次に実行するＡＰＩがあるか否かを判断する（ステップＳ４０）。
【０１３８】
詳細には、外部サービス連携部２３は、ＨＴＴＰレスポンスから得られたステータスコード「２００」が、ＡＰＩ名「upload」の次処理判定情報の１つに含まれるステータスコード「２００」に等しい（真）であると判断する。また、外部サービス連携部２３は、ＨＴＴＰレスポンスから得られた結果値「ＯＫ」が、この次処理判定情報に含まれる結果値「ＯＫ」に等しい（真）であると判断する。そして、外部サービス連携部２３は、ステータスコードの真偽判定（真）と、結果値の真偽判定（真）とに対して、この次処理判定情報に含まれる論理演算「ＡＮＤ」を施し、結果は真であると判定する。そこで、外部サービス連携部２３は、この次処理判定情報に含まれる次処理ＡＰＩ名「logout」を抽出し、次処理ありと判断する（ステップＳ４０でＹｅｓ）。そして、外部サービス連携システム２の動作はステップＳ３６に戻る。
【０１３９】
次に、外部サービス連携部２３は、図８に示したＡＰＩ情報「logout」を読み込む（ステップＳ３６）。
【０１４０】
次に、外部サービス連携部２３は、ＡＰＩ情報「logout」のＵＲＬに含まれる入力変数「(user)」を、ステップＳ３３で入力されたユーザ名「taro」に置き換える（ステップＳ３７）。
【０１４１】
次に、外部サービス連携部２３は、置き換え後のＡＰＩ情報「logout」に含まれるメソッド、ＵＲＬ、ヘッダ部、ボディ部を用いて、外部サービスとのＨＴＴＰ通信を行う（ステップＳ３８）。具体的には、外部サービス連携部２３は、図２０（ａ）に示すようなＨＴＴＰリクエストを生成する。そして、外部サービス連携部２３は、生成したＨＴＴＰリクエストを外部サーバ９０に送信し、ＨＴＴＰレスポンスを受信する。ここでは、例えば、図２０（ｂ）に示すＨＴＴＰレスポンスが受信されたものとする。
【０１４２】
次に、外部サービス連携部２３は、ＡＰＩ情報「logout」のレスポンス形式に設定された「ＸＭＬ」に基づいて、ステップＳ３７で得られたＨＴＴＰレスポンスを解析し、必要な情報を抽出して保持する（ステップＳ３９）。
【０１４３】
詳細には、外部サービス連携部２３は、図２０（ｂ）に示したＨＴＴＰレスポンスから、ステータスコード「２００」を抽出する。また、ＡＰＩシーケンス情報「service_upload」では、ＡＰＩ名「logout」の次処理判定情報の１つにおいて結果キーに、要素「RESULT」が設定されている。そこで、外部サービス連携部２３は、このＨＴＴＰレスポンスから、要素「RESULT」の値「ＯＫ」を抽出し、結果値として保持する。
【０１４４】
次に、外部サービス連携部２３は、ステップＳ３９における解析結果と、ＡＰＩ名「logout」の次処理判定情報とに基づいて、次に実行するＡＰＩがあるか否かを判断する（ステップＳ４０）。
【０１４５】
詳細には、外部サービス連携部２３は、ＨＴＴＰレスポンスから得られたステータスコード「２００」が、ＡＰＩ名「logout」の次処理判定情報の１つに含まれるステータスコード「２００」に等しい（真）であると判断する。また、外部サービス連携部２３は、ＨＴＴＰレスポンスから得られた結果値「ＯＫ」が、この次処理判定情報に含まれる結果値「ＯＫ」に等しい（真）であると判断する。そして、外部サービス連携部２３は、ステータスコードの真偽判定（真）と、結果値の真偽判定（真）とに対して、この次処理判定情報に含まれる論理演算「ＡＮＤ」を施し、結果は真であると判定する。そこで、外部サービス連携部２３は、この次処理判定情報に含まれる次処理ＡＰＩ名「NORMAL_END」を抽出し、次処理無しと判断する（ステップＳ４０でＮｏ）。そして、外部サービス連携システム２の動作はステップＳ４１に進む。
【０１４６】
次に、ユーザインタフェース部２４は、ステップＳ４０で抽出された次処理ＡＰＩ名が「NORMAL_END」であるため、図２１（ａ）に示すように、「正常終了」画面を表示する（ステップＳ４１）。なお、図２１（ｂ）は、次処理ＡＰＩ名が「ERROR_END」
であった場合に表示される「異常終了」画面の一例である。
【０１４７】
以上で、ファンクション実行動作の具体例の説明を終了する。
【０１４８】
なお、ここでは、内部機能（例えば、スキャナ機能）の実行結果を用いて外部サービスとの通信を行うファンクションについての動作について説明した。その他、外部サービスとの通信結果を用いて内部機能（例えば、プリント機能）を実行するファンクションの場合、図１５におけるステップＳ３４の実行順序が異なる。図１５において、外部サービス連携部２３は、ステップＳ４０で次処理無しと判定された後に、ステップＳ３９で取得された取得値を用いてステップＳ３４（内部機能の実行）を行ってもよい。あるいは、外部サービス連携部２３は、ステップＳ３６〜Ｓ４０の繰り返しを実行中（外部サービスとの通信中）に任意のタイミングで、それまでのステップＳ３９で取得された取得値を用いてステップＳ３４（内部機能の実行）を行ってもよい。
【０１４９】
次に、本発明の第２の実施の形態の効果について述べる。
【０１５０】
本発明の第２の実施の形態としての外部サービス連携システムは、実装コードの開発知識のないユーザであっても、さらに容易に自システムを新たな外部サービスに柔軟に対応させることができる。
【０１５１】
その理由は、外部サービス対応情報取得部が、外部から取得したＡＰＩ定義ファイル、ＡＰＩシーケンス定義ファイル、および、ファンクション定義ファイルを解析することにより、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報を生成して外部サービス対応情報記憶部に記憶させるからである。そして、外部サービス連携部が、ユーザインタフェース部において選択されたファンクションに対応するファンクション情報に基づいて、該ファンクション情報の示すＡＰＩシーケンス情報の示す使用順序でＡＰＩ情報に基づきＡＰＩを実行することにより外部サービスとの通信を行うとともに、該ファンクションにおいて連携させる内部機能を機能実行装置に実行させて外部サービスと連携させることにより、該ファンクションを実行するからである。
【０１５２】
これにより、本実施の形態を用いるユーザは、外部サービスが公開しているＡＰＩに基づく各種の定義ファイルを外部サービス連携システムに入力するだけで、実装コードの開発知識がなくても、システムを新たな外部サービスに対応させて柔軟に構築することができる。
【０１５３】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。本実施の形態では、本発明の外部サービス連携システムを、画像形成装置および通信装置によって構成する例について説明する。具体的には、本実施の形態では、本発明における機能実行装置に画像形成装置を適用し、本発明の外部サービス連携装置の機能ブロックの一部を同じ画像形成装置を用いて構成し、残りの機能ブロックを通信装置を用いて構成する場合について述べる。なお、本実施の形態の説明において参照する各図面において、本発明の第２の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０１５４】
まず、本発明の第３の実施の形態としての外部サービス連携システム３の構成を図２２に示す。図２２において、外部サービス連携システム３は、本発明の第２の実施の形態としての外部サービス連携システム２と同一の機能ブロックを備えるが、画像形成装置３１０と、通信装置３２０とによって構成される点が異なる。画像形成装置３１０は、インターネット、ＬＡＮ、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して、外部サーバ９０に接続される。また、画像形成装置３１０および通信装置３２０は、インターネット、ＬＡＮ、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して通信可能に接続されている。
【０１５５】
ここで、画像形成装置３１０は、図７を用いて説明した本発明の第２の実施の形態を構成する画像形成装置と同一のハードウェア要素によって構成可能である。また、通信装置３２０は、図２３に示すように、ＣＰＵ３２０１と、ＲＡＭ３２０２と、ＲＯＭ３２０３と、記憶装置３２０４と、ネットワークインタフェース３２０５と、入力装置３２０６と、表示装置３２０７とを備えたコンピュータ装置によって構成可能である。例えば、通信装置３２０は、スマートデバイス、パーソナルコンピュータ装置、あるいは、ゲートウェイ機器等であってもよい。
【０１５６】
画像形成装置３１０は、スキャナ部８１およびプリンタ部８２（機能実行装置）と、外部サービス対応情報取得部２１と、外部サービス対応情報記憶部１２と、外部サービス連携部２３とを含む。また、通信装置３２０は、ユーザインタフェース部２４を含む。ユーザインタフェース部２４は、ネットワークインタフェース３２０５と、入力装置３２０６と、表示装置３２０７と、ＲＯＭ３２０３および記憶装置３２０４に記憶されたコンピュータ・プログラムおよび各種データをＲＡＭ３２０２に読み込んで実行するＣＰＵ３２０１とによって構成される。
【０１５７】
以上のように構成された外部サービス連携システム３の動作について説明する。
【０１５８】
まず、外部サービス連携システム３が、新たな外部サービスに対応する際の動作について説明する。本実施の形態における外部サービス対応動作は、図１４に示した本発明の第２の実施の形態における外部サービス対応動作と略同様であるが、ステップＳ２１における動作の詳細が異なる。
【０１５９】
ステップＳ２１において、画像形成装置３１０の外部サービス対応情報取得部２１は、ＡＰＩ定義ファイル、ＡＰＩシーケンス定義ファイル、および、ファンクション定義ファイルを、通信装置３２０から受信する。例えば、通信装置３２０のユーザインタフェース部２４は、これらの定義ファイルのパスを入力させ、パスの示す各定義ファイルを画像形成装置３１０に送信してもよい。
【０１６０】
次に、外部サービス連携システム３が、選択されたファンクションを実行する動作について説明する。本実施の形態におけるファンクション実行動作は、図１５に示した本発明の第２の実施の形態におけるファンクション実行動作と略同様である。ただし、ステップＳ３１〜Ｓ３４、Ｓ４１における動作の詳細が異なる。
【０１６１】
ステップＳ３１では、通信装置３２０のユーザインタフェース部２４は、選択されたファンクションを表す情報を画像形成装置３１０に送信する。これにより、画像形成装置３１０の外部サービス連携部２３は、受信した情報の示すファンクションに対応するファンクション情報を、外部サービス対応情報記憶部１２から読み込む。
【０１６２】
また、ステップＳ３２では、外部サービス連携部２３は、ファンクション情報に含まれる入力変数情報と内部機能特定情報とを、通信装置３２０に送信する。これにより、通信装置３２０のユーザインタフェース部２４は、入力値および内部機能の設定情報を入力させる入力画面を表示する。
【０１６３】
また、ステップＳ３３では、通信装置３２０のユーザインタフェース部２４は、入力された入力値および設定情報を、画像形成装置３１０に送信する。
【０１６４】
また、ステップＳ３４では、外部サービス連携部２３は、通信装置３２０から受信した設定情報を用いて、内部機能を実行させる（ステップＳ３４）。
【０１６５】
また、ステップＳ４０で次に実行するＡＰＩがないと判断された場合、ステップＳ４１では、外部サービス連携部２３は、ステップＳ３９で得られた終了を表す情報（例えば、「NORMAL_END」または「ERROR_END」）を、通信装置３２０に送信する。そして、通信装置３２０のユーザインタフェース部２４は、ファンクションの実行結果として、正常終了または異常終了を表す情報を表示する。
【０１６６】
以上で、外部サービス連携システム３のファンクション実行動作の説明を終了する。
【０１６７】
次に、本発明の第３の実施の形態の効果について述べる。
【０１６８】
本発明の第３の実施の形態としての外部サービス連携システムは、実装コードの開発知識のないユーザであっても、さらに容易に、自システムを新たな外部サービスに柔軟に対応させることができる。
【０１６９】
その理由は、外部サービス連携機能を有する画像形成装置とは異なる通信装置が、外部サービス連携機能に関するユーザインタフェース部を有するからである。
【０１７０】
これにより、利用者は、通信装置に対する操作を行うだけで、画像形成装置を新たな外部サービスに連携させることができるとともに、外部サービスと連携したファンクションを実行できる。したがって、本実施の形態は、ユーザビリティを向上させ、操作ミスを防止することが可能である。
【０１７１】
（第４の実施の形態）
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。本実施の形態では、本発明の外部サービス連携システムを、画像形成装置および通信装置によって構成する例について説明する。具体的には、本実施の形態では、本発明における機能実行装置として画像形成装置を適用し、本発明の外部サービス連携装置を通信装置によって構成する場合について述べる。なお、本実施の形態の説明において参照する各図面において、本発明の第２および第３の実施の形態と同一の構成および同様に動作するステップには同一の符号を付して本実施の形態における詳細な説明を省略する。
【０１７２】
まず、本発明の第４の実施の形態としての外部サービス連携システム４の構成を図２４に示す。図２４において、外部サービス連携システム４は、本発明の機能実行装置の一実施形態としての画像形成装置４１０と、本発明の外部サービス連携装置の一実施形態としての通信装置４２０とを含む。
【０１７３】
また、画像形成装置４１０は、スキャナ部８１およびプリンタ部８２を含む。また、通信装置４２０は、外部サービス対応情報取得部２１と、外部サービス対応情報記憶部１２と、外部サービス連携部２３と、ユーザインタフェース部２４とを含む。
【０１７４】
また、通信装置４２０は、インターネット、ＬＡＮ、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して、外部サーバ９０に接続される。また、画像形成装置４１０および通信装置４２０は、インターネット、ＬＡＮ、公衆回線網、無線通信網またはこれらの組合せ等によって構成されるネットワークを介して通信可能に接続されている。
【０１７５】
また、画像形成装置４１０は、図７を用いて説明した本発明の第２の実施の形態を構成する画像形成装置と同一のハードウェア要素によって構成される。また、通信装置４２０は、図２３を用いて説明した本発明の第３の実施の形態における通信装置３２０と同一のハードウェア要素によって構成される。
【０１７６】
以上のように構成された外部サービス連携システム４の動作について説明する。
【０１７７】
まず、外部サービス連携システム４が、新たな外部サービスに対応する動作について説明する。本実施の形態における外部サービス対応動作は、図１４に示した本発明の第２の実施の形態における外部サービス対応動作と略同様である。ただし、これらの動作が、通信装置４２０上で実行される点が異なる。
【０１７８】
次に、外部サービス連携システム４が、選択されたファンクションを実行する動作について説明する。本実施の形態におけるファンクション実行動作は、図１５に示した本発明の第２の実施の形態におけるファンクション実行動作と略同様である。ただし、これらの動作が、主に通信装置４２０上で実行される点と、ステップＳ３２およびステップＳ３４の動作の詳細とが異なる。
【０１７９】
ステップＳ３２では、通信装置４２０のユーザインタフェース部２４は、ファンクション情報に含まれる内部機能特定情報の示す内部機能について、その設定項目に関する情報を、画像形成装置４１０に問い合わせて受信する。例えば、内部機能特定情報がスキャン機能を示していれば、ユーザインタフェース部２４は、画像形成装置４１０に問い合わせることにより、スキャン設定項目に関する情報を受信する。また、内部機能特定情報がプリント機能を示していれば、ユーザインタフェース部２４は、画像形成装置４１０に問い合わせることにより、プリンタ設定項目に関する情報を受信する。これにより、ユーザインタフェース部２４は、入力値および内部機能の設定情報を入力させる入力画面を表示する。
【０１８０】
ステップＳ３４では、通信装置４２０の外部サービス連携部２３は、ステップＳ３３で入力された設定情報を画像形成装置４１０に送信することにより、設定情報を用いて内部機能を実行させる。そして、通信装置４２０の外部サービス連携部２３は、画像形成装置４１０から、内部機能の実行結果を受信すればよい。
【０１８１】
以上で、ファンクション実行動作の説明を終了する。
【０１８２】
次に、本発明の第４の実施の形態の効果について述べる。
【０１８３】
本発明の第４の実施の形態としての外部サービス連携システムは、実装コードの開発知識のないユーザであっても、外部サービス連携機能を持たない機能実行装置を新たな外部サービスに柔軟に対応させることができる。
【０１８４】
その理由は、外部サービス連携機能を持たない機能実行装置と通信可能に接続された通信装置が、外部サービス対応情報取得部、外部サービス対応情報記憶部、外部サービス連携部、および、ユーザインタフェース部を有し、外部サービス対応情報取得部が、外部から取得したＡＰＩ定義ファイル、ＡＰＩシーケンス定義ファイル、および、ファンクション定義ファイルを解析することにより、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報を生成して外部サービス対応情報記憶部に記憶させるからである。そして、外部サービス連携部が、ユーザインタフェース部において選択されたファンクションに対応するファンクション情報に基づいて、該ファンクション情報の示すＡＰＩシーケンス情報の示す使用順序でＡＰＩを実行することにより外部サービスとの通信を行うとともに、該ファンクションにおいて連携させる内部機能を機能実行装置に実行させて外部サービスと連携させるからである。
【０１８５】
これにより、本実施の形態を利用するユーザは、外部サービスが公開しているＡＰＩに基づく各種の定義ファイルを外部サービス連携システムに入力するだけで、実装コードの開発知識がなくても、機能実行装置の内部機能を新たな外部サービスに対応させた情報処理システムを柔軟に構築することができる。
【０１８６】
なお、上述した本発明の第２〜第４の実施の形態において、ＡＰＩ定義ファイル、ＡＰＩシーケンス定義ファイル、ファンクション定義ファイルが、図８、図１０、図１２に示す項目を表す情報を要素として含むＸＭＬ形式のファイルであるものとして説明した。この他、各定義ファイルにおいて定義される項目はこれらに限らない。また、各定義ファイルは、ＸＭＬ形式に限らず、その他の形式で表されていてもよい。また、上述した本発明の第２〜第４の実施の形態において、ＡＰＩ情報、ＡＰＩシーケンス情報、ファンクション情報が、図９、図１１、図１３に示す各項目を表す情報を含むものとして説明したが、本発明において、各情報は、これらの全ての項目を含んでいなくてもよいし、その他の項目を含んでいてもよい。各実施の形態において、ＡＰＩ情報は、ＡＰＩを用いて外部サービスとの通信を行うために必要な情報を含むものであればよい。また、ＡＰＩシーケンス情報は、ファンクションを実行する際に使用されるＡＰＩの使用順序を示すものであればよい。また、ファンクション情報は、内部機能と外部サービスとを連携させたファンクションに関する情報であればよい。
【０１８７】
また、上述した本発明の第２〜第４の実施の形態において、外部サービス連携システムの一部または全部を画像形成装置によって実現する例を中心に説明した。その他、外部サービス連携システムの一部または全部は、画像形成装置に限らず、その他の内部機能を実行する機能実行装置によって構成されていてもよい。
【０１８８】
また、上述した本発明の第２〜第４の実施の形態において、外部サービスと連携させる内部機能として、スキャナ機能およびプリンタ機能を適用する例を中心に説明したが、本発明における内部機能は、外部サービスと連携可能なその他の機能であってもよい。
【０１８９】
また、上述した本発明の第２〜第４の実施の形態において、ＡＰＩ定義ファイルに含まれる内部機能関連変数として、スキャナ部によって取得される画像データを表す情報（$IMAGEDATA）の例を挙げて説明したが、内部機能関連変数は、機能実行装置において外部サービスと連携可能なその他の機能に関する情報であってもよい。例えば、外部サービスにおいて機能実行装置におけるプリント枚数やスキャン枚数を管理する機能が提供されている場合、内部機能関連変数は、プリント枚数やスキャン枚数等を表すカウンタデータ（$COUNTER$）であってもよい。また、外部サービスにおいて機能実行装置におけるトナー切れや部品の故障等の動作上のアラームを管理する機能が提供されている場合、内部機能関連変数は、それらのアラームを表すアラームデータ（$ALARM$）等であってもよい。
【０１９０】
また、上述した本発明の第２〜第４の実施の形態において、外部サービスによって、ＨＴＴＰに基づくＷＥＢ  ＡＰＩが公開され、外部サービス連携部は、ＡＰＩ情報に基づきＨＴＴＰ通信を行う例を中心に説明した。これに限らず、外部サービスによってその他のプロトコルに基づくＡＰＩが公開されている場合、外部サービス連携部は、ＡＰＩ情報に基づき該当するプロトコルを用いて外部サービスとの通信を行ってもよい。
【０１９１】
また、上述した本発明の各実施の形態において、外部サービス対応情報取得部が、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報を取得し、外部サービス連携部が、これらの３つの情報に基づいて動作することを中心に説明した。これに限らず、各実施の形態は、これらの３つの情報のうち１つまたは２つに基づいて動作してもよい。例えば、ファンクションの実行において用いられるＡＰＩが１つである場合、外部サービス連携部は、ＡＰＩシーケンス情報の読み込みを省略可能である。この場合、ファンクション情報に、対応するＡＰＩシーケンス情報を特定する情報の代わりに、対応するＡＰＩ情報を特定する情報が含まれていればよい。また、例えば、外部サービス連携部は、ファンクション情報の読み込みを省略し、所定のＡＰＩシーケンス情報を所定のタイミング（例えば、所定間隔等）で読み込むことにより、該ＡＰＩシーケンス情報の示す各ＡＰＩ情報を順次用いて動作してもよい。また、例えば、外部サービス連携部は、ファンクション情報およびＡＰＩシーケンス情報の読み込みを省略し、所定のＡＰＩ情報を所定のタイミングで読み込むことにより、該ＡＰＩ情報に基づく動作を行ってもよい。例えば、内部機能を、その実行を伴わずに外部サービスに連携させる場合を考える。例えば、スキャン機能やプリント機能の実行を伴わずに、カウンタデータやアラームデータを外部サービスと連携させる場合等である。このような場合、外部サービス連携部は、ファンクション情報、または、ファンクション情報およびＡＰＩシーケンス情報の読み込みを省略可能な場合もある。このように、各実施の形態における外部サービス対応情報取得部は、ＡＰＩ情報、ＡＰＩシーケンス情報、および、ファンクション情報のうち、必要なものを取得すればよく、必ずしも全てを取得しなくてもよい。
【０１９２】
また、上述した本発明の各実施の形態において、外部サービス連携部は、ユーザによって選択されたファンクションを実行する例を中心に説明したが、所定のタイミングで所定のファンクションを実行してもよい。
【０１９３】
また、上述した本発明の各実施の形態において、外部サービス連携装置の各機能ブロックが、記憶装置またはＲＯＭに記憶されたコンピュータ・プログラムを実行するＣＰＵによって実現される例を中心に説明したが、各機能ブロックの一部、全部、または、それらの組み合わせが専用のハードウェアにより実現されていてもよい。
【０１９４】
また、上述した本発明の各実施の形態において、各フローチャートを参照して説明した外部サービス連携装置の動作を、本発明のコンピュータ・プログラムとしてコンピュータ装置の記憶装置（記憶媒体）に格納しておき、係るコンピュータ・プログラムを当該ＣＰＵが読み出して実行するようにしてもよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムのコードあるいは記憶媒体によって構成される。
【０１９５】
また、上述した各実施の形態は、適宜組み合わせて実施されることが可能である。
【０１９６】
また、本発明は、上述した各実施の形態に限定されず、様々な態様で実施されることが可能である。
【０１９７】
また、上述した各実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得する外部サービス対応情報取得部と、
前記外部サービス対応情報取得部によって取得された情報を記憶する外部サービス対応情報記憶部と、
前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する外部サービス連携部と、
を備えた外部サービス連携装置。
（付記２）
前記外部サービス対応情報取得部は、外部から受信する定義情報を解析することにより、前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかを生成して前記外部サービス対応情報記憶部に記憶させることを特徴とする付記１に記載の外部サービス連携装置。
（付記３）
前記ファンクション情報には、該ファンクションに対応する前記ＡＰＩシーケンス情報を特定するＡＰＩシーケンス特定情報および該ファンクションにおいて連携させる前記内部機能を特定する内部機能特定情報が含まれ、
前記外部サービス連携部は、前記ファンクション情報に含まれるＡＰＩシーケンス特定情報の示すＡＰＩシーケンス情報を参照し、該ＡＰＩシーケンス情報の示す使用順序で前記ＡＰＩ情報に基づき前記外部サービスとの通信を行うとともに、前記ファンクション情報に含まれる内部機能特定情報の示す内部機能を前記機能実行装置に実行させることにより、該ファンクションを実行することを特徴とする付記１または付記２に記載の外部サービス連携装置。
（付記４）
前記外部サービス連携部に実行させるファンクションをユーザに選択させるユーザインタフェース部をさらに備えることを特徴とする付記１から付記３のいずれか１つに記載の外部サービス連携装置。
（付記５）
前記外部サービス連携部は、前記内部機能の実行結果を用いて前記外部サービスとの通信を行うことを特徴とする付記１から付記４のいずれか１つに記載の外部サービス連携装置。
（付記６）
前記外部サービス連携部は、前記外部サービスとの通信結果を用いて前記機能実行装置に前記内部機能を実行させることを特徴とする付記１から付記５のいずれか１つに記載の外部サービス連携装置。
（付記７）
前記ユーザインタフェース部は、前記内部機能に関する設定情報を入力させ、
前記外部サービス連携部は、前記ユーザインタフェース部に入力された設定情報を用いて前記機能実行装置に前記内部機能を実行させることを特徴とする付記１から付記６のいずれか１つに記載の外部サービス連携装置。
（付記８）
前記ＡＰＩ情報には、入力変数が含まれ、
前記ユーザインタフェース部は、入力値を入力させ、
前記外部サービス連携部は、前記入力値で前記入力変数を置き換えたＡＰＩ情報に基づいて、前記外部サービスとの通信を行うことを特徴とする付記１から付記７のいずれか１つに記載の外部サービス連携装置。
（付記９）
前記ＡＰＩ情報には、内部機能関連変数が含まれ、
前記外部サービス連携部は、前記内部機能から得られる情報で前記内部機能関連変数を置き換えたＡＰＩ情報に基づいて、前記外部サービスとの通信を行うことを特徴とする付記１から付記８のいずれか１つに記載の外部サービス連携装置。
（付記１０）
前記ＡＰＩ情報には、前記外部サービスとの通信結果から取得する取得値を指定する情報（レスポンス取得キー）が含まれ、
前記外部サービス連携部は、前記レスポンス取得キーに基づいて、前記外部サービスとの通信結果から前記取得値を取得することを特徴とする付記１から付記９のいずれか１つに記載の外部サービス連携装置。
（付記１１）
前記ＡＰＩ情報には、取得変数が含まれ、
前記外部サービス連携部は、前記取得値で前記取得変数を置き換えたＡＰＩ情報に基づいて、前記外部サービスとの通信を行うことを特徴とする付記１０に記載の外部サービス連携装置。
（付記１２）
前記外部サービス連携部は、前記取得値を用いて、前記内部機能を実行することを特徴とする付記１０に記載の外部サービス連携装置。
（付記１３）
前記ＡＰＩ情報には、他の変数の内容に依存して値が定まる依存変数が含まれ、
前記外部サービス連携部は、他の変数の内容に応じて算出した値で前記依存変数を置き換えたＡＰＩ情報に基づいて、前記外部サービスとの通信を行うことを特徴とする付記１から付記１２のいずれか１つに記載の外部サービス連携装置。
（付記１４）
前記ＡＰＩシーケンス情報には、前記ファンクションの実行において用いられる各ＡＰＩについて、該ＡＰＩを用いた前記外部サービスとの通信結果に基づき次に実行する処理を判定するための情報を表す次処理判定情報が含まれ、
前記外部サービス連携部は、前記次処理判定情報に基づいて、前記ＡＰＩシーケンス情報の示す各ＡＰＩを順次実行することを特徴とする付記１から付記１３のいずれか１つに記載の外部サービス連携装置。
（付記１５）
付記１から付記１４のいずれか１つに記載の外部サービス連携装置と、
前記機能実行装置と、
を含む外部サービス連携システム。
（付記１６）
前記機能実行装置として画像形成装置を含むことを特徴とする付記１５に記載の外部サービス連携システム。
（付記１７）
外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得し、
前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する、外部サービス連携方法。
（付記１８）
外部から受信する定義情報を解析することにより、前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかを生成することを特徴とする付記１７に記載の外部サービス連携方法。
（付記１９）
外部サービスによって公開されるアプリケーションプログラミングインタフェース（ＡＰＩ）に関する情報（ＡＰＩ情報）と、前記ＡＰＩの使用順序に関する情報（ＡＰＩシーケンス情報）と、機能実行装置の内部機能を前記ＡＰＩに基づき前記外部サービスに連携させる機能（ファンクション）に関する情報（ファンクション情報）との少なくともいずれかを取得する外部サービス対応情報取得ステップと、
前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかに基づいて、前記内部機能と前記外部サービスとを連携させた前記ファンクションを実行する外部サービス連携ステップと、
をコンピュータ装置に実行させるコンピュータ・プログラム。
（付記２０）
前記外部サービス対応情報取得ステップにおいて、外部から受信する定義情報を解析することにより、前記ＡＰＩ情報、前記ＡＰＩシーケンス情報、および、前記ファンクション情報の少なくともいずれかを生成することを特徴とする付記１９に記載のコンピュータ・プログラム。
【符号の説明】
【０１９８】
１、２、３、４    外部サービス連携システム
１０、２０    外部サービス連携装置
１１、２１    外部サービス対応情報取得部
１２    外部サービス対応情報記憶部
１３、２３    外部サービス連携部
２４    ユーザインタフェース部
８０    機能実行装置
８１    スキャナ部
８２    プリンタ部
９０    外部サーバ
３１０、４１０    画像形成装置
３２０、４２０    通信装置
【図１】
2015064682.tif 000003
【図２】
2015064682.tif 000004
【図３】
2015064682.tif 000005
【図４】
2015064682.tif 000006
【図５】
2015064682.tif 000007
【図６】
2015064682.tif 000008
【図７】
2015064682.tif 000009
【図８】
2015064682.tif 000010
【図９】
2015064682.tif 000011
【図１０】
2015064682.tif 000012
【図１１】
2015064682.tif 000013
【図１２】
2015064682.tif 000014
【図１３】
2015064682.tif 000015
【図１４】
2015064682.tif 000016
【図１５】
2015064682.tif 000017
【図１６】
2015064682.tif 000018
【図１７】
2015064682.tif 000019
【図１８】
2015064682.tif 000020
【図１９】
2015064682.tif 000021
【図２０】
2015064682.tif 000022
【図２１】
2015064682.tif 000023
【図２２】
2015064682.tif 000024
【図２３】
2015064682.tif 000025
【図２４】
2015064682.tif 000026