(57)【要約】【課題】本発明は、格納対象であるファイルをそのままストレージサーバに格納する場合と比較して、ストレージサーバに格納されるファイルの総容量を小さくすることを目的とする。【解決手段】特定手段１１は、処理対象であるファイルを構成するバイト列と、ストレージ１６に記憶されたファイルを構成するバイト列とを比較し、両者に共通して含まれるバイト列を特定する。分割手段１２は、特定手段１１により特定されたバイト列を用いて、処理対象であるファイルを複数のファイルに分割する。格納手段１３は、分割手段１２により生成された複数のファイルのうち、バイト列がストレージ１６に記憶されているファイルと異なるファイルをストレージ１６に格納する。【選択図】図２
2018018240.tif 000002
【特許請求の範囲】
【請求項１】
処理対象であるファイルを構成するバイト列と予め定められたストレージに記憶されたファイルを構成するバイト列とを比較し、両者に共通して含まれるバイト列を特定する特定手段と、
前記特定されたバイト列を用いて、前記処理対象であるファイルを複数のファイルに分割する分割手段と、
前記分割により生成された複数のファイルのうち、バイト列が前記ストレージに記憶されているファイルと異なるファイルを、前記ストレージに格納する格納手段と
を有するデータ処理装置。
【請求項２】
前記格納手段は、前記分割により生成された複数のファイルのパスのリストを、前記処理対象であるファイルのパスを示す情報として予め定められた記憶領域に格納する
請求項１に記載のデータ処理装置。
【請求項３】
前記分割手段は、前記処理対象であるファイルを、前記特定されたバイト列のファイルと、当該特定されたバイト列の前部分のバイト列で構成されるファイルと、当該特定されたバイト列の後ろ部分のバイト列で構成されるファイルとに分割する
請求項１または２に記載のデータ処理装置。
【請求項４】
前記処理対象であるファイルを解析し、当該ファイルに含まれるキーワードを１または複数抽出する抽出手段
を更に有し、
前記特定手段は、前記抽出されたキーワードを前記ストレージに記憶されたファイルに対応するキーワードと比較し、比較結果に基づいて前記ストレージに記憶されたファイルから比較対象とするファイルを選定する
請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
バイト列が複数記憶されたデータベースを参照し、当該データベースに記憶されたバイト列を前記処理対象であるファイルから検出する検出手段
を更に有し、
前記特定手段は、前記検出手段により前記処理対象であるファイルから前記データベースに登録されたバイト列が検出された場合、前記ストレージに記憶されているファイルであって前記検出されたバイト列が含まれるファイルと、前記処理対象であるファイルとにおいて、前記検出されたバイト列の後に続くバイトの列および前記検出されたバイト列の前に続くバイトの列の少なくともいずれか一方を比較することにより、両者に共通して含まれるバイト列を特定する
請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
コンピュータに、
処理対象であるファイルを構成するバイト列と予め定められたストレージに記憶されたファイルを構成するバイト列とを比較し、両者に共通して含まれるバイト列を特定するステップと、
前記特定されたバイト列を用いて、前記処理対象であるファイルを複数のファイルに分割するステップと、
前記分割により生成された複数のファイルのうち、前記ストレージに記憶されているファイルと異なるファイルを、前記ストレージに格納するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびプログラムに関する。
【背景技術】
【０００２】
ストレージサーバに記憶されるデータの容量を削減するための手法が種々提案されている。特許文献１には、使用の条件を満たさなくなるとファイルの全部または一部を自動的に削除するファイル管理技術が提案されている。また、特許文献２には、変数データの間を埋める固定文字列データにより記述されるテンプレートを予めデータベースに格納しておき、動的コンテンツに対してテンプレートが適用できるか否かを検証し、適用できると判定された場合に差分データを差分保存ＤＢ３４に保存し、端末装置からの復元リクエストに対し、テンプレートＤＢ３３に保存されたテンプレートと差分保存ＤＢ３４に保存された差分データとを組み合わせることにより動的コンテンツを復元する装置が提案されている。
【０００３】
特許文献３には、ファイルＸと既存ファイル１〜Ｎとの間の類似性有無を判断する技術として、目的のファイルＸと既存のファイル１〜Ｎのそれぞれを、複数の、かつ、少なくとも同じアドレスではサイズが同じであるブロックに分割し、ブロック毎にチェックサム値を求め、同じアドレスのブロック同士のチェックサム値を比較し、上記の比較の結果、どれか一つのブロックのチェックサム値でも、両ファイルＸとＫの間で一致したときには、一致したファイルＸとＫは類似性有りと判定することが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−３３７８６５号公報
【特許文献２】特開２０１０−２２４８６１号公報
【特許文献３】特開平１１−７３３７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、格納対象であるファイルをそのままストレージサーバに格納する場合と比較して、ストレージサーバに格納されるファイルの総容量を小さくすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の請求項１に係るデータ処理装置は、処理対象であるファイルを構成するバイト列と予め定められたストレージに記憶されたファイルを構成するバイト列とを比較し、両者に共通して含まれるバイト列を特定する特定手段と、前記特定されたバイト列を用いて、前記処理対象であるファイルを複数のファイルに分割する分割手段と、前記分割により生成された複数のファイルのうち、バイト列が前記ストレージに記憶されているファイルと異なるファイルを、前記ストレージに格納する格納手段とを有することを特徴とする。
【０００７】
本発明の請求項２に係るデータ処理装置は、請求項１に記載の構成において、前記格納手段は、前記分割により生成された複数のファイルのパスのリストを、前記処理対象であるファイルのパスを示す情報として予め定められた記憶領域に格納することを特徴とする。
【０００８】
本発明の請求項３に係るデータ処理装置は、請求項１または２に記載の構成において、前記分割手段は、前記処理対象であるファイルを、前記特定されたバイト列のファイルと、当該特定されたバイト列の前部分のバイト列で構成されるファイルと、当該特定されたバイト列の後ろ部分のバイト列で構成されるファイルとに分割することを特徴とする。
【０００９】
本発明の請求項４に係るデータ処理装置は、請求項１乃至３のいずれか１項に記載の構成において、前記処理対象であるファイルを解析し、当該ファイルに含まれるキーワードを１または複数抽出する抽出手段を更に有し、前記特定手段は、前記抽出されたキーワードを前記ストレージに記憶されたファイルに対応するキーワードと比較し、比較結果に基づいて前記ストレージに記憶されたファイルから比較対象とするファイルを選定することを特徴とする。
【００１０】
本発明の請求項５に係るデータ処理装置は、請求項１乃至４のいずれか１項に記載の構成において、バイト列が複数記憶されたデータベースを参照し、当該データベースに記憶されたバイト列を前記処理対象であるファイルから検出する検出手段を更に有し、前記特定手段は、前記検出手段により前記処理対象であるファイルから前記データベースに登録されたバイト列が検出された場合、前記ストレージに記憶されているファイルであって前記検出されたバイト列が含まれるファイルと、前記処理対象であるファイルとにおいて、前記検出されたバイト列の後に続くバイト列および前記検出されたバイト列の前に続くバイトの列の少なくともいずれか一方を比較することにより、両者に共通して含まれるバイト列を特定することを特徴とする。
【００１１】
本発明の請求項６に係るプログラムは、コンピュータに、処理対象であるファイルを構成するバイト列と予め定められたストレージに記憶されたファイルを構成するバイト列とを比較し、両者に共通して含まれるバイト列を特定するステップと、前記特定されたバイト列を用いて、前記処理対象であるファイルを複数のファイルに分割するステップと、前記分割により生成された複数のファイルのうち、前記ストレージに記憶されているファイルと異なるファイルを、前記ストレージに格納するステップとを実行させるためのプログラムであることを特徴とする。
【発明の効果】
【００１２】
請求項１および６に係る発明によれば、格納対象であるファイルをそのままストレージサーバに格納する場合と比較して、ストレージサーバに格納されるファイルの総容量を小さくすることができる。
請求項２に係る発明によれば、格納対象であるファイルをそのままストレージサーバに格納する場合と比較して、ストレージサーバに格納されるファイルの総容量を小さくすることができる。
請求項３に係る発明によれば、格納対象であるファイルをそのままストレージサーバに格納する場合と比較して、ストレージサーバに格納されるファイルの総容量を小さくすることができる。
請求項４に係る発明によれば、格納対象であるファイルをそのままストレージサーバに格納する場合と比較して、バイト列の特定処理に要する時間を短縮することができる。
請求項５に係る発明によれば、格納対象であるファイルをそのままストレージサーバに格納する場合と比較して、バイト列の特定処理に要する時間を短縮することができる。
【図面の簡単な説明】
【００１３】
【図１】システム１の構成を示す図
【図２】文書管理サーバ１０の機能構成を示す図
【図３】文書管理サーバ１０のハードウェア構成を示す図
【図４】システム１の機能構成を示す図
【図５】文書データ保存データベース１０６の内容の一例を示す図
【図６】文書管理サーバ１０が行う処理の流れを示すフローチャート
【図７】インデックスマップの内容の一例を示す図
【図８】辞書の内容の一例を示す図
【図９】ファイルの内容の一例を示す図
【図１０】ファイルパスリストの一例を示す図
【発明を実施するための形態】
【００１４】
［１］構成
図１は、本実施形態に係るシステム１の構成を示すブロック図である。システム１は、文書管理サーバ１０（データ処理装置の一例）と、クライアント端末２０とを備える。文書管理サーバ１０は、文書ファイルなどのファイルをストレージするサービスを、いわゆるクラウドサービスとして提供する。クライアント端末２０は、利用者によって操作される装置であり、例えばパーソナルコンピュータである。文書管理サーバ１０は、通信回線２によりクライアント端末２０に接続されている。通信回線２は、例えばインターネットや移動体通信網、電話回線などのうちの少なくとも１つ以上を含む。
【００１５】
図２は文書管理サーバ１０の機能構成の一例を示す図である。文書管理サーバ１０は、特定手段１１と、分割手段１２と、格納手段１３と、抽出手段１４と、検出手段１５とを有する。特定手段１１は、処理対象であるファイルを構成するバイトの列と、ストレージ１６に記憶されたファイルを構成するバイトの列とを比較し、両者に共通して含まれるバイトの列（以下「共通バイト列」という）を特定する。分割手段１２は、特定手段１１により特定された共通バイト列を用いて、処理対象であるファイルを複数のファイルに分割する。格納手段１３は、分割手段１２により生成された複数のファイルのうち、バイト列がストレージ１６に記憶されているファイルと異なるファイルを、ストレージ１６に格納する。また、格納手段１３は、分割により生成された複数のファイルのパスのリストを、処理対象であるファイルのパスを示す情報として、予め定められた記憶領域に格納する。
【００１６】
抽出手段１４は、処理対象であるファイルを解析し、ファイルに含まれるキーワードを１または複数抽出する。検出手段１５は、検索のキーとなるバイト列が複数記憶されたデータベース１７を参照し、データベース１７に記憶されたバイト列を処理対象であるファイルから検出する。
【００１７】
図３は文書管理サーバ１０のハードウェア構成を例示する図である。文書管理サーバ１０は、ＣＰＵ（Central Processing Unit）１５１と、ＲＯＭ（Read Only Memory）１５２と、ＲＡＭ（Random Access Memory）１５３と、ストレージ１５４と、通信ＩＦ１５５とを備える。ＣＰＵ１５１は、文書管理サーバ１０の各部を制御する制御装置（プロセッサ）である。ＲＯＭ１５２は、プログラムおよびデータを記憶する不揮発性の記憶装置である。ＲＡＭ１５３は、ＣＰＵ１５１がプログラムを実行する際の作業領域として機能する揮発性の主記憶装置である。ストレージ１５４は、プログラムおよびデータを記憶する不揮発性の補助記憶装置である。通信ＩＦ１５５は、通信回線２を介した通信を行うためのインターフェースであり、この例では特に、クライアント端末２０と通信を行うためのインターフェースである。
【００１８】
この例で、ストレージ１５４に記憶されているプログラムをＣＰＵ１５１が実行することにより、図２に示される機能が実装される。プログラムを実行しているＣＰＵ１５１は、特定手段１１、分割手段１２、格納手段１３、抽出手段１４および検出手段１５の一例である。
【００１９】
図４は、システム１の機能構成の一例を示す図である。図において、クライアント端末２０は入出力装置２０１を有する。入出力装置２０１は文書管理サーバ１０とデータの遣り取りを行う。文書管理サーバ１０は、文書管理システム本体１０１と、共通要素検出部１０２と、共通要素抽出部１０３と、格納先管理部１０４と、ファイルストレージ１０５と、文書データ保存データベース１０６とを有する。文書管理システム本体１０１は、文書管理サーバ１０が提供する文書管理サービスに関しクライアント端末２０とデータの遣り取りを行う。
【００２０】
共通要素検出部１０２は、ファイルストレージ１０５内のファイルを走査し、複数のファイルに共通して含まれるバイト列（共通バイト列）を探し出す。共通バイト列が特定された場合、共通要素検出部１０２は、共通バイト列を含むファイルのパス（以下「検出ファイルパス」という）のリストと、特定された共通バイト列とを共通要素抽出部１０３に送る。ファイルストレージ１０５は、文書ファイルなどのファイルを保存する。共通要素抽出部１０３は、共通要素検出部１０２で特定された共通バイト列を用いて処理対象であるファイルを複数のファイルに分割する。格納先管理部１０４は、共通要素抽出部１０３の分割処理により生成された複数のファイルのパスのリストを、分割前のファイルのパスを示す情報として、文書データ保存データベース１０６に格納する。文書データ保存データベース１０６には、文書ファイルを識別する文書ＩＤとその文書ファイルの格納先を示すファイルパスとが対応付けて記憶される。
【００２１】
図５は、文書データ保存データベース１０６の内容の一例を示す図である。この例で、文書データ保存データベース１０６には、「文書ＩＤ」と「ファイルパス」との各項目が互いに関連付けて記憶されている。これらの項目のうち、「文書ＩＤ」の項目には、文書ファイルを識別する文書ＩＤが格納される。「ファイルパス」の項目には、ファイルの格納場所を示すパス情報が格納される。図５に示す例では、文書ＩＤが「００１」である文書ファイルが「/contents/fileA」により示される場所に格納されている旨が示されている。
【００２２】
［２］動作
［２−１］データ量削減動作
図６は文書管理サーバ１０が行う処理の流れを示すフローチャートである。図６に示される処理は、ファイルストレージ１０５にファイルが登録されたことを契機として開始されてもよく、また、例えば、予め定められたタイミング（例えば、毎日６：００、など）に開始されてもよい。ステップＳ１０１において、文書管理サーバ１０のＣＰＵ１５１は上述の共通要素検出部１０２の処理を行う。すなわち、共通要素検出部１０２は、ファイルストレージ１０５に記憶されたファイルまたはクライアント端末２０からストレージを依頼されたファイルを処理対象とし、処理対象であるファイルを構成するバイト列とファイルストレージ１０５に記憶された他のファイルを構成するバイト列とを比較し、両者に共通して含まれる共通バイト列を特定する。
【００２３】
この実施形態では、共通要素検出部１０２は、ファイルストレージ１０５に格納されているファイルの中から、処理対象であるファイルに類似しているファイルを比較対象として選定し、選定したファイルと処理対象であるファイルとを比較することにより共通バイト列を検出する。比較対象とするファイルの選定方法としては、共通要素検出部１０２は、処理対象であるファイルを解析し、解析されたファイルに含まれるキーワードを１または複数抽出し、抽出されたキーワードをファイルストレージ１０５に記憶されたファイルに対応するキーワードと比較し、比較結果に基づいてファイルストレージ１０５に記憶されたファイルから比較対象とするファイルを選定する。
【００２４】
比較対象とするファイルの選定処理においては、ファイルストレージ１０５に格納されている文書ファイルから抽出されたテキストデータを形態素解析やｎグラム分割したデータとしてインデックス化されたものが用いられる。この実施形態では、全文検索のインデックスとそのインデックスを含む文書ファイルの文書ＩＤを保持するマップが用いられる。インデックスマップは文書管理サーバ１０のストレージ１５４の予め定められた記憶領域に記憶されている。
【００２５】
図７は、インデックスマップの内容の一例を示す図である。図７の例では、「インデックス」と「文書ＩＤ」との各項目が互いに関連付けて記憶されている。これらの項目のうち、「インデックス」の項目には、検索キーとなる単語が格納される。「文書ＩＤ」の項目には、その単語が文書中に含まれている文書ファイルの文書ＩＤが格納される。図７の例では、「営業部」という単語が、「００１」、「００２」、「００３」の文書ファイルに含まれており、「仕様書」という単語が「００３」の文書ファイルに含まれており、「技術管理部」という単語が「００１」と「００２」の文書ファイルに含まれている旨が示されている。共通要素検出部１０２は、インデックスマップに登録されているインデックスを予め定められた数以上含む文書ファイル同士を、比較対象とする文書ファイルとして選定する。
【００２６】
比較対象とするファイルが選定されると、共通要素検出部１０２は、選定されたファイルから共通バイト列を検出する処理を実行する。この実施形態では、共通要素検出部１０２は、検索のキーとなるバイト列が複数記憶された辞書を参照し、この辞書に記憶されたバイト列を処理対象であるファイルから検出し、検出したバイト列を用いて共通バイト列の検出を行う。この辞書は、文書管理サーバ１０のストレージ１５４の予め定められた記憶領域に記憶されている。
【００２７】
図８は辞書の内容一例を示す図である。図８の例では、「バイト列」と「ファイルパス」との各項目が互いに関連付けられている。これらの項目のうち、「バイト列」の項目には、予め定められた基準を満たすバイト列が検索キーとして登録されている。検索キーとして登録されるバイト列は、キーが各ファイルに適度に出現するように、また、バイト列が長くなりすぎて逆にストレージサーバの容量を圧迫しないように、文書管理システムごとに調整されてもよい。図８の例では、「８２」から始まる長さ１０のバイト列がファイルストレージ１０５内の文書ファイルから検索され、検索されたバイト列が検索キーとして登録されている。この検索キーの登録処理は、予め定められたタイミングでファイルストレージ１０５に登録された文書ファイル全てを処理対象として実行されてもよく、また、文書ファイルがファイルストレージ１０５に登録されるタイミングで、登録対象である文書ファイルに対してキーの抽出処理が行われてもよい。「ファイルパス」の項目には、そのバイト列が含まれるファイルのパスを示す情報が登録されている。
【００２８】
共通要素検出部１０２は、検索キーであるバイト列がファイルストレージ１０５内のファイルから検出されると、そのファイルと処理対象であるファイルとにおいて、キーであるバイト列の後に続くバイトの列および前に続くバイト列の少なくともいずれか一方を比較することにより、共通バイト列を特定する。この例で、共通要素検出部１０２は、辞書に登録されたバイト列が抽出されたファイル同士について、抽出されたバイト列を起点にその前後を調べ、予め定められたバイト長以上の長さで一致しているバイト列がある場合、そのバイト列を共通バイト列として切り出す処理を行う。より具体的には、共通要素検出部１０２は、それぞれのファイルに出現する検索キーの前後のバイト列を確認し、前後も一致しているようであれば、一致している部分のバイト長を確認する。共通要素検出部１０２は、一致している部分のバイト長が予め定められた閾値を超える場合、その部分を共通バイト列として切り出す。なお、この閾値は、文書管理システムごとに調整されてもよい。
【００２９】
図９は、ファイルを構成するバイト列の一例を示す図である。図９には、ファイルＡとファイルＢとの２つのファイルがファイルストレージ１０５に格納されている例を示している。この例では、ファイルＡとファイルＢには、「e38297e38281be4142」という共通バイト列（以下「共通バイト列ＳＱ１」という）が共通して含まれる。また、図示のように、ファイルＡには、共通バイト列ＳＱ１が２カ所に含まれている。なお、図９では、説明のために「e38297e38281be4142」という短いバイト列を例示しているが、実際にはファイルの1ページ分に相当する程度の長さのバイト列が用いられてもよい。
【００３０】
図６の説明に戻る。ステップＳ１０２およびステップＳ１０３において、ＣＰＵ１５１は上述の共通要素抽出部１０３の処理を行う。すなわち、共通要素抽出部１０３は、ステップＳ１０２において、共通要素検出部１０２で特定された共通バイト列を用いて処理対象であるファイルを複数のファイルに分割する。この実施形態では、共通要素抽出部１０３は、処理対象であるファイルを、共通バイト列のファイルと、共通バイト列の前部分のバイト列で構成されるファイルと、共通バイト列の後ろ部分のバイト列で構成されるファイルとに分割する。このとき、処理対象であるファイルに共通バイト列が複数含まれている場合、共通要素抽出部１０３は、それらの共通バイト列に挟まれている部分のバイト列も切り出して別ファイルとする。
【００３１】
ステップＳ１０３において、共通要素抽出部１０３は、分割により生成された複数のファイルのうち、ファイルストレージ１０５に記憶されているファイルと異なるファイルを、ファイルストレージ１０５に格納する。この例で、共通要素検出部１０２から送られてきた共通バイト列をファイルストレージ１０５にファイルとして書き出すとともに、共通要素検出部１０２から送られてきた検出ファイルパスのリストに含まれる各ファイルについて、共通バイト列の部分より前の部分を別ファイルとして書き出す。また、共通要素検出部１０２は、共通バイト列の後ろの部分も別ファイルとしてファイルストレージ１０５に書き出す。また、処理対象であるファイルに共通バイト列が複数含まれている場合、共通要素抽出部１０３は、それらの共通バイト列に挟まれている部分についても別ファイルとして書き出す。
【００３２】
図９の例では、ファイルＡとファイルＢに含まれる共通バイト列ＳＱ１がファイルＤとしてファイルストレージ１０５に書き出され、ファイルＡにおいて共通バイト列ＳＱ１よりも前の部分のバイト列「７６５９」がファイルＣとして書き出される。また、ファイルＡに含まれる２つの共通バイト列ＳＱ１に挟まれた部分のバイト列が、「ファイルＥ」として書き出される。更に、ファイルＡにおいて２つ目の共通バイト列ＳＱ１の後ろ部分が「ファイルＦ」として書き出される。ファイルＢについても、共通バイト列ＳＱ１とそれ以外の部分とでそれぞれ別ファイルが生成され、ファイルストレージ１０５に保存される。
【００３３】
また、共通要素抽出部１０３は、共通要素検出部１０２から送られてきた検出ファイルパスのそれぞれに紐付けて、前の部分のファイルのパス、共通バイト列のファイルのパス、後の部分のファイルのパス、の順に並べたファイルパスのリスト（ファイルパスリスト）を、格納先管理部１０４に送信する。
【００３４】
図６の説明に戻る。ステップＳ１０４において、ＣＰＵ１５１は上述の格納先管理部１０４の処理を行う。すなわち、格納先管理部１０４は、共通バイト列を含むと判定されたファイルについて、文書データ保存データベース１０６に格納されているファイルパスの情報を更新する。この実施形態では、格納先管理部１０４は、分割により生成された複数のファイルのパスのリストを、処理対象であるファイルのパスを示す情報として文書データ保存データベース１０６に格納する。
【００３５】
図１０は、図５の文書データ保存データベース１０６においてファイルパスが更新された状態の一例を示す図である。図１０の例では、ファイルＡのファイルパスが、ファイルＣのファイルパス、ファイルＤのファイルパス、ファイルＥのファイルパス、ファイルＤのファイルパス、ファイルＦのファイルパス、の順にファイルパスが配列されたリストに置き換えられる。
【００３６】
［２−２］ファイルストレージからのファイル取得動作
次いで、クライアント端末２０からファイルの取得要求がなされた場合の文書管理サーバ１０の動作を説明する。クライアント端末２０からファイルの取得要求を受信すると、文書管理サーバ１０のＣＰＵ１５１は、以下の処理を行ってファイルストレージ１０５から要求されたファイルを読み出す処理を行う。まず、ＣＰＵ１５１は、取得要求に含まれる文書ＩＤを、文書データ保存データベース１０６から検索する。文書ＩＤが検索されると、ＣＰＵ１５１は、検索された文書ＩＤに紐付けられたファイルパスを文書データ保存データベース１０６から読み出す。ＣＰＵ１５１は、読み出されたファイルパスに従ってファイルストレージ１０５からファイルを読み出し、読み出したファイルを取得要求の応答としてクライアント端末２０に送信する。
【００３７】
このとき、ＣＰＵ１５１は、読み出されたファイルパスがファイルパスのリストである場合、リストの順にファイルストレージ１０５からファイルを順に読み出し、読み出した複数のファイルを結合してひとつのファイルとしてクライアント端末２０に送信する。例えば、読み出されたファイルパスが、ファイルＣのファイルパス、ファイルＤのファイルパス、ファイルＥのファイルパス、ファイルＤのファイルパス、ファイルＦのファイルパス、の順に並べられたリストであった場合、ＣＰＵ１５１は、ファイルストレージ１０５からファイルＣ、ファイルＤ、ファイルＥ、ファイルＦを読み出し、ファイルＣ、ファイルＤ、ファイルＥ、ファイルＤ、ファイルＦの順に並べて結合し、結合の結果得られるファイルを、クライアント端末２０へ送信する。
【００３８】
ところで、クラウド上で文書管理システムを利用したサービスを構築する場合、クラウド上のストレージは容量課金されることがあり、サービスのコストを抑えるためには、出来る限り容量を抑える必要がある。この実施形態では、文書管理システムで利用されるストレージ内のファイルから、複数のファイルに共通して含まれるバイト列部分を切り出し、切り出された部分のバイト列を別ファイルとして保存する。これにより、ファイルストレージ１０５に格納されるファイルの総容量が小さくなる。
【００３９】
［３］変形例
上述した実施形態は、本発明の実施の一例に過ぎず、以下のように変形させてもよい。また、上述した実施形態および以下に示す各変形例は、必要に応じて組み合わせて実施してもよい。
【００４０】
（１）上述の実施形態では、共通要素検出部１０２が、処理対象であるファイルに類似しているファイルを選定し、選定したファイルと処理対象であるファイルとを比較することにより共通バイト列を検出した。共通バイト列の検出方法はこれに限られない。例えば、類似するファイルの選定処理が行われなくてもよい。この場合、共通要素検出部１０２が、ファイルストレージ１０５に格納されている全てのファイルを比較対象のファイルとしてもよい。
【００４１】
また、上述の実施形態では、共通要素検出部１０２が、インデックスマップに登録されているインデックスを用いて、バイト列の比較対象とするファイルを選定したが、比較対象とするファイルの選定方法はこれに限られない。例えば、共通要素検出部１０２が、ファイルストレージ１０５に格納されているファイルのそれぞれを、複数のブロックに分割し、各ブロックのチェックサム値を求め、チェックサム値を比較することによって類似しているかを判定してもよい。
【００４２】
また、既に他のファイルから共通バイト列として切り出されたファイルがファイルストレージ１０５に格納されている場合、共通要素検出部１０２が、そのファイル（共通バイト列として切り出されたファイル）を比較対象とするファイルとして選定してもよい。また、他の例として、共通要素検出部１０２が、そのファイル（共通バイト列として切り出されたファイル）との比較処理をそれ以外のファイルより優先して行ってもよい。
【００４３】
（２）上述の実施形態では、共通要素検出部１０２が、辞書に予め登録された検出キーを処理対象であるファイルから検索し、検索されたバイト列を起点にその前後を調べ、予め定められたバイト長以上の長さで一致しているバイト列がある場合、そのバイト列を共通バイト列として切り出す処理を行った。共通バイト列の特定方法はこれに限られない。例えば、共通要素検出部１０２が、処理対象であるファイルのバイト列と比較対象であるファイルのバイト列とを先頭から順に走査して共通バイト列を特定してもよい。
【００４４】
（３）上述の実施形態では、共通要素抽出部１０３は、処理対象であるファイルを、共通バイト列で構成されるファイルと、共通バイト列の前部分のバイト列で構成されるファイルと、共通バイト列の後ろ部分のバイト列で構成されるファイルとに分割した。処理対象であるファイルの分割方法はこれに限られない。例えば、共通要素抽出部１０３は、共通バイト列で構成されるファイルと、処理対象であるファイルから共通バイト列の部分が切り取られたファイルとに分割してもよい。この場合、例えば、共通要素抽出部１０３は、共通バイト列が切り取られたファイルに、共通バイト列を挿入すべき位置を示す情報をファイルに付与しておき、ファイルの取得要求を受け付けた際に、この情報に従ってファイルに共通バイト列を入れ込む処理を行ってもよい。
また、他の例として、例えば、共通要素抽出部１０３は、特定された共通バイト列を複数に分割して保存してもよい。
【００４５】
（４）上述の実施形態では１台の文書管理サーバ１０により上述の文書管理サービスが提供されたが、複数台のサーバが協働することにより上記サービスが提供されてもよい。
【００４６】
（５）上述した実施形態において、文書管理サーバ１０のＣＰＵ１５１により実行されるプログラムは、インターネットなどの通信回線を介してダウンロードされてもよい。また、これらのプログラムは、磁気記録媒体（磁気テープ、磁気ディスクなど）、光記録媒体（光ディスクなど）、光磁気記録媒体、半導体メモリなどの、コンピュータが読取可能な記録媒体に記録した状態で提供されてもよい。
【符号の説明】
【００４７】
１…システム、２…通信回線、１０…文書管理サーバ、１１…特定手段、１２…分割手段、１３…格納手段、１４…抽出手段、１５…検出手段、２０…クライアント端末、１５１…ＣＰＵ、１５２…ＲＯＭ、１５３…ＲＡＭ、１５４…ストレージ、１５５…通信ＩＦ。
【図１】
2018018240.tif 000003
【図２】
2018018240.tif 000004
【図３】
2018018240.tif 000005
【図４】
2018018240.tif 000006
【図５】
2018018240.tif 000007
【図６】
2018018240.tif 000008
【図７】
2018018240.tif 000009
【図８】
2018018240.tif 000010
【図９】
2018018240.tif 000011
【図１０】
2018018240.tif 000012