(57)【要約】【課題】  クライアントコンピュータからサーバへ画像がアップロードされる際に、サーバ上の記憶領域の残り容量を超えないように、複数の画像の中から最適な画像を選択してアップロードすることを目的とする。【解決手段】  クライアントコンピュータのプログラムによって、アップロード対象の画像が登録された時点で、それらの画像ファイルの合計サイズがサーバ上の記憶領域の残り容量を超えるかどうかを検知し、超える場合には、それらの画像の類似度に基づき、残り容量を超えないような数だけ画像を自動的に選択してアップロードする。【選択図】  図１６
2006302093.tif 000002
【特許請求の範囲】
【請求項１】
所定容量のデータ記憶領域を提供するサーバにネットワークを介して接続され，前記データ記憶領域にファイル転送が可能なクライアントコンピュータであって，
入力デバイスと，
表示デバイスと，
前記サーバから前記データ記憶領域の空き容量の情報を取得する取得手段と，
前記取得手段による取得処理の実行後に，前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを前記表示デバイスに表示させる表示制御手段と，
表示した前記GUIに対する前記入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録手段と，
前記登録手段によって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択手段と，
前記選択手段によって現在選択されているファイルの合計ファイル容量を計算する計算手段と，
を有し，
前記登録手段により登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は，前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にする手段を有することを特徴とするクライアントコンピュータ。
【請求項２】
前記GUIは，前記選択手段により選択されたファイルの転送指示を送出するための指示ボタンをさらに含むことを特徴とする請求項１に記載のクライアントコンピュータ。
【請求項３】
所定容量のデータ記憶領域を提供するサーバにネットワークを介して接続され，前記データ記憶領域にファイル転送が可能なクライアントコンピュータの制御方法であって，
前記サーバから前記データ記憶領域の空き容量の情報を取得する取得ステップと，
前記取得ステップの実行後に，前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示デバイスに表示させる表示制御ステップと，
表示した前記GUIに対する入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録ステップと，
前記登録ステップによって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択ステップと，
前記選択ステップによって現在選択されているファイルの合計ファイル容量を計算する計算ステップと，
を有し，
前記登録ステップにより登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は，前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にするステップを有することを特徴とするクライアントコンピュータの制御方法。
【請求項４】
所定容量のデータ記憶領域を提供するサーバにネットワークを介して接続され，前記データ記憶領域にファイル転送が可能なクライアントコンピュータを制御する制御プログラムであって，
前記サーバから前記データ記憶領域の空き容量の情報を取得する取得ステップと，
前記取得ステップの実行後に，前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示デバイスに表示させる表示制御ステップと，
表示した前記GUIに対する入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録ステップと，
前記登録ステップによって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択ステップと，
前記選択ステップによって現在選択されているファイルの合計ファイル容量を計算する計算ステップと，
を有し，
前記登録ステップにより登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は，前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にするステップを有することを特徴とする制御プログラム。
【請求項５】
請求項４に記載のプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【請求項６】
所定容量の情報記憶領域を提供するサーバと，ネットワークを介してそのサーバにファイル転送が可能なクライアントとを含むネットワークシステムであって，
前記サーバは，
前記クライアントからの指示に応答して前記データ記憶領域の空き容量を検査しその結果を前記クライアントに返す空き容量検査手段を有し，
前記クライアントは，
入力デバイスと，
表示デバイスと，
前記サーバに指示を発行することで前記空き容量検査手段による空き容量の情報を取得する取得手段と，
前記取得手段による取得処理の実行後に，前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示デバイスに表示させる表示制御手段と，
表示した前記GUIに対する前記入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録手段と，
前記登録手段によって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択手段と，
前記手段によって現在選択されているファイルの合計ファイル容量を計算する計算手段と，
を有し，
前記登録手段により登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は，前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にする手段を有する
ことを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータネットワーク環境におけるファイル転送方法，特にユーザに所定の記憶容量を割り当てて情報記憶領域を提供するサーバ装置に対してファイルを転送する際に，残り記憶容量に応じて転送候補のファイルを自動的に絞り込む方法に関する。
【背景技術】
【０００２】
近年，通信環境の整備及び情報通信技術の発展により，コンピュータネットワーク，例えばインターネットを利用して，情報・サービスの提供を行なうサービスサイトが実現されている。特に，通信速度の向上や常時接続環境の普及，記憶装置の低価格化などを背景として，ネットワーク上にユーザ専用の情報記憶領域を提供するサービスサイト（ストレージサイト）が増加してきている。例えば，ユーザの画像をネットワーク上で保管し，編集，印刷，閲覧等のサービスを提供するフォトシェアリングサイトもその一つである。
【０００３】
従来，このようなフォトシェアリングサイトをユーザが利用する場合，まず，ユーザが有するコンピュータ機器（ユーザＰＣ），デジタル撮像機器（デジタルビデオカメラ，デジタルスチルカメラ等）もしくはデジタル撮像機器を有する電子機器などに保管されている画像を，フォトシェアリングサイトを実現するサーバ装置に転送（アップロード）する。かかる後に，これらアップロードした画像の閲覧や，画像処理などのサービスが利用可能になる。
【０００４】
ユーザのアップロード操作は，まずアップロードする画像を選択し，しかる後にアップロードを指示するという二段階を踏む場合が多い。
【０００５】
アップロードする画像の選択操作においては，各機器で直接選択したり，あるいはコンピュータ機器にいったん転送してからコンピュータ機器上のソフトウェアで選択したりする。
【０００６】
アップロード操作においては，各機器から直接，又はインターネットに接続可能なコンピュータ機器等を介し，HTTP（Hypertext Transfer Protocol；RFC1945およびRFC2068），FTP（File Transfer Protocol；RFC959）等のプロトコルを用いて，サーバのあらかじめユーザに割り当てられた記憶領域にそれらの画像をアップロードする。
【０００７】
従来のフォトシェアリングサイトでは，１ユーザに与えられる記憶領域の容量に対して上限が設定されている場合が多い。このようなサイトで，１ユーザの使用している記憶領域の容量が上限に達したか否かを判定する際には，ユーザからのアップロード処理後に，サーバ上でこのユーザの画像全体の容量を計算し，その値が上限を超えていた場合，ユーザにその旨を伝え，直前に行なわれた画像アップロード処理を無効にしていた。
【０００８】
しかしながらこの方法では，ユーザが実際に画像をすべてアップロードしてみなければ，それら画像をアップロードすることによって記憶領域の上限を超えるか否かを知ることができないという問題があった。
【０００９】
これに対応するために，ZoomBrowser EXソフトウェア（非特許文献１）においては，画像のアップロードを行なう直前の画面に「アップロード先の容量を確認する」ボタンを設けることで，ユーザがそのボタンを操作すればサーバ上での記憶領域の残り容量を取得して表示するようになっていた。
【００１０】
しかしながらこの方法では，ユーザはアップロード処理を開始する直前にならなければサーバの記憶領域の残り容量を知ることができない，つまりアップロードする画像を選択している時点では残り容量を知ることができないという問題がある。
【００１１】
また，特開２００３−１０８４０８号公報（特許文献１）では，アップロード済みのファイル数と使用済みの記憶容量とから，平均ファイルサイズを算出し，未使用の記憶容量と平均ファイルサイズから転送可能な残りファイル数を推定し，ユーザからのアップロード処理の要求があった場合，実際のアップロード処理を開始する前に推定した転送可能なファイル数を通知するという方法が提示されている。
【００１２】
同じように，特開２００３−１０８４０９号公報（特許文献２）では，ユーザの使用する画像入力機器に対応する平均ファイルサイズを用い，未使用の記憶容量と平均ファイルサイズから転送可能な残りファイル数を推定し，ユーザからのアップロード処理の要求があった場合，実際のデータ転送処理を開始する前に推定した転送可能なファイル数を通知するという方法が提示されている。
【００１３】
しかしながら特開２００３−１０８４０８号公報（特許文献１）や特開２００３−１０８４０９号公報（特許文献２）の方法においても，アップロードする画像を選択している時点では残り容量を知ることができないという問題がある。また，推計はあくまでも推計であって，ユーザが選択した画像がすべてアップロード可能であることを保証するものではない。
【００１４】
さらに，以上のような方法で残り容量を知ったとしても，その残り容量を超えないようにするためには，ユーザは登録したい個々の画像ファイルのファイルサイズと残り容量とを比較しながら，登録する画像を減らしたり，別の画像に差し替えたりといった操作を手動で行なう必要があり，相当の手間と時間とを要するという問題があった。
【非特許文献１】キヤノン株式会社「ZoomBrowser EX ソフトウェアユーザガイド Version 4.5 （CDP-J025-010） p.105」（http://web.canon.jp/Imaging/information-j.htmlからダウンロード可能）
【特許文献１】特開２００３−１０８４０８号公報
【特許文献２】特開２００３−１０８４０９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は以上の事情に鑑みてなされたものであり，ユーザがクライアント側のプログラムでアップロード対象の画像を登録した時点で，それらの画像ファイルの合計サイズがサーバ上の記憶領域の残り容量を超える場合は，それらの画像の類似度を利用して，残り容量を超えないようにアップロード対象の画像の数を自動調整できるようにすることを課題とする。
【課題を解決するための手段】
【００１６】
本発明の一側面に係るクライアントはあらかじめ，サーバからデータ記憶領域の空き容量の情報を取得する。クライアントはその取得後に，データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示し，表示したGUIに対する入力デバイスによる指示に基づいてデータ記憶領域に転送するファイルを登録し，それらをすべて転送対象として選択した場合の合計ファイル容量を計算し，計算された合計ファイル容量がデータ記憶領域の空き容量を超える場合は，登録されたファイルのうち類似すると判断されたものを自動的に非選択状態にする。
【発明の効果】
【００１７】
以上により，ユーザがクライアント側のプログラムでアップロード対象の画像を登録した時点で，それらの画像ファイルの合計サイズがサーバ上の記憶領域の残り容量を超える場合は，それらの画像の類似度を利用して，残り容量を超えないようにアップロード対象の画像の数を自動調整できるようになる。
【発明を実施するための最良の形態】
【００１８】
以下，本発明における一実施形態について図面を参照して詳細に説明する。
【００１９】
＜本実施例の概要＞
本実施例では，ユーザPC（クライアント）から，フォトシェアリングサービスを提供するサーバに対して，ユーザの操作により画像ファイルをアップロードする。サーバではユーザごとに「アルバム」という記憶領域を提供している。アルバムとして使用可能な記憶領域の容量はユーザごとにあらかじめ決められている。ユーザがクライアントから画像ファイルがアップロードすると，サーバはアップロードされた画像ファイルをアルバムに格納する。
【００２０】
＜単位系について＞
本実施例において，ファイルのサイズを表わす単位としてバイト（byte）を使用する。また，210（1,024）バイトを表わす単位の略記法としてKB（kilobyte）を使用する。また，220（1,048,576）バイトを表わす単位の略記法としてMB（megabyte）を使用する。
【００２１】
国際単位系（SI；International System of Units）では接頭辞としての小文字のk（kilo）は103を表わし，同じく接頭辞としての大文字のM（mega）は106を表わすことになっている。また，国際電気標準会議（IEC；International Electrotechnical Commission）の決定においては，国際単位系の接頭辞と混同されることのないように，210を表わす接頭辞としてKi（kibi）を使用し，220を表わす接頭辞としてMi（mebi）を使用することになっている。
【００２２】
以上の規格に従えば，210バイトはKiB（kibibyte），220バイトはMiB（mebibyte）と表記すべきところであるが，本実施例ではコンピュータ業界の慣用に従って，210バイトをKB，220バイトをMBと表記することにする。
【００２３】
＜全体構成＞
まず，図１を参照して本実施形態の全体構成を説明する。
【００２４】
101は画像ファイルのアップロード操作を行なうユーザPCであるクライアントであり，ネットワークインタフェースを経由してインターネット103に接続されている。102は記憶領域を提供し，画像ファイルのアップロードを受け付けるサーバであり，ネットワークインタフェースを経由してインターネット103に接続されている。クライアント101とサーバ102はそれぞれインターネット103を通じ，HTTPプロトコルを使用して相互に通信可能である。
【００２５】
＜コンピュータ装置の構成＞
次に，図２を参照して，本実施例で使用するコンピュータ装置の構成について説明する。
【００２６】
図２は，クライアント101およびサーバ102の構成の一例を示すブロック図である。201はRAM 202に格納されている制御プログラムに従って本装置全体の制御を行なうCPUである。202はCPU 201が実行する本装置の制御プログラムや，文書画像等のデータを格納するRAM等の内部記憶部である。203はCPU 201の制御の下にインターネット等のネットワークとの接続を行なってデータ等を送受信するネットワークインタフェースである。204はデータを保存する磁気ディスク等の外部記憶装置である。205はディスプレイ，206はキーボード，207はマウス等のポインティングデバイスである。RAM 202に格納されているプログラムは，同じくRAM 202に格納されているOS（Operating System）の機能を必要に応じて使用し，RAM 202に一時記憶するデータの内容を読み書きしたり，外部記憶装置 204上でデータを読み書きしたり，ネットワークインタフェースを通じてデータの送受信を行なったり，キーボード206やポインティングデバイス207からの入力を受け取ったり，ディスプレイ205に表示を行なったりすることで，所定の動作を行なう。
【００２７】
＜全体のブロック図＞
次に，図３を参照して，本実施例で使用するコンピュータ装置内のブロック構成について説明する。
【００２８】
図３は，物理的に図１のような構成を取るクライアント101，サーバ102，インターネット103において，本実施例の動作に主として関わる論理ブロック，すなわちプログラムモジュール，ファイルエンティティ，データベースエンティティ，および通信経路の構成を示すブロック図である。
【００２９】
301はクライアント101のブロック境界を表わし，ここではOSの制御下にある環境を指す。アップロードプログラム302は，通常は外部記憶装置204に保存されているが，ユーザ，OS，あるいは別のプログラムから実行が指示されると，OSの制御によりRAM 202に読み込まれ，実行可能な状態となる。303は外部記憶装置204に保存されている画像ファイルである。画像ファイル303は任意のプログラムから読み書き可能であるが，ここでは画像ファイル303とアップロードプログラム302との間の矢印およびその方向が示すように，アップロードプログラム302が画像ファイル303の内容を読み込む関係のみ存在する。アップロードプログラム302の動作は図６等を用いて後述する。
【００３０】
304はサーバ102のブロック境界を表わし，ここではOSの制御下にある環境を示す。アルバムクエリCGI 305とアップロードCGI 307はCGI（Common Gateway Interface）プログラムである。これらのCGIプログラムは，通常は外部記憶装置204に保存されているが，クライアント301からHTTPリクエストの形式で実行要求があると，OSおよびWebサーバプログラム（図示しない）の制御によりRAM 602に読み込まれ，実行可能な状態となる。CGIプログラムは実行に必要な引数をHTTPリクエストのリクエストパラメータを通じて受信し，実行結果はHTTPレスポンスを通じて送信するように動作する。306は外部記憶装置204上にデータベースプログラム（図示しない）が構成したデータベースである。CGIプログラム305あるいは307はデータベースプログラムやデータベースドライバ（図示しない）の機能を必要に応じて利用することで，データベース306の内容を読み書き可能である。ここではサーバブロック304内の矢印およびその方向が示すように，アルバムクエリCGI 305がデータベース306の内容を読み込み，アップロードCGI 307がデータベース306の内容に書き込む。アルバムクエリCGI 305とアップロードCGI 307の動作は図９，図２１等を用いて後述する。
【００３１】
308と309はクライアント実行環境301とサーバ実行環境304との間で使用されるHTTP通信経路を示す。各通信経路はクライアント301のアップロードプログラム302からサーバ304のCGIプログラム305，307の実行を要求するHTTPリクエストの形式でインターネット103上にコネクションが作成され，サーバ304のCGIプログラム305，307がクライアント301のアップロードプログラム302にHTTPレスポンスを返した時点でコネクションを継続する指示がない限り自動的に破棄される。
【００３２】
＜データベース構成とレコード＞
次に，図４〜図５を参照して，本実施例で使用するデータベースの構成およびレコードについて説明する。
【００３３】
図４は，ユーザ情報を格納するためにデータベース306内に構成されたデータベースの構成，および本実施例で使用するレコードを示す図である。
【００３４】
401はユーザ情報のデータベース構成であり，402〜406はユーザ情報401に含まれる列を示す。402はユーザを識別するために発行するユーザIDであり，PK（Primary Key）を指定しておくことで，ユーザ情報データベース401に含まれる全ての行（レコード）でユーザID 402が重複しないことがデータベースプログラムにより保証される。したがって，ユーザ情報401内のすべてのレコードはユーザID 402をキーとすることで一意に識別可能である。403は認証用のパスワード，404はユーザの氏名，405はユーザのメールアドレスである。406は使用可能な記憶領域としてユーザに割り当てられている容量，すなわちアルバムの最大容量である。単位は前述のようにバイトを使用する。
【００３５】
407は本実施例で使用するユーザ情報のレコードである。図示のように，408〜412にはデータベース構成の402〜406に対応するデータとして，それぞれ「ID1234」，「PAS5678」，「ＡＢＣ」，「xx@yy.jp」，「1,048,576」が格納されている。ここで，アルバム最大容量は1,048,576バイト，すなわち1MBである。
【００３６】
図５は，アルバム情報を格納するためにデータベース306内に構成されたデータベースの構成，および本実施例で使用するレコードを示す図である。
【００３７】
501はアルバム情報のデータベース構成であり，502〜506はアルバム情報501に含まれる列を示す。502はユーザIDであり，FK（Foreign Key）として402が指定しておくことで，アルバム情報データベース501にレコードを追加する場合，そのユーザID 502は，ユーザ情報データベース401にも同じユーザIDを持つレコードが存在していることがデータベースプログラムにより保証される。503は画像ファイルのファイル名，504は画像ファイルのサイズ（単位はバイト），505は画像ファイルのサムネイルデータ，506は画像ファイルのデータである。サムネイルデータ505と画像ファイルのデータ506はバイナリデータをそのままデータベースに格納するが，そのままでは図示できないため，本実施例で図示する場合には画像ファイルの内容を表示して代用する。
【００３８】
507〜509は本実施例で使用するアルバム情報のレコード，すなわち407に示すユーザのアルバム情報を保持するレコードである。レコード506にはデータベース構成の502〜506に対応するデータとして，それぞれ「ID1234」，「車.jpg」，「200,000」，（図示のサムネイルに相当するバイナリデータ），（図示の画像に相当するバイナリデータ）が格納されている。ここで，画像ファイルサイズは200,000バイト，すなわち約195KBである。508および509も507と同様である。
【００３９】
＜全体動作＞
次に，図６を参照して，本実施例の全体動作について説明する。
【００４０】
図６は本実施例の全体動作を示すためのUML（Unified Modeling Language）シーケンス図である。ここでは主に正常系の動作のみが示されており，異常系（エラー発生時や処理失敗時）の動作については示されていない場合がある。
【００４１】
601はクライアント101を操作するユーザである。
【００４２】
602はアップロードプログラム302のインスタンス，すなわちアップロードプログラム302がクライアント101のRAM 202に読み込まれて実行可能な状態となっている実体を表わす。
【００４３】
603はクライアント301とサーバ304とのネットワーク境界を表わす。これはUMLの表記ではなく，シーケンス図の左側（クライアント側）と右側（サーバ側）とが別の環境で実行されていることを示すための便宜的な表記である。
【００４４】
604はアルバムクエリCGI 305のインスタンス，すなわちアルバムクエリCGI 305がサーバ102のRAM 202に読み込まれて実行可能な状態となっている実体を表わす。605はアップロードCGI 307のインスタンスである。
【００４５】
まず，ユーザ601がクライアント101のキーボード206やポインティングデバイス207を使用して，アップロードプログラム302の実行をOSに指示する（シーケンス606）。OSはアップロードプログラム302を外部記憶装置204からRAM 202に読み込んで，アップロードプログラム302のインスタンス602を作成する。
【００４６】
アップロードプログラム602は実行が開始されると，まず認証情報入力画面をディスプレイ205に表示する（シーケンス607）。ユーザ601は表示された認証情報入力画面に対してクライアント101のキーボード206やポインティングデバイス207を使用して認証情報を入力する（シーケンス608）。認証情報入力画面の表示および入力の詳細については図７・図８を用いて後述する。
【００４７】
アップロードプログラム602はユーザ601の認証情報の入力が終わると，ネットワーク103を経由してサーバ102に対しHTTPリクエストの形式でアルバムクエリCGI 305の実行を依頼する（シーケンス609）。この際，ユーザ601が入力した認証情報を実行時引数として渡す。サーバ102のOSおよびWebサーバプログラムはアップロードプログラム602とのHTTPコネクション308を確立し，アルバムクエリCGI 305を外部記憶装置204からRAM 202に読み込んで，アルバムクエリCGIのインスタンス604を作成する。アルバムクエリCGI 604は引数で指定された認証情報をチェックした後，引数で指定されたユーザのユーザ情報およびアルバム情報をHTTPレスポンスの形式でアップロードプログラム602に返す。アルバムクエリCGI 604の動作の詳細については図９を用いて後述する。
【００４８】
アップロードプログラム602はアルバムクエリCGI 604の呼び出しが終わると，HTTPレスポンスで返された情報を利用してアップロード画面をディスプレイ205に表示する（シーケンス610）。ユーザ601は，表示されたアップロード画面に対して，クライアント101のキーボード206やポインティングデバイス207を使用して，アップロードする画像ファイルを追加したり，追加した画像ファイルをアップロードするかどうかを選択したりする（シーケンス611）。アップロードプログラム602はユーザ601が画像を追加したり選択したりするたびに，選択中の画像の合計サイズを計算し，シーケンス609で得られたアルバム情報のうち残り容量と比較して，容量オーバーなら類似画像の選択を自動解除し（シーケンス612），アップロード画面の表示を更新する（シーケンス613）。シーケンス611〜613はユーザ601が繰り返し実行可能である。アップロード画面の表示の詳細については図１０〜図２０を用いて後述する。
【００４９】
ユーザ601はアップロードする画像ファイルの準備が終了すると，すなわちシーケンス611〜613をこれ以上繰り返す必要がないと判断すると，クライアント101のキーボード206やポインティングデバイス207を使用し，アップロードプログラム602に画像ファイルのアップロードを指示する（シーケンス615）。アップロードプログラム602は，ネットワーク103を経由してサーバ102に対しHTTPリクエストの形式でアップロードCGI 307の実行を依頼する（シーケンス615）。この際，ユーザ601のユーザ情報に加えて，ユーザ601の登録・選択した画像ファイルについての情報も実行時引数として渡す。サーバ102のOSおよびWebサーバプログラムはアップロードプログラム602とのHTTPコネクション309を確立し，アップロードCGIを外部記憶装置204からRAM 202に読み込んで，アップロードCGIのインスタンス605を作成する。アップロードCGI 605は引数で指定された画像ファイルを引数で指定されたユーザのアルバムに登録し，処理結果をHTTPレスポンスの形式でアップロードプログラム602に返す。この動作（シーケンス615）はアップロードする画像ファイルの数だけ繰り返す。アップロードCGI 605の動作の詳細については図２１・図２２を用いて後述する。
【００５０】
以上が本実施例の全体動作である。以下，個々の動作を詳細に説明する。
【００５１】
＜認証情報入力画面＞
図７・図８を参照して，認証情報入力画面の表示および入力について説明する。
【００５２】
図７は，アップロードプログラム602がシーケンス607で表示する認証情報入力画面である。ユーザ601はクライアント101のキーボード206やポインティングデバイス207を使用して入力や操作が可能である。701はユーザIDの入力フィールド，702はパスワードの入力フィールドである。ユーザ601がOKボタン703を操作すると，アップロードプログラム602は入力終了と判断する。ユーザ601がキャンセルボタン704を操作すると，アップロードプログラム602はプログラムの実行がキャンセルされたと判断し，プログラムを終了する（キャンセルボタン704操作時の動作は図６に図示していない）。
【００５３】
図８は，ユーザ601がシーケンス608で認証情報入力画面に入力した状態を示す画面である。ここでは，ユーザ情報データベース401のレコード407に対応する認証情報を入力するものとする。ユーザID入力フィールド801にはユーザID 408に対応して「ID1234」が入力されている。パスワード入力フィールド802はセキュリティ上の観点から入力文字がエコーバックされず，すべての文字が「*」で表示されているが，ここではユーザIDと同じくパスワード409に対応して「PAS5678」が入力されているものとする。
【００５４】
＜アルバムクエリCGIの動作＞
図９を参照して，アルバムクエリCGIの動作について説明する。
【００５５】
図９は，アルバムクエリCGI 604の動作（シーケンス609）を示すフローチャートである。
【００５６】
ステップS901はプログラムの開始である。図７に示す認証情報入力画面でユーザ601が入力したユーザIDとパスワードが，HTTPリクエストのパラメータとしてアップロードプログラム602から渡されるので，それぞれ変数userIdとpasswordに代入する。ここでは，図８に示したようにユーザIDとして「ID1234」，パスワードとして「PAS5678」が渡されたものとする。
【００５７】
ステップS902で，userIdがユーザID 402と一致するレコードをユーザ情報データベース401から検索する。図4に示したようにユーザID 402はPKであることから，userIdとユーザID 402が一致するレコードは多くとも1件しか存在しない。
【００５８】
ステップS903ではステップS902でレコードが見つかったかどうかを判定する。レコードが見つからなければユーザIDが不正であるとしてステップS908に進んでプログラムを終了し，アップロードプログラム602に失敗を返す。レコードが見つかればステップS904に進む。ここではuserIdが「ID1234」であることから，図４の407に示したレコードが見つかるので，ステップS904に進む。
【００５９】
ステップS904では，ステップS902で見つかったレコードのパスワード403と，引数で渡されたpasswordとが一致するかどうかを判定する。パスワードが一致しなければパスワードが不正であるとしてS908に進んでプログラムを終了し，アップロードプログラム602に失敗を返す。パスワードが一致すればステップS905に進む。ここでは見つかったレコード407のパスワードが409に示すように「PAS5678」であり，passwordも同じく「PAS5678」であることから，ステップS905に進む。
【００６０】
ステップS905では，userIdユーザID 502と一致するレコードをアルバム情報データベース501からすべて検索し，見つかったレコードの画像ファイルサイズ504を累計する。ここではuserId＝「ID1234」であることから，図５の507〜509に示したレコードが3件見つかるので，画像ファイルサイズを累計した結果，200,000＋200,000＋200,000＝合計600,000バイトという結果を得る。
【００６１】
ステップS906では，ユーザ情報データベース401のアルバム最大容量406から，ステップS905で求めた画像ファイルの合計サイズを引いて，アルバムの利用可能サイズを計算する。ここでは，アルバム最大容量が412に示すように1,048,576バイトであり，画像ファイルの合計サイズが上記のように600,000バイトであることから，1,048,576−600,000＝448,576バイトという結果を得る。
【００６２】
ステップS907では，プログラムを終了し，アップロードプログラム602に成功を返す。この際，HTTPレスポンスの一部として戻り値を返す。ここでは，見つかったレコード407の氏名410である「ＡＢＣ」と，ステップS906で求めたアルバム利用可能サイズ「448,576」を返す。
【００６３】
＜アップロード画面（初期画面）＞
図１０〜図１１を参照して，アップロード画面の初期画面について説明する。
【００６４】
図１０はアルバムクエリCGI 604の呼び出し（シーケンス609）が失敗を返した時にアップロードプログラム602がディスプレイ205に表示する認証エラー画面である。図９に示したように，アップロードプログラム602が失敗を返すのは，引数のユーザIDまたはパスワードが不正な場合なので，図１０では「ユーザIDが見つからないか，またはパスワードが一致しません」というメッセージを表示している。「ユーザIDが見つからない」のか「パスワードが一致しない」のか，いずれの理由で失敗したのかを明示していないのはセキュリティ上の理由による。1001はOKボタンであり，ユーザ601がキーボード206またはポインティングデバイス207を使用して操作すると，アップロードプログラム602は認証エラー画面を消去し，シーケンス607の認証情報入力画面表示に戻る（認証エラー画面表示に関わる動作は図６に図示していない）。
【００６５】
図１１は，アップロードプログラム602がシーケンス610でディスプレイ205に表示するアップロード画面である。
【００６６】
1101は固定のメッセージ部分であるが，一行目の一部に，シーケンス609の戻り値として返された氏名「ＡＢＣ」を使用している。
【００６７】
1102はキャンバスであり，この矩形領域に画像ファイルを追加する。追加する方法はクライアント101の外部記憶装置204に存在する画像ファイル303をユーザ601がポインティングデバイス207を使用してドラッグし，キャンバス1102にドロップすることで行なう。
【００６８】
1103はアップロード対象の画像ファイルの合計サイズとファイル数を表示する領域である。ここではまだ画像ファイルが追加されていないので，0KB（0ファイル）と表示されている。
【００６９】
1104はシーケンス609の戻り値として返されたアルバム利用可能サイズを表示する領域である。ここでは「448,576バイト」＝「438.063キロバイト」＝「約438.1キロバイト」であることから，「438.1KB」と表示している。
【００７０】
1105はアップロードボタンである。ユーザがキーボード206またはポインティングデバイス207を使用してアップロードボタン1105を操作すると，キャンバス1102に追加した画像ファイルのアップロードをアップロードプログラム602に指示することになる。
【００７１】
＜アップロードプログラム内部データ構造＞
図１２を参照して，アップロードプログラムの内部データ構造について説明する。
【００７２】
図１２は，アップロード画面のキャンバス1102に画像ファイルが追加された時（シーケンス611）に，追加された画像ファイルを管理するために，アップロードプログラム602がRAM 202に割り当てて使用するデータ構造を表わす図である。
【００７３】
1201は一つの画像ファイルに対応するデータ構造を表わす。このデータ構造をセルと呼ぶ。1202は画像ファイルのファイル名であり，キャンバス1102に画像ファイルがドロップされた際にOSから通知される。1203は画像ファイルのサイズであり，キャンバス1102に画像ファイルがドロップされた際に，アップロードプログラム602がOSに問い合わせることで取得する。単位はバイトである。1204は画像データであり，同じくキャンパス1102に画像ファイルがドロップされた際に，アップロードプログラム602が画像ファイルの内容を読み込む。1205はサムネイルデータであり，同じくキャンバス1102に画像ファイルがドロップされた際に，アップロードプログラム602が画像データ1204を元にして縮小画像を生成する。画像データ1204とサムネイルデータ1205はバイナリデータとしてRAM 202に格納するが，そのままでは図示できないため，本実施例で図示する場合は画像データまたはサムネイルデータの内容を表示して代用する。1206はチェックフラグであり，追加した画像ファイルを実際にアップロードするかどうかを管理するために使用する。チェックフラグ1206は「on」（アップロードする）または「off」（アップロードしない）のいずれかの状態を取る。画像ファイルがドロップされた時点では「on」であるが，その後のユーザの操作またはプログラムの動作により「off」に変更される場合がある。
【００７４】
1207はセル1201を複数連結したリスト構造を表わす。図示のように画像ファイル１〜画像ファイルｎに対応して，セル1208-1〜セル1208〜nを割り当て，これらのセルを順序付けたリストに格納することで，複数のセルおよびそれらの順序関係を管理している。
【００７５】
＜アップロードプログラム定義済み処理＞
図１３〜図１５を参照して，アップロードプログラムが使用する定義済み処理について説明する。
【００７６】
＜アップロードプログラム定義済み処理（１）＞
図１３は，セルリスト1207に格納されている画像ファイルのうち，チェックフラグ1206が「on」の状態を持つセルの画像ファイルの数と，それらのファイルサイズ1203の合計（バイト）を計算する処理である。
【００７７】
ステップS1301は定義済み処理の開始である。この定義済み処理は引数を取らない。
【００７８】
ステップS1302は初期化処理である。checkedFileNumは，セルリスト1207において，チェックフラグ1206が「on」の状態を持つセルの数（アップロード対象の画像ファイル数）を表わす。checkedFileBytesは，セルリスト1207において，チェックフラグ1205が「on」の状態を持つセルの画像ファイルのサイズ1203の合計値（アップロード対象の画像ファイルのサイズ合計）を表わす。ステップS1302ではともに0に初期化する。
【００７９】
ステップS1303はセルリスト1207の開始セル1208-1を取得する処理である。
【００８０】
ステップS1304はセルリスト1207をすべて処理したかどうかの判定処理である。すべてを処理した場合はステップS1308に進み，まだ処理していないセルが残っている場合はステップS1305に進む。
【００８１】
ステップS1305はセルのチェックフラグ1206が「on」か「off」かの判定処理である。「on」であればステップS1306に進み，「off」であればステップS1307に進む。
【００８２】
ステップS1306はチェックフラグ1206が「on」のセルが見つかった場合に変数を更新する処理である。まず，アップロード対象の画像ファイル数（checkedFileNum）に1を加算する。次に，アップロード対象の画像ファイルのサイズ合計（checkedFileBytes）に画像ファイルのサイズ1203を加算する。
【００８３】
ステップS1307は次に表示するセルを決定する処理である。セルリストS1207で現在処理しているセルの後続のセルを選択する。たとえばセル1208-1の場合は次のセルとして1208-2を取得し，セル1208-2の場合は次のセルとして1203-3を選択し，以下同様にセル1208-n-1の場合は次のセルとして1208-nを選択する。この後，ステップS1304に戻る。
【００８４】
ステップS1308は定義済み処理の終了である。アップロード対象の画像ファイル数（checkedFileNum）とアップロード対象の画像ファイルのサイズ合計（checkedFileBytes）を戻り値として返す。
【００８５】
＜アップロードプログラム定義済み処理（２）＞
図１４は，2つの画像の類似度を求めるために，2つの画像データ間の重なり率を計算する処理である。
【００８６】
画像の類似度を判定する方法には様々な方法があるが，ここでは単純に重なり率を使って類似画像を判定する。重なり率は2つの画像データの色ヒストグラム（画像データ内の各色の画素数を色ごとに集計したもの）を同一グラフ平面上に重ねて表示した場合に，両ヒストグラムが重複する面積の割合を0.0〜1.0の数値で示すものである。2つの画像データがまったく同じ場合は重なり率が1.0になり，まったく異なる場合（黒一色の画像と白一色の画像の場合など）は重なり率が0.0になる。
【００８７】
重なり率を使用した画像の類似度判定としては，まず2つの画像の重なり率を求め，それをあらかじめ定めておいた閾値（たとえば0.9）と比較して，閾値以上であれば類似画像と判定し，閾値以下であれば類似画像ではないと判定する。
【００８８】
ステップS1401は定義済み処理の開始である。この定義済み処理は引数として2つの画像データimg1とimg2を取る。
【００８９】
ステップS1402は色ヒストグラムを作成する処理である。変数h1[c] は画像データimg1において色cを持つ画素数を全体の画素数で割った数を格納する。h1[c] をすべての色において可算すると1.0になる。同様に変数h2[c] は画像データimg2において色cを持つ画素数を全体の画素数で割った数を格納する。ここでは色ヒストグラムを画像全体の画素数で割って0.0〜1.0に正規化することで，画像データimg1と画像データimg2とで画素数が異なる場合でも処理可能となるようにしている。
【００９０】
ステップS1403は重なり率を計算する処理である。各色cについて，ステップS1402で求めた色ヒストグラムh1[c] と h2[c] のうち値の小さい方を求め，それをすべての色に対して可算することで，重なり率Sを求める。
【００９１】
ステップS1404は定義済み処理の終了である。重なり率Sを戻り値として返す。
【００９２】
＜アップロードプログラム定義済み処理（３）＞
図１５は，セルリスト1207において，指定された閾値以上の類似画像が複数存在し，かつ，それらの画像のチェックフラグが「on」である場合に，一つの画像を除いてすべての画像のチェックフラグを「off」にする処理である。全体構造は，セルリスト1207に対する二重ループ処理（外周ループと内周ループ）になっている。
【００９３】
ステップS1501は定義済み処理の開始である。この定義済み処理は引数として閾値thresholdを取る。
【００９４】
ステップS1502は外周ループの開始処理である。変数cell_1をセルリスト1207の開始セル1208-1で初期化する。１）に進む。
【００９５】
１）〜ステップS1503は外周ループの終了判定処理である。cell_1がセルリスト1207の終了セル1208-nを指している場合は外周ループを終了すると判断し，６）に進む。それ以外の場合はステップS1504に進む。
【００９６】
ステップS1504は内周ループを開始するかどうかの判定処理である。cell_1が指すセルのチェックフラグ1206が「on」の場合は内周ループを開始すると判断し，３）に進む。チェックフラグ1206が「off」の場合は内周ループを開始せず，次の外周ループに進むと判断し，２）に進む。
【００９７】
２）〜ステップS1505は外周ループを一周進める処理である。セルリスト1207で変数cell_1が指すセルの次のセルで変数cell_1を置き換える。１）に進む。
【００９８】
３）〜ステップS1506は内周ループの開始処理である。変数cell_1が指す次のセルで変数cell_2を初期化する。変数cell_1がセルリスト1207の終了セル1208-nを指している場合は特別な場合としてNULLで初期化する。４）に進む。
【００９９】
４）〜ステップS1507は内周ループの終了判定処理である。cell_2がNULLの場合は内周ループを終了すると判断し，２）に進む。それ以外の場合はステップS1508に進む。
【０１００】
ステップS1508は類似画像判定を行なうかどうかの判定処理である。cell_2が指すセルのチェックフラグ1206が「on」の場合は，cell_1とcell_2のチェックフラグ1206がともに「on」なので，類似画像判定を行なうと判断し，ステップS1509に進む。それ以外の場合は５）に進む。
【０１０１】
ステップS1509〜ステップS1511は内周ループの本体処理である類似画像判定処理である。ステップS1509は定義済み処理である重なり率計算処理（図１４）を呼び出す。引数はcell_1が指すセルの画像データ1204と，cell_2が指すセルの画像データ1204である。重なり率計算処理の戻り値は重なり率なので，これを変数Sに代入する。
【０１０２】
ステップS1510は類似画像判定処理である。ステップS1509で求めた重なり率Sと，本定義済み処理呼び出し時の引数である閾値thresholdとを比較し，重なり率Sが閾値thresholdを超えていた場合は，類似画像と判断し，ステップS1511に進む。それ以外の場合は５）に進む。
【０１０３】
ステップS1511は類似画像と判定された場合に一方の画像のチェックフラグ1206を「off」にする処理である。ここではcell_2が指すセルのチェックフラグ1206を「off」にする。５）に進む。
【０１０４】
５）〜ステップS1512は内周ループを一周進める処理である。セルリスト1207で変数cell_2が指すセルの次のセルで変数cell_2を置き換える。変数cell_2がセルリスト1207の終了セル1208-nを指している場合は特別な場合としてNULLで置き換える。４）に進む。
【０１０５】
６）〜ステップS1513は定義済み処理の終了である。戻り値はない。
【０１０６】
＜アップロードプログラム動作（１）＞
図１６，図１８，図１９を参照して，シーケンス612で示したアップロードプログラムの残り容量チェック処理の動作について説明する。
【０１０７】
図１６はアップロードプログラム602がシーケンス612で残り容量チェック処理を行なう動作を示すフローチャートである。
【０１０８】
ステップS1601は開始処理である。
【０１０９】
ステップS1602は閾値の初期化処理である。変数thresholdは類似画像判定処理の閾値を表わす。ここでは，閾値thresholdを0.9〜-0.1の範囲で0.1刻みで減らしながら，セルリスト1207で選択中（チェックフラグ＝「on」）の画像ファイルの合計サイズがアルバムの利用可能サイズ以下となるまで，その閾値thresholdにおける類似画像を非選択（チェックフラグ＝「off」）にしていく。重なり率は0.0〜1.0で定義されているので，thresholdが-0.1になった時点ですべての画像が類似画像と判定され，セルリスト1207のすべての画像が非選択になり，ループはそれ以上続かない。
【０１１０】
ステップS1603は定義済み処理であるファイル数とファイルサイズ計算処理（図１３）を呼び出す。引数はない。戻り値は選択中の画像ファイルのファイル数とファイルサイズ合計なので，それぞれ変数checkedFileNumとcheckedFileSizeに代入する。
【０１１１】
ステップS1604は選択中の画像ファイルのファイルサイズ合計がアルバムの利用可能サイズ以下かどうかの判定処理である。ステップS1603で得た選択中の画像ファイルのファイルサイズ合計checkedFileSizeと，シーケンス609（ステップS907）で得たアルバムの利用可能サイズとを比較する。ファイルサイズ合計がアルバム利用可能サイズ以下であればこれ以上の処理は必要ないので，ステップS1607に進んで本処理を終了する。ファイルサイズ合計がアルバム利用可能サイズを上回っていればステップS1605に進む。
【０１１２】
ステップS1605は閾値thresholdの減算処理である。前述のように0.1刻みで減らしていく。
【０１１３】
ステップS1606は定義済み処理である類似画像非選択処理（図１５）を呼び出す。引数は現在の閾値thresholdである。戻り値はない。この呼び出しで，閾値thresholdを超える類似画像がセルリスト1207にあれば，そのうちの一つを除いてすべての画像が非選択状態になるので，ステップS1603に戻って再度ファイルサイズ合計の計算とアルバム利用可能サイズとの比較処理を行なう。
【０１１４】
ステップS1607は終了処理である。
【０１１５】
ここで，ユーザ601がアップロード画面1102に画像ファイルを5つ追加した結果，セルリスト1207が図１８の1801〜1805に示す状態になったとする。各画像同士の重なり率は1806〜1815に示すとおりである。また，アルバムの利用可能サイズは前述のように448,576バイトである。この場合の残り容量チェック処理の動作について説明する。
【０１１６】
ステップS1605で閾値threshold=0.9で類似画像非選択処理（図１５）が呼び出される。
【０１１７】
類似画像非選択処理の外周ループ一周目はcell_1が画像1801である。画像1801はセルリストの終わりではなく，チェックフラグも「on」なので，ステップS1503の判定処理はN，ステップS1504の判定処理はYとなり，内周ループに進む。内周ループはcell_2の画像1802〜1805に対して判定処理が行なわれる。画像1802〜1805のチェックフラグはすべて「on」なので，ステップS1508の判定処理はすべてYとなり，ステップS1509の重なり率計算処理に進む。画像1801と画像1802〜1805の重なり率は1806〜1809に示したとおりなので，ステップS1510において重なり率Sは閾値threshold=0.9を超えず，ステップS1510の判定処理はすべてNとなり，外周ループ一周目は終わる。
【０１１８】
外周ループ二周目はcell_1が画像1802である。画像1802はセルリストの終わりではなく，チェックフラグも「on」なので，ステップS1503の判定処理はN，ステップS1504の判定処理はYとなり，内周ループに進む。内周ループはcell_2の画像1803〜1805に対して判定処理が行なわれる。画像1803〜1805のチェックフラグはすべて「on」なので，ステップS1508の判定処理はすべてYとなり，ステップS1509の重なり率計算処理に進む。画像1802と画像1803〜1805の重なり率は1810〜1812に示したとおりなので，ステップS1510において，cell_2が画像1803の時およびcell_2が画像1804の時に，重なり率Sがthreshold=0.9を超える。この結果，ステップS1510の判定処理がYとなってステップS1511に進み，画像1803と画像1804のチェックフラグ1206が「off」となる。cell_2が画像1805の時は，1812に示す重なり率0.20がthreshold=0.9を超えないため，ステップS1510の判定処理はNとなり，ステップS1511に進まない。以上で外周ループ二週目が終わる。
【０１１９】
外周ループ三周目はcell_1が画像1803である。画像1803はセルリストの終わりではないのでステップS1503の判定処理はNとなるが，二周目の外周ループで画像1803のチェックフラグ1206が「off」にされたため，ステップS1504の判定処理はNとなり，内周ループには進まない。以上で外周ループ三周目が終わる。
【０１２０】
外周ループ四周目はcell_1が画像1804である。画像1804はセルリストの終わりではないのでステップS1503の判定処理はNとなるが，二周目の外周ループで画像1804のチェックフラグ1206が「off」にされたため，ステップS1504の判定処理はNとなり，内周ループには進まない。以上で外周ループ四周目が終わる。
【０１２１】
外周ループ五周目はcell_1が画像1805である。画像1805はセルリストの終わりなのでステップS1503の判定処理がYとなり，ステップS1513に進み，類似画像非選択処理が終わる。
【０１２２】
処理終了時のセルリスト1207の様子は図１９に示すようになる。画像1803に対応する画像1903のチェックフラグと，画像1804に対応する画像1904のチェックフラグが「off」になっている。
【０１２３】
＜アップロードプログラム動作（２）＞
図１７，図１９，図２０を参照して，シーケンス613で示したアップロードプログラムの画面表示動作について説明する。
【０１２４】
図１７は，アップロードプログラム602がディスプレイ205にアップロード画面を表示（シーケンス613）する動作を示すフローチャートである。ここで，シーケンス612の実行の結果，セルリスト1207が図１９に示す状態になったとする。この時の表示は図２０のようになる。この表示動作を図１７のフローチャートを参照して説明する。
【０１２５】
ステップS1701は開始である。
【０１２６】
ステップS1702はメッセージ部分2001を表示する。メッセージの一部に，シーケンス609の戻り値として返された氏名「ＡＢＣ」を使用する。
【０１２７】
ステップS1703はセルリストの開始セルを取得する処理である。ここではセル1901を得る。
【０１２８】
ステップS1704はセルリストをすべて表示したかどうかの判定処理である。ここではセル1901はまだセルリストの終了ではないので，ステップS1705に進む。
【０１２９】
ステップS1705はセルのファイル名・サムネイル・チェック状態を表示する処理である。ステップS1704で選択したセルのファイル名1202，サムネイル1204，チェックフラグ1205の状態をキャンバス2002に表示する。ここではセル1901が選択されているので，ファイル名「鳥.jpg」を2006に表示し，サムネイルを2007に表示する。チェックフラグについては「on」の状態を『レ』，「off」の状態を『□』と表示する。ここではセル1901のチェックフラグが「on」なので，2008に示す表示を得る。
【０１３０】
ステップS1706は次に表示するセルを取得する処理である。ここではセル1901の次のセル1902を選択し，ステップS1704に戻る。
【０１３１】
セル1902もセルリストの終了ではないので，ステップS1705に進み，2009〜2011に示す表示を得る。ステップS1706ではセル1902の次のセルとしてセル1903を選択し，ステップS1704に戻る。
【０１３２】
セル1903もセルリストの終了ではないので，ステップS1705に進み，2012〜2014に示す表示を得る。セル1903はチェックフラグが「off」なので，チェック状態は2014に示すように『□』で表示されている。ステップS1706ではセル1903の次のセルとしてセル1904を選択し，ステップS1704に戻る。
【０１３３】
セル1904もセルリストの終了ではないので，ステップS1705に進み，2015〜2017に示す表示を得る。セル1904もチェックフラグが「off」なので，チェック状態は2017に示すように『□』で表示されている。ステップS1706ではセル1904の次のセルとしてセル1905を選択し，ステップS1704に戻る。
【０１３４】
セル1905もセルリストの終了ではないので，ステップS1705に進み，2018〜2020に示す表示を得る。ステップS1706ではセル1905の次のセルが存在しないのでセルリストの終了を取得し，ステップS1704に戻る。
【０１３５】
ここでセルリストの終了が選択されたのでステップS1704からS1707に進む。
【０１３６】
ステップS1707では定義済み処理であるファイル数とファイルサイズ計算処理（図１３）を呼び出す。引数はない。戻り値は選択中の画像ファイルのファイル数とファイルサイズ合計なので，それぞれ変数checkedFileNumとcheckedFileSizeに代入する。ここでは図１９に示すセルリストを対象としているので，checkedFileNumは3，checkedFileSizeは100,000＋200,000＋100,000＝600,000となる。
【０１３７】
ステップS1708は容量部分の表示処理である。まず，2003に示すように，アップロード対象のファイルの合計サイズと合計数をcheckedFileBytesとcheckeFileNumを利用して表示する。ここではcheckedFileBytesは「600,000バイト」＝「585.9375キロバイト」＝「約586キロバイト」なので，586KBと表示している。また，checkedFileNumは3なので，3ファイルと表示している。次に，2004に示すように，アルバム利用可能サイズを表示する。ここではシーケンス611の戻り値として返されたアルバム利用可能サイズをそのまま使用し，1104と同じように438.1KBと表示している。
【０１３８】
ステップS1709は終了である。
【０１３９】
＜アップロードCGIの動作＞
図２１〜図２２を参照して，アップロードCGIの動作について説明する。
【０１４０】
図２１はアップロードCGI 605の動作（シーケンス615）を示すフローチャートである。
【０１４１】
ここでは，図１９に示す内部状態を持つアップロードプログラム603が図２０に示すアップロード画面を表示しているときに，ユーザ601がアップロードボタン2005を操作したとする。アップロードプログラムはチェックフラグ1206が「on」であるセルそれぞれについてアップロードCGI 605を呼び出す。ここではセル1901，1902，1905についてアップロードCGI 605が呼び出される。以下，セル1902に対する呼び出しを例にとって説明する。
【０１４２】
ステップS2101はプログラムの開始である。シーケンス608でユーザ601が入力したユーザIDとパスワードが，HTTPリクエストのパラメータとしてアップロードプログラム602から渡されるので，それぞれ変数userIdとpasswordに代入する。ここでは，図８に示したようにユーザIDとして「ID1234」，パスワードとして「PAS5678」が渡されたものとする。また，セルのファイル名と画像ファイルデータもHTTPリクエストのパラメータとしてアップロードプログラム602から渡されるので，それぞれ変数fileNameとfileDataに格納する。セルのファイル名と画像データは1202と1204に保持するファイル名と画像データをそのまま使用する。ここでは，1902に示すファイル名（ライオン1.jpg）と画像データが渡される。
【０１４３】
ステップS2102で，userIdがユーザID 402と一致するレコードをユーザ情報データベース401から検索する。図4に示したようにユーザID 402はPKであることから，userIdとユーザID 402が一致するレコードは多くとも1件しか存在しない。
【０１４４】
ステップS2103〜S2104はステップS904〜S905と同じ認証処理である。同一のユーザID・パスワードの組み合わせに対してシーケンス609ですでにチェックが行なわれているので，ここでのチェック処理は必ず成功する。ステップS2103〜S2104を行なう目的は，アップロードプログラム602以外からアップロードCGI 605が呼び出された場合に備えることにある。
【０１４５】
ステップS2105では，引数で渡された画像ファイルデータfileDataから，画像ファイルサイズを計算し，サムネイルを生成する。ここでは1902に示すように画像ファイルサイズとして200,000が得られる。また，サムネイルは2002に示すのとほぼ同じサムネイルが生成される。図２０のサムネイルはクライアント101でアップロードプログラム602が生成したものであり，ここで生成するサムネイルはサーバ102でアップロードCGI 605が生成したものなので，完全に同じものであるとは限らないが，同一の画像ファイルデータから生成したサムネイルなので，表示上はほぼ同じものが生成される。
【０１４６】
ステップS2106では，アルバム情報データベース501に新規レコードを追加する。ユーザID 502はuserIdを使用する。画像ファイル名503はfileNameを使用する。画像ファイルサイズ504はステップS1805で計算した画像ファイルサイズを使用する。サムネイルデータ505はステップS1805で生成したサムネイルデータを使用する。画像ファイルデータ506はfileDataを使用する。追加した結果は2205に示すようになる。
【０１４７】
ステップS2107とステップS2108はそれぞれ成功と失敗を表わす終了処理である。
【０１４８】
ここではセル1902に対する呼び出しを例にとって説明したが，セル1901，1905に対する呼び出しも同様の処理になる。追加した結果はそれぞれ2204，2206に示すようになる。
【０１４９】
以上により，図５に示す状態のアルバム情報データベースに対して，セル1901，1902，1905に示す画像ファイルを図２１に示すフローチャートに従って追加した結果として，図２２に示すアルバム情報データベースを得る。
【０１５０】
（その他の実施例）
本実施例では画像ファイルのみを扱ったが，これに限らず，動画や音声ファイルなども同様に扱うことが可能である。
【０１５１】
図１で，103はインターネットであるとしたが，コンピュータ装置のネットワークインタフェースを通じてデータ等の送受信が可能な媒体であれば他のネットワークでも構わない。また，HTTPプロトコル以外のプロトコルも，クライアントとサーバ双方のソフトウェアがそのプロトコルを利用可能であれば使用することができる。
【０１５２】
図２でプログラムはRAM 202に格納されるとしたが，これに限るものではなく，他の実施例においてはプログラムを外部記憶装置 204から読み込んで実行するようにしてもよいし，ネットワークインタフェース203を介して受信して実行するようにしてもよい。また，図２には示していないが，ROM等の読み出し専用の内部記憶部から読み込んで実行するようにしてもよい。また，キーボード206やポインティングデバイス207の代わりに，あるいはそれらに加えて，音声入力等の他の入力装置を備えることもできる。また，これらすべての構成要素を必ずしも備える必要はなく，サーバ102においては多くの場合ディスプレイ205が省略されたり，キーボード206やポインティングデバイス207を他のコンピュータ装置と共有したりする。
【０１５３】
図３において，クライアントのアップロードプログラム302は独立したプログラムであるとしたが，その他にも，Webブラウザ上で動作するActiveX等のプラグインプログラムという形態も考えられる。さらには，Webブラウザ上で動作するJava（登録商標）Script等のスクリプト言語でも実現可能である。
【０１５４】
ユーザ情報データベースとアルバム情報データベースは図４と図５に示した以外にも，種々の情報を保持するように構成することができる。たとえばユーザ情報には住所や電話番号，アルバム情報にはアルバム名や作成日時等の情報である。また，サムネイルデータと画像ファイルデータはバイナリデータとしてデータベース内に保持するとしたが，その他の実施方法として，バイナリデータをファイルシステム等にファイルとして保存しておいて，データベースにはその位置を示す情報（URIやファイルシステム内のパス名等）だけを保持するという方法も考えられる。
【０１５５】
アルバムはユーザごとに一つだけ対応して存在するようにしたが，もちろんユーザに複数のアルバムを対応付けて，それらをアルバム名等で識別できるようにすることも可能である。また，複数のアルバムを格納することができるフォルダを設けることも可能である。さらに，フォルダが別のフォルダをも格納することができるようにすれば，アルバムは階層構造を有することになる。
【０１５６】
図６のシーケンス615では画像ファイルを一つずつアップロードCGIでアップロードするようにしたが，RFC1867・RFC2854に示されるようなプロトコルを使用して複数の画像ファイルをまとめてアップロードできるようにCGIのインタフェースと動作を変更することもできる。また，この逆に，ファイルサイズの大きい画像ファイルを複数回のCGI呼び出しに分割してアップロードできるようにCGIのインタフェースと動作を変更することもできる。
【０１５７】
すべてのCGI呼び出しで認証情報（ユーザID・パスワード）を引き回したが，これに代わる方法として，サーバ側でセッションを管理することとし，各CGI呼び出しではそのセッションを識別する情報（セッションID）のみを引き回す手法も一般に行なわれている。
【０１５８】
図６の全体図においてアルバムの利用可能容量を取得したのはシーケンス609のみであったが，これに限るものではなく，クライアントではその他のタイミングであるいは定期的にサーバと通信して残り容量を取得し，アップロード画面の表示を更新してもよい。
【０１５９】
図６のシーケンス612で残り容量をチェックし，1つ以上の類似画像を非選択にした場合は，アップロード画面でその旨を明示的にユーザに通知してもよい。その他に，類似画像を非選択にする処理を自動で実行するかどうかをあらかじめユーザが設定することや，処理前に実行の可否をユーザに問い合わせるようにすることも可能である。
【０１６０】
図１１・図２０に示したアップロード画面では画像ファイルの追加とチェック状態の変更程度の機能しか存在しないが，これに限定されるものではなく，その他の編集機能，たとえば画像ファイルの削除，ファイル名の変更，画像ファイルの入れ替え・ソート等の機能を付加することもできる。
【０１６１】
図１５のステップS1509〜S1510および図１４では，類似画像判定処理として，画像の色ヒストグラムの重なり率を閾値と比較する手法を用いたが，他の方法を使用することももちろん可能である。一例としては，画像の色情報を使う方法，輪郭情報を使う方法，テクスチャ情報を使う方法，それらの情報を組み合わせて使う方法，あるいは，デジカメで撮影した画像ファイルやスキャナで作成した画像ファイルに格納されている画像作成時刻が極めて極めて近接している画像を類似画像の一時近似として使う方法もある。さらに，画像の回転方向を考慮して，画像が傾いていても類似画像として認識する方法や，一方が縦画像で一方が横画像であっても類似画像として認識する方法もある。
【０１６２】
図２１のステップS2105でサーバ側で画像ファイルサイズやサムネイルを計算あるいは生成しているが，これらの情報はクライアント側でも保持しているため，アップロードCGIの引数の一部としてクライアントから送ることも可能である。
【０１６３】
なお，本発明は，前述した実施形態の機能を実現するソフトウェアのプログラムを，システムあるいは装置に直接あるいは遠隔から供給し，そのシステムあるいは装置のコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成され得る。その場合，プログラムの機能を有していれば，その形態はプログラムである必要はない。
【０１６４】
従って，本発明の機能処理をコンピュータで実現するために，そのコンピュータにインストールされるプログラムコード自体およびそのプログラムを格納した記憶媒体も本発明を構成することになる。つまり，本発明の特許請求の範囲には，本発明の機能処理を実現するためのコンピュータプログラム自体，およびそのプログラムを格納した記憶媒体も含まれる。
【０１６５】
その場合，プログラムの機能を有していれば，オブジェクトコード，インタプリタにより実行されるプログラム，OSに供給するスクリプトデータ等，プログラムの形態を問わない。
【０１６６】
プログラムを供給するための記憶媒体としては，例えば，フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，MO，CD-ROM，CD-R，CD-RW，磁気テープ，不揮発性のメモリカード，ROM，DVD（DVD-ROM，DVD-R）などがある。
【０１６７】
その他，プログラムの供給方法としては，クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し，そのホームページから本発明のコンピュータプログラムそのもの，もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また，本発明のプログラムを構成するプログラムコードを複数のファイルに分割し，それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり，本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWebサーバも，本発明の請求の範囲に含まれるものである。
【０１６８】
また，本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し，所定の条件をクリアしたユーザに対し，インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ，その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１６９】
また，コンピュータが，読み出したプログラムを実行することによって，前述した実施形態の機能が実現される他，そのプログラムの指示に基づき，コンピュータ上で稼動しているOSなどが，実際の処理の一部または全部を行ない，その処理によっても前述した実施形態の機能が実現され得る。
【０１７０】
さらに，記憶媒体から読み出されたプログラムが，コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後，そのプログラムの指示に基づき，その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない，その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１７１】
【図１】全体構成。
【図２】コンピュータ装置の構成。
【図３】全体のブロック図。
【図４】ユーザ情報データベースの構成，本実施例で使用するレコード。
【図５】アルバム情報データベースの構成，本実施例で使用するレコード。
【図６】全体動作のシーケンス図。
【図７】認証情報入力画面。
【図８】認証情報入力例。
【図９】アルバムクエリCGI動作フローチャート。
【図１０】認証エラー画面。
【図１１】アップロード画面（初期表示）。
【図１２】アップロードプログラム内部データ構造。
【図１３】定義済み処理（ファイル数とファイルサイズの計算）フローチャート。
【図１４】定義済み処理（重なり率計算）フローチャート。
【図１５】定義済み処理（類似画像非選択）フローチャート。
【図１６】残り容量チェック処理フローチャート。
【図１７】アップロード画面表示フローチャート。
【図１８】画像ファイルを追加したセルのリスト。
【図１９】残り容量チェック処理で類似画像が非選択になったセルのリスト。
【図２０】画像ファイルを追加したアップロード画面。
【図２１】アップロードCGI動作フローチャート。
【図２２】アップロード後のアルバム情報データベース。
【符号の説明】
【０１７２】
101  クライアント
102  サーバ
103  ネットワーク
201  CPU
202  RAM
203  ネットワークインタフェース
204  外部記憶装置
205  ディスプレイ
206  キーボード
207  ポインティングデバイス
【図１】
2006302093.tif 000003
【図２】
2006302093.tif 000004
【図３】
2006302093.tif 000005
【図４】
2006302093.tif 000006
【図５】
2006302093.tif 000007
【図６】
2006302093.tif 000008
【図７】
2006302093.tif 000009
【図８】
2006302093.tif 000010
【図９】
2006302093.tif 000011
【図１０】
2006302093.tif 000012
【図１１】
2006302093.tif 000013
【図１２】
2006302093.tif 000014
【図１３】
2006302093.tif 000015
【図１４】
2006302093.tif 000016
【図１５】
2006302093.tif 000017
【図１６】
2006302093.tif 000018
【図１７】
2006302093.tif 000019
【図１８】
2006302093.tif 000020
【図１９】
2006302093.tif 000021
【図２０】
2006302093.tif 000022
【図２１】
2006302093.tif 000023
【図２２】
2006302093.tif 000024