(57)【要約】【課題】通信に利用可能なポートが限定されている場合においても、ＵＳＢ接続された画像処理装置のＷｅｂコンテンツをアプリケーションで出力する。【解決手段】中継プログラムは他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号を含むＵＲＬを動的に生成する。そのＵＲＬを用いて、Ｗｅｂブラウザは中継プログラムにアクセスし、中継プログラムはＨＴＴＰリクエスト／レスポンスをＵＳＢで印刷装置と交換する。【選択図】  図５
2020046756.tif 000002
【特許請求の範囲】
【請求項１】
ＩＰアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置であって、
前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
前記決定手段により決定されたアドレスを、アクセス元と共有するための共有手段と、
前記固有情報と前記ポート番号を通信部に通知する通知手段を有し、
前記アクセス元が前記共有手段から取得した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記通信部は、前記取得手段により前記デバイス情報が取得された前記デバイスごとに生成される
ことを特徴とする情報処理装置。
【請求項３】
請求項１または２に記載の情報処理装置であって、
前記共有手段は、前記取得手段により取得した前記デバイス情報と、前記決定手段により決定されたアドレスとを関連付けて記憶することで実現され、
前記アクセス元が、前記共有手段に記憶されたアドレスへとアクセスする
ことを特徴とする情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記取得手段は、前記デバイスから前記デバイス情報を取得する
ことを特徴とする情報処理装置。
【請求項５】
請求項１または２に記載の情報処理装置であって、
前記共有手段は、前記取得手段により取得した前記デバイス情報と、前記決定手段により決定されたアドレスとを関連付けて前記アクセス元へと通知することで実現され、
前記アクセス元が、通知された前記アドレスへとアクセスする
ことを特徴とする情報処理装置。
【請求項６】
請求項５に記載の情報処理装置であって、
前記取得手段は、前記アクセス元が取得した前記デバイス情報を、前記アクセス元から取得する
ことを特徴とする情報処理装置。
【請求項７】
請求項６に記載の情報処理装置であって、
前記アクセス元から前記アクセス先に対する前記データの要求はＨＴＴＰリクエストであり、
前記共有手段は、前記取得手段により取得した前記デバイス情報と、前記決定手段により決定されたアドレスとを関連付けて、前記アクセス元へとリダイレクト指示することで実現される
ことを特徴とする情報処理装置。
【請求項８】
ＩＰアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置であって、
中継手段を有し、
前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
空きポート番号のひとつを決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
前記決定手段により決定されたアドレスを共有するための共有手段と、
前記決定手段により決定されたアドレスに対するアクセスがあると、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記インターフェースを介して前記デバイスに前記データを要求し、前記デバイスから前記インターフェースを介して前記データを受信すると、Ｗｅｂブラウザへと前記データを送信する通信手段と
を有することを特徴とする情報処理装置。
【請求項９】
請求項８に記載の情報処理装置であって、
前記Ｗｅｂブラウザを用いてデータを取得するアプリケーションを更に有し、
前記アプリケーションは、データを取得する指示に応じて、前記中継手段を起動する
ことを特徴とする情報処理装置。
【請求項１０】
請求項８または９に記載の情報処理装置であって、
前記Ｗｅｂブラウザを用いてデータを取得するアプリケーションを更に有し、
前記アプリケーションは、前記デバイスが前記インターフェースで接続され、かつ、前記中継手段が起動済みであり、かつ、前記共有手段により前記アドレスを取得済みの場合に、前記Ｗｅｂブラウザを起動する
ことを特徴とする情報処理装置。
【請求項１１】
請求項１乃至１０のいずれか一項に記載の情報処理装置であって、
前記インターフェースは、ユニバーサルシリアルバスである
ことを特徴とする情報処理装置。
【請求項１２】
請求項９または１０に記載の情報処理装置であって、
ユーザーインターフェース手段を更に有し、
前記アプリケーションは、前記ユーザーインターフェース手段により前記デバイスが選択されると、選択された前記デバイスに対応しており、前記共有手段により共有される前記アドレスにアクセスする
ことを特徴とする情報処理装置。
【請求項１３】
ＩＰアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置の制御方法であって、
前記デバイスの固有情報を含むデバイス情報を取得し、
空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定し、
前記決定されたアドレスを、アクセス元と共有し、
前記固有情報と前記ポート番号を通信部に通知し、
前記アクセス元が前記共有した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とする情報処理装置の制御方法。
【請求項１４】
ＩＰアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置を、
前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
前記決定手段により決定されたアドレスを、アクセス元と共有するための共有手段と、
前記固有情報と前記ポート番号を通信部に通知する通知手段として機能させるためのプログラムであって、
前記アクセス元が前記共有手段から取得した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は中継プログラムを介して周辺機器との通信を行う情報処理装置、その制御方法およびプログラムに関する
【背景技術】
【０００２】
従来、画像処理装置にＷｅｂサーバ機能を備え、情報処理装置上で実行されるアプリケーション（例えばＷｅｂブラウザ）により画像処理装置のＷｅｂコンテンツを表示する技術が開示されている（例えば特許文献１参照）。この場合、ユーザは、例えばＷｅｂブラウザに画像処理装置のＩＰアドレスを入力することで、画像処理装置のＷｅｂコンテンツが表示される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３００４８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで情報処理装置が、ＩＰアドレスが割り当てられていない画像処理装置と所定のインターフェースを介して通信することもある。例えば、情報処理装置と画像処理装置がＵＳＢ接続やＢｌｕｅｔｏｏｔｈ接続されるケースが一例としてあげられる。このようなケースにおいて、情報処理装置が画像処理装置のＷｅｂコンテンツを表示する技術がもとめられている。
【課題を解決するための手段】
【０００５】
そこで本発明は以下の構成を有する。すなわち、本発明の一側面によれば、ＩＰアドレスが設定されていないデバイスと所定のインターフェースを介して接続される情報処理装置であって、
前記デバイスの固有情報を含むデバイス情報を取得する取得手段と、
空きポート番号を決定し、決定したポート番号を含むアドレスを、前記デバイスからデータを取得するためのアクセス先として決定する決定手段と、
前記決定手段により決定されたアドレスを、アクセス元と共有するための共有手段と、
前記固有情報と前記ポート番号を通信部に通知する通知手段を有し、
前記アクセス元が前記共有手段から取得した前記アドレスに対するアクセスを実行した場合、前記通信部が、前記ポート番号に基づいて前記アクセスを検知し、かつ、前記固有情報に対応する前記デバイスに前記所定のインターフェースを介してデータを要求し、
前記デバイスから前記所定のインターフェースを介して前記データが受信された場合、前記アクセス元へと前記データが送信されることを特徴とする情報処理装置が提供される。
【発明の効果】
【０００６】
本発明によれば、ＩＰアドレスが割り当てられていない画像処理装置と所定のインターフェースを介して通信する場合においても、情報処理装置上で実行されるアプリケーションが画像処理装置のＷｅｂコンテンツを表示可能となる。
【図面の簡単な説明】
【０００７】
【図１】印刷装置と情報処理装置の電気的構成を示すブロック図
【図２】実施例１におけるシステム構成を示すブロック図
【図３】アプリケーションの備えるＷｅｂページ表示機能の画面構成を示す模式図
【図４】実施例１におけるシステム全体の通信処理を示すシーケンス図
【図５】実施例１における中継プログラムの処理を示すフローチャート
【図６】共有メモリの概念図
【図７】実施例１における通信スレッドのフローチャート
【図８】実施例２におけるシステム構成を示すブロック図
【図９】実施例２におけるシステム全体の通信処理を示すシーケンス図
【図１０】実施例２における中継プログラムの処理を示すフローチャート
【図１１】実施例２における通信スレッドのフローチャート
【図１２】実施例３におけるシステム構成を示すブロック図
【図１３】実施例３におけるシステム全体の通信処理を示すシーケンス図
【図１４】実施例３における中継プログラムの処理を示すフローチャート
【図１５】実施例４におけるアプリケーションの処理を示すフローチャート
【発明を実施するための形態】
【０００８】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
＜実施形態１＞
図１は情報処理装置１１０と情報処理装置１１０に接続された印刷装置１２０により構成されるシステムの全体構成を示すブロック図の一例である。情報処理装置１１０は入力Ｉ／Ｆ１１１、ＣＰＵ１１２、ＲＯＭ１１３、出力Ｉ／Ｆ１１４、外部記憶装置１１５、ＲＡＭ１１６、入力装置１１７、出力装置１１８、入出力Ｉ／Ｆ１１９を有する。ＲＯＭ１１３は初期化プログラムを保存し、外部記憶装置１１５はＯＳ（オペレーティングシステム）、プリンタドライバやその他各種のデータが保存されている。ＲＡＭ１１６は外部記憶装置１１５に保存される各種プログラムがワークメモリーとして使用する。入力装置１１７はデータ入力や動作指示に使用され入力Ｉ／Ｆ１１１に接続されている。出力装置１１８はデータ表示や状態の通知に使用され出力Ｉ／Ｆ１１４に接続されている。
【０００９】
印刷装置１２０はＲＡＭ１２１、ＲＯＭ１２２、プリントエンジン１２３、ＣＰＵ１２４、入出力Ｉ／Ｆ１２５から構成される。情報処理装置１１０と印刷装置１２０はＵＳＢ（ユニバーサルシリアルバス）（商標）ケーブル１３０により接続されている。なお、本実施形態では、情報処理装置１１０と印刷装置１２０がＵＳＢを介して接続されるケースを記載するが他の方法で接続されている時に後述する実施形態の発明が適用されても良い。特に、印刷装置１２０にＩＰアドレスが設定されないケースにおいて利用可能である。そのため、例えば、情報処理装置１１０と印刷装置１２０がＢｌｕｅｔｏｏｔｈにて接続されるケースに後述する実施形態の発明が適用されても良い。ＲＡＭ１２１はＣＰＵ１２４のワークメモリーとして使用され、受信したデータの一時保存用バッファとしても利用される。ＲＯＭ１２２は制御命令を保存している。プリントエンジン１２３はＲＡＭ１２１に保存されたデータに基づき印刷を行う。ＣＰＵ１２４はＲＯＭ１２２に保存されている制御命令に従い印刷装置１２０を制御する。なお、本実施形態においては情報処理装置１１０および印刷装置１２０の処理分担を前記のように示したが、処理の分担形態はこれに依らない。
【００１０】
●ソフトウェア構造
図２は本実施例の構成を概念的に示すブロック図の一例である。中継プログラム２０１は情報処理装置１１０上で稼働し、Ｗｅｂ（ウエブ）ブラウザ２０２と印刷装置１２０との間の通信を中継する。中継プログラム２０１はＨＴＴＰ制御部２０３、ＵＳＢ制御部２０４、ＵＲＬ決定部２０５、デバイス接続検知部２０６を備えている。ＨＴＴＰ制御部２０３は、Ｗｅｂブラウザ２０２とＨＴＴＰ通信を行うと共に、Ｗｅｂブラウザ２０２から受信したＨＴＴＰ（ハイパーテキストマークアップ言語）リクエストをＵＳＢ制御部２０４に送信する。またＨＴＴＰ制御部２０３は、ＵＳＢ制御部２０４を経由して受信した印刷装置１２０からの情報を、ＨＴＴＰレスポンスとしてＷｅｂブラウザ２０２に応答する。すなわち、ＨＴＴＰリクエストについては、Ｗｅｂブラウザ２０２がアクセス元となり、指定したＵＲＬがアクセス先となる。ＵＳＢ制御部２０４は、ＨＴＴＰ制御部２０３から入力されたリクエストデータを、ＵＳＢドライバ２０７を経由して印刷装置１２０に送信する。またＵＳＢ制御部２０４は、ＨＴＴＰ制御部２０３からの指示に応じて、ＵＳＢドライバ２０７を経由して受信した印刷装置１２０からレスポンスデータを、ＨＴＴＰ制御部２０３に返信する。さらにＵＳＢドライバ２０７は、ＵＳＢインターフェースを介して接続されている周辺装置の情報を管理しており、要求に応じて情報処理装置１１０に接続されている周辺装置の情報を応答する。
デバイス接続検知部２０６は、ＵＳＢインターフェースを介して接続されているデバイス、すなわち周辺装置の情報をＵＳＢドライバ２０７から取得する。そして、デバイス接続検知部２０６は、取得された周辺装置の情報から、中継プログラム２０１と通信可能な印刷装置が接続されていることを検知する。またデバイス接続検知部２０６は、新しく中継プログラム２０１と通信可能な印刷装置が接続されたことを検知すると、ＵＲＬ決定部２０５より当該の印刷装置に対応するＵＲＬを取得する。ＵＲＬはユニバーサルリソースロケータの略称であり、アクセスしようとするデータ等の所在（或いは宛先）を示す所在情報（或いは宛先情報）であり、アドレスに相当する。ＵＲＬ決定部２０５は、Ｗｅｂブラウザ２０２がＨＴＴＰ制御部２０３とＨＴＴＰ通信を行う際に利用するＵＲＬを決定する。ＵＲＬ決定部２０５により決定されるＵＲＬはｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：＜利用可能なＴＣＰポート番号＞のようにＴＣＰポート番号を含む形式である。なお、以降においては、ＴＣＰポート番号を単にポート番号と記載することもある。デバイス接続検知部２０６は、印刷装置１２０を識別する情報（例えば後述するようにベンダーＩＤ、製品ＩＤ、シリアル番号などである）とＵＲＬ決定部２０５から取得した当該印刷装置に対応するＵＲＬを関連付けて、共有メモリ２１２に保存する。共有メモリ２１２は中継プログラム２０１と情報処理装置１１０上で稼働する任意のアプリケーション２１１が参照可能な領域である。共有メモリは、アプリケーション２１１と中継プログラム２０１とが、印刷装置の固有情報や、印刷装置に固有のＵＲＬを共有するために利用される。アプリケーション２１１は情報処理装置１１０に接続されている印刷装置のＷｅｂページを表示する機能を備えている。該機能の一例は図３の＜Ｗｅｂページ表示ボタン３０３＞で後述する。アプリケーション２１１のＷｅｂページ表示機能が実行されると、アプリケーション２１１は共有メモリ２１２を参照し、指定された印刷装置に関連付けてされたＵＲＬを取得する。その後、アプリケーション２１１は共有メモリ２１２より取得したＵＲＬを指定して、Ｗｅｂブラウザ２０２を起動する。
【００１１】
印刷装置１２０は情報処理装置１１０に接続可能な周辺装置のひとつであり、ＵＳＢ制御部２０８、ＨＴＴＰ制御部２０９、Ｗｅｂコンテンツ管理部２１０を備えている。ＵＳＢ制御部２０８は、情報処理装置１１０のＵＳＢドライバ２０７から受信したデータのＨＴＴＰ制御部２０９への入力及びＵＳＢドライバ２０７からの要求に応じてＨＴＴＰ制御部２０９から取得したデータの応答を行う。ＨＴＴＰ制御部２０９は、ＵＳＢドライバ２０７から入力されたデータをＨＴＴＰリクエストとして解釈し、リクエストで指定されたコンテンツをＷｅｂコンテンツ管理部２１０から取得する。またＨＴＴＰ制御部２０９は、Ｗｅｂコンテンツ管理部２１０から取得したコンテンツをＨＴＴＰレスポンスの形式に変換し、ＵＳＢ制御部２０８に返信する。Ｗｅｂコンテンツ管理部２１０は、ＨＴＴＰ制御部２０９から指定されたＷｅｂコンテンツを生成しＨＴＴＰ制御部２０９へ応答する。Ｗｅｂコンテンツ管理部２１０の生成するコンテンツの一例としては、ＨＴＭＬ（Ｈｙｐｅｒ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）やＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｕｇｕａｇｅ）、画像データなどが挙げられる。
【００１２】
図３は、アプリケーション２１１により提供される情報処理装置１１０に接続されている印刷装置のＷｅｂページを表示する機能の一例を示す。画面３０１は、ユーザが情報処理装置１１０に接続された印刷装置の中から任意の印刷装置を選択する印刷装置選択手段３０２と、印刷装置選択手段３０２により選択された印刷装置のＷｅｂページを開くＷｅｂページ表示ボタン３０３により構成される。Ｗｅｂページ表示ボタン３０３が押下されると、アプリケーション２１１は共有メモリ２１２を参照し、印刷装置選択手段３０２により選択された印刷装置に関連付けされたＵＲＬを取得する。その後、アプリケーション２１１は取得したＵＲＬを指定して、Ｗｅｂブラウザ２０２を起動する。図３は、ユーザーインターフェースの一例である。
【００１３】
●ＵＳＢを介したコンテンツ取得手順
図４では、本実施例における通信処理の全体像を示す。印刷装置１２０の左側の要素は情報処理装置１１０のソフトウェア構成要素である。したがって印刷装置１２０による処理工程はＣＰＵ１２４により、情報処理装置１１０による処理工程はＣＰＵ１１２により実行される。印刷装置１２０を情報処理装置１１０にＵＳＢインターフェース経由で接続すると（Ｓ４０１）、ＵＳＢドライバ２０７は接続された印刷装置１２０のデバイス情報を生成する（Ｓ４０２）。Ｓ４０２で生成されるデバイス情報には、印刷装置１２０のＵＳＢデバイスディスクリプタやストリングディスクリプタ、インターフェイスディスクリプタ等のＵＳＢ仕様で定められる各種ディスクリプタ情報が含まれる。
【００１４】
中継プログラム２０１は、初めに情報処理装置１１０に接続されている印刷装置１２０のデバイス情報をＵＳＢドライバ２０７から取得する（Ｓ４０３）。次に中継プログラム２０１は、Ｗｅｂブラウザ２０２とＨＴＴＰ通信を行うためのポート番号を含むＵＲＬを決定する（Ｓ４０４）。中継プログラム２０１は、他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないＴＣＰポート番号の中から、本実施形態の処理に用いるＴＣＰポート番号を動的に選択する。この処理を行うことにより、例えば、アプリケーションと中継プログラムとの間のＴＣＰ／ＩＰ通信に利用するＴＣＰポート番号が固定値として設定されている場合と比較して、より利便性の高い処理をユーザに提供することが可能となる。例えば、固定値として設定されたＴＣＰポート番号が、情報処理装置の設定やセキュリティ機能などにより利用不可とされた場合であっても、Ｓ４０４により使用可能なポート番号が選択される。そのため、後述する処理を継続的に実行することが可能となる。
【００１５】
次に中継プログラム２０１は、Ｓ４０３で取得した印刷装置１２０のデバイス情報と、Ｓ４０４で決定したＵＲＬを関連付けて共有メモリ２１２に記録する（Ｓ４０５）。次に中継プログラム２０１は、Ｗｅｂブラウザ２０２と実際にＨＴＴＰ通信を行う通信スレッド４１を起動する（Ｓ４０６）。なお、通信スレッド４１を通信部と呼ぶこともある。このとき中継プログラム２０１は、Ｓ４０４で決定したＵＲＬと該当ＵＲＬに関連付けされた印刷装置のデバイス情報を通信スレッド４１に通知する。ここで通信スレッドは、印刷装置ごとに生成されて起動されてよい。例えば図４では印刷装置は１台であるので生成された通信スレッドも一つである。しかし、複数の印刷装置が接続され、それぞれのデバイス情報が取得されていれば（あるいはさらにそれぞれのＵＲＬが生成されて記録されていれば）、対応する複数の通信スレッドが生成されてよい。
【００１６】
一方、アプリケーション２１１はユーザ操作によりＷｅｂページ表示ボタン３０３が押下されると（Ｓ４０７）、共有メモリ２１２を参照し図３の画面において選択された印刷装置１２０に関連付けされたＵＲＬを取得する（Ｓ４０８）。図４では、Ｓ４０８で取得されるＵＲＬは、中継プログラム２０１がＳ４０５で保存した、ＵＳＢデバイスである印刷装置１２０のＵＳＢデバイス情報と関連付けられたＵＲＬである。その後、アプリケーション２１１は、Ｓ４０８にて取得したＵＲＬを指定してＷｅｂブラウザ２０２を起動する（Ｓ４０９）。Ｗｅｂブラウザ２０２は指定されたＵＲＬに対してＷｅｂコンテンツ取得のためのＨＴＴＰリクエスト（ＧＥＴリクエスト）を送信する（Ｓ４１０）。本実施形態では指定されたＵＲＬに対応する通信スレッドは通信スレッド４１である。そのため、Ｓ４１０にて送信されたＨＴＴＰリクエストは、通信スレッド４１が一旦受信する。ＨＴＴＰリクエストを受信した通信スレッド４１は、中継プログラム２０１からＳ４０６において通知された印刷装置のＵＳＢデバイス情報から通信すべき印刷装置１２０を特定する。そして、通信スレッド４１は、ＵＳＢドライバ２０７経由で、特定された印刷装置１２０へＨＴＴＰリクエストを送信する（Ｓ４１１〜Ｓ４１２）。
【００１７】
通信スレッド４１は、たとえば以下のようにしてＵＳＢにより印刷装置１２０とＨＴＴＰ通信を行う。通信スレッド４１は、通知されたＵＲＬに含まれたポート番号を宛先ポート番号とするＨＴＴＰリクエストを待ち受ける。通信スレッド４１は、該当するＨＴＴＰリクエストを受信すると、ＵＳＢのプロトコルに従ってフレーム化し、ＵＳＢ経由で当該ＨＴＴＰリクエストを印刷装置１２０に転送する。また通信スレッド４１は、印刷装置１２０からＵＳＢ経由でＵＳＢフレームを受信すると、そのペイロードであるＨＴＴＰレスポンスをＷｅｂブラウザ２０２に転送する。このＨＴＴＰレスポンスは印刷装置１２０のＨＴＴＰ制御部２０９により生成済みであり、通信スレッド４１は、そのまま転送すればよい。印刷装置１２０では、例えばＵＳＢ制御部２０８が、情報処理装置１１０から受信したＵＳＢフレームのペイロードからＨＴＴＰリクエストを取り出してＨＴＴＰ制御部２０９に渡す。逆に、ＵＳＢ制御部２０８は、ＨＴＴＰ制御部２０９から受信したＨＴＴＰレスポンスを、ＵＳＢフレームのペイロードとしてから情報処理装置１１０に送信する。もちろんこれは一例であって処理の分担や内容などについてはこの限りではない。
【００１８】
通信スレッド４１はＨＴＴＰリクエストの送信が完了すると、次に送信したＨＴＴＰリクエストに対するＨＴＴＰレスポンスをＵＳＢドライバ２０７経由で印刷装置１２０から取得する（Ｓ４１３〜Ｓ４１４）。なお印刷装置１２０はＷｅｂコンテンツ管理部２１０によりＨＴＴＰリクエストに対してＨＴＴＰレスポンスを返す。Ｓ４１３〜Ｓ４１４の処理により取得したＨＴＴＰレスポンスを取得した通信スレッド４１は、Ｗｅｂブラウザ２０２に取得したＨＴＴＰレスポンスを応答する（Ｓ４１５）。Ｓ４１５でＨＴＴＰレスポンスを受信したＷｅｂブラウザ２０２は、受信したＨＴＴＰレスポンスに含まれるＷｅｂコンテンツの情報を表示する（Ｓ４１６）。このような通信処理により、Ｗｅｂブラウザ２０２はＵＳＢインターフェースを介して接続された印刷装置１２０の生成するＷｅｂコンテンツを表示することが可能となる。また中継プログラム２０１がたとえば複数のスレッドを生成することで、複数のコネクションを実現できる。
【００１９】
●中継プログラム２０１による処理手順
図５では、図４の処理シーケンスにおける中継プログラム２０１の処理をより詳細に説明する。なお本実施例では、中継プログラム２０１は、インストーラーやユーザによる操作などにより、事前に情報処理装置１１０に配置（インストール）済みであることを前提とする。中継プログラム２０１は、情報処理装置１１０の起動と共に処理を開始する（Ｓ５０１）。つまり、中継プログラム２０１は、情報処理装置１１０の起動と共に自動的に起動される常駐プログラムである。次に中継プログラム２０１は、情報処理装置１１０にＵＳＢインターフェース経由で接続されている周辺装置のデバイス情報を、ＵＳＢドライバ２０７から取得する（Ｓ５０２）。その後中継プログラム２０１は、Ｓ５０２で取得した情報から中継プログラム２０１と通信可能な印刷装置１２０が情報処理装置１１０に接続されているか否かを判定する（Ｓ５０３）。具体的な判定方法として、接続された装置のインターフェイスディスクリプタ情報を参照し、所定のプロトコルをサポートしている装置を中継プログラム２０１が通信可能であると見なす方法が挙げられる。プロトコルの一例としては、ＵＳＢ経由でのＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）を行うＩＰＰ  ｏｖｅｒ  ＵＳＢが挙げられる。Ｓ５０３にてＹＥＳと判定した場合、中継プログラム２０１は印刷装置１２０及びＷｅｂブラウザ２０２と実際に通信を行う通信スレッドが起動済みであるか否かを判定する（Ｓ５０４）。本実施例では中継プログラム２０１が共有メモリ２１２を参照し、当該印刷装置に関連付けされたＵＲＬが既に記録済みかによって通信スレッドの起動有無を判定することとする。
【００２０】
Ｓ５０４にて通信スレッドが未作成であると判定した場合、中継プログラム２０１は通信スレッド４１がＷｅｂブラウザ２０２との通信に利用するポート番号を含むＵＲＬを決定する（Ｓ５０５）。ＵＲＬの一例としては以下である。
ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：６１２３４／ｉｎｄｅｘ．ｈｔｍｌ
ここでＵＲＬに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択されるものとする。なお一般的なオペレーティングシステムでは使用されているＴＣＰやＵＤＰのポート番号を知ることができる。そこで、例えば遮断されているポート番号は予め記憶しておけば、未使用かつ遮断されていないポート番号のうちから使用するポート番号を選択できる。これは後述する他の実施形態についても同様である。また、ホスト名はここに示したようにループバックアドレスであってよい。次に中継プログラム２０１は、Ｓ５０２で取得したＵＳＢデバイス情報から印刷装置１２０を一意に特定するための固有情報を取得する（Ｓ５０６）。具体的な固有情報としては、印刷装置１２０に組み込まれているストリングディスクリプタの中のベンダーＩＤ、製品ＩＤ、シリアル番号を利用する。本実施例ではそれぞれの値は以下の値であると仮定する。
ベンダーＩＤ：ＶＩＤ＿０４Ａ９
製品ＩＤ：ＰＩＤ＿１２３４
シリアル番号：ＡＢＣ１２３４
次に中継プログラム２０１は、Ｓ５０５で決定したポート番号を含むＵＲＬと、Ｓ５０６で取得した印刷装置１２０の固有情報を関連付けて共有メモリ２１２に記録する（Ｓ５０７）。次に中継プログラム２０１は、印刷装置１２０及びＷｅｂブラウザ２０２と実際に通信を行う通信スレッド４１を起動する（Ｓ５０８）。この時、中継プログラム２０１は起動した通信スレッド４１にＳ５０５で決定したポート番号を含むＵＲＬと、Ｓ５０６で取得した印刷装置１２０の固有情報とを通知する。その後中継プログラム２０１は、現在の情報処理装置１１０の状態情報を取得し、情報処理装置１１０が終了中（シャットダウン処理中）か否かを判断する（Ｓ５０９）。Ｓ５０９にて終了中であると判断した場合は、中継プログラム２０１は処理を終了する。
【００２１】
また、中継プログラム２０１はＳ５０３およびＳ５０４の判定処理にてＮＯと判定した場合も（すなわち通信可能な印刷装置が接続されていないと判定した場合、または、印刷装置と通信する通信スレッドが作成済みと判定した場合）、Ｓ５０９の処理に進む。なお本実施例では、Ｓ５０５におけるＵＲＬ決定処理は通信スレッド起動前に実施しているが、起動された通信スレッド自身がＳ５０５に相当するＵＲＬ決定処理を実施する構成であってもよい。また、印刷装置の固有情報としてストリングディスクリプタの中のベンダーＩＤ、製品ＩＤ、シリアル番号を利用したが、これらの情報に限定されず印刷装置を一意に特定する情報であればよい。以上の手順により、中継プログラム２０１は、ＵＳＢデバイス情報を取得して、作成したＵＲＬと関連付けて保存し、そのＵＲＬを宛先とするＨＴＴＰリクエスト及び対応するＨＴＴＰレスポンスを中継するための通信スレッドを生成する。
【００２２】
図６は、共有メモリ上にポート番号を含むＵＲＬと、印刷装置１２０の固有情報が関連付けて記録されている様子を概念的に示す。例えば、印刷装置の固有情報である"ＶＩＤ＿０４Ａ９＆ＰＩＤ＿１２３４＆ＡＢＣ１２３４"はｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：６１２３４／ｉｎｄｅｘ．ｈｔｍｌと関連付けされて記録されていることを示す。任意のアプリケーションは本情報を参照することで、各印刷装置に対応するＵＲＬを取得することが可能である。
【００２３】
●通信スレッドによる処理手順
図７では、中継プログラム２０１により起動される通信スレッド４１の処理を詳細に説明する。通信スレッド４１は、中継プログラム２０１により起動される（Ｓ７０１）。次に通信スレッド４１は、中継プログラム２０１より通知されたＵＲＬからポート番号を取得し、該ポート番号に対する通信開始処理を行う（Ｓ７０２）。具体的には、通信スレッド４１は、取得されたポート番号に対するリクエストがないかを判定する。この処理により、以降該ポート番号を利用した通信が可能となる。なお通信スレッド４１は、ステップＳ７０２の後にはＨＴＴＰリクエストの受信待ちとなっていてよい。次に通信スレッド４１は、アプリケーション２１１により起動されたＷｅｂブラウザ２０２からＨＴＴＰリクエストを受信する（Ｓ７０３）。ここでは、以下のＨＴＴＰリクエストを受信したと仮定する。
ＧＥＴ  ／ｉｎｄｅｘ．ｈｔｍｌ  ＨＴＴＰ／１．１
Ｈｏｓｔ：  ｌｏｃａｌｈｏｓｔ：６１２３４
次に通信スレッド４１は、中継プログラム２０１より通知された印刷装置１２０の固有情報と一致する印刷装置の特定を試みる（Ｓ７０４）。具体的には、通信スレッド４１には、Ｓ５０８において中継プログラムより起動される際に固有情報が通知されている。そのため、通信スレッド４１はＯＳから情報処理装置１１０にＵＳＢ接続されているデバイスリストを取得する。そして、通信スレッド４１は、Ｓ５０８において通知された固有情報に対応する装置をデバイスリスト特定することでＳ７０４が実現される。なお、この際、通信スレッド４１は、印刷装置１２０と通信するために必要な情報をＯＳから取得する。個の情報を後述するＳ７０６で使用することでＵＳＢ通信が実現される。次に通信スレッド４１は、Ｓ７０４で印刷装置の特定に成功したか否かを判定する（Ｓ７０５）。中継プログラム２０１より通知された印刷装置１２０の固有情報と一致する印刷装置が特定できない場合、通信スレッド４１はＷｅｂブラウザ２０２へ通信すべき印刷装置が特定できなかったことを示すＨＴＴＰレスポンスを応答する（Ｓ７１１）。ここでは、以下のＨＴＴＰレスポンスを送信する。
ＨＴＴＰ／１．１  ４０４  Ｎｏｔ  Ｆｏｕｎｄ
その後、通信スレッド４１はＳ７０２にて通信処理を開始したポート番号に対する通信終了処理を実行する（Ｓ７１２）。
【００２４】
印刷装置１２０の固有情報と一致する印刷装置が特定できた場合、次に通信スレッド４１は受信したＨＴＴＰリクエストをＵＳＢドライバ２０７経由で印刷装置１２０に送信（Ｗｒｉｔｅ）する（Ｓ７０６）。続いて通信スレッド４１は、送信したＨＴＴＰリクエストに対するレスポンスをＵＳＢドライバ２０７経由で印刷装置１２０から受信（Ｒｅａｄ）する（Ｓ７０７）。その後通信スレッド４１は、受信したレスポンスをＨＴＴＰレスポンスとしてＷｅｂブラウザ２０２へ応答する（Ｓ７０８）。次に通信スレッド４１は、印刷装置１２０の電源状態を確認し、オンライン状態か否か（つまり通信可能か否か）を判定する（Ｓ７０９）。印刷装置１２０がオンライン状態であると判定した場合、次に通信スレッド４１は情報処理装置１１０の状態情報を取得し、情報処理装置１１０が終了中か否かを判断する（Ｓ７１０）。Ｓ７１０にて情報処理装置１１０が終了中でないと判断した場合は、通信スレッド４１はＳ７０３に戻り再度Ｗｅｂブラウザ２０２からのＨＴＴＰリクエストの受信を行う。一方、Ｓ７０９にて印刷装置１２０がオフライン状態、またはＳ７１０にて情報処理装置１１０が終了中であると判断した場合、通信スレッド４１はＳ７０２にて通信処理を開始したポート番号に対する通信終了処理を実行する（Ｓ７１２）。その後通信スレッド４１は、共有メモリ２１２に記録されている印刷装置１２０とＵＲＬの関連付け情報を削除する（Ｓ７１３）。その後、通信スレッド４１は処理を終了する（Ｓ７１４）。
【００２５】
以上説明したように、本実施形態によると中継プログラム２０１は１つの印刷装置に対しポート番号を含むＵＲＬを生成する。この際、中継プログラム２０１は、ポート番号として他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から、好ましくは動的に、選択する。そのため、利用可能なポートが限定されている場合においても情報処理装置１１０で実行されるＷｅｂブラウザ２０２がＵＳＢ接続された印刷装置と適切に通信することが可能となる。
【００２６】
また、本実施形態によると中継プログラム２０１は印刷装置が情報処理装置に接続される毎にポート番号を含むＵＲＬを生成し、そのポート番号を用いてＷｅｂブラウザと通信を行うスレッドを個別に生成する。そのため、複数の機種が接続されてもＷｅｂブラウザ２０２とそれぞれの印刷装置は適切に通信が可能となる。
【００２７】
さらに、本実施形態によると生成されたＵＲＬは印刷装置の固有情報と関連付けて共有メモリ２１２へ記録される。そのため、任意のアプリケーションが共有メモリ２１２に記録されているＵＲＬを取得することで、任意のアプリケーションがＷｅｂブラウザを起動し印刷装置のＷｅｂページを表示することが可能となる。すなわち、情報処理装置に複数の印刷装置がＵＳＢ接続されている場合にも、それぞれについて割り当てたポート番号を含むＵＲＬを決定し、それぞれの印刷装置の固有情報と対応づけて記憶できる。これにより、個々の印刷装置に対してそれぞれに固有のアクセス先（ＵＲＬ）を割り当てることができ、アプリケーションあるいはＷｅｂブラウザから、複数の印刷装置のそれぞれを対象としてアクセス可能である。
【００２８】
なお上記実施形態において、印刷装置が情報処理装置に接続されて通信可能状態になるかどうかを確認し、ならない場合、すなわち非接続または通信不能である場合には、通信スレッドの処理が終了されてもよい。また、通信相手となるデバイス（印刷装置）が特定できない場合は、たとえば通信スレッドは、Ｗｅｂブラウザに対し通信すべきデバイスが見つからない旨の情報（ＨＴＴＰ  ４０４  Ｎｏｔ  ｆｏｕｎｄ）を応答してよい。
【００２９】
＜実施形態２＞
本実施形態では、実施形態１とは異なる構成で課題を解決する例を述べる。本実施形態では、ＷｅｂブラウザからのＨＴＴＰリクエストを中継プログラム自身が中継する。そして、Ｗｅｂブラウザから中継プログラムへ送信するＨＴＴＰリクエストパケットの中に、リクエストを送信すべき印刷装置を特定する固有情報を含める。ＨＴＴＰリクエストを受信した中継プログラムは、受信した固有情報から印刷装置を一意に特定し、ＵＳＢインターフェース経由でＨＴＴＰパケットの送受信を行う。なお、以後、特に言及が無い点は、実施形態１と同等の構成である。
【００３０】
●ソフトウェア構造
図８は本実施例の構成を概念的に示すブロック図の一例である。中継プログラム８０１は情報処理装置１１０上で稼働し、Ｗｅｂブラウザ２０２と印刷装置１２０との間の通信を中継する。中継プログラム８０１はＨＴＴＰ制御部８０２、ＵＳＢ制御部８０３、ＵＲＬ決定部８０４、ＵＲＬ保存部８０５を備えている。ＨＴＴＰ制御部８０２は、Ｗｅｂブラウザ２０２とＨＴＴＰ通信を行うと共に、Ｗｅｂブラウザ２０２から受信したＨＴＴＰリクエストをＵＳＢ制御部８０３に送信する。またＨＴＴＰ制御部８０２は、ＵＳＢ制御部８０３を経由して受信した印刷装置１２０からの情報を、ＨＴＴＰレスポンスとしてＷｅｂブラウザ２０２に応答する。さらにＨＴＴＰ制御部８０２はＷｅｂブラウザ２０２が中継プログラム８０１にＨＴＴＰリクエスト送信を開始する際の初期ＵＲＬを共有メモリ２１２に保存する。またＨＴＴＰ制御部８０２はＷｅｂブラウザ２０２から受信したＨＴＴＰリクエストパケットを解析し、通信対象の印刷装置を特定すると、ＵＲＬ決定部８０４より当該の印刷装置に対応するＵＲＬを取得する。さらにＨＴＴＰ制御部８０２は、印刷装置１２０を識別する情報とＵＲＬ決定部８０４から取得した当該印刷装置に対応するＵＲＬを関連付けて、ＵＲＬ保存部８０５に記録する。一方、アプリケーション８０６のＷｅｂページ表示機能が実行されると、アプリケーション８０６は共有メモリ２１２を参照し、Ｗｅｂブラウザ２０２が中継プログラム２０１にＨＴＴＰリクエスト送信を開始する際の初期ＵＲＬを取得する。その後、アプリケーション８０６は共有メモリ２１２より取得したＵＲＬを指定して、Ｗｅｂブラウザ２０２を起動する。
【００３１】
●ＵＳＢを介したコンテンツ取得手順（第２実施形態）
図９では、本実施例における通信処理の全体像を示す。なお図９では、Ｓ９０４に先立って、ＵＳＢ接続された印刷装置のデバイス情報（固有情報を含む）を情報処理装置１１０が取得済みであり、所定の場所に保存されている。なお、所定の場所とはＯＳにより決められている保存場所である。デバイス情報は例えば、アプリケーション８０６がＳ９０４に先立ってＵＳＢドライバ２０７から取得しておいてもよい。
【００３２】
中継プログラム８０１は、起動直後にＷｅｂブラウザ２０２が中継プログラム８０１にＨＴＴＰリクエスト送信を開始する際の初期ＵＲＬを生成する（Ｓ９０１）。この時生成するＵＲＬはｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：＜利用可能なポート番号＞のようにポート番号を含む形式である。また、ポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択される。ここでは例えばポート番号として６５４３２が選択されたものとする。次に中継プログラム８０１は、生成した初期ＵＲＬを共有メモリ２１２に保存する（Ｓ９０２）。この後中継プログラム８０１は、たとえば生成したポート番号を宛先とするＨＴＴＰリクエストを待ち、該当するＨＴＴＰリクエストが到着すればそれを受信する。
【００３３】
アプリケーション８０６はユーザ操作によりＷｅｂページ表示ボタン３０３が押下されると、共有メモリ２１２を参照しＳ９０２で保存された初期ＵＲＬを取得する（Ｓ９０３）。次にアプリケーション８０６は、ユーザがアプリケーション８０６の画面上で選択した印刷装置の固有情報を取得する（Ｓ９０４）。ここでは、印刷装置１２０に組み込まれているデバイスディスクリプタとストリングディスクリプタの中のベンダーＩＤ、製品ＩＤ、シリアル番号を取得することとし、それぞれの値は以下の値であると仮定する。
ベンダーＩＤ：ＶＩＤ＿０４Ａ９
製品ＩＤ：ＰＩＤ＿４３２１
シリアル番号：ＰＩＤ＿４３２１
次に、アプリケーション８０６はＳ９０３で取得したＵＲＬとＳ９０４で取得した印刷装置１２０の固有情報を組み合わせて、Ｗｅｂブラウザ２０２の起動時に指定するＵＲＬを生成する（Ｓ９０５）。ここでは、以下のＵＲＬを生成したと仮定する。
ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ：６５４３２／ＶＩＤ＿０４Ａ９＆ＰＩＤ＿４３２１＆ＰＩＤ＿４３２１
その後、アプリケーション８０６はＳ９０５で作成したＵＲＬを指定して、Ｗｅｂブラウザ２０２を起動する（Ｓ９０６）。Ｗｅｂブラウザ２０２は指定されたＵＲＬに対してＷｅｂコンテンツ取得のためのＨＴＴＰリクエスト（ＧＥＴリクエスト）を送信する（Ｓ９０７）。
【００３４】
Ｓ９０７にて送信されたＨＴＴＰリクエストは、Ｓ９０１で生成したＵＲＬを宛先としており、中継プログラム８０１が一旦受信する。ここでは、以下のＨＴＴＰリクエストを受信したと仮定する。
ＧＥＴ  ／ＶＩＤ＿０４Ａ９＆ＰＩＤ＿４３２１＆ＰＩＤ＿４３２１  ＨＴＴＰ／１．１
Ｈｏｓｔ：  ｌｏｃａｌｈｏｓｔ：６５４３２
ＨＴＴＰリクエストを受信した中継プログラム８０１は、ＨＴＴＰリクエストに含まれるＵＲＬ情報を解析し、ＵＲＬからＨＴＴＰリクエストを送信すべき印刷装置の固有情報を取得する（Ｓ９０８）。次に中継プログラム８０１は通信スレッド９１がＷｅｂブラウザ２０２と通信を行うためのポート番号を含むＵＲＬを決定する（Ｓ９０９）。ここでもＵＲＬに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択するものとする。その後、中継プログラム８０１は通信スレッド９１を起動する（Ｓ９１０）。この時、中継プログラム８０１はＳ９０８で取得した印刷装置１２０の固有情報と、起動した通信スレッド９１にＳ９０９で決定したポート番号を含むＵＲＬを通知する。次に中継プログラム８０１は、Ｓ９０７で受信したＨＴＴＰリクエストに対する応答として、Ｓ９０９で決定したＵＲＬへのリダイレクトを指示するＨＴＴＰレスポンスをＷｅｂブラウザ２０２へ送信する。ここでは、以下のＨＴＴＰレスポンスを送信したと仮定する。
ＨＴＴＰ／１．１  ３０７  Ｔｅｍｐｏｌａｒｙ  Ｒｅｄｉｒｅｃｔ
Ｌｏｃａｔｉｏｎ：  ｌｏｃａｌｈｏｓｔ：６５０００／ｉｎｄｅｘ．ｈｔｍｌ
なお、リダイレクト先のアドレスとして指定したｌｏｃａｌｈｏｓｔ：６５０００／ｉｎｄｅｘ．ｈｔｍｌはＳ９０９で決定したポート番号を含むＵＲＬである。ここでリダイレクト指示は、アプリケーションとＷｅｂブラウザとが、印刷装置の固有情報や、印刷装置に固有のＵＲＬを共有するために利用される。
【００３５】
リダイレクト応答を受信したＷｅｂブラウザ２０２は、指示されたアドレス（ここでは送信スレッド用ＵＲＬ）に対し再度Ｓ９０７で送信したＨＴＴＰリクエストを送信する（Ｓ９１２）。Ｓ９１２にて送信されたＨＴＴＰリクエストは、通信スレッド９１が受信する。ＨＴＴＰリクエストを受信した通信スレッド９１は、中継プログラム８０１から通知された印刷装置の固有情報から通信すべき印刷装置を特定し、ＵＳＢドライバ２０７経由で該印刷装置へＨＴＴＰリクエストを送信する（Ｓ９１３〜Ｓ９１４）。通信スレッド９１はＨＴＴＰリクエストの送信が完了すると、次に送信したＨＴＴＰリクエストに対するＨＴＴＰレスポンスをＵＳＢドライバ２０７経由で印刷装置１２０から取得する（Ｓ９１５〜Ｓ９１６）。Ｓ９１５〜Ｓ９１６の処理により取得したＨＴＴＰレスポンスを取得した通信スレッド９１は、Ｗｅｂブラウザ２０２に該ＨＴＴＰレスポンスを応答する（Ｓ９１７）。Ｓ９１７でＨＴＴＰレスポンスを受信したＷｅｂブラウザ２０２は、該ＨＴＴＰレスポンスに含まれるＷｅｂコンテンツの情報を表示する（Ｓ９１８）。このような通信処理により、Ｗｅｂブラウザ２０２はＵＳＢインターフェースを介して接続された印刷装置１２０の生成するＷｅｂコンテンツを表示することが可能となる。
【００３６】
●中継プログラム８０１による処理手順（第２実施形態）
図１０では、本実施形態における中継プログラム８０１の処理をより詳細に説明する。なお本実施形態では、中継プログラム８０１は、インストーラーやユーザによる操作などにより、事前に情報処理装置１１０に配置（インストール）済みであることを前提とする。中継プログラム８０１は、情報処理装置１１０の起動と共に処理を開始する（Ｓ１００１）。次に中継プログラム８０１は、Ｗｅｂブラウザ２０２が中継プログラム８０１にＨＴＴＰリクエスト送信を開始する際の初期ＵＲＬを生成する（Ｓ１００２）。ここでＵＲＬに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択されるものとする。次に中継プログラム８０１は、共有メモリ２１２に生成した初期ＵＲＬを保存する（Ｓ１００３）。その後、中継プログラム８０１は、Ｓ１００２で生成したＵＲＬに含まれるポート番号に対して通信開始処理を行う（Ｓ１００４）。続いて、中継プログラム８０１はアプリケーション８０６により起動されたＷｅｂブラウザ２０２からＨＴＴＰリクエストを受信する（Ｓ１００５）。なお中継プログラム８０１は、ステップＳ１００４の後にはＨＴＴＰリクエストの受信待ちとなっていてよい。ＨＴＴＰリクエストを受信した中継プログラム８０１は、受信したＨＴＴＰリクエストに含まれるＵＲＬ情報を解析し、ＵＲＬからＨＴＴＰリクエストを送信すべき印刷装置の固有情報を取得する（Ｓ１００６）。次に中継プログラム８０１は、Ｓ１００６で取得した印刷装置の固有情報がすでにＵＲＬ保存部８０５に保存されているか否かを判定する（Ｓ１００７）。
【００３７】
Ｓ１００７にてＮＯと判断した場合、中継プログラム８０１は通信スレッドがＷｅｂブラウザ２０２と通信を行うためのポート番号を含むＵＲＬを決定する（Ｓ１００８）。その後中継プログラム８０１は、Ｓ１００８で決定したポート番号を含むＵＲＬと、Ｓ１００６で取得した印刷装置１２０の固有情報を関連付けてＵＲＬ保存部８０５に保存する（Ｓ１００９）。続いて中継プログラム８０１は、通信スレッド９１を起動し（Ｓ１０１０）、Ｓ１００８で決定したポート番号を含むＵＲＬと、Ｓ１００６で取得した印刷装置１２０の固有情報を通信スレッド９１に通知する。その後中継プログラム８０１はＳ１００５で受信したＨＴＴＰリクエストに対する応答として、Ｓ１００８で決定したＵＲＬへのリダイレクトを指示するＨＴＴＰレスポンスをＷｅｂブラウザ２０２へ送信する（Ｓ１０１１）。
【００３８】
一方、Ｓ１００７にてＹＥＳと判定した場合、中継プログラム８０１はＳ１００６で取得した印刷装置の固有情報に関連付けされたＵＲＬをＵＲＬ保存部８０５から取得する（Ｓ１０１２）。その後、中継プログラム８０１はＳ１００５で受信したＨＴＴＰリクエストに対する応答として、Ｓ１０１２で取得したＵＲＬへのリダイレクトを指示するＨＴＴＰレスポンスをＷｅｂブラウザ２０２へ送信する（Ｓ１０１１）。次に中継プログラム８０１は情報処理装置１１０の状態情報を取得し、情報処理装置１１０が終了中か否かを判断する（Ｓ１０１３）。Ｓ１０１３にて情報処理装置１１０が終了中でないと判断した場合は、中継プログラム８０１はＳ１００５に戻り再度Ｗｅｂブラウザ２０２からのＨＴＴＰリクエストの受信を行う。一方、Ｓ１０１３にて情報処理装置１１０が終了中であると判断した場合、中継プログラム８０１はＳ１００４にて通信処理を開始したポート番号に対する通信終了処理を実行する（Ｓ１０１４）。その後中継プログラム８０１は、Ｓ１００３にて保存した初期ＵＲＬ情報を共有メモリ２１２から削除する（Ｓ１０１５）。その後、中継プログラム８０１は処理を終了する（Ｓ１０１６）。
【００３９】
●通信スレッドによる処理手順（第２実施形態）
図１１では、中継プログラム８０１により起動される通信スレッド９１の処理を詳細に説明する。通信スレッド９１は、中継プログラム８０１により起動される（Ｓ１１０１）。次に通信スレッド９１は、中継プログラム８０１より通知されたＵＲＬからポート番号を取得し、該ポート番号に対する通信開始処理を行う（Ｓ１１０２）。次に通信スレッド９１は、アプリケーション８０６により起動されたＷｅｂブラウザ２０２からＨＴＴＰリクエストを受信する（Ｓ１１０３）。ここでは、以下のＨＴＴＰリクエストを受信したと仮定する。
ＧＥＴ  ／ｉｎｄｅｘ．ｈｔｍｌ  ＨＴＴＰ／１．１
Ｈｏｓｔ：  ｌｏｃａｌｈｏｓｔ：６５０００
次に通信スレッド９１は、中継プログラム８０１より通知された印刷装置１２０の固有情報と一致する印刷装置を特定する（Ｓ１１０４）。なお、Ｓ１１０４で行われる処理は、Ｓ７０５と同じである。次に通信スレッド９１は、Ｓ１１０４で印刷装置の特定に成功したか否かを判定する（Ｓ１１０５）。中継プログラム８０１より通知された印刷装置１２０の固有情報と一致する印刷装置が特定できない場合、通信スレッド９１はＷｅｂブラウザ２０２へ通信すべき印刷装置が特定できなかったことを示すＨＴＴＰレスポンスを応答する（Ｓ１１１１）。その後、通信スレッド９１はＳ１１０２にて通信処理を開始したポート番号に対する通信終了処理を実行する（Ｓ１１１２）。印刷装置１２０の固有情報と一致する印刷装置が特定できた場合、次に通信スレッド９１は、受信したＨＴＴＰリクエストをＵＳＢドライバ２０７経由で印刷装置１２０に送信（Ｗｒｉｔｅ）する（Ｓ１１０６）。続いて通信スレッド９１は、送信したＨＴＴＰリクエストに対するレスポンスをＵＳＢドライバ２０７経由で印刷装置１２０から受信（Ｒｅａｄ）する（Ｓ１１０７）。その後通信スレッド９１は、受信したレスポンスをＨＴＴＰレスポンスとしてＷｅｂブラウザ２０２へ応答する（Ｓ１１０８）。次に通信スレッド９１は、印刷装置１２０の電源状態を確認し、オンライン状態か否かを判定する（Ｓ１１０９）。印刷装置１２０がオンライン状態であると判定した場合、次に通信スレッド９１は情報処理装置１１０の状態情報を取得し、情報処理装置１１０が終了中か否かを判断する（Ｓ１１１０）。Ｓ１１１０にて情報処理装置１１０が終了中でないと判断した場合は、通信スレッド９１はＳ１１０３に戻り再度Ｗｅｂブラウザ２０２からのＨＴＴＰリクエストの受信を行う。一方、Ｓ１１０９にて印刷装置１２０がオフライン状態、またはＳ１１１０にて情報処理装置１１０が終了中であると判断した場合、通信スレッド９１はＳ１１０２にて通信処理を開始したポート番号に対する通信終了処理を実行する（Ｓ１１１２）。その後通信スレッド９１は、ＵＲＬ保存部８０５に記録されている印刷装置１２０の固有情報とＵＲＬの関連付け情報を削除する（Ｓ１１１３）。その後、通信スレッド９１は処理を終了する（Ｓ１１１４）。以上説明したように、本実施形態によると、Ｗｅｂブラウザ２０２と中継プログラム８０１との間の通信に利用するポート番号と、Ｗｅｂブラウザ２０２と通信スレッド９１との間の通信に利用するポート番号は、動的に選択される。この際、選択されるポート番号は、それぞれ他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から選択される。そのため、利用可能なポートが限定されている場合においても情報処理装置１１０で実行されるＷｅｂブラウザ２０２がＵＳＢ接続された印刷装置と適切に通信することが可能となる。
【００４０】
また中継プログラム８０１はＷｅｂブラウザ２０２から印刷装置の固有情報を含むＨＴＴＰリクエストを受信することで、通信すべき印刷装置を特定するため、複数の機種が接続されてもＷｅｂブラウザ２０２とそれぞれの印刷装置は適切に通信が可能となる。
＜実施形態３＞
先に示した２つの実施形態では中継プログラムは、インストーラーやユーザによる操作などにより、事前に情報処理装置１１０に配置（インストール）済みであり、かつ、情報処理装置の起動と同時に起動されることを前提とした。本実施形態では、中継プログラムは常駐プログラムとして動作しない構成について述べる。すなわち、ユーザ操作によりアプリケーションのＷｅｂページ表示ボタンが押下されたときに、アプリケーション自身が中継プグラムを起動する。なお、以後、特に言及が無い点は、実施形態１または実施形態２と同等の構成である。
【００４１】
図１２は本実施例の構成を概念的に示すブロック図の一例である。中継プログラム１２０１はアプリケーション１２０８によって起動され、Ｗｅｂブラウザ２０２と印刷装置１２０との間の通信を中継する。中継プログラム１２０１はＨＴＴＰ制御部１２０２、ＵＳＢ制御部１２０３、ＵＲＬ決定部１２０４、ＵＲＬ保存部１２０５、ブラウザ起動部１２０６、デバイス接続検知部１２０７を備えている。ＨＴＴＰ制御部１２０２は、Ｗｅｂブラウザ２０２とＨＴＴＰ通信を行うと共に、Ｗｅｂブラウザ２０２から受信したＨＴＴＰリクエストをＵＳＢ制御部１２０３に送信する。またＨＴＴＰ制御部１２０２は、ＵＳＢ制御部１２０３を経由して受信した印刷装置１２０からの情報を、ＨＴＴＰレスポンスとしてＷｅｂブラウザ２０２に応答する。デバイス接続検知部１２０７は、ＵＳＢドライバ２０７から取得したＵＳＢインターフェースを介して接続されている周辺装置の情報から、中継プログラム２０１と通信可能な印刷装置が接続されていることを検知する。ブラウザ起動部１２０６は、ＵＲＬ決定部１２０４から取得した印刷装置に対応するＵＲＬを指定してＷｅｂブラウザ２０２を起動する。またＵＲＬ保存部１２０５には、印刷装置１２０の固有情報とＵＲＬ決定部１２０４が生成した当該印刷装置に対応するＵＲＬを関連付けて保存されている。
【００４２】
●ＵＳＢを介したコンテンツ取得手順（第３実施形態）
図１３では、本実施形態における通信処理の全体像を示す。なお図１３においては、第二実施形態と同様に、Ｓ１３０１に先立って、ＵＳＢ接続された印刷装置のデバイス情報（固有情報を含む）を情報処理装置１１０が取得済みであり、所定の場所に保存されている。デバイス情報は例えば、アプリケーション１２０８がＳ１３０１に先立ってＵＳＢドライバ２０７から取得しておいてもよい。アプリケーション１２０８はユーザ操作によりＷｅｂページ表示ボタン３０３が押下されると、ユーザがアプリケーション１２０８の画面上で選択した印刷装置の固有情報を取得する（Ｓ１３０１）。次にアプリケーション１２０８は、Ｓ１３０１で取得した印刷装置の固有情報を指定して、中継プログラム１２０１を起動する（Ｓ１３０２）。起動された中継プログラム１２０１は、Ｗｅｂブラウザ２０２とＨＴＴＰ通信を行うためのポート番号を含むＵＲＬを決定する（Ｓ１３０３）。ここでＵＲＬに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択するものとする。次に中継プログラム１２０１は、アプリケーション１２０８から指示された印刷装置の固有情報とＳ１３０３にて決定したＵＲＬをＵＲＬ保存部８０５に保存する（Ｓ１３０４）。その後、中継プログラム１２０１はＳ１３０３で決定したＵＲＬを指定してＷｅｂブラウザ２０２を起動する（Ｓ１３０５）。Ｗｅｂブラウザ２０２は指定されたＵＲＬに対してＷｅｂコンテンツ取得のためのＨＴＴＰリクエスト（ＧＥＴリクエスト）を送信する（Ｓ１３０６）。
【００４３】
Ｓ１３０６にて送信されたＨＴＴＰリクエストは、中継プログラム１２０１が受信する。ＨＴＴＰリクエストを受信した中継プログラム１２０１は、アプリケーション１２０８から起動時に通知された印刷装置のデバイス情報から通信すべき印刷装置を特定する。そして、中継プログラム１２０１は、ＵＳＢドライバ２０７経由で該印刷装置へＨＴＴＰリクエストを送信する（Ｓ１３０７〜Ｓ１３０８）。中継プログラム１２０１はＨＴＴＰリクエストの送信が完了すると、次に送信したＨＴＴＰリクエストに対するＨＴＴＰレスポンスをＵＳＢドライバ２０７経由で印刷装置１２０から取得する（Ｓ１３０９〜Ｓ１３１０）。Ｓ１３０９〜Ｓ１３１０の処理により取得したＨＴＴＰレスポンスを取得した中継プログラム１２０１は、Ｗｅｂブラウザ２０２に該ＨＴＴＰレスポンスを応答する（Ｓ１３１１）。Ｓ１３１１でＨＴＴＰレスポンスを受信したＷｅｂブラウザ２０２は、該ＨＴＴＰレスポンスに含まれるＷｅｂコンテンツの情報を表示する（Ｓ１３１２）。このような通信処理により、Ｗｅｂブラウザ２０２はＵＳＢインターフェースを介して接続された印刷装置１２０の生成するＷｅｂコンテンツを表示することが可能となる。
【００４４】
なお、図１３においては、Ｓ１３０３において、Ｗｅｂブラウザ２０２が中継プログラム１２０１へとＨＴＴＰリクエストを送信するためのＵＲＬを生成している。それを、不図示の通信スレッドに対してＨＴＴＰリクエストを送信するためのＵＲＬを生成し、併せて通信スレッドを起動してもよい。なお、図１３ではアプリケーション１２０８により中継プログラム１２０１が起動されるが、他のアプリケーション（つまり、任意のアプリケーション）により中継プログラム１２０１が起動されても良い。
【００４５】
●中継プログラムによる処理手順(第３実施形態)
図１４では、本実施形態における中継プログラム１２０１の処理をより詳細に説明する。中継プログラム１２０１はアプリケーション１２０８により起動され処理を開始する（Ｓ１４０１）。次に中継プログラム１２０１は、起動時にアプリケーション１２０８から通知された印刷装置（プリンタ）の固有情報がＵＲＬ保存部１２０５に保存されているか否かを判定する（Ｓ１４０２）。アプリケーション１２０８から指定された印刷装置の固有情報がＵＲＬ保存部１２０５に保存されている場合、中継プログラム１２０１は該固有情報に関連付けされているＵＲＬを指定しＷｅｂブラウザを起動する（Ｓ１４０３）。その後、中継プログラム１２０１は処理を終了する（Ｓ１４１９）。この状況では、既にアプリケーション１２０８から指定された印刷装置と通信する中継プログラムが起動しているため、改めて中継プログラムを起動する必要はない。そのため、ＵＲＬ保存部１２０５に保存されているＵＲＬを指定し、Ｗｅｂブラウザ２０２を起動すれば、先に起動している中継プログラムが印刷装置との通信処理を行う。一方、Ｓ１４０２にて印刷装置の固有情報がＵＲＬ保存部１２０５に保存されていない場合、中継プログラム１２０１は、Ｗｅｂブラウザ２０２と通信を行うためのポート番号を含むＵＲＬを決定する（Ｓ１４０４）。ここでＵＲＬに含まれるポート番号は他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択するものとする。次に中継プログラム１２０１は、Ｓ１４０４で決定したポート番号を含むＵＲＬと、アプリケーション１２０８から指定された印刷装置の固有情報を関連付けてＵＲＬ保存部８０５に保存する（Ｓ１４０５）。続いて、中継プログラム１２０１はＳ１４０４で生成したＵＲＬに含まれるポート番号に対して通信開始処理を行う（Ｓ１４０６）。その後、中継プログラム１２０１はＳ１４０４にて決定したＵＲＬを指定し、Ｗｅｂブラウザ２０２を起動する（Ｓ１４０７）。次に中継プログラム１２０１は、Ｗｅｂブラウザ２０２からＨＴＴＰリクエストを受信する（Ｓ１４０８）。その後中継プログラム１２０１は、アプリケーション１２０８より起動時に通知された印刷装置１２０の固有情報と一致する印刷装置を特定する（Ｓ１４０９）。次に中継プログラム１２０１は、Ｓ１４０９で印刷装置の特定に成功したか否かを判定する（Ｓ１４１０）。アプリケーション１２０８より起動時に通知された印刷装置１２０の固有情報と一致する印刷装置が特定できない場合について説明する。中継プログラム１２０１はＷｅｂブラウザ２０２へ通信すべき印刷装置が特定できなかったことを示すＨＴＴＰレスポンスを応答する（Ｓ１４１８）。ここでは、以下のＨＴＴＰレスポンスを送信したと仮定する。
ＨＴＴＰ／１．１  ４０４  Ｎｏｔ  Ｆｏｕｎｄ
その後、中継プログラム１２０１はＳ１４０６にて通信処理を開始したポート番号に対する通信終了処理を実行する（Ｓ１４１６）。一方、Ｓ１４０９で印刷装置１２０の固有情報と一致する印刷装置を特定できた場合、次に中継プログラム１２０１は、受信したＨＴＴＰリクエストをＵＳＢドライバ２０７経由で印刷装置１２０に送信（Ｗｒｉｔｅ）する（Ｓ１４１１）。続いて中継プログラム１２０１は、送信したＨＴＴＰリクエストに対するレスポンスをＵＳＢドライバ２０７経由で印刷装置１２０から受信（Ｒｅａｄ）する（Ｓ１４１２）。その後中継プログラム１２０１は、受信したレスポンスをＨＴＴＰレスポンスとしてＷｅｂブラウザ２０２へ応答する（Ｓ１４１３）。次に中継プログラム１２０１は、印刷装置１２０の電源状態を確認し、オンライン状態か否かを判定する（Ｓ１４１４）。印刷装置１２０がオンライン状態であると判定した場合、中継プログラム１２０１は情報処理装置１１０の状態情報を取得し、情報処理装置１１０が終了中か否かを判断する（Ｓ１４１５）。Ｓ１４１５にて情報処理装置１１０が終了中でないと判断した場合は、中継プログラム１２０１はＳ１４０８に戻り再度Ｗｅｂブラウザ２０２からのＨＴＴＰリクエストの受信を行う。一方、Ｓ１４１４にて印刷装置１２０がオフライン状態、またはＳ１４１５にて情報処理装置１１０が終了中であると判断した場合、中継プログラム１２０１はＳ１４０６にて通信処理を開始したポート番号に対する通信終了処理を実行する（Ｓ１４１６）。その後中継プログラム１２０１は、ＵＲＬ保存部８０５に保存されている印刷装置１２０とＵＲＬの関連付け情報を削除する（Ｓ１４１７）。その後、中継プログラム１２０１は処理を終了する（Ｓ１４２０）。
【００４６】
以上説明したように、本実施形態によると、Ｗｅｂブラウザ２０２と中継プログラム１２０１との間の通信に利用するポートは、動的に選択される。この際、選択されるポート番号は、他のアプリケーションが利用しておらず、かつファイアウォールなどのセキュリティ機能により遮断されていないポート番号の中から動的に選択される。そのため、利用可能なポートが限定されている場合においても情報処理装置１１０で実行されるＷｅｂブラウザ２０２がＵＳＢ接続された印刷装置と適切に通信することが可能となる。
【００４７】
また本実施形態によると、ユーザ操作によりアプリケーション１２０８のＷｅｂページ表示ボタン３０３を押下したタイミングで中継プログラム１２０１が起動される。そのため、事前に情報処理装置１１０に中継プログラム１２０１が起動される必要がない。
【００４８】
なお、図１４のＳ１４０４では、Ｗｅｂブラウザ２０２が中継プログラム１２０１へとＨＴＴＰリクエストを送信するためのＵＲＬを生成している。それに代えて、不図示の通信スレッドに対してＨＴＴＰリクエストを送信するためのＵＲＬをＳ１４０４で生成し、併せて通信スレッドを起動してもよい。これにより複数の通信スレッドを生成すれば、複数の通信を並列して処理することができる。
【００４９】
＜実施形態４＞
本実施形態では、アプリケーションが中継プログラムの稼働状況に応じてＷｅｂブラウザの起動処理を切り替える形態について説明する。なお以後、特に言及が無い点は、実施形態１、実施形態２または実施形態３と同等の構成である。また、本実施形態で説明する処理は、実施形態１で示したアプリケーション２１１が実行するものとして説明する。
【００５０】
図１５は、本実施形態におけるアプリケーション２１１の処理について説明する。アプリケーション２１１はユーザ操作によりＷｅｂページ表示ボタン３０３が押下されるとＷｅｂブラウザ表示処理を開始する（Ｓ１５０１）。次にアプリケーション２１１は、ユーザにより指定された印刷装置と情報処理装置１１０との接続形態を確認する（Ｓ１５０２）。Ｓ１５０２にてユーザにより指定された印刷装置と情報処理装置１１０がネットワーク接続されていると判断した場合、アプリケーション２１１は該印刷装置に対応するＩＰアドレスを指定してＷｅｂブラウザ２０２を起動する（Ｓ１５０３）。一方、Ｓ１５０２にてユーザにより指定された印刷装置と情報処理装置１１０がＵＳＢ接続されていると判断した場合、アプリケーション２１１は、情報処理装置１１０上で中継プログラムが稼働中か否かを判定する（Ｓ１５０４）。Ｓ１５０４にて稼働中ではあると判定した場合、アプリケーション２１１は共有メモリ２１２からユーザが指定した印刷装置に対応するＵＲＬを取得する（Ｓ１５０５）。次にアプリケーション２１１はユーザが指定した印刷装置に対応するＵＲＬの取得に成功したか否かを判定する（Ｓ１５０６）。取得に成功した場合、アプリケーション２１１は該ＵＲＬを指定してＷｅｂブラウザ２０２を起動する（Ｓ１５０７）。この状況は、実施形態１或いは実施形態２で示した構成の中継プログラムが既に稼働している状態のため、アプリケーション２１１は取得したＵＲＬを指定してＷｅｂブラウザ２０２を起動するのみでよい。一方、Ｓ１５０４にて中継プログラムが稼働中でないと判定した場合、またはＳ１５０６にてＵＲＬ取得に失敗したと判定した場合、アプリケーション２１１はユーザが指定した印刷装置の固有情報を取得する（Ｓ１５０８）。その後、アプリケーション２１１は取得した固有情報を指定して、中継プログラムを起動する（Ｓ１５０９）。この状況では、ユーザがアプリケーション２１１上のＷｅｂページ表示ボタン３０３を押下した時点では中継プログラム２０１は稼働していない。そのため、アプリケーション２１１は印刷装置の固有情報を指定して実施形態３で示した構成の中継プログラムを起動する。
【００５１】
なお、Ｓ１５０２において中継プログラムが稼働中か否かを判定する手法としては、中継プログラムそのものの動作状況を確認する以外にも、情報処理装置上で稼働するオペレーティングシステムの種別やそのバージョン情報から判断する方法でもよい。
【００５２】
この手順により、アプリケーションが中継プログラムの稼働状況に応じてＷｅｂブラウザの起動処理を切り替えることができる。具体的には、起動済みの中継アプリケーションの二重起動を防止できる。
【００５３】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５４】
２０１  中継プログラム、２０２  ブラウザ、２０３，８０２，１２０２  ＨＴＴＰ制御部、２０４，８０３，１２０３  ＵＳＢ制御部、２０５，８０４，１２０４  ＵＲＬ決定部、２０６，１２０７  デバイス接続検知部、２０７  ＵＳＢドライバ、２１２  共有メモリ、８０４，１２０５  ＵＲＬ保存部
【図１】
2020046756.tif 000003
【図２】
2020046756.tif 000004
【図３】
2020046756.tif 000005
【図４】
2020046756.tif 000006
【図５】
2020046756.tif 000007
【図６】
2020046756.tif 000008
【図７】
2020046756.tif 000009
【図８】
2020046756.tif 000010
【図９】
2020046756.tif 000011
【図１０】
2020046756.tif 000012
【図１１】
2020046756.tif 000013
【図１２】
2020046756.tif 000014
【図１３】
2020046756.tif 000015
【図１４】
2020046756.tif 000016
【図１５】
2020046756.tif 000017