(57)【要約】【課題】負荷分散装置から振り分けられた要求を情報処理装置が別の情報処理装置にリダイレクトする事態の発生を低減する。【解決手段】要求処理部１００８は、ロードバランサから受け取った要求が自サーバで担当すべきものか他サーバの担当かを判定し、他サーバの担当の場合はリダイレクト処理部１０１０によりその要求を当該他サーバにリダイレクトする。セッション維持時間決定部１１１２は、その要求に対する応答に対して設定するセッション維持時間を決定する。この決定では、要求を他サーバにリダイレクトした場合、その要求を自サーバで処理した場合よりもセッション維持時間を短くする（例えば０）。応答部１１１４は、その要求の処理結果（自サーバでの処理結果、又はリダイレクト先の他サーバから返信された処理結果）を含む応答に対し、セッション維持時間決定部１１１２が決定したセッション維持時間を設定し、ロードバランサに返す。【選択図】図２
2015176590.tif 000002
【特許請求の範囲】
【請求項１】
負荷分散装置から受け取った要求を解析して前記要求を担当すべき印刷制御装置が自装置か他の印刷制御装置かを判定し、他の印刷制御装置であると判定した場合、当該他の印刷制御装置に前記要求をリダイレクトする手段と、
前記要求に対する応答にセッション維持時間を設定する手段であって、前記要求を他の印刷制御装置にリダイレクトした場合に、前記要求をリダイレクトせずに自装置で処理した場合よりも短いセッション維持時間を設定する設定手段と、
を有する印刷制御装置。
【請求項２】
前記設定手段は、前記要求をリダイレクトせずに自装置で処理した場合において、前記要求の種類に応じたセッション維持時間を前記応答に設定する、ことを特徴とする請求項１に記載の印刷制御装置。
【請求項３】
前記設定手段は、前記要求が、クライアントから印刷制御装置への印刷データの転送を必要とする種類の要求である場合には、それ以外の種類の要求の場合よりも長いセッション維持時間を前記応答に設定する、ことを特徴とする請求項２に記載の印刷制御装置。
【請求項４】
コンピュータを、
負荷分散装置から受け取った要求を解析して前記要求を担当すべき印刷制御装置が自装置か他の印刷制御装置かを判定し、他の印刷制御装置であると判定した場合、当該他の印刷制御装置に前記要求をリダイレクトする手段、
前記要求に対する応答にセッション維持時間を設定する手段であって、前記要求を他の印刷制御装置にリダイレクトした場合に、前記要求をリダイレクトせずに自装置で処理した場合よりも短いセッション維持時間を設定する設定手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷制御装置及びプログラムに関する。
【背景技術】
【０００２】
クライアントからの要求を負荷分散装置により多数のサーバに分散させて処理させる負荷分散技術はよく知られている。クライアントからの要求を同じサーバに振り分けるセッション維持技術もよく知られている。セッション維持は、例えばクライアントの送信ＩＰアドレスやクッキー（Cookie）等を用いて行われる。
【０００３】
特許文献１及び２には、負荷分散装置への負荷集中を避けるために、負荷分散装置の背後にある各サーバがクライアントに対して直接（負荷分散装置を介さずに）応答を送信するための方式が提案されている。
【０００４】
特許文献３には、負荷分散装置の背後にあるサーバが停止する際に、セッション情報を別のサーバに引き継ぐための方式が開示されている。
【０００５】
特許文献４に開示された負荷分散装置は、その背後にあるサーバごとのＦＩＦＯバッファを有する。サービス要求が受信されるごとに、そのサービス要求に対するサービス時間に相当するキューが、いずれかのＦＩＦＯバッファに入力される。ＦＩＦＯバッファの転送レートを、対応するサーバにおけるサービス時間の逆数とし各ＦＩＦＯバッファにオーバーフローもアンダーフローを生じないように、対応する各サーバにサービス要求を割り振ることで、各サーバの輻輳や効率低下を防止している。
【０００６】
特許文献５に開示される方法では、プロセスの実行制御情報は計算機内で管理し、プロセス状態情報は計算機外の情報共有装置で管理し、前記情報共有装置上のプロセス状態情報を使用する時はプロセスの排他制御を行い、プロセスの連続的な実行はプロセスの実行制御情報およびプロセス状態情報を用いて行い、プロセスの操作はプロセス状態情報のみを用い、受信した通信メッセージを１つ以上の計算機に分配し、特定の条件を満たす通信メッセージの受信によって新規にプロセスを生成し、生成したプロセスの一部または全部のプロセス状態情報を１つ以上の計算機間で共有し、１つの計算機でプロセスを連続的に実行し、特定の条件を満たす通信メッセージの受信によって共有されたプロセス状態情報を操作する。
【０００７】
それぞれ別々の印刷装置を制御する複数台の印刷サーバを１つの印刷制御システムとして構成する場合においても、クライアントとそれら複数台の印刷サーバとの間に負荷分散装置を配置することが考えられる。このシステムでは、クライアントからの指示は負荷分散装置により受け取られ、いずれかの印刷サーバに振り分けられる。クライアントからの印刷指示は、クライアントが指定した出力先の印刷装置を制御する印刷サーバに振り分けるべきであるが、そのためには負荷分散装置が、印刷指示データ中の出力先の指定を認識し、その出力先に対応する印刷サーバを特定する機能を有していなければならない。
【０００８】
しかし、そのような機能を有した負荷分散装置を使用できない場合もあり得る。例えば米国Ａｍａｚｏｎ社のAmazon EC2（Amazon Elastic Compute Cloud）（Amazon EC2、Amazon Elastic Compute Cloudは、Ａｍａｚｏｎ社の商標）のようなクラウドサービスを用いてそのような印刷制御システムを構築し、クラウドサービスが提供する負荷分散サービスを利用する場合がその一例である。クラウドサービスが提供する負荷分散サービスは、送信元ＩＰアドレスやクッキーを参照して要求を振り分ける機能（セッション維持機能）を有するものの、アプリケーション（この場合は印刷サービス）のデータの中身（例えば出力先プリンタの指定）まで見てそのような振り分けをする機能までは持っていない。
【０００９】
アプリケーションデータに基づいた要求の振り分け機能を持たない負荷分散装置を利用する場合、印刷指示がその指示を本来担当すべき印刷サーバとは別の印刷サーバに振り分けられることがある。印刷指示を受け取った印刷サーバは、その印刷指示を解析可能である。したがって、その解析の結果もしその印刷指示の担当が他の印刷サーバであることが分かれば、その印刷指示をその担当の印刷サーバにリダイレクトすることができる。しかし、このようなリダイレクトが頻繁に起こると、システムの処理効率が悪くなる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−２７７５６９号公報
【特許文献２】特開２００６−２７７５７０号公報
【特許文献３】特開２０１２−２４８１６９号公報
【特許文献４】特開２００９−３０１０９５号公報
【特許文献５】特開２００７−２１３６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、負荷分散装置から振り分けられた要求を情報処理装置が別の情報処理装置にリダイレクトする事態の発生を、本発明を用いない場合よりも低減することを目的とする。
【課題を解決するための手段】
【００１２】
請求項１に係る発明は、負荷分散装置から受け取った要求を解析して前記要求を担当すべき印刷制御装置が自装置か他の印刷制御装置かを判定し、他の印刷制御装置であると判定した場合、当該他の印刷制御装置に前記要求をリダイレクトする手段と、前記要求に対する応答にセッション維持時間を設定する手段であって、前記要求を他の印刷制御装置にリダイレクトした場合に、前記要求をリダイレクトせずに自装置で処理した場合よりも短いセッション維持時間を設定する設定手段と、を有する印刷制御装置である。
【００１３】
請求項２に係る発明は、前記設定手段は、前記要求をリダイレクトせずに自装置で処理した場合において、前記要求の種類に応じたセッション維持時間を前記応答に設定する、ことを特徴とする請求項１に記載の印刷制御装置である。
【００１４】
請求項３に係る発明は、前記設定手段は、前記要求が、クライアントから印刷制御装置への印刷データの転送を必要とする種類の要求である場合には、それ以外の種類の要求の場合よりも長いセッション維持時間を前記応答に設定する、ことを特徴とする請求項２に記載の印刷制御装置である。
【００１５】
請求項４に係る発明は、コンピュータを、負荷分散装置から受け取った要求を解析して前記要求を担当すべき印刷制御装置が自装置か他の印刷制御装置かを判定し、他の印刷制御装置であると判定した場合、当該他の印刷制御装置に前記要求をリダイレクトする手段、前記要求に対する応答にセッション維持時間を設定する手段であって、前記要求を他の印刷制御装置にリダイレクトした場合に、前記要求をリダイレクトせずに自装置で処理した場合よりも短いセッション維持時間を設定する設定手段、として機能させるためのプログラムである。
【発明の効果】
【００１６】
請求項１又は４に係る発明によれば、負荷分散装置から振り分けられた要求を情報処理装置が別の情報処理装置にリダイレクトする事態の発生を、本発明を用いない場合よりも低減することができる。
【００１７】
請求項２に係る発明によれば、要求の種類毎のセッション維持の必要度合いに応じたセッション維持時間を設定することができる。
【００１８】
請求項３に係る発明によれば、セッション維持の必要度合いが他の種類よりも高い、印刷データの転送を伴う要求に対して、セッション維持が働きやすくすることができる。
【図面の簡単な説明】
【００１９】
【図１】実施形態のシステム構成の一例を示す図である。
【図２】印刷サーバ及びデータ記憶装置の内部構成の例を示す図である。
【図３】論理プリンタテーブルのデータ内容の一例を示す図である。
【図４】物理プリンタテーブルのデータ内容の一例を示す図である。
【図５】対応づけテーブルのデータ内容の一例を示す図である。
【図６】サーバテーブルのデータ内容の一例を示す図である。
【図７】ジョブテーブルのデータ内容の一例を示す図である。
【図８】コマンド（クライアントからの要求）と操作対象クラスとの関係の例を示す図である。
【図９】印刷サーバとロードバランサのセッション維持時間の連動機構を利用したセッション維持制御の流れの例を説明するための図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して、本発明の実施形態を説明する。
【００２１】
図１に、実施形態の印刷制御システムの一例を示す。図１に例示するシステムは、複数の印刷サーバ１００、データ記憶装置１０２、及びロードバランサ１０６を有する。
【００２２】
印刷サーバ１００は、プログラムを実行可能なコンピュータ上で、印刷サービス機能を表すプログラムを実行することにより構成される装置である。ここでいうコンピュータは、物理的に存在する装置に限定されるものではなく、仮想マシンであってもよい。例えば、サーバ１００は、ＩａａＳ（Infrastructure as a Service）タイプ等のクラウドコンピューティングサービス（以下単に「クラウド」と呼ぶ）が提供する仮想マシン（ＶＭ：Virtual Machine）であってもよい。以下では、印刷サーバ１００がクラウド上の仮想マシンである場合を代表例にとって説明する。ただし、本実施形態の仕組みは、印刷サーバ１００が物理的に実在する装置である場合にも適用可能である。
【００２３】
図示の例では、印刷サーバ１００は、１以上の論理プリンタ１００２及び１以上の物理プリンタ１００４を生成し、動作させることが可能である。論理プリンタ１００２及び物理プリンタは、印刷システムの業界標準の１つであるＤＰＡ（Document Printing Application）（ISO/IEC 10175）に規定された仮想プリンタのオブジェクトである。これら２種類のプリンタ・オブジェクトにより印刷のための制御処理を分担する。大略的には、論理プリンタ１００２はユーザからの印刷指示の受付処理を行い、物理プリンタ１００４は、その印刷指示に応じた印刷のために実プリンタ１０４を制御する。実プリンタ１０４は用紙等の媒体に対して実際に印刷を行う、物理的に実在するプリンタである。論理プリンタ１００２と物理プリンタ１００４の機能分担は、実施形態の制御にとって本質的なことではないので、これ以上の説明は省略する。なお、以下では、論理プリンタ１００２と物理プリンタ１００４の区別の必要がない場合は、それらを仮想プリンタと総称する。
【００２４】
物理プリンタ１００４は、１以上の実プリンタ１０４に対応づけられており、それら対応する１以上の実プリンタ１０４を制御して印刷処理を実現する。図示例では各物理プリンタ１００４はそれぞれ１つの実プリンタ１０４に対応づけられているが、これはあくまで一例にすぎない。
【００２５】
論理プリンタ１００２は、１以上の物理プリンタ１００４に対応づけられている。図１では、互いに対応する論理プリンタ１００２と物理プリンタ１００４との間を線で結ぶことで、その対応関係を示している。ここでいう「対応関係」は、一方が他方を制御又は管理するといった主従関係があることまでは要求しない（もちろんそのような主従関係がある実装形態も考え得る）。この「対応関係」は、論理プリンタ１００２が受け付けた印刷指示に応じた印刷処理をその論理プリンタ１００２と線でつながる物理プリンタ１００４が担当するという、同じ印刷指示についてのジョブを担当するという意味での対応関係である。なお、ここでいうジョブとは、印刷制御システム又はその各構成要素が、クライアントから受けた印刷指示に応じて行う処理のことである。
【００２６】
なお、印刷サーバ１００は、図１に示した論理プリンタ１００２及び物理プリンタ１００４の他に、論理プリンタ１００２及び物理プリンタ１００４による印刷制御処理を管理するための各種機能を有するが、これについては後で説明する。
【００２７】
データ記憶装置１０２は、システム内の複数の印刷サーバ１００によって共用される記憶装置である。各印刷サーバ１００（及び当該サービスが管理する論理プリンタ１００２，物理プリンタ１００４等のオブジェクト）は、クライアントからの印刷指示に応じた印刷を実現するために必要なデータをデータ記憶装置１０２に格納する。また各印刷サーバ１００は、データ記憶装置１０２に記憶されたデータを必要に応じて参照し、印刷を実現するための処理を実行する。
【００２８】
データ記憶装置１０２に記憶されるデータには、各論理プリンタ１００２や各物理プリンタ１００４を定義する定義情報（後述するプリンタテーブル）が含まれる。
【００２９】
また、論理プリンタ１００２や物理プリンタ１００４が実行しているジョブの処理情報をデータ記憶装置１０２に記憶してもよい。ジョブの処理情報とは、論理プリンタ１００２又は物理プリンタ１００４が当該ジョブのための一連の処理の中で処理の対象とする情報、処理の途中又は最終の結果として出力する情報、及びそれら一連の処理の管理のための情報等の総称である。なお、一連の処理の途中の処理結果は、その一連の処理の中の後の処理での処理対象となる場合もある。
【００３０】
例えば、クライアントから印刷指示に付随して受け取った印刷データ（印刷すべき文書をＰＤＬ等で記述したデータ）は、ジョブにおける処理の対象となるデータであり、ジョブの処理情報に含まれる。なお、ＰＤＬとはPage Description Languageの略であり、ページ記述言語を意味する。ＰＤＦ（Portable Document Format）もＰＤＬの一種として用いられる。
【００３１】
また、印刷サーバ１００がＰＤＬで記述された印刷データを解釈することにより生成される印刷可能データは、ジョブの一連の処理のうちの解釈処理の結果のデータであると共に、実プリンタ１０４での印刷処理の対象となるデータであり、ジョブの処理情報に含まれる。この印刷可能データは、実プリンタ１０８で印刷処理が可能なデータ形式であればよく、実プリンタ１０８で解釈可能なＰＤＬ形式のデータやラスター画像データ等のデータである。また、印刷サーバ１００がＰＤＬの印刷データをいったん中間形式のデータに変換し、その中間形式データをラスター画像データに変換する方式を採用している場合、中間形式データもジョブの処理情報の一例である。なお、中間形式とは、印刷対象の文書をＰＤＬとラスター画像の中間の粒度で表現するデータ形式であり、例えばディスプレイリストがその一例である。
【００３２】
また、クライアントから印刷指示に伴って受け取った印刷属性（印刷部数、用紙サイズ、片面印刷か両面印刷か、カラー印刷かモノクロ印刷か等）及びその印刷指示のためのジョブに付与した一意なジョブＩＤ（識別情報）等を含むジョブの管理情報も、データ記憶装置１０２に記憶される処理情報の一例である。
【００３３】
データ記憶装置１０２に記憶されるジョブの処理情報は、ジョブの進捗に合わせて更新されるようにしてもよい。データ記憶装置１０２内のジョブの処理情報の更新は、例えば、別のサーバ１００へと移動（配置換え）されるために論理プリンタ１００２や物理プリンタ１００４等の仮想プリンタが停止される際に実行される。例えば、仮想プリンタが上位の管理装置（例えば配置管理装置）からの命令に応じて停止する場合に、それまで実行していた処理の結果のデータ（例えば停止指示を受けた時点でＰＤＬデータを中間形式データへ変換し終わっていればその中間形式のデータ）をデータ記憶装置１０２に格納する等である。
【００３４】
また、ジョブを構成する各処理が完了するごとに、完了した処理の処理結果を反映するようデータ記憶装置１０２内の当該ジョブの処理情報を更新するという方式も可能である。例えば、クライアントからをＰＤＬデータを受け付ける処理が完了した段階、ＰＤＬデータを中間形式データに変換する処理が完了した段階、及び中間形式データを（またはＰＤＬデータを直接）印刷可能データに変換する処理が完了した段階等といった段階ごとに、データ記憶装置１０２に対してそれら各段階の処理結果のデータ（ＰＤＬ、中間形式、ラスター画像等の印刷可能データなど）を格納する等である。また、既に受付済みのジョブについての印刷属性の変更指示をクライアントから受け取った場合に、その指示に応じて、データ記憶装置１０２内の当該ジョブの管理情報を変更するようにしてもよい。
【００３５】
データ記憶装置１０２は、１つの例では、クラウド上のＶＭ（仮想マシン）又は、クラウド上のストレージサービスとして実現される。また、データ記憶装置１０２は、物理的に実在する装置であってももちろんよい。データ記憶装置１０２としては、冗長化技術等により高い故障耐性を持つものを用いてもよい。
【００３６】
ロードバランサ１０６は、クライアントから本システムに対して到来する各種の要求を、本システム内の複数の印刷サーバ１００に振り分けることで、それら複数の印刷サーバ１００の間の負荷分散を実現する。ロードバランサ１０６が用いる振り分け方式には、特に限定はない。ラウンドロビン方式等の単純な方式を用いてもよいし、より高度な方式を用いてもよい。
【００３７】
例えば、クラウドサービスが提供する一般的なロードバランサは、クラウド上に実現される個別のアプリケーションシステム（本実施形態では、印刷制御システム）に依存しない要求振り分け方式を採用している。すなわち、そのような一般的なロードバランサは、アプリケーションシステムにおいてやりとりされる要求の中身を考慮せずに、ラウンドロビン等の単純な方式で振り分けを行う。例えば、クライアントから到来する印刷指示のデータは、その指示の宛先である論理プリンタ１００２を特定する情報を含んでいるが、そのような一般的なロードバランサは、印刷指示の中身である宛先の情報を見ず、その宛先情報とは無関係にその印刷指示の転送先を決定する。したがって、印刷サーバ１００（又はその中の論理プリンタ１００２等の要素）が受け取った要求が自分宛ではなく、他の印刷サーバ１００等に宛てたものである場合もある。自分宛でない要求を受け取った印刷サーバ１００は、配置管理装置への問合せによりその要求の宛先が存在するサーバ１００を特定し、特定したサーバ１００に対してその要求をリダイレクトする。
【００３８】
次に、図２を参照して、印刷サーバ１００及びデータ記憶装置１０２の内部構成の一例を説明する。
【００３９】
印刷サーバ１００は、論理プリンタ１００２、物理プリンタ１００４、要求受付解析部１００６、要求処理部１００８、リダイレクト処理部１０１０、セッション維持時間決定部１１１２及び応答部１１１４を有する。論理プリンタ１００２及び物理プリンタ１００４は、印刷サーバ１００内に複数実行されてもよいし、１つも実行されなくてもよい。印刷サーバ１００は、システム管理者からの指示やあらかじめインストールされた管理プログラムの実行により、印刷サーバ１００内に論理プリンタ１００２又は物理プリンタ１００４を追加したり、印刷サーバ１００内に存在する論理プリンタ１００２又は物理プリンタ１００４を削除したりする。
【００４０】
論理プリンタ１００２は、例えば、ジョブの受付処理を行う。すなわち、クライアントから送られてくる印刷指示は、宛先の論理プリンタ１００２の指定を含んでおり、宛先の論理プリンタ１００２は、その印刷指示を受け取ると、その印刷指示に対応するジョブを生成する。ジョブの生成では、例えばそのジョブのＩＤ屋印刷属性などを含むジョブの管理情報を生成してデータ記憶装置１０２に格納し、その管理情報がこの印刷制御システム内（他の印刷サービスも含む）の様々な要素（当該論理プリンタ１００２自身や、関連する物理プリンタ１００４等）から参照できるようにする。
【００４１】
物理プリンタ１００４は、この例では、対応する実プリンタ１０４の状態の監視、その実プリンタ１０４の制御、印刷対象のＰＤＬデータの中間データや印刷可能データへの変換、ジョブの状態管理等を行う。
【００４２】
要求受付解析部１００６は、クライアント（ユーザ）からの要求メッセージを、ロードバランサ１０６経由で受信する。そして、その要求メッセージを解析して、要求種別（すなわちコマンド）、及びそのコマンドに対応する処理パラメータを抽出する。抽出されるパラメータには、そのコマンドの操作対象となるオブジェクト（例えば論理プリンタ１００２や物理プリンタ１００４、ジョブ等）を特定する情報が含まれる。
【００４３】
例えば、クライアントからの要求とそれに対する印刷サーバ１００からの応答は、ＨＴＴＰ（HyperText Transfer Protocol）にマップされて転送される。この場合、要求の種別は、例えばＨＴＴＰメッセージのヘッダ中の特定の要素（例えばメッセージタイプ要素）の値として指定されるようにしてもよい。これには例えば、クライアント上の印刷要求を発するアプリケーションが、印刷サーバ１００に対するコマンドを、ＨＴＴＰメッセージのヘッダ中に特定の要素の値として書き込むようにすればよい。要求受付解析部１００６は、ＨＴＴＰ要求のヘッダ中の特定の要素の値を、要求種別として認識する。なお、要求種別は、ＨＴＴＰボディ内のアプリケーションデータ中から抽出するようにしてもよい。
【００４４】
印刷サーバ１００に対する要求の種別（コマンド）には、例えば図８に示すようなものがある（ただしこれはあくまで例にすぎない）。図８に例示した各コマンドは、それぞれ「操作対象クラス」の欄に示されるオブジェクトクラスへの操作を示す。例えば、コマンド「CreateLogicalPrinter」は、印刷サーバ１００に対して新たな論理プリンタ１００２の生成（追加）を要求するコマンドである。また、コマンド「CreateJob」は、パラメータで指定した宛先の論理プリンタ１００２に対して、新たなジョブの生成を要求するコマンドであり、コマンド「CancelJob」は、パラメータで指定されたジョブの削除を要求するコマンドである。コマンド「CreateContent」は、印刷データ（例えばＰＤＬデータ）をクライアントから印刷サーバ１００に転送し、印刷サーバ１００内に印刷ジョブのコンテントとして登録することを要求するコマンドである。
【００４５】
要求のパラメータは、例えばＨＴＴＰメッセージのボディ中の印刷要求本体のデータに含まれる。要求受付解析部１００６は、ＨＴＴＰ要求のボディを解析することで、要求種別に対応するパラメータの値を認識する。１つの例では、パラメータは、ＨＴＴＰメッセージのボディ中に、ＸＭＬ（eXtensible Markup Language）でシリアライズされた印刷要求データの一部として含まれる。この場合、要求受付解析部１００６は、ボディ中のＸＭＬデータを解析することで、指定された要求種別に対応するパラメータを得る。
【００４６】
要求の操作対象はパラメータ内に記述されており、例えば操作対象クラスごとに識別方法が異なる。操作対象クラスが論理プリンタまたは物理プリンタの場合にはプリンタ名により操作対象を識別する。操作対象クラスがジョブの場合には、ジョブＩＤ（識別情報）で操作対象を識別する。
【００４７】
要求処理部１００８は、要求受付解析部１００６から、解析結果であるコマンドとパラメータを受け取り、パラメータに含まれる操作対象オブジェクトの処理を担当する印刷サーバ１００を、図示省略した配置管理装置に問い合わせる。配置管理装置は、各印刷サーバ１００における論理プリンタ１００２や物理プリンタ１００４の生成、削除を監視（例えば印刷サーバ１００が仮想プリンタの生成や削除を配置管理装置に通知するなどの方法を用いればよい）しており、その監視に従ってデータ記憶装置１０２内の論理プリンタテーブル１０２１や物理プリンタテーブル１０２２上の各エントリの内容をメンテナンスしている。配置管理装置は、その問合せに応じて、それらテーブルから、パラメータに示された論理プリンタ１００２又は物理プリンタ１００４の配置先サーバを求め、求めた配置先サーバを要求処理部１００８に応答する。要求処理部１００８は、この応答に示される配置先サーバが自サーバであれば、自サーバ１００にてそのコマンドを実行する。その応答に示される配置先サーバが自サーバでなければ、リダイレクト処理部１０１０にリダイレクト処理を依頼する。リダイレクト処理部１０１０は、その配置先サーバに対して、その要求をリダイレクトすると共に、その要求を処理したその配置先サーバからの応答を受け取り、その応答を要求処理部１００８に渡す。要求処理部１００８は、リダイレクト処理部１０１０から受け取った応答を応答部１１１４に渡す。
【００４８】
より具体的な例を挙げると、要求処理部１００８は、要求受付解析部１００６の解析結果から、コマンド、操作対象クラス、操作対象オブジェクトを得る。そして、操作対象クラスが、論理プリンタ又は物理プリンタの場合には、配置管理装置に対して操作対象オブジェクトの識別情報（論理プリンタ又は物理プリンタのＩＤ）を含んだ問合せを送る。この問合せに対し、配置管理装置は、論理プリンタテーブル１０２１又は物理プリンタテーブル１０２２からその識別情報に対応するオブジェクトの配置先サーバのＩＤを求め、更にサーバテーブル１０２４からその配置先サーバのＩＰアドレスを求め、配置先サーバのＩＤとＩＰアドレスを含んだ応答を要求処理部１００８に返す。その応答に含まれるサーバＩＤが自サーバのＩＤと一致する場合には、操作対象オブジェクトである論理プリンタ又は物理プリンタは自サーバ内にある。この場合、要求処理部１００８は、要求受付解析部１００６の解析結果から得た操作対象オブジェクト（自サーバ内にある）に対して、そのコマンドを実行する。一方、配置管理装置からの応答に示される配置先サーバのＩＤが自サーバのＩＤと一致しない場合、その応答に含まれる配置先サーバのＩＰアドレスと、要求受付解析部１００６による要求の解析結果（コマンド、操作対象クラス、操作対象オブジェクト等）をリダイレクト処理部１０１０に渡し、リダイレクト処理を実行させる。リダイレクト処理部１０１０は、その解析結果を含むＨＴＴＰ要求メッセージをそのＩＰアドレス（配置先サーバ）にリダイレクトし、その配置先サーバからそのＨＴＴＰ要求メッセージに対する応答を受け取る。そして、受け取った応答を要求処理部１００８に渡す。
【００４９】
なお、要求受付解析部１００６の解析結果に示される操作対象クラスがジョブやコンテント（印刷データ等）である場合、要求処理部１００８は、自サーバ内の、そのクラスに対応する処理部（図示省略）にその操作対象オブジェクトを処理させる。
【００５０】
セッション維持時間決定部１１１２は、要求受付解析部１００６が受け取った要求に対して返信する応答データに設定するセッション維持時間を決定する。本実施形態では、その要求を自サーバ内で処理したか、他の印刷サーバ１００にリダイレクトしたかに応じて、セッション維持時間の長さを切り換える。セッション維持時間は、ロードバランサ１０６がセッション維持処理を行う時間の長さである。
【００５１】
本実施形態では、要求受付解析部１００６が受け取った要求を自サーバで処理した場合のセッション維持時間を、要求を他の印刷サーバ１００にリダイレクトした場合よりも長い、あらかじめ定められた値に設定する。
【００５２】
応答部１１１４は、要求処理部１００８から得た処理結果を含んだ応答を作成し、その応答をロードバランサ１０６に返す。リダイレクト処理部１０１０により要求をリダイレクトした場合も、その要求に対するリダイレクト先の印刷サーバ１００からの応答がリダイレクト処理部１０１０及び要求処理部１００８を介して応答部１１１４に伝達され、応答部１１１４はその応答の内容を含んだ応答を作成する。ここで応答部１１１４は、セッション維持時間決定部１１１２が決定したセッション維持時間をその応答に設定する。
【００５３】
セッション維持時間決定部１１１２及び応答部１１１４によるセッション維持制御については、後で詳しく説明する。
【００５４】
データ記憶装置１０２は、論理プリンタテーブル１０２１、物理プリンタテーブル１０２２、対応づけテーブル１０２３、サーバテーブル１０２４、ジョブテーブル１０２５、及び印刷データ１０２６を記憶している。以下、図３〜図７を参照して、それら各テーブルの具体例を説明する。
【００５５】
論理プリンタテーブル１０２１は、印刷制御システム内の各論理プリンタ１００２の定義情報を保持する表である。図３に論理プリンタテーブル１０２１のデータ内容の一例を示す。図３に示すように、論理プリンタテーブル１０２１には、論理プリンタごとに、その論理プリンタのプリンタ名（ＩＤ）、アクセス制御情報、及び配置先サーバといった項目が登録される。項目「プリンタ名」は、当該論理プリンタの識別情報である。項目「アクセス制御情報」は、その論理プリンタに対するユーザからのアクセスを制御するために用いる情報である。アクセス制御情報としては様々な形の情報を用いることができる。例えばその論理プリンタを利用可能なユーザやグループの識別情報（ＩＤ）のリスト（アクセス制御リスト）であってもよいし、その論理プリンタにアクセス可能なユーザを認証する認証方法（例えばパスワード認証）を規定する情報であってもよい。項目「配置先サーバ」は、その論理プリンタが現在配置されているサーバ１００の識別情報である。
【００５６】
物理プリンタテーブル１０２２は、印刷制御システム内の各物理プリンタ１００４の定義情報を保持する表である。図４に物理プリンタテーブル１０２２のデータ内容の一例を示す。図４に示すように、物理プリンタテーブル１０２２には、物理プリンタごとに、その物理プリンタのプリンタ名、実プリンタ、及び配置先サーバといった項目が登録される。項目「実プリンタ」は、その物理プリンタが管理している実プリンタ１０４を特定する情報である。図示例では、実プリンタ１０４を特定する情報として、その実プリンタ１０４のＩＰアドレスが用いられている。物理プリンタが複数の実プリンタ１０４を管理する場合、項目「実プリンタ」には、それら複数の実プリンタの情報が登録される。その他の項目は、論理プリンタの定義情報における同名の項目と同じである。
【００５７】
対応づけテーブル１０２３は、論理プリンタ１００２と物理プリンタ１００４の対応関係の情報を保持する。対応付けテーブル１０２３のデータ内容の一例を図５に示す。図に例示した対応付けテーブル１０２３には、論理プリンタ１００２のプリンタ名に対応づけて、その論理プリンタ１００２に対応づけられた物理プリンタ１００４のプリンタ名のリストが登録されている。論理プリンタ１００２が受け付けた印刷ジョブは、その論理プリンタ１００２に対応する物理プリンタ１００４に割り当てられる。
【００５８】
サーバテーブル１０２４は、本システム内の印刷サーバ１００の情報を管理するテーブルである。図６に示すように、サーバテーブル１０２４には、印刷サーバ１００毎に、そのサーバの識別情報（サーバＩＤ）、ＩＰアドレスの各項目が登録されている。ＩＰアドレスの情報は、印刷サーバ１００間での通信を行う場合に利用される。ＩＰアドレスは、そのサーバと通信するために用いられる情報の一例であり、同様の役割を果たす別の情報に代えてもよい。
【００５９】
ジョブテーブル１０２５は、印刷指示に応じて生成されたジョブの管理情報を保持するテーブルである。図７に例示するジョブテーブル１０２５は、ジョブＩＤ、ジョブ名、状態、受付プリンタ、データパス、ユーザ、部数、ステープル、カラーの項目を含んでいる。
【００６０】
項目「ジョブＩＤ」は、印刷サーバ１００等により付与された当該ジョブの識別情報である。項目「ジョブ名」は、当該ジョブの名称であり、例えば印刷指示を発行したユーザやクライアントが付与したものである。項目「状態」は、当該ジョブの状態を示す情報である。ジョブの状態には、例えば、「受付中」、「アサイン（割当）待ち」、「アサイン済み」、「処理中」、「処理済み」等がある。項目「データパス」は、当該ジョブの印刷データ１０２６のデータ記憶装置１０２内での保存場所（例えばあらかじめ定めた基準ディレクトリに対する相対パス名）を示す情報である。項目「部数」、「ステープル」、「カラー」は、当該ジョブに対する印刷部数、ステープル止めの有無、及びカラー／白黒のモードの指定値を示す。これらは、そのジョブに対して指定された印刷属性の一例として図示したものであり、他の印刷属性がジョブテーブル１０２５に登録されてももちろんよい。
【００６１】
データ記憶装置１０２に記憶される印刷データ１０２６は、例えば、クライアントから印刷指示と共に受け取ったＰＤＬデータである。また、物理プリンタ１００４によるＰＤＬデータの中間形式データや印刷可能データへの変換が行われる毎に、データ記憶装置１０２に記憶される印刷データ１０２６をその変換結果のデータ（中間形式又はラスター形式等の印刷可能データ）に置き換えてもよい。また、このように置き換える代わりに、各段階の変換結果のデータをデータ記憶装置１０２に追加記憶してもよい。
【００６２】
以上、データ記憶装置１０２内に記憶される情報の例について説明した。印刷サーバ１００等のシステム構成要素は、データ記憶装置１０２及びその中の各情報の所在場所を示す情報（ＩＰアドレスやＵＲＬ等）を有しており、処理を進める際、必要に応じてデータ記憶装置１０２内の情報を参照したり、データ記憶装置１０２内の情報を更新したり、データ記憶装置１０２内に新規情報を登録したりする。
【００６３】
図２の例では、論理プリンタテーブル１０２１〜印刷データ１０２６のすべての情報が１つのデータ記憶装置１０２に記憶されているが、これは必須のことではない。それら各情報が印刷サーバ１００により共有されている形であれば、それら個々の情報がネットワーク又はクラウド内の別々の場所に格納されていてもよい。
【００６４】
以下、セッション維持時間決定部１１１２及び応答部１１１４によるセッション維持制御について説明する。
【００６５】
セッション維持時間決定部１１１２は、要求を他の印刷サーバ１００にリダイレクトした場合、要求を自サーバ内で処理した場合よりも、セッション維持時間を短い値とする。例えば、要求を他の印刷サーバ１００にリダイレクトした場合、セッション維持時間は、セッション維持時間を０とする。この場合セッション維持は行われない。これに対し、要求を自サーバ内で処理した場合は、セッション維持時間を、リダイレクトした場合よりも長いあらかじめ定めた長さに決定する。
【００６６】
応答部１１１４は、要求に対する自サーバ又はリダイレクト先の他の印刷サーバ１００による処理結果を要求処理部１００８から受け取り、その処理結果を含む応答を生成する。応答部１１１４は、例えばその処理結果をＸＭＬデータに変換したものを、ＨＴＴＰ応答メッセージのボディ部にコンテントデータとして組み込む。ここで、応答部１１１４は、セッション維持時間決定部１１１２が決定したセッション維持時間をその応答に設定する。そして、生成した応答メッセージをロードバランサ１０６に返す。
【００６７】
応答部１１１４が生成する応答がＨＴＴＰメッセージの形である場合、セッション維持時間の情報は、そのメッセージのヘッダに対して例えばクッキーの形で設定する。セッション維持時間の情報を含んだクッキーのデータ内容の一例を以下に示す。
【００６８】
「Set-Cookie: NPPSSCK=NV; expires=Fri, 1-Mar-2013 21:00:00 GMT」
この例のうち「expires=Fri, 1-Mar-2013 21:00:00 GMT」が、そのクッキーの有効期限を示している。その有効期限は、現在時刻に対してセッション維持時間を加えた時刻である。なお、「NPPSSCK」は、印刷サーバ１００を作成した者（例えばプログラマ）が任意に名付けたそのクッキーの名称であり、名称自体に特段の意味はない。ただし、ロードバランサ１０６には、その名称「NPPSSCK」を持つクッキーが、印刷サーバ１００のセッション維持用のクッキーであることを何らかの形で認識させる（例えばそのことを設定情報としてロードバランサ１０６に設定する）
【００６９】
印刷サーバ１００の応答部１１１４からセッション維持時間の情報を含んだ応答を受け取ったロードバランサ１０６は、その応答に含まれるセッション維持期間の情報を用いてセッション維持のための制御を実行する。例えば、印刷サーバ１００からの応答メッセージに含まれるセッション維持のためのクッキー（上述の「NPPSSCK」）からセッション維持の有効期限を取得し、その有効期限内に同じクライアントから到来する要求は、その印刷サーバ１００に振り分ける。
【００７０】
以下、更に詳しい例を説明する。例えば、本システムをクラウドサービスAmazon EC2を用いて構成する場合、ロードバランサ１０６として、Ａｍａｚｏｎ社が提供する負荷分散サービスであるAmazon ELB (Elastic Load Balancing)を用いることができる。Amazon ELBは、負荷分散処理に当たって、ＨＴＴＰなどの標準的なプロトコルのデータ（例えばクッキー）は参照するが、印刷サービス等のアプリケーションのデータ内容は参照しない。
【００７１】
Amazon ELBは、セッション維持のために、「AWSELB」という名前のクッキーを使用する。クッキー「AWSELB」の有効期限は、アプリケーションが使用するクッキーの有効期限に連動させることができる。すなわち、クッキー「AWSELB」の有効期限を、アプリケーション（この場合は印刷サーバ１００）からの応答メッセージに含まれる特定の名前のクッキーの有効期限に連動させる（例えば同じ値とする）よう、Amazon ELBに対して設定することができる。そこで、クッキー「AWSELB」の有効期限を、印刷サーバ１００の応答部がセッション維持に用いるクッキー（上述の例では「NPPSSCK」）の有効期限に連動させるよう設定を行っておくことで、Amazon ELB（ロードバランサ１０６）によるセッション維持を印刷サーバ１００から制御することが可能となる。
【００７２】
この仕組みを用いたセッション維持制御の流れを、図９を参照して説明する。クライアント１５０から本システム宛のＨＴＴＰ要求１０は、ロードバランサ１０６（Amazon ELB）により受信される。ロードバランサ１０６は、そのＨＴＴＰ要求１０を、あらかじめ定められた負荷分散アルゴリズムに従って、システム内のいずれかの印刷サーバ１００に振り分ける。これを受け取った印刷サーバ１００は、その要求の宛先が自サーバ内であればその要求を自サーバで処理し、処理結果を求める。そうでなければその要求を宛先の印刷サーバ１００にリダイレクトし、リダイレクト先の印刷サーバ１００から処理結果を受け取る。次に印刷サーバ１００は、自サーバ又はリダイレクト先の印刷サーバ１００によるその要求に対する処理結果、を含むＨＴＴＰ応答１２を作成し、その応答１２のヘッダにセッション維持用のクッキー設定命令１４（クッキー名「NPPSSCK」）を組み込む。このとき、そのクッキー設定命令１４に設定する有効期限を、要求１０をリダイレクトした場合は現在時刻に、要求１０の宛先が自サーバ内の要素である場合は現在時刻にあらかじめ定められた時間を加えた時刻に、それぞれ設定する。そして、クッキー設定命令１４を設定した応答１２をロードバランサ１０６に返す。ロードバランサ１０６は、その応答１２から印刷サーバ１００が設定したセッション維持用のクッキー設定命令１４を検出し、そのクッキー設定命令１４の中の有効期限を認識する。そして、その有効期限と同じ有効期限を設定した、ロードバランサ１０６自身のセッション維持用のクッキー設定命令１６（クッキー名「AWSELB」）を作成し、そのクッキー設定命令１６を印刷サーバ１００からのＨＴＴＰ応答１２に組み込む。図示は省略したが、このクッキー設定命令１６には、応答１２の返信元である印刷サーバ１００を特定するための情報が含まれる。ロードバランサ１０６は、このようにして生成したクッキー設定命令１６を含んだＨＴＴＰ応答１８を、ＨＴＴＰ要求１０の送信元であるクライアント１５０に返信する。
【００７３】
クライアント１５０（例えばウェブブラウザ）は、受け取ったＨＴＴＰ応答１８に含まれるクッキー設定命令１６に従い、その命令１６のデータ内容（クッキー名「AWSELB」、有効期限、セッション維持対象の印刷サーバ１００を特定するための情報等）を含むクッキーを、本実施形態の印刷制御システムのＵＲＬ（このＵＲＬはロードバランサ１０６を指し示す）と対応づけて記憶する。その後、クライアント１５０が印刷制御システム（ロードバランサ１０６）にアクセスしようとする際、現在時刻が、印刷制御システムのＵＲＬに対応づけて記憶しているクッキー（クッキー設定命令１６に応じて記憶したもの）の有効期限を過ぎているかどうかを判定する。有効期限を過ぎていなければ、そのクッキーをヘッダに含んだＨＴＴＰ要求をロードバランサ１０６に送る。ロードバランサ１０６は、その要求に含まれるクッキーのデータが指し示す印刷サーバ１００（セッション維持の対象）に対してその要求を振り分ける。これにより、セッション維持が実現される。
【００７４】
一方、クライアント１５０が印刷制御システムにアクセスしようとする際、その印刷制御システムのＵＲＬに対応づけて記憶しているクッキー（クッキー設定命令１６に応じて記憶したもの）に含まれる有効期限が既に過ぎている場合は、クライアント１５０は、そのクッキーを含まないＨＴＴＰ要求をロードバランサ１０６宛に送る。この要求を受け取ったロードバランサ１０６は、（その要求にはセッション維持用のクッキーが含まれていないので）その要求をラウンドロビン等の所定の振り分け方式で決定した印刷サーバ１００に振り分ける。
【００７５】
この例の仕組みでは、印刷サーバ１００がロードバランサ１０６を介してクライアント１５０から受け取った要求がその印刷サーバ１００で処理すべきものでない場合、クライアント１５０への応答１８に含まれるセッション維持用のクッキー設定命令１６には、その印刷サーバ１００がその要求に対する応答を生成した時刻が有効期限として設定される。この有効期限はクッキー設定命令１６を作成した時点で既に過ぎ去っているので、その命令１６に応じてクライアント１５０が記憶したセッション維持用のクッキーの有効期限もその時点で過ぎている。したがって、クライアント１５０がその後印刷制御システムに再びアクセスする時点では、そのセッション維持用のクッキーの有効期限は当然過ぎ去っているので、そのクッキーがＨＴＴＰ要求に組み込まれることはない。したがって、ロードバランサ１０６が、そのクッキーに基づくセッション維持を行うこともない。
【００７６】
これに対し、印刷サーバ１００がロードバランサ１０６を介してクライアント１５０から受け取った要求がその印刷サーバ１００で処理すべきものであった場合、クライアント１５０への応答１８に含まれるセッション維持用のクッキー設定命令１６には、その印刷サーバ１００がその要求に対する応答を生成した時刻に対して０より大きいあらかじめ定めた時間を加えた時刻が有効期限として設定される。このため、その命令１６に応じてクライアント１５０に記憶されるクッキーを用いて、通常のセッション維持処理が実行されることとなる。
【００７７】
このように、この例では、ロードバランサ１０６の振り分けが「外れた」（すなわち要求を担当すべき印刷サーバ１００でない印刷サーバ１００にその要求を振り分けた）場合には、セッション維持は行われず、振り分けが「当たった」場合にはセッション維持が行われる。
【００７８】
上述の例は、「外れ」の場合のセッション維持時間を０にするという極端なものであったが、０でなくても、「当たり」の場合のセッション維持時間よりも短い時間とすれば、「外れ」の場合は、「当たり」の場合よりもセッション維持が効きにくくなる。
【００７９】
仮に、ロードバランサ１０６の振り分けの当たり外れによらず、常にセッション維持が行われるようにすると、振り分けが外れた場合でもロードバランサ１０６のセッション維持が働き、その外れの後の要求も、また同じ外れの印刷サーバ１００に振り分けられることになる。この結果、その外れの印刷サーバ１００から、正しい担当の印刷サーバ１００へと再び要求がリダイレクトされることになる。このように常にセッション維持が働くようにすると、リダイレクトが頻繁に起こることになる。
【００８０】
逆にセッション維持を全く行わないこととした場合、せっかく振り分けが当たってもセッション維持が行われないので、次の要求が「当たり」の印刷サーバ１００に振り分けられない可能性が高い。したがって、この場合もリダイレクトが頻繁に生じる。
【００８１】
これらに対し、本実施形態の仕組みでは、ロードバランサ１０６の振り分けが「外れた」の場合、「当たった」の場合よりもセッション維持が実行されにくいので、常にセッション維持を行う場合よりもリダイレクトの発生確率が低くなる。また振り分けが「当たった」場合にはセッション維持が働くので、セッション維持を全く行わない場合よりもリダイレクトの発生確率は低くなる。
【００８２】
また本実施形態の変形例として、印刷サーバ１００がロードバランサ１０６から受け取った要求をリダイレクトしなかったの場合（「当たり」）に、その要求の種類に応じてセッション維持時間を切り換えるようにしてもよい。同じクライアントからの要求に対してセッション維持を行う必要度合いが、要求の種類によって異なることがあるからである。例えば、クライアントから印刷サーバ１００への印刷データの転送を必要とする要求（例えば前述の「CreateContent」）の場合、他の種類の要求に比べてセッション維持の必要度合いが高い。すなわち、印刷データは比較的小サイズの転送単位に分割され、転送単位毎に順にクライアントから印刷サーバ１００に転送される。したがって、印刷サーバ１００がコマンド「CreateContent」を実行した場合、その後に同じクライアントから印刷データの転送要求が続いて到来する可能性が高い。そこで、印刷サーバ１００が十区押した要求が、印刷データの転送を必要とする要求である場合には、実行した要求が印刷データの転送を必要としない要求（例えば論理／物理プリンタやジョブの状態の閲覧）の場合よりも、応答に対して設定するセッション維持時間を長い値とする。例えば、印刷データの転送を必要としない要求についてのセッション維持時間は数分程度に定めておき、印刷データの転送を必要とする要求についてのセッション維持時間を数十分程度に定めておく等である。このようにすることで、同じクライアントから同じ印刷サーバ１００への要求が引き続き到来する可能性が高い場合に、セッション維持が機能する確率が高くなる。
【００８３】
以上に例示した印刷サーバ１００は、例えば、汎用のコンピュータに当該装置の各機能モジュールの処理を表すプログラムを実行させることにより実現してもよい。ここで言うコンピュータは、例えば、ハードウエアとして、ＣＰＵ等のマイクロプロセッサ、ランダムアクセスメモリ（ＲＡＭ）およびリードオンリメモリ（ＲＯＭ）等のメモリ（一次記憶）、ＨＤＤ（ハードディスクドライブ）やＳＳＤ（ソリッドステートドライブ）、フラッシュメモリ等の二次記憶を制御する二次記憶コントローラ、各種Ｉ／Ｏ（入出力）インタフェース、無線又は有線のネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばＩ／Ｏインタフェース経由で、ＣＤやＤＶＤ、ブルーレイディスクなどの可搬型ディスク記録媒体に対する読み取り及び／又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び／又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク等の通信手段経由で、フラッシュメモリ等の二次記憶装置に保存され、コンピュータにインストールされる。二次記憶装置に記憶されたプログラムがＲＡＭに読み出されＣＰＵ等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。また、コンピュータは、仮想マシンであってもよい。
【符号の説明】
【００８４】
１００  印刷サーバ、１０２  データ記憶装置、１０４  実プリンタ、１０６  ロードバランサ、１５０  クライアント、１００２  論理プリンタ、１００４  物理プリンタ、１００６  要求受付解析部、１００８  要求処理部、１０１０  リダイレクト処理部、１０２１  論理プリンタテーブル、１０２２  物理プリンタテーブル、１０２３  対応づけテーブル、１０２４  サーバテーブル、１０２５  ジョブテーブル、１０２６  印刷データ、１１１２  セッション維持時間決定部、１１１４  応答部。
【図１】
2015176590.tif 000003
【図２】
2015176590.tif 000004
【図３】
2015176590.tif 000005
【図４】
2015176590.tif 000006
【図５】
2015176590.tif 000007
【図６】
2015176590.tif 000008
【図７】
2015176590.tif 000009
【図８】
2015176590.tif 000010
【図９】
2015176590.tif 000011