(57)【要約】【課題】複数の画像データ出力装置との接続確認を画像データ出力装置の台数に関わらず高速に取得することが可能な情報処理装置を提供すること。【解決手段】スキャナ２００のスキャナ情報を取得する情報処理装置１００であって、ネットワーク上に存在する各スキャナと通信するための通信情報を取得する通信情報取得手段３１と、認証情報の入力を受け付ける認証情報受け付け手段３２と、ネットワーク上に存在する画像データ出力装置の数と同じ数の、スキャナを個別に認証するための認証手段４３と、前記認証手段により認証が成立した場合にはスキャナの装置情報を、認証が成立しない場合は認証不成立をスキャナ毎に表示する表示手段３３と、を有し、予め定められた最大数を上限とする認証手段のそれぞれは、複数のスキャナに対し同時に、通信情報を通信手段に設定して各スキャナに認証情報を送信し、各スキャナから認証結果を受信する、ことを特徴とする。【選択図】図２
2014179908.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された画像データ出力装置の装置情報を取得する情報処理装置であって、
ネットワーク上に存在する各画像データ出力装置と通信するための通信情報を取得する通信情報取得手段と、
認証情報の入力を受け付ける認証情報受け付け手段と、
ネットワーク上に存在する画像データ出力装置の数と同じ数の、画像データ出力装置を個別に認証するための認証手段と、
前記認証手段により認証が成立した場合には画像データ出力装置の装置情報を、認証が成立しない場合は認証不成立を画像データ出力装置毎に表示する表示手段と、を有し、
予め定められた最大数を上限とする前記認証手段のそれぞれは、複数の画像データ出力装置に対し同時に、
前記通信情報を通信手段に設定して各画像データ出力装置に認証情報を送信し、各画像データ出力装置から認証結果を受信する、
ことを特徴とする情報処理装置。
【請求項２】
前記通信手段は、前記認証手段の数に関わらず１つのみ存在する、ことを特徴とする請求項1記載の情報処理装置。
【請求項３】
ネットワーク上に存在する画像データ出力装置の数と同じ数の前記認証手段のそれぞれは、画像データ出力装置に認証情報を送信する前に、ネットワーク上に存在する各画像データ出力装置の認証情報の記憶領域を確保している構造体から、各画像データ出力装置の認証情報を記憶するための記憶領域指示情報を取得する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
所定のプログラムに基づいて動作する情報処理装置に、
ネットワーク上に存在する各画像データ出力装置と通信するための通信情報を取得する通信情報取得ステップと、
認証情報の入力を受け付ける認証情報受け付けステップと、
ネットワーク上に存在する画像データ出力装置の数と同じ数だけ、画像データ出力装置を個別に認証するための認証手段を生成するステップと、
予め定められた最大数を上限とする前記認証手段に対し、複数の画像データ出力装置に対し同時に、前記通信情報を通信手段に設定して各画像データ出力装置に認証情報を送信させ、各画像データ出力装置から認証結果を受信させるステップと、
認証が成立した場合には画像データ出力装置の装置情報を、認証が成立しない場合は認証不成立を画像データ出力装置毎に表示するステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続されたスキャナのスキャナ情報を取得する情報処理装置に関する。
【背景技術】
【０００２】
ネットワークの普及によりスキャナもネットワークに対応するようになり、いわゆるネットワークスキャナが使用されている。ネットワークスキャナ（以下、単にスキャナという）は、ネットワークに接続された複数のＰＣ(Personal Computer)と通信できるので、各ＰＣはスキャナが作成した画像データを受信することができる。
【０００３】
しかしながら、あるユーザがスキャナを使用中に、別のユーザが同じスキャナを使用すると画像データが別のユーザのＰＣに送信されてしまうので、原稿を読み取らせる前にユーザはＰＣとスキャナの接続を確立する（以下、接続限定という）必要がある。このため、ユーザは接続ツールによりＰＣとスキャナを接続させる（例えば、特許文献１参照。）。
【０００４】
図１は、接続ツールの画面例を示す図である。ユーザが接続ツールを起動すると、接続ツールはＰＣにインストールされているスキャナドライバ名を表示する。図では「Ｒ１ＳＣＡＮ」というスキャナドライバが選択されている。
【０００５】
ユーザが検索ボタンを押下すると、接続ツールはネットワークに接続されているスキャナを検索して、選択されたスキャナのスキャナ名（ホスト名）とアドレスを表示する。図では検索された２つのスキャナが表示されている。ユーザはホスト名を見て使用する予定のスキャナを選択する（これにより反転表示される）。
【０００６】
そして、ユーザが接続テストを押下すると、接続ツールは選択されたスキャナと通信し、他のユーザが使用していないかなどの状態を判定し、使用していなければ、当該ＰＣとの接続限定を行う（接続テストと接続限定が別々の操作になっているツールもある）。また、スキャナが使用可能であることをユーザに通知するメッセージを表示する。これにより、スキャナは当該ＰＣと接続限定される。この後、ユーザはＯＫボタンをクリックし、画像処理アプリを起動することでネットワーク経由でスキャナを制御することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の接続テストでは、ユーザは一度にスキャナ1台に対してしか接続テストを行うことができないという問題があった。すなわち、図１にて説明したように、ユーザが接続テストを押下する際には１台のスキャナ名しか選択できず、各スキャナの状態を確認する必要がある場合などに、ネットワーク上のスキャナの数だけ接続テストする必要がある。電源が入っていないなどの理由で応答できない状態のスキャナは接続テストに対し応答しないが、応答しないと接続ツールが判断するためにはタイムアウト時間の経過が必要である。このため、多くのスキャナがネットワークに接続されている場合、長い時間がかかってしまうという問題があった。また、タイムアウト時間を短く設定したとしても、ユーザはスキャナを選択して1台ごとに接続テストを行う必要があるという問題があった。
【０００８】
また、近年、ネットワークに複数のスキャナが接続されることが多くなっており、機種が異なるスキャナに共通のスキャナドライバが開発されるようになっている。このため、スキャナの接続テストを行う機会も増えている。
【０００９】
そこで、接続ツールを、一度に複数のスキャナ（例えば、アドレスが既知の全てのスキャナ）と接続テストを行うように改良することが検討される。しかしながら、このように接続ツールを改良すると、以下のような問題がある。
【００１０】
一度に複数のスキャナと接続テストする場合、状態を確認する処理をマルチスレッド化することが考えられる。しかし、ネットワーク上のスキャナの数はユーザの環境によって様々なので、あまりに多くのスキャナが存在するとＰＣの他のスレッドを圧迫するおそれがある。
【００１１】
また、接続テストの際に、ＰＣとスキャナの間で認証処理が行われる場合がある。一度に複数のスキャナと接続テストを行う場合、認証処理もマルチスレッド化されるが、単に認証処理をマルチスレッド化するだけでは、各スレッドが任意のタイミングで認証情報を記憶エリアに入出力するため、認証情報が破壊されるなどの不都合が生じるおそれがある。
【００１２】
このように、単純なマルチスレッド化では、一度に複数のスキャナと接続テストを行う処理の実装が困難であるという問題がある。
【００１３】
本発明は、上記課題に鑑み、複数のスキャナとの接続確認をスキャナの台数に関わらず高速に取得することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、ネットワークに接続された画像データ出力装置の装置情報を取得する情報処理装置であって、ネットワーク上に存在する各画像データ出力装置と通信するための通信情報を取得する通信情報取得手段と、認証情報の入力を受け付ける認証情報受け付け手段と、ネットワーク上に存在する画像データ出力装置の数と同じ数の、画像データ出力装置を個別に認証するための認証手段と、前記認証手段により認証が成立した場合には画像データ出力装置の装置情報を、認証が成立しない場合は認証不成立を画像データ出力装置毎に表示する表示手段と、を有し、予め定められた最大数を上限とする前記認証手段のそれぞれは、複数の画像データ出力装置に対し同時に、前記通信情報を通信手段に設定して各画像データ出力装置に認証情報を送信し、各画像データ出力装置から認証結果を受信する、ことを特徴とする。
【発明の効果】
【００１５】
複数のスキャナとの接続確認をスキャナの台数に関わらず高速に取得することが可能な情報処理装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】接続ツールの画面例を示す図である。
【図２】スキャナドライバの構成を模式的に説明する図の一例である。
【図３】スキャナシステムの概略構成図の一例である。
【図４】端末のハードウェア構成図の一例である。
【図５】ソフトウェア的な構成例を説明する図の一例である。
【図６】スキャナドライバのうち状態確認に使用される機能のクラス図、クラスから生成されたインスタンス間の関係を模式的に説明する図の一例である。
【図７】スキャナドライバと認証ライブラリの構造について説明する図の一例である。
【図８】クラスの記述例を示す図の一例である。
【図９】端末のディスプレイに表示されたＵＩの一例を示す図である。
【図１０】スキャナドライバの動作手順を示すシーケンス図の一例である。
【図１１】スキャナドライバの効果を説明するための図の一例である。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態について図面を参照しながら説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
【００１８】
図２は、本実施例のスキャナドライバの構成を模式的に説明する図の一例である。接続ツールはこのスキャナドライバを介して接続テストを行う。
(i) スキャナドライバは、ネットワーク上でＩＰアドレス（又はホスト名でもよい）が既知の全てのネットワークスキャナ（以下、単にスキャナという）について制御・認証のインスタンスを、スキャナの数だけ生成する。１つのインスタンスは１つのスレッドとして実行されるので、複数のインスタンスが平行に実行可能になる。
(ii)  各認証情報制御インスタンスは、認証情報構造体ポインタから取得した、各スキャナの認証情報のポインタを有している。認証情報のポインタは認証情報が記憶されたアドレスを示す。したがって、１つの認証情報制御インスタンスが１つの認証情報にアクセスする。
(iii)  スキャナドライバは所定数のマルチスレッドを並行に実行する。所定数とは、プログラムの実行環境において並列実行が推奨される最大の数であり、ＯＳ(Operating System)やＰＣ（Personal Computer）の能力により変わりうる。
【００１９】
このように、接続ツールは、並行して複数のスキャナの接続テストを行うことができるため、従来のようにユーザが１台ずつ接続テストするよりも接続テストに必要な時間を短縮できる。また、ユーザは１回、接続テストのボタンを押下すればよいので、操作性を向上できる。また、各認証情報制御インスタンスが認証情報にアクセスするので、認証情報構造体ポインタにアクセスが集中する不都合（例えば、アクセスバイオレーション）を抑制し、認証情報を個別に読み出したり書き出したりできる。
【００２０】
〔構成例〕
図３は、スキャナシステムの概略構成図の一例を示す。ネットワークを介して端末と複数のスキャナが通信可能に接続されている。ネットワークスキャナを使用する際の一般的なユーザ操作の流れは以下のようになる。
(i)ユーザは端末で動作する接続ツールを操作して、複数台のスキャナとの接続テストを行う。内部的にはスキャナドライバが動作する。
(ii)使用可能なスキャナの中から１台（又は複数台）を選択し接続限定する。
(iii)その後、ユーザはスキャナの設置場所に赴き原稿をセットする。
(iv)ユーザが画像処理アプリを操作すると、画像処理アプリがスキャナドライバを介してスキャナを制御し原稿のスキャンを行う。
(v)スキャナは原稿の画像データを端末に送信する。
【００２１】
本実施形態では、(i)の接続テストにおいて、接続ツールが複数のスキャナとの通信確認を並行に行うことが可能なスキャナドライバについて説明する。
【００２２】
端末は、例えばＰＣ、タブレット端末、スマートフォン、ＰＤＡ（Personal Digital Assistant）、携帯電話など、広義の情報処理装置である。また、情報処理装置としての機能を備えていればその呼称はどのようなものでもよい。
【００２３】
スキャナは、原稿を撮像素子で撮影して原稿の画像データを作成する。例えば、副走査方向に移動するキャリッジに搭載された露光ランプと光学系を有し、露光ランプで原稿を主走査方向に露光した際の反射光を光学系で集光してＣＣＤに結象させる。ＣＣＤは反射光を光電変換してアナログデータを生成する。アナログデータはＡ／Ｄ変換により例えば８bitの階調のデジタルの画像データに変換される。なお、カラーの原稿をカラーで読み取る場合、ＲＧＢ各色のＬＥＤライトを順番に点灯するか、又は、ＲＧＢ各色のカラーフィルタを介して原稿を読み取る。
【００２４】
スキャナは、スキャナの機能のみを有している装置である必要はなく、原稿の読み取り機能を有する装置であればよい。例えば、複写機、ＦＡＸ装置、プリンター、又は、ＭＦＰ（Multi Function Peripheral）などと呼ばれていても本実施形態のスキャナに含まれ得る。スキャナは特許請求の範囲の画像データ出力装置の一例である。
【００２５】
ネットワークは、ＬＡＮ、又は、複数のＬＡＮがルータなどを介して接続されたＷＡＮである。また、インターネットまで含めてネットワークを称する場合がある。ネットワークは有線で構築されていてもよいし、一部又は全てが無線ＬＡＮ（IEEE802.11b/a/g/n等）で構築されていてもよい。また、無線ＬＡＮのアドホックモードで、スキャナの数だけ１対１通信していてもよい。
【００２６】
図４は、端末のハードウェア構成図の一例を示す。端末２００は、バスに接続された、ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、ディスプレイ３２０が接続されたグラフィックボード３０５、キーボード・マウス３０６、メディアドライブ３０７、及び、ネットワーク通信部３０８を有する。ＣＰＵ３０１はＨＤＤ３０４に記憶されたプログラム３１０をＲＡＭ３０３に展開して実行し、各部品を制御して入出力を行ったり、データの加工を行ったりする。ＲＯＭ３０２にはＢＩＯＳやＯＳをＲＡＭ３０３に読み出すプログラムが記憶されている。
【００２７】
ＨＤＤ３０４は、不揮発性のメモリであればよくＳＳＤ（Solid State  Drive）などでもよい。ＨＤＤ３０４はＯＳ、プログラム３１０（ＵＩ画面、接続ツール、及び、スキャナドライバ）を記憶している。ＵＩ画面、接続ツール、及び、スキャナドライバはセットでインストールされることが多いが、別々のプログラムとして配布されてもよい。なお、ＯＳとしては、Windows（登録商標）系、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）などがある。ディスプレイ３２０にはプログラムが指示し、グラフィックボード３０５が作成したＧＵＩ画面が表示される。
【００２８】
キーボード・マウス３０６はユーザの操作を受け付ける入力装置である。メディアドライブ３０７はコンパクトディスク、ＤＶＤ及びブルーレイディスクなどの光学メディアにデータを読み書きする。また、フラッシュメモリなどのメモリカードにデータを読み書きしてもよい。
【００２９】
ネットワーク通信部３０８は、例えばＬＡＮに接続するためのイーサネット（登録商標）カードである。ＴＣＰ／ＩＰ（ＵＤＰ／ＩＰ）やアプリケーション層のプロトコルの処理はＯＳやプログラム３１０が行う。アプリケーション層のプロトコルは各種あるが、クラウドサービスに適したプロトコルを含め一般的なプロトコルに対応している（例えば、ＨＴＴＰ、ＦＴＰ、ＳＮＭＰ（Simple Network Management Protocol）、ＳＭＢ（Server Message Block）等）。
【００３０】
プログラム３１０は、インストール可能な形式又は実行可能な形式のファイルで、コンピュータで読み取り可能な記録メディアに記録して配布される。また、プログラム３１０は、不図示のサーバからインストール可能な形式又は実行可能な形式のファイルで配布される。
【００３１】
〔ソフトウェア構成〕
図５は、ソフトウェア的な構成例を説明する図の一例である。接続ツール１１及びＵＩ画面１５はＡＰＩ（Application Interface）１３を介してスキャナドライバ１４を操作する。ＵＩ画面は、ユーザが画像データを取得するためのＵＩを提供する。
【００３２】
スキャナドライバ１４のＡＰＩはＴＷＡＩＮ（Technology  Without Any  Interesting  Name）という規格が広く知られている。画像処理アプリなどのアプリケーションが直接、スキャナ１００を制御しようとすると、アプリケーションはスキャナ１００のメーカが作成したスキャナドライバ１４と通信する必要がある。
【００３３】
しかし、アプリケーションとスキャナ１００を同一メーカが作成するとは限らないため、アプリケーションのメーカはスキャナドライバ１４を意識してアプリケーションを作成する必要が生じる。この場合、アプリケーションは各種存在するスキャナ１００によって仕様が変更される必要が生じてしまうため、不便なものとなる。そこで、ＴＷＡＩＮでは、アプリケーション側とスキャナドライバ１４側にそれぞれＡＰＩ１３が策定されており、任意のアプリケーションとスキャナドライバ（スキャナ）の組み合わせでスキャナ１００を制御することを実現している。
【００３４】
接続ツール、ＵＩ画面１５、及び、スキャナドライバはスキャナメーカ側が作成して提供する。これに対し、任意の画像処理アプリはＴＷＡＩＮに対応していればスキャナを使用できる。また、画像処理アプリがＵＩ画面１５を介してスキャナを使用できるようになっている。以下では、ＵＩ画面１５が単体で起動するか、画像処理アプリ１２から起動されるかを問わずに説明する。
【００３５】
ＵＩ画面１５を起動させるとスキャナドライバ１４も起動し、接続ツール１１を起動させるとスキャナドライバ１４も起動する。
【００３６】
なお、ＡＰＩ１３はＴＷＡＩＮの他に、ＷＩＡ（Windows Image Acquisition）などでもよく、スキャナやデジタルカメラなどの画像作成装置のデバイスドライバとアプリケーションのＡＰＩであればよい。
【００３７】
接続ツール１１は、ＵＩ（User Interface）を提供すると共にユーザからの操作を受け付け、ＯＳ２１やＡＰＩ１３に処理を要求する。例えば、ＯＳ２１を介してネットワーク３００に接続された機器を検索したり、ＡＰＩ１３を介して接続限定したりする。また、接続ツール１１は接続限定したスキャナ１００のスキャナ情報（ＩＰアドレス、ホスト名、認証情報）をレジストリに記憶させる（登録する）。
【００３８】
接続ツール１１は、検索部３１（特許請求の範囲の通信情報取得手段の一例である）、認証情報受付部３２（特許請求の範囲の認証情報受け付け手段の一例である）及び表示部３３を有する。検索部３１は、ネットワークに接続されているスキャナを検索しホスト名とＩＰアドレスの少なくとも一方を取得する。認証情報受付部３２は、後述するＵＩ画面からユーザが入力した認証情報（ユーザ名、パスワード）を受け付ける。表示部３３は、スキャナの状態を表示する。
【００３９】
認証ライブラリについては後述するが、認証ライブラリは、認証情報構造体ポインタを有しており、スキャナドライバがスキャナと通信して取得した各認証情報の保存場所を管理している。
【００４０】
〔スキャナドライバの機能〕
図６（ａ）は、スキャナドライバのうち状態確認に使用される機能のクラス図を説明する図の一例である。状態確認の機能は、「複数スキャナ制御クラス」４１、「スキャナ１台制御クラス」４２、「認証情報制御クラス」４３、及び、「ネットワーク通信クラス」４４の４クラスによって提供される。
【００４１】
「複数スキャナ制御クラス」は「スキャナ１台制御クラス」と集約の関係にあり、「スキャナ１台制御クラス」は「認証情報制御クラス」と集約の関係にあり、「認証情報制御クラス」は「ネットワーク通信クラス」と集約の関係にある。なお、集約とは、オブジェクト指向プログラミングにおける用語で、あるクラスオブジェクトがもう一方のクラスオブジェクトと「全体と一部の関係にある（has-aの関係）」ことを示す。一般にクラスＢの集約であるクラスＡは、クラスＢのメソッドを呼び出すこと、すなわちクラスＢの機能を使用することができる。
【００４２】
したがって、「複数スキャナ制御クラス」は「スキャナ１台制御クラス」の機能を使用し、「スキャナ１台制御クラス」は「認証情報制御クラス」の機能を使用し、「認証情報制御クラス」は「ネットワーク通信クラス」の機能を使用することができる。このような、関係は、単に一方が他方の機能を有すると表現できる。
「複数スキャナ制御クラス」から生成される「複数スキャナ制御インスタンス」は１つであり、「スキャナ１台制御クラス」から生成される「スキャナ１台制御インスタンス」は0以上である。具体的には、ネットワーク上で検索にヒットしたＩＰアドレス又はホスト名が既知のスキャナの台数だけ生成される。ＩＰアドレス又はホスト名が既知のスキャナを、以下、単に「スキャナの数だけ」と称する。同様に、「認証情報制御クラス」から生成される「認証情報制御インスタンス」はスキャナの数だけ生成される。「ネットワーク通信クラス」から生成される「ネットワーク通信インスタンス」は１つである。
【００４３】
「スキャナ１台制御クラス」はメンバとして、"スキャナの名称"、"IPアドレス"、"ホスト名"、及び、"スキャナの状態"を有する。"スキャナの状態"は、「電源が入っていない」、「認証情報が異なる」、「使用できない」などのスキャナの状態を表す情報である。したがって、「スキャナ１台制御インスタンス」は、これらのメンバの具体的な値を保持する。
【００４４】
「認証情報制御クラス」はメンバとして、"認証強度"、"ユーザー名"、"パスワード"などの認証情報を有する。したがって、「認証情報制御インスタンス」は、これらのメンバの具体的な値を保持する。認証強度とは、認証アルゴリズムや暗号鍵のビット長である。
【００４５】
「複数スキャナ制御インスタンス」はスキャナドライバの起動により生成されるインスタンスであり、定常的に存在している。また、「複数スキャナ制御インスタンス」はＡＰＩ（つまりアプリケーション側）とのインタフェースとなるインスタンスである。
【００４６】
「複数スキャナ制御インスタンス」は「ネットワーク通信インスタンス」を１つだけ生成する。また、「複数スキャナ制御インスタンス」は「スキャナ1台制御インスタンス」をスキャナの数だけ作成する。各「スキャナ1台制御インスタンス」はそれぞれが１つの「認証情報制御インスタンス」を作成する。したがって、「認証情報制御インスタンス」の数もスキャナの数と同じである。
【００４７】
図６（ｂ）はクラスから生成されたインスタンス間の関係を模式的に説明する図の一例である。図６（ｂ）はスキャナの数が４つである場合を想定している。
【００４８】
「複数スキャナ制御インスタンス」４１Ｉは、各「スキャナ１台制御インスタンス」４２Ｉを用いてスキャナ情報／状態取得処理を実行する。各「スキャナ１台制御インスタンス」は、「認証情報制御インスタンス」４３Ｉを用いて認証処理＋情報／状態取得を行う。「認証情報制御インスタンス」は１つしかない「ネットワーク通信インスタンス」４４Ｉを用いてスキャナと通信すると共に、認証処理を行いスキャナの状態を取得する。各「スキャナ１台制御インスタンス」は「認証情報制御インスタンス」が取得したスキャナの状態によりメンバを更新する。
【００４９】
なお、スキャナの数だけ作成される「スキャナ１台制御インスタンス」と「認証情報制御インスタンス」の数は、ＲＡＭなどのメモリを占有する実体なので、現実的にはメモリ容量の制約を受けるが、本実施形態の端末はスキャナの数のインスタンスを作成可能な充分なメモリ容量を有している。
【００５０】
「スキャナ１台制御インスタンス」と「認証情報制御インスタンス」はマルチスレッドとして実行される。マルチタスクをサポートするＯＳ２１は、異なるアプリケーションを１つのタスクとして、所定時間毎にアプリケーションを切り替えることで、複数のアプリケーションを同時並行的に実行しているように見せる。マルチスレッドは、ある１つのアプリケーションがマルチタスクを実現する手法である。すなわち、所定数の「スキャナ１台制御インスタンス」と「認証情報制御インスタンス」は同時並行的に実行される。このコードの記述例については後述する。
【００５１】
「スキャナ１台制御インスタンス」１つに対して「認証情報制御インスタンス」が保持されるので、スキャナそれぞれで認証情報が異なる場合においても、容易にそれぞれの認証情報を管理することが可能である。
【００５２】
また、「ネットワーク通信インスタンス」は、マルチスレッドに対応したＡＰＩ１３を使用するため、認証処理をマルチスレッド化することができる。認証情報などは機器により異なるため、スキャナ台数分のインスタンスを生成する必要があるが、ネットワーク通信に関しては、スキャナの種類によらず共通であるため、唯一のオブジェクトを生成するように実装している。「認証情報制御インスタンス」は「ネットワーク通信インスタンス」から、スキャナへネットワーク経由での通信を行い、情報や状態を取得する。
【００５３】
〔認証処理ライブラリ〕
図７は、スキャナドライバと認証ライブラリ１６の構造について説明する図の一例である。認証ライブラリ１６は認証処理に使用される各認証ＡＰＩ２５及び認証情報構造体ポインタ２６を有している。認証情報構造体ポインタ（認証情報を保持する構造体のポインタ）はグローバル変数であるため、各インスタンスがアクセス可能である。しかし、マルチスレッド環境下では、構造体のメンバの変更などが排他制御なしに実施されてしまい、アクセスバイオレーションなどが発生するおそれがある。
【００５４】
そこで、本実施形態では、認証ライブラリ１６で保持している認証情報構造体ポインタ２６と同様の情報を、各認証情報制御インスタンスが保持することとした。認証情報制御インスタンスは、生成されるとスレッドとして実行される前に認証ライブラリ１６からポインタ（特許請求の範囲の記憶領域指示情報の一例である）を取得して保持しておく。
【００５５】
そして、本実施形態のネットワーク通信インスタンスは、認証ライブラリ１６の各認証ＡＰＩ２５を介して認証情報構造体ポインタ２６へアクセスすることが禁止されている。
【００５６】
また、認証情報制御インスタンスは、ネットワーク通信インスタンスを使用して認証処理を行う場合、認証ライブラリ１６の各認証ＡＰＩ２５を実行せずに、認証情報制御インスタンス自身の認証情報ポインタを操作する。このように、認証ライブラリ１６及び認証情報制御インスタンスの動作を従来に対し変更することで、認証処理の排他制御を可能とした。また、アクセスバイオレーションが発生することなく、安定した環境でマルチスレッドの認証処理ができるようになる。
【００５７】
なお、認証情報制御インスタンスは、各スキャナの認証情報を保持、制御するという役割のほかに、認証処理ライブラリの初期化（開始）と終了化を行うという役割を持つ。各スキャナの認証情報制御インスタンスの実行数はスキャナ台数に比例するが、初期化と終了化の実行数は、スキャナ台数に関わらず１度ずつである必要がある。
【００５８】
このため、初期化、終了化処理をstatic関数として使用することで、認証情報制御インスタンスを生成せずとも初期化、終了化を実施できるようにした。このようなクラス構成の工夫により、初期化、終了化を行う特別な認証情報制御インスタンスを生成する必要がなくなり、各インスタンスの管理が非常に容易となった。
【００５９】
〔記述例〕
図８（ａ）は、ネットワーク通信クラスの記述例を示す図である。ネットワーク通信クラスのアクセス指定子をPrivateに設定することで、このクラスのインスタンスをスキャナドライバが作成することができない。したがって、ネットワーク通信インスタンスを１つだけに制限できる。１つだけのネットワーク通信インスタンスは、アクセス指定子がpublicの中に設定される。これにより、「認証情報制御インスタンス」は１つだけのネットワーク通信インスタンスにアクセスできる。
【００６０】
図８（ｂ）は、「スキャナ1台制御クラス」「認証情報制御クラス」、インスタンスの生成、スレッドの記述例を示す図である。「スキャナ1台制御クラス」にはメンバ（スキャナの名称、 IPアドレス、ホスト名、スキャナの状態）が定義され、「認証情報制御クラス」にはメンバ（認証強度、ユーザ名、パスワード）が定義される。
【００６１】
メイン関数内では、「スキャナ1台制御インスタンス」の生成が２５６回繰り返され、各「スキャナ1台制御インスタンス」を生成する。また、各インスタンスは６４個が同時に実行されるスレッドとして記述される。
【００６２】
なお、図８はＣ++というプログラム言語で記述されているが、本実施形態で説明した構造を備えるオブジェクト指向言語であれば、どのような言語で記述されていてもよい。
【００６３】
〔画面例〕
図９は、端末のディスプレイに表示されたＵＩの一例を示す図である。本実施形態のスキャナドライバは機種が異なる複数のスキャナに共通である。
【００６４】
図９（ａ）は、接続ツールの画面例を示す図の一例である。接続ツールは、画像処理アプリから起動させることもできるし、単体で起動させることもできる。
【００６５】
接続ツールは、主要な機能として、ドライバー選択欄５０１、スキャナ検索ボタン５０２、直接入力欄５０５、及び、認証情報欄５０３を有している。ドライバー選択欄５０１は、端末２００にインストールされているスキャナドライバを選択するボタンである。
【００６６】
スキャナ検索ボタン５０２は、ネットワークのスキャナを選択するためのボタンである。スキャナ検索により図９（ｂ）の検索結果画面が表示される。
【００６７】
なお、ユーザーは、直接入力欄５０５にＩＰアドレス又はホスト名を直接、入力することもできる。これにより、ＩＰアドレス又はホスト名が分かっている場合は、検索が不要になり、また、セグメントが異なるスキャナ１００を接続限定することが可能となる。
【００６８】
認証情報欄５０３は、スキャナ１００がユーザーを認証する場合に、認証情報（パスワード、ユーザー名）を設定するための欄である。認証情報は、例えば、アカウント名、パスワード、及び、認証アルゴリズムである。
【００６９】
スキャナ検索ボタン５０２が押下されると、検索部３１がスキャナを検索する。スキャナの検索方法は公知であるが、例えば以下のような手順で表示する。同じセグメント内の機器はネットワークアドレスが同じなので、各機器が取り得るＩＰアドレスの範囲を特定できる。例えば、ネットワークアドレスが「192.168.1.0/24」の場合、「192.168.1.0」〜「192.168.1.255」の如くである。したがって、検索部３１は、「192.168.1.255」を宛先とするブロードキャストでｐｉｎｇコマンドを送信し、応答があるか否かによりＩＰアドレスと存在する機器を検索できる。
【００７０】
なお、本実施形態では、端末２００と同じセグメントのスキャナ１００を検索することとするが、別のセグメントのネットワークアドレスが既知であれば、別のセグメントのスキャナ１００を検索することができる。
【００７１】
ｐｉｎｇコマンドに応答した機器のＩＰアドレスはＡＲＰテーブルに登録されるので、ＡＲＰテーブルに同じネットワークアドレスに存在する全ての機器のＩＰアドレスが登録されている。なお、スキャナ１００のホスト名は、ｐｉｎｇコマンドで問い合わせることもできるし、ＤＮＳサーバに問い合わせることもできる。
【００７２】
存在する機器のＩＰアドレスが判明すれば、検索部３１は、ＳＮＭＰによりスキャナドライバ１４が対応するスキャナ１００を特定することができる。ＳＮＭＰではＭＩＢというオブジェクトツリーの情報を提供している。ＭＩＢには機器の名称、ホスト名などの他、スキャナメーカが独自に定義した情報が格納されている。なお、本実施形態ではＭＩＢにスキャナ１００の認証情報が格納されているものとする。
【００７３】
したがって、検索部３１は応答した機器の名称を問い合わせ、スキャナドライバ１４が対応したスキャナ名の場合に検索にヒットしたと判定する。
【００７４】
また、スキャナドライバは、検索に伴い、検索にヒットした複数の機器と一度に接続テストすることができる。または、接続テストボタンを接続ツールに設けてもよい。
【００７５】
図９（ｂ）は、検索結果画面の一例を示す図である。検索結果画面は、スキャナ名欄５１１、ＩＰアドレス・ホスト名欄５１２、状態表示欄５１６、選択ボックス５１３、及び、再検索ボタン５１４を有している。スキャナ名欄５１１には、検索部が検索したスキャナのスキャナ名が表示される。ＩＰアドレス・ホスト名欄５１２には表示中のスキャナのIPアドレス又はホスト名が表示される。状態表示欄５１６は、検索したスキャナの状態を表示する欄である。状態には、使用可、使用中、認証不可、電源オフなどがある。この状態は、スキャナ１台制御インスタンスが取得したものである。選択ボックスは、ユーザーが接続限定するスキャナを選択するためのボタンである。再検索ボタン５１４は、再検索するためのボタンである。
【００７６】
検索結果画面には、このように検索されたネットワークに存在する全ての（又は１台以上の）スキャナが、スキャナ名等と共に表示され、ユーザーは１度に複数のスキャナと接続限定することができる。
【００７７】
〔動作手順〕
図１０は、本実施形態のスキャナドライバの動作手順を示すシーケンス図の一例を示す。大きな流れは以下のようになる。
Ｉ．ネットワーク通信インスタンスの生成  
II．スキャナ台数Ｎ個分のスキャナ１台制御インスタンス及び認証情報制御インスタンスの生成
III．マルチスレッドによる所定数のスキャナのスキャナ情報／状態取得
以下では、Ｎ＝256台のスキャナ、最大のマルチスレッド数が６４の環境であるとして説明する。最大のマルチスレッド数とは、ＯＳ２１が推奨する値で必ずしも６４より多いマルチスレッドの同時実行が困難であるわけではない。ＯＳ２１の種類・バージョン、ＣＰＵの能力、及び、メモリ量などにより変わりうるものである。
【００７８】
I．ネットワーク通信インスタンスの生成
S1：認証情報受付部３２が認証情報の入力を受け付ける。
S2：検索部３１がネットワークのスキャナを検索する。
S3：接続ツール１１はユーザの操作を受け付けて、ＡＰＩ１３に対し接続テストを要求する。この時、接続ツールはＩＰアドレス（及びホスト名）・認証情報・スキャナ情報／状態を取得するスキャナの台数Ｎ（２５６）をＡＰＩに送出する。
S4：ＡＰＩ１３は複数スキャナ制御インスタンスにネットワーク通信インスタンスの生成を要求する。
S5：複数スキャナ制御インスタンスは、１つのネットワーク通信インスタンスを生成する。図９に示したように、複数のネットワーク通信インスタンスが生成されることはない。
【００７９】
II．スキャナ台数Ｎ個分のスキャナ１台制御インスタンス及び認証情報制御インスタンスの生成
S6：ＡＰＩ１３は、「複数スキャナ制御インスタンス」にスキャナ台数Ｎ個分の「スキャナ１台制御インスタンス」の生成を要求する。
S7：「複数スキャナ制御インスタンス」はN個の「スキャナ１台制御インスタンス」を生成する。
S8：生成された「スキャナ１台制御インスタンス」は、「認証情報制御インスタンス」を生成する。
S9：生成された「認証情報制御インスタンス」は、「ネットワーク通信インスタンス」のメンバに自分を登録する。これにより、ネットワーク通信インスタンスは認証情報制御インスタンスを認識する。ＡＰＩは生成されたスキャナ１台制御インスタンス、認証情報制御インスタンスを把握する。
S10：インスタンスの生成が完了したら、ＡＰＩ１３は全ての「スキャナ1台制御インスタンス」に、認証情報、スキャナの名称、及び、ＩＰアドレス又はホスト名の少なくとも一方を設定する。
S11：ＡＰＩ１３は「複数スキャナ制御インスタンス」のメンバに、動的に２５６個の「スキャナ１台制御インスタンス」を登録する。
【００８０】
III．マルチスレッドによる所定数のスキャナのスキャナ情報／状態取得
S12：ＡＰＩ１３は「複数スキャナ制御インスタンス」に複数のスキャナのスキャナ情報／状態の取得を要求する。
S13：「複数スキャナ制御インスタンス」は、「スキャナ１台制御インスタンス」にスキャナのスキャナ情報／状態の取得を要求する。
S14：「スキャナ１台制御インスタンス」は認証情報を、「認証情報制御インスタンス」に設定する。
S15：「スキャナ１台制御インスタンス」は、スキャナ状態／状態取得を行う。
S16：「スキャナ１台制御インスタンス」は「認証情報制御インスタンス」に対し、認証処理とスキャナ情報／状態取得を要求する。
S17：「認証情報制御インスタンス」は「ネットワーク通信インスタンス」に対しスキャナと通信させ、認証処理、スキャナ情報／状態取得を行う。すなわち、認証情報をスキャナに送信し、スキャナから認証結果を取得する。「スキャナ１台制御インスタンス」にＩＰアドレスが設定されているので、「ネットワーク通信インスタンス」はスキャナと通信でき、スキャナから認証結果（認証情報が一致したか否か）及びスキャナ情報（スキャナの名称、スキャナの状態）を取得できる。
【００８１】
認証が成立した場合（かつ電源がＯＮである）、スキャナの状態、又は、再度、「ネットワーク通信インスタンス」を通して機器から取得したスキャナの状態を「スキャナ１台制御インスタンス」に送出する。スキャナの状態の取得に成功すれば、"使用可能である"という状態を取得したことになる。また、認証が成立しなかった場合には、スキャナの状態の取得に失敗し、"認証情報が異なる"という状態を取得することになる。取得した情報は最終的に接続ツールまで送出される。
S18：接続ツールの表示部３３は、図９（ｂ）に示したようにスキャナの状態を表示する。
【００８２】
スキャナドライバはIIIの手順を、マルチスレッドにより同時並行に実行する。まず、スキャナ群を所定数（同時最大実行スレッド数）で構成されるブロックに分割する。所定数が６４，スキャナの台数が256なので、２５６／６４＝4ブロックに分割される。このブロック数がシーケンス図の外側のループ回数に相当する。１ブロック目、２ブロック目、３ブロック目、４ブロック目と、それぞれ６４台同時にマルチスレッドによりスキャナ情報／状態取得の処理を実行する。
【００８３】
したがって、所定数（同時最大実行スレッド数）でスキャナ群をブロックに分割することにより、スキャナの台数がどれだけ増加しても端末の実行スレッド数を圧迫することがない。
【００８４】
〔効果〕
図１１は、本実施形態のスキャナドライバの効果を説明するための図の一例である。これまでの説明と同様に、Ｎ＝256台のスキャナの状態取得を行うとし、同時最大実行スレッドを64とする。
【００８５】
スキャナ情報／状態の取得にはタイムアウトの設定が必要か、少なくとも予め初期値が設定されている必要がある。これは、電源が入っていないスキャナはスキャナ情報の要求に対し応答しないため、スキャナドライバは長時間、応答を待つ必要があるためである。
【００８６】
よって、タイムアウト時間が経過した場合、そのスキャナの電源が入っていないと判断することが一般的である。一例として、タイムアウト時間を３秒とする。
【００８７】
同時最大実行スレッド数で256台のスキャナをブロックに分割すると、4ブロックに分割することができる。マルチスレッドで64台同時に取得するため、１ブロックのスキャナ群のスキャナ情報／状態の取得に必要な時間は、スキャナ1台分に必要な時間とほぼ等しい。したがって、本実施形態による２５６台のスキャナ情報／状態の取得にかかる時間は、従来技術における4台のスキャナ情報／状態にかかる時間とほぼ等しくなる。
【００８８】
最も時間がかかるパターンとして、２５６台のスキャナ全てが電源ＯＦＦの状態であるとする。
本実施形態の場合に必要な時間は、
（タイムアウト時間 = 3秒）  ×  （4ブロック）  =  12秒
である。
従来技術では、
（タイムアウト時間  = 3秒）  ×  （256台）  =  768秒
である。このように、大幅にスキャナ情報／状態の取得に必要な時間を短縮することができる。
【００８９】
また、ネットワークに接続されているスキャナの台数を増加させても、端末が実行する他のスレッドを圧迫することはない。例えば、1000台にスキャナを増やした場合、ブロック数が4から１５に増えるだけで、同時最大実行スレッド数は64のままで変化しない。
このため、スキャナの台数を増やすことによる端末への負荷は増大しても他のアプリケーションの動作に影響するなどということがない。
【００９０】
以上説明したように、本実施形態のスキャナドライバは、並行して複数のスキャナの接続テストを行うことができるため、従来のようにユーザが１台ずつ接続テストするよりも接続テストに必要な時間を短縮できる。各認証情報制御インスタンスが認証情報にアクセスするので、認証情報構造体ポインタ２６にアクセスが集中する不都合を抑制し、認証情報を個別に読み出したり書き出したりできる。
【符号の説明】
【００９１】
１１      接続ツール
１３      ＡＰＩ
１４      スキャナドライバ
１６      認証ライブラリ
２５      各認証ＡＰＩ
２６      認証情報構造体ポインタ
４１      複数スキャナ制御クラス
４２      スキャナ１台制御クラス
４３      認証情報制御クラス
４４      ネットワーク通信クラス
１００    スキャナ
２００    端末
【先行技術文献】
【特許文献】
【００９２】
【特許文献１】特許4612112号公報
【図１】
2014179908.tif 000003
【図２】
2014179908.tif 000004
【図３】
2014179908.tif 000005
【図４】
2014179908.tif 000006
【図５】
2014179908.tif 000007
【図６】
2014179908.tif 000008
【図７】
2014179908.tif 000009
【図８】
2014179908.tif 000010
【図９】
2014179908.tif 000011
【図１０】
2014179908.tif 000012
【図１１】
2014179908.tif 000013