(57)【要約】【課題】複数のセルを含む表計算文書の妥当性をセルの位置を含めて検証する。【解決手段】ルール定義情報データベース２３は、セルの位置を求めるための位置情報と、この位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、この位置情報に基づいて求められる位置のセルが条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を格納する。文書検証部１２５は、ルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に求められた位置のセルがルール定義情報に含まれる条件情報によって示される条件を満たすか否か判別する処理に基づいて、表計算文書２４を検証する。ログ出力部１２６は、検証の結果に応じて、求められたセルの位置を示す情報と、ルール定義情報に含まれるメッセージ情報とを含むログ情報２５を記憶部２０に記憶させる。【選択図】図１
2011090598.tif 000002
【特許請求の範囲】
【請求項１】
複数のセルを含む表計算文書を検証する文書検証装置であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるルール定義情報記憶手段と、
表計算文書を取得する表計算文書取得手段と、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出手段と、
前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記表計算文書取得手段によって取得される表計算文書を検証する検証処理手段と、
前記検証処理手段による検証の結果に応じて、前記求められたセルの位置を示す情報と、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする文書検証装置。
【請求項２】
フォルダの名前を示すフォルダ名と、当該フォルダ名に対応し、当該フォルダに格納されているドキュメントの種類を示すドキュメント種別識別子とを含むドキュメント定義情報を記憶部に記憶させるドキュメント定義情報記憶手段と、
前記ドキュメント種別識別子と前記ドキュメント種別識別子に対応する１以上のルール識別子とを含む関連付け情報を記憶部に記憶させる関連付け情報記憶手段と、
前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダが前記記憶部に有るか否かを判別し、有る場合に前記記憶部に記憶されているドキュメント定義情報に基づいて当該フォルダ名に対応するドキュメント種別識別子を取得するドキュメント種別識別子取得手段と、
前記記憶部に記憶されている関連付け情報に基づいて、前記ドキュメント種別識別子取得手段によって取得されたドキュメント種別識別子に対応する１以上のルール識別子を求めるルール識別子取得手段と、
を備え、
前記ルール定義情報記憶手段は、複数のルール定義情報を前記記憶部に記憶させ、
各前記ルール定義情報は、ルール識別子と、当該ルール識別子に対応するルールの種別を示すルール種別情報と、当該ルールの種別に応じた前記位置情報と、当該ルールの種別に応じた前記条件情報とを含み、
前記表計算文書取得手段は、前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダおよび当該フォルダの下に配置されているフォルダに含まれる表計算文書を取得し、
前記ルール定義情報読出手段は、前記ルール識別子取得手段によって求められた各ルール識別子を含むルール定義情報を前記記憶部から読み出し、
前記検証処理手段は、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるルール種別情報によって示されるルールの種別に応じてセルの位置を求め、更に当該求められた位置のセルが当該ルールの種別に応じた前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、当該ルールの種別に応じて前記表計算文書を検証し、
前記ログ情報は、更に、検証された各前記表計算文書のファイルパスを示すパス情報を含む、
ことを特徴とする請求項１に記載の文書検証装置。
【請求項３】
各前記ルール定義情報は、関連するルール識別子を示す関連ルール識別子情報を含み、
前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に含まれる前記関連ルール識別子情報に基づいて前記ルール定義情報読出手段に前記関連するルール識別子に対応するルール定義情報を前記記憶部から読み出させ、当該読み出されたルール定義情報に基づいて前記検証処理手段に表計算文書を検証させ、当該検証処理手段による検証の結果により前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記表計算文書を検証させるか否かを判別し、検証させると判別された場合に、前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記検証処理手段に前記表計算文書を検証させる検証制御手段を備える、
ことを特徴とする請求項２に記載の文書検証装置。
【請求項４】
前記表計算文書は、行方向に並んだ複数のセルと列方向に並んだ複数のセルで構成され、
前記ルール種別情報は、
前記位置情報に基づいて求められる所定の行と所定の列の位置のセルが前記条件情報によって示される条件を満たすか否かを判別する処理を行うための単項検証ルールを示す単項検証ルール情報と、
前記位置情報に基づいて求められる第１の行と第１の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、前記位置情報に基づいて求められる第２の行と第２の列の位置のセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための２項検証ルールを示す２項検証ルール情報と、
前記位置情報に基づいて求められる第３の行と第３の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第３の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列単項検証ルールを示す列単項検証ルール情報と、
前記位置情報に基づいて求められる第４の行と第４の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第４の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第４の列の中の所定の行の範囲に含まれる各セルと同じ行に属し、かつ、前記位置情報に基づいて求められる第５の列に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列２項検証ルールを示す列２項検証ルール情報と、
前記位置情報に基づいて求められる第６の行と第６の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第６の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行単項検証ルールを示す行単項検証ルール情報と、
前記位置情報に基づいて求められる第７の行と第７の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第７の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第７の行の所定の列の範囲に含まれる各セルと同じ列に属し、かつ、前記位置情報に基づいて求められる第８の行に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行２項検証ルールを示す行２項検証ルール情報と、
を含む、
ことを特徴とする請求項１乃至３のいずれか１項に記載の文書検証装置。
【請求項５】
前記位置情報は、各セルに記録されているデータを示すデータ情報を含み、
前記検証処理手段は、前記データ情報によって示されるデータが記録されているセルを特定し、当該セルが属する行の位置または列の位置を求める、
ことを特徴とする請求項４に記載の文書検証装置。
【請求項６】
前記検証処理手段は、
前記列単項検証ルールまたは前記列２項検証ルールに応じて表計算文書を検証するとき、第９の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に前記所定の行の範囲に含まれるとみなし、
前記行単項検証ルールまたは前記行２項検証ルールに応じて表計算文書を検証するとき、第１０の行に属するセルが所定の列開始条件を満たし、かつ所定の列終了条件を満たさない場合に前記所定の列の範囲に含まれるとみなす、
ことを特徴とする請求項４又は５に記載の文書検証装置。
【請求項７】
複数のセルを含む表計算文書を検証する文書検証方法であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるステップと、
表計算文書を取得する表計算文書取得ステップと、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出ステップと、
前記読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記取得された表計算文書を検証する検証処理ステップと、
前記検証の結果に応じて、前記求められたセルの位置を示す情報と、前記読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする文書検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書の妥当性を検証する文書検証装置および文書検証方法に関する。
【背景技術】
【０００２】
設計〜製造〜検証の一連の製造業務において中間成果物として数多くの文書が作成される。中間成果物の品質は最終製品成果物の品質に直接影響する。このため、最終製品成果物だけではなく中間成果物である文書に対しても開発中に妥当性を検証することが重要である。
【０００３】
一方、ファイル化された電子文書について、構文や文体に対する制約条件が規定されたルールを用いて文書の内容を検証し、不備があればガイダンスを提示する文書作成支援装置が知られている（例えば、特許文献１参照）。
この文書作成支援装置を利用することで検証作業を効率化し、不備のある文書が後工程へ流出する割合を削減することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１６４６７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
製品の中間成果物として表計算アプリケーションで作られた表計算文書が作成される場合がある。表計算文書はデータが記載されているセルの位置を示す位置情報を含んでいる。セルの位置情報を含んだ検証の例として、例えば、「プログラムチェックリストの消化がもれなく実施されているか」がある。
従って、表計算文書についてはセルの位置情報も含めて検証することが望ましい。
【０００６】
しかし、特許文献１に開示された文書作成支援装置は、テキストデータで構成された文書を対象とする。この文書作成支援装置は、セルの位置情報を含めて表計算文書を検証することはできない。
【０００７】
本発明は、上記実情を鑑みて行われたものであり、複数のセルを含む表計算文書の妥当性をセルの位置情報を含めて検証することができる文書検証装置および文書検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の文書検証装置は、
複数のセルを含む表計算文書を検証する文書検証装置であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるルール定義情報記憶手段と、
表計算文書を取得する表計算文書取得手段と、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出手段と、
前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記表計算文書取得手段によって取得される表計算文書を検証する検証処理手段と、
前記検証処理手段による検証の結果に応じて、前記求められたセルの位置を示す情報と、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする。
【０００９】
好ましくは、本発明の文書検証装置は、
フォルダの名前を示すフォルダ名と、当該フォルダ名に対応し、当該フォルダに格納されているドキュメントの種類を示すドキュメント種別識別子とを含むドキュメント定義情報を記憶部に記憶させるドキュメント定義情報記憶手段と、
前記ドキュメント種別識別子と前記ドキュメント種別識別子に対応する１以上のルール識別子とを含む関連付け情報を記憶部に記憶させる関連付け情報記憶手段と、
前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダが前記記憶部に有るか否かを判別し、有る場合に前記記憶部に記憶されているドキュメント定義情報に基づいて当該フォルダ名に対応するドキュメント種別識別子を取得するドキュメント種別識別子取得手段と、
前記記憶部に記憶されている関連付け情報に基づいて、前記ドキュメント種別識別子取得手段によって取得されたドキュメント種別識別子に対応する１以上のルール識別子を求めるルール識別子取得手段と、
を備え、
前記ルール定義情報記憶手段は、複数のルール定義情報を前記記憶部に記憶させ、
各前記ルール定義情報は、ルール識別子と、当該ルール識別子に対応するルールの種別を示すルール種別情報と、当該ルールの種別に応じた前記位置情報と、当該ルールの種別に応じた前記条件情報とを含み、
前記表計算文書取得手段は、前記記憶部に記憶されているドキュメント定義情報に含まれるフォルダ名と一致するフォルダ名のフォルダおよび当該フォルダの下に配置されているフォルダに含まれる表計算文書を取得し、
前記ルール定義情報読出手段は、前記ルール識別子取得手段によって求められた各ルール識別子を含むルール定義情報を前記記憶部から読み出し、
前記検証処理手段は、前記ルール定義情報読出手段によって読み出されたルール定義情報に含まれるルール種別情報によって示されるルールの種別に応じてセルの位置を求め、更に当該求められた位置のセルが当該ルールの種別に応じた前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、当該ルールの種別に応じて前記表計算文書を検証し、
前記ログ情報は、更に、検証された各前記表計算文書のファイルパスを示すパス情報を含む、
ことを特徴とする。
【００１０】
好ましくは、各前記ルール定義情報は、関連するルール識別子を示す関連ルール識別子情報を含み、
前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に含まれる前記関連ルール識別子情報に基づいて前記ルール定義情報読出手段に前記関連するルール識別子に対応するルール定義情報を前記記憶部から読み出させ、当該読み出されたルール定義情報に基づいて前記検証処理手段に表計算文書を検証させ、当該検証処理手段による検証の結果により前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記表計算文書を検証させるか否かを判別し、検証させると判別された場合に、前記ルール定義情報読出手段によって前記記憶部から読み出されたルール定義情報に基づいて前記検証処理手段に前記表計算文書を検証させる検証制御手段を備える、
ことを特徴とする。
【００１１】
好ましくは、前記表計算文書は、行方向に並んだ複数のセルと列方向に並んだ複数のセルで構成され、
前記ルール種別情報は、
前記位置情報に基づいて求められる所定の行と所定の列の位置のセルが前記条件情報によって示される条件を満たすか否かを判別する処理を行うための単項検証ルールを示す単項検証ルール情報と、
前記位置情報に基づいて求められる第１の行と第１の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、前記位置情報に基づいて求められる第２の行と第２の列の位置のセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための２項検証ルールを示す２項検証ルール情報と、
前記位置情報に基づいて求められる第３の行と第３の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第３の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列単項検証ルールを示す列単項検証ルール情報と、
前記位置情報に基づいて求められる第４の行と第４の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第４の列の中の所定の行の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第４の列の中の所定の行の範囲に含まれる各セルと同じ行に属し、かつ、前記位置情報に基づいて求められる第５の列に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための列２項検証ルールを示す列２項検証ルール情報と、
前記位置情報に基づいて求められる第６の行と第６の列の位置のセルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第６の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行単項検証ルールを示す行単項検証ルール情報と、
前記位置情報に基づいて求められる第７の行と第７の列の位置のセルが前記条件情報によって示される所定の条件を満たすか否か判別し、当該所定の条件を満たすと判別された場合に、当該第７の行の所定の列の範囲に含まれる各セルが前記条件情報によって示される前提条件を満たすか否か判別し、当該前提条件を満たすと判別された場合に、当該第７の行の所定の列の範囲に含まれる各セルと同じ列に属し、かつ、前記位置情報に基づいて求められる第８の行に属するセルが前記条件情報によって示される確認先条件を満たすか否かを判別する処理を行うための行２項検証ルールを示す行２項検証ルール情報と、
を含む、
ことを特徴とする。
【００１２】
好ましくは、前記位置情報は、各セルに記録されているデータを示すデータ情報を含み、
前記検証処理手段は、前記データ情報によって示されるデータが記録されているセルを特定し、当該セルが属する行の位置または列の位置を求める、
ことを特徴とする。
【００１３】
好ましくは、前記検証処理手段は、
前記列単項検証ルールまたは前記列２項検証ルールに応じて表計算文書を検証するとき、第９の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に前記所定の行の範囲に含まれるとみなし、
前記行単項検証ルールまたは前記行２項検証ルールに応じて表計算文書を検証するとき、第１０の行に属するセルが所定の列開始条件を満たし、かつ所定の列終了条件を満たさない場合に前記所定の列の範囲に含まれるとみなす、
ことを特徴とする。
【００１４】
また、本発明の文書検証方法は、
複数のセルを含む表計算文書を検証する文書検証方法であって、
セルの位置を求めるための位置情報と、当該位置情報に基づいて求められる位置のセルが満たすべき条件を示す条件情報と、当該位置情報に基づいて求められる位置のセルが当該条件情報によって示される条件を満たすか否かに応じて出力されるメッセージを示すメッセージ情報とを含むルール定義情報を記憶部に記憶させるステップと、
表計算文書を取得する表計算文書取得ステップと、
前記記憶部から前記ルール定義情報を読み出すルール定義情報読出ステップと、
前記読み出されたルール定義情報に含まれる位置情報に基づいてセルの位置を求め、更に当該求められた位置のセルが前記条件情報によって示される条件を満たすか否か判別する処理に基づいて、前記取得された表計算文書を検証する検証処理ステップと、
前記検証の結果に応じて、前記求められたセルの位置を示す情報と、前記読み出されたルール定義情報に含まれるメッセージ情報とを含むログ情報を前記記憶部に記憶させるログ情報記憶手段と、
を備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、複数のセルを含む表計算文書の妥当性をセルの位置情報を含めて検証することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る文書検証装置の構成の一例を示す図である。
【図２】トリー状に配置されたフォルダ群の構成の一例を示す図である。
【図３】表計算文書の一例であるプログラムチェックリストを示す図である。
【図４】ドキュメント定義情報データベースに格納されるドキュメント定義情報の一例を示す図である。
【図５】関連情報編集部が表示する画面の一例を示す図である。
【図６】関連付け情報データベースに格納される関連付け情報の一例を示す図である。
【図７】ルール編集部が表示する画面の一例を示す図である。
【図８】ルール定義情報データベースに格納されるルール定義情報の一例を示す図である。
【図９】単項検証処理及び２項検証処理の一例を示す図である。
【図１０】行単項検証処理の一例を示す図である。
【図１１】行２項検証処理の一例を示す図である。
【図１２】列単項検証処理の一例を示す図である。
【図１３】列２項検証処理の一例を示す図である。
【図１４】ルール編集部における入力例を示す図である。
【図１５】文書検証部における文書検証処理の流れを示す図である。
【図１６】ファイル走査処理の流れを示す図である。
【図１７】検証処理の流れを示す図である。
【図１８】行単項検証処理の流れを示す図である。
【図１９】行２項検証処理の流れを示す図である。
【図２０】列単項検証処理の流れを示す図である。
【図２１】列２項検証処理の流れを示す図である。
【図２２】ログ情報の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態に係る文書検証装置について図面を参照しながら説明する。
【００１８】
本発明の実施形態に係る文書検証装置１は、表計算アプリケーションで作られた表計算文書の妥当性を検証する。文書検証装置１は、図１に示すように、処理部１０と、記憶部２０と、入力部３０と、表示部４０とを備える。
【００１９】
処理部１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、メモリ１２とを含む。
メモリ１２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を含む。メモリ１２は、メニュー表示部１２１と、ドキュメント情報編集部１２２と、関連情報編集部１２３と、ルール編集部１２４と、文書検証部１２５と、ログ出力部１２６とで構成されるプログラムを記憶している。
記憶部２０は、ハードディスク装置、光ディスク装置、ＵＳＢメモリ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）等を含む。記憶部２０は、ドキュメント定義情報ＤＢ（データベース）２１と、関連付け情報ＤＢ（データベース）２２と、ルール定義情報ＤＢ（データベース）２３と、複数の表計算文書２４と、ログ情報２５とを記憶している。
ＣＰＵ１１は、メモリ１２に記憶されているプログラムを実行する。
【００２０】
入力部３０は、キーボードやマウス等を含む。入力部３０は、ユーザによる操作を受け付ける。
表示部４０は、ディスプレイやプリンタ等を含む。表示部４０は、メッセージや各種の画面等を表示する。
【００２１】
メニュー表示部１２１は、ドキュメント情報編集部１２２と関連情報編集部１２３と文書検証部１２５の呼び出し、および各種初期設定を行う。
ドキュメント情報編集部１２２は、ドキュメント定義情報（詳細は後述する。）を作成または編集し、そのドキュメント定義情報を記憶部２０に記憶されているドキュメント定義情報ＤＢ２１に格納する。
関連情報編集部１２３は、関連付け情報（詳細は後述する。）を作成または編集し、その関連付け情報を記憶部２０に記憶されている関連付け情報ＤＢ２２に格納する。また、関連情報編集部１２３は、ルール編集部１２４を呼び出す。
ルール編集部１２４は、ルール定義情報（詳細は後述する。）を作成または編集し、そのルール定義情報を記憶部２０に記憶されているルール定義情報ＤＢ２３に格納する。
【００２２】
文書検証部１２５は、ドキュメント定義情報ＤＢ２１と関連付け情報ＤＢ２２とルール定義情報ＤＢ２３とを参照して表計算文書２４を検証する（詳細は後述する。）。また、文書検証部１２５は、ログ出力部１２６にログ情報２５の出力を要求する。
ログ出力部１２６は、ログ情報２５を記憶部２０に記憶させる（詳細は後述する。）。
【００２３】
図２はトリー状に配置されたフォルダ群の構成の一例を示す。
図２では、ルートフォルダの下に、ＰＣＬと、議事録と、設計文書というフォルダ名のフォルダが置かれている。それらの各フォルダの下には、それぞれチームＡからチームＺまでのフォルダが置かれている。チームＡからチームＺの各フォルダには各チームが作成した文書が置かれて（格納されて）いる。
ＰＣＬというフォルダ名のフォルダ（以下、ＰＣＬフォルダという。）には、プログラムチェックリスト（以下、ＰＣＬという）が格納されている。ＰＣＬは表計算文書２４の一例である。ＰＣＬには、製品検査でよく実施される検査の検査項目とその消化結果が記載されている。
議事録と設計文書というフォルダ名のフォルダ（以下、それぞれ議事録フォルダと設計文書フォルダという。）には、それぞれ議事録と設計文書が格納されている。議事録と設計文書は、表計算文書２４以外の文書であり、例えばテキストデータで構成される文書である。
【００２４】
図３は、ＰＣＬの内容の一例を示す。図３のＰＣＬは１２行９列のマトリクス状に配置されたセルで構成される。各セルには、”チェック条件”、”チェックＩＤ”、”０００１”、”空白（ブランク）”等の文字データが記載（記録）されている。
【００２５】
以下では、図２のフォルダ群の構成において、図３に示すＰＣＬについて確認日の記入の妥当性を検証する場合を例として、本実施形態に係る文書検証装置１の動作を説明する。
【００２６】
まず、ＣＰＵ１１は、文書検証装置１の起動直後にメニュー表示部１２１の処理を実行する。
メニュー表示部１２１は、ルートフォルダのパスの設定と、検証実行済みのＰＣＬのうちエラーとなったもののみ絞り込んで実行する再検証機能の有効/無効設定と、ドキュメント情報編集部１２２と関連情報編集部１２３と文書検証部１２５の呼び出しとを行うことができる。
【００２７】
文書検証装置１は、ルートフォルダの下に置かれている各フォルダに格納されているファイルを対象として検証処理を実行する。
また、大量の文書を検証して修正した後、再検証する際に再度全て検証することは非効率的である。このため、文書検証装置１は、再検証機能を有効に設定されると、検証がＯＫとなった後更新されていないＰＣＬを再度の検証対象から外す。一般的に再検証機能は最初の検証の際には無効に設定され、２回目以降の検証の際に有効に設定される。
【００２８】
以下、ルールの設定、検証の実行の順で説明を進める。
メニュー表示部１２１は、ドキュメント情報編集部１２２を呼び出す。ドキュメント情報編集部１２２は、ドキュメント定義情報の作成、編集、削除等を行うための画面（図示無し）を表示部４０に表示する。ドキュメント定義情報ＤＢ２１は、図４に示すように、ドキュメント種別ＩＤ（識別子、Ｉｄｅｎｔｉｆｉｅｒ）とドキュメント種別名と一致条件とで構成される。ドキュメント情報編集部１２２は、ドキュメント種別ＩＤとドキュメント種別名と一致条件とが設定されたドキュメント定義情報を記憶部２０のドキュメント定義情報ＤＢ２１に格納する（記憶させる）。
【００２９】
本実施形態では、ユーザは、入力部３０を用いて表計算文書２４が格納されているフォルダのフォルダ名、またはそのフォルダの直上に配置されているフォルダのフォルダ名を一致条件としてドキュメント定義情報ＤＢ２１に設定する。後述するように、文書検証部１２５は、ドキュメント定義情報ＤＢ２１を検索し、フォルダ名と一致するドキュメント種別ＩＤを取得する。
例えば、図２では、検証の対象であるＰＣＬはＰＣＬフォルダの下のチームＡ〜チームＺの各フォルダに格納されている。そして、ドキュメント定義情報ＤＢ２１には、例えば、ドキュメント種別ＩＤと一致条件としてそれぞれ”１”と”ＰＣＬ”が設定される。この場合、文書検証部１２５は、ＰＣＬフォルダのフォルダ名”ＰＣＬ”と一致条件”ＰＣＬ”とが一致するので、ドキュメント種別ＩＤとして、”１”を取得する。
【００３０】
文書検証部１２５は、キーワードマッチングと正規表現によるマッチングを行うことができる。ユーザが、一致条件として、例えば”ＰＣＬ”、”ＰＣ＊”、”＊Ｌ”を設定することにより、ＰＣＬを検証の対象とすることができる。
他の表計算文書２４を別のルールで検証する場合には、他の表計算文書２４をＰＣＬフォルダとは別のフォルダに格納し、ドキュメント定義情報ＤＢ２１の一致条件にそのフォルダ名を設定すればよい。
【００３１】
次に、メニュー表示部１２１は、入力部３０に入力されたユーザの操作に応答して関連情報編集部１２３を呼び出す。
関連情報編集部１２３は、図５に示す画面を表示部４０に表示する。図５の画面は、ドキュメント種別一覧表示部５１と、ドキュメント設定ボタン５２と、ルール一覧表示部５３と、ルール設定部５４とで構成される。
関連情報編集部１２３は、ドキュメント定義情報ＤＢ２１を参照してドキュメント定義情報ＤＢ２１内にあるすべてのドキュメント種別名をドキュメント種別一覧表示部５１に表示する。ユーザはドキュメント種別一覧表示部５１上で入力部３０のマウス等を用いてドキュメント種別名を選択する。
【００３２】
関連情報編集部１２３は、ユーザがドキュメント設定ボタン５２を押下すると、ドキュメント情報編集部１２２を呼び出す。ドキュメント情報編集部１２２は、上記と同様に、ドキュメント定義情報を作成または編集するための画面（図示無し）を表示部４０に表示する。ユーザは、その画面上でドキュメント定義情報を編集することができる。
【００３３】
関連情報編集部１２３は、ドキュメント定義情報ＤＢ２１と関連付け情報ＤＢ２２とルール定義情報ＤＢ２３とを参照して、ドキュメント種別一覧表示部５１で選択したドキュメント種別名に関連するルール全てをルール一覧表示部５３に表示する。
【００３４】
関連付け情報ＤＢ２２は、図６に示すように、ドキュメント種別ＩＤとルールＩＤ（識別子）とで構成される。関連付け情報ＤＢ２２のドキュメント種別ＩＤはドキュメント定義情報ＤＢ２１のドキュメント種別ＩＤを指す。一方、関連付け情報ＤＢ２２のルールＩＤはルール定義情報ＤＢ２３のルールＩＤを指す（詳細は後述する）。この関連付け情報ＤＢ２２の構成によりドキュメント種別ＩＤに対応する１つのドキュメント種別に対して複数のルールを関連付けることができる。
【００３５】
図５に示す画面のルール設定部５４には、新規ボタン、編集ボタン、削除ボタン、コピーボタンとコピー先ドキュメント選択欄が表示される。ユーザは、入力部３０のマウス等を用いてこれらのボタンを押下することにより、ドキュメント種別一覧表示部５１で選択されているドキュメント種別に対する新規ルールの追加、ルール一覧表示部５３で選択状態となっているルールの編集・削除、コピー先ドキュメント選択欄で選択されたドキュメント種別からドキュメント種別一覧表示部５１で選択されているドキュメント種別へのルールのコピーを行うことができる。
【００３６】
例えば、編集ボタンが押下された場合には、関連情報編集部１２３はルール定義情報ＤＢ２３から現在選択中のルールの詳細情報を読み込み、読み込んだ内容を反映させた状態でルール編集部１２４を呼び出す。新規ボタンが押下された場合は、関連情報編集部１２３は初期状態でルール編集部１２４を呼び出す。ルール編集部１２４でルールの編集処理または作成処理が完了した時点で、関連情報編集部１２３は関連付け情報ＤＢ２２に関連付け情報を登録する。
【００３７】
関連情報編集部１２３から呼び出されるルール編集部１２４は、図７に示す画面を表示する。
図７の画面は、ルール種別設定部６１、テンプレート情報設定部６２、座標・一致条件設定部６３、プレビュー機能部６４から構成される。登録ボタンが押下されると入力不足のチェックを行い、問題がある場合は不足箇所を提示し、問題がなければルール定義情報ＤＢ２３と関連付け情報ＤＢ２２にそれぞれルール定義情報と関連付け情報を格納する。
【００３８】
図８は、ルール定義情報ＤＢ２３に格納されるルール定義情報の一例を示す。ルール定義情報は、ルール識別部とルール定義部とで構成される。ルール識別部はルールＩＤ、および図７のルール種別設定部６１とテンプレート情報設定部６２で設定される各項目とで構成される。また、ルール定義部は、図７の座標・一致条件設定部６３で設定される各項目で構成される。
【００３９】
次に、図９〜１３を参照しながら個々のルールについて説明する。なお、各ルールについて説明した後、図７について詳細に説明する。
図７のルール種別設定部６１のルール種別の欄には、予め用意された６種類のルール種別がプルダウンメニューとして表示される。ユーザはこの６種類のルール種別の中からルールを選択する。６種類のルールは表計算文書２４の検証パターンをほぼ網羅している。
まず、特定の位置にあるセルに記載されている文字列データをチェックするための単項検証ルールと２項検証ルールについて説明する。
【００４０】
単項検証ルールは、特定の行と列の位置にあるセルの内容が妥当かどうかを検証するためのルールである。
単項検証ルールに基づいて検証するに当たり必要な情報は行の位置、列の位置、一致条件の３つである。例えば、図９の２４１の位置にあるセルが”ＰＣＬ”と記載されているか否かをチェックする場合、図７の画面の確認先の行欄に「２」、列欄に「２」、一致条件に「ＰＣＬ」を設定する。
【００４１】
また、２項検証ルールは前提条件を満たした場合のみ確認先で指定したチェックを行う。２項検証ルールは対になって記入されていなければならない文字列データをチェックするために用いるルールである。
【００４２】
詳細に言い換えると、２項検証ルールでは、ＣＰＵ１１は、前提として指定されるセルに対して単項検証を行い、前提条件を満たすかどうかをチェックする。そして、もし前提条件を満たした場合には別に指定した確認先のセルも同様に単項検証を実行する。必要な情報は前提条件を設定するための行の位置、列の位置、一致条件と確認先の条件を設定するための行の位置、列の位置、一致条件の計６つである。例えば、図９の２４２で承認日欄が記入されている場合に承認者欄の記入が漏れていないかどうかをチェックしたい場合、図７の画面の前提の行欄に「４」、列欄に「３」、一致条件欄に「．＋」を設定し、確認先の行欄に「５」、列欄に「３」、一致条件欄に「．＋」を設定する。ここで「．＋」は正規表現であり、一文字以上の文字列を意味する。
【００４３】
次に、図１０を用いて列単項検証ルールについて説明する。列単項検証ルールでは、ＣＰＵ１１は、２項検証ルールと同様に前提として指定されるセルが前提条件を満たす場合のみ確認先のセルをチェックする。ただし、ＣＰＵ１１は、チェックの範囲を単独セルから１列に拡張し、１列の中で一致条件を満たさないセル（または一致条件を満たすセル）を全て検出する。
チェック対象となる列の位置は、たとえば直値で指定する。行の位置は指定しない。例えば、図１０で「Ｂ」、「○」、「×」を含む列をチェックする場合、その列の位置を２と指定する。
【００４４】
ただし、チェックの対象である列の位置が変動する場合、チェック範囲がずれる問題がある。このような場合、列の持つ特徴を利用して列の位置を定めることによりこの問題を解決することができる。すなわち、位置情報の中にセルに記録されているデータを示すデータ情報を含める。そして、ＣＰＵ１１は、データ情報によって示されるデータが記録されているセルを特定する。これにより、ＣＰＵ１１は、セルが属する列の位置を求めることができる。なお、データは￥ｄ｛３｝等の正規表現で指定することもできる。
これにより、例えば、表計算文書２４の中に列に含まれるセルに何の項目が記載されているかを示す項目名の記載されたセルが含まれている場合、項目名をキーとして検索することにより列を特定することができる。この場合、項目名がデータ情報によって示されるデータである。
例えば、図１０で「○」、「×」が記載されている列に対してチェックを行いたい場合、まず項目行の位置を調べると２行目に項目行が存在している。そこで２行目の項目行に対して「○」、「×」が記載されている列の項目名であるＢを探し出すことで列位置を特定することができる。
【００４５】
次に問題となるのはチェック対象となる列のチェック範囲である。通常、表計算ソフトの限界値まで範囲を拡大することはなくある範囲内に留めている。そこで、最も簡単にチェック範囲を指定する方法は、チェック範囲の終了条件としてセルの最大数を指定することである。ただし、表計算文書２４のように表形式で記載されている文書では表の行数が流動的となっている場合がある。このような場合、セルの最大数を指定するだけでは対応できない。
そのため本実施形態では、チェック範囲の終了条件として、終了条件の判定用の列を指定し、判定用の列に含まれるセルが一致条件を満たすときに終了する方法を採用する。すなわち、ＣＰＵ１１は、判定用の列に属するセルが所定の行開始条件を満たし、かつ所定の行終了条件を満たさない場合に所定の行の範囲に含まれるとみなして、表計算文書２４を検証する。一方、ＣＰＵ１１は、判定用の列に属するセルが所定の行終了条件を満たす場合に、表計算文書２４の検証を終了する。
この方法により、ＣＰＵ１１は、例えば判定用の列においては空白が記載されているセルが検出されたときに終了することができる。これにより、列方向での終了範囲を柔軟に決めることができ、余計なチェックを省略することができる。
【００４６】
例えば、図１０に示すように、「Ａ」が記載されているセルが含まれる列（以下、Ａ列という。）に含まれる各セルに項目番号が記載されており、「Ｂ」が記載されているセルが含まれる列（以下、Ｂ列という。）に項目番号に合わせて「○」または「×」が記載されているとする。このとき、チェックすべき行の範囲はＡ列に含まれるセルに記載されている数値が１となる３行目から５となる７行目までとなる。終了条件として最大数を指定する場合、行数が固定である前提ならば開始条件として３行目、終了条件として最大数７を指定すれば３行目から７行目までのＢ列に含まれる各セルのそれぞれの文字列データをチェックすることができる。
また、表の行数が変動することを加味してＢ列に含まれる各セルをチェックしたい場合は、Ａ列を判定用の列として設定し、終了条件としてＡ列に含まれるセルが空欄となった場合に終了するように設定する。これにより、３行から７行までのＢ列に含まれる各セルのそれぞれの文字列データをチェックすることができる。また、仮にＢ列の行数が増えても対応することができる。
【００４７】
次に図１１を用いて、列２項検証ルールについて説明する。列２項検証ルールは列単項検証ルールの前提条件部分を列の範囲指定に拡張したルールである。列２項検証ルールでは前提条件の列と確認先の列が指定される。ＣＰＵ１１は、前提条件の列に含まれるセルが前提項目で設定した一致条件（前提条件）を満たした場合に、この前提条件の列に含まれるセルと同じ行に含まれ、かつ、確認先の列に含まれるセルが確認先項目で設定した一致条件（確認先条件）を満たしているかどうか、チェックすべき行の範囲の終わりまで繰り返しチェックする。
【００４８】
例えば図１１でＢ列に日付が入っている場合に「Ｆ」が記載されているセルが含まれる列（以下、Ｆ列という。）に属する各セルに「○」または「×」が記載されているかどうかをチェックする場合、ループ終了判定用の列をＡ列に設定、開始条件を３行目、終了条件をＡ列に含まれるセルが空欄となった場合に終了するように設定し、前提条件の列をＢ列、一致条件（前提条件）を日付の正規表現に設定する。ここで、日付を示す正規表現は「￥ｄ｛１，２｝／￥ｄ｛１，２｝」である。￥ｄ｛１，２｝は１桁または２桁の数値を意味する。
【００４９】
また、確認先の列をＦ列と設定し、一致条件（確認先条件）を[○|×]と設定する。このとき３行目のＢ列に含まれるセルに記載されている文字列は「１／１」で日付の正規表現を満たしている。このため、ＣＰＵ１１は、３行目のＦ列に含まれるセルに記載されている文字列が「○」または「×」のいずれかに一致するか否かチェックを行うが、３行目のＦ列に含まれるセルは空欄のため一致条件（終了条件）を満たさない。この場合、ＣＰＵ１１は、３行目のＦ列に含まれるセルはエラーであることを指摘する。次に、ＣＰＵ１１は、４行目のＡ列に含まれるセルが空欄かどうか判定を行う。図１１では「２」の文字列があり空欄ではない。このため、前提条件の列であるＢ列のチェックを行う。Ｂ列に含まれるセルは空欄であり、一致条件（前提条件）を満たさないため次の行へスキップする。以降Ａ列に含まれるセルが空欄になる（終了条件を満たす）まで各行で前提条件と確認先条件の判定処理を実施していく。
【００５０】
なお、列２項検証ルールは、列の特定、列のチェック範囲の指定については列単項検証ルールと同様であるため、これらについての説明を省略する。
【００５１】
次に図１２を用いて、行単項検証ルールについて説明する。行単項検証ルールは、チェックの対象を列単項検証ルールにおける列から行に変えたものである。行単項検証ルールは、前提として指定されるセルが前提条件を満たす場合に、このセルが含まれる１行の中で一致条件を満たさないセル（または一致条件を満たすセル）を全て検出するルールである。
【００５２】
例えば、図１２で数値のデータがある行を空欄のある列までチェックしたい場合、２列目に項目が記載されているセルを含む列が存在しているので、２列目において項目名としてＥが記載されているセルを含む行を探し出す。Ｅが記載されているセルを含む行には数値データが記載されている。これにより、確認先の行の位置を特定することができる。
次に確認先の一致条件として数値かどうかを示す正規表現￥ｄを指定、判定用の行をチェック対象と同じ行に設定し、開始条件を３列目、終了条件をセルに空白が記載されている場合に設定する。この時図１２のＥ列のある５行目について３列目から７列目まで走査が行われ、３列目から７列目の値は順に１，２，３，４と全て数値であり一致条件（確認先条件）を満たすため正常なデータとして扱われる。
【００５３】
なお、行単項検証ルールは、行の特定、行のチェック範囲の指定について列単項検証ルールにおける列を行に変えたものとみなすことができ、列単項検証ルールと同様であるため、行の特定、行のチェック範囲の指定についての説明を省略する。
【００５４】
次に図１３を用いて、行２項検証ルールについて説明する。行２項検証ルールはチェックの対象を列２項検証ルールにおける列から行に変えたものである。行２項検証ルールでは、前提条件用の行と確認先の行が指定される。ＣＰＵ１１は、前提条件の行に属するセルが前提項目で設定した一致条件（前提条件）を満たした場合に同じ列で確認先の行に属するセルが確認先項目で設定した一致条件（確認先条件）を満たしているかどうか、行のチェック範囲の終わりまで繰り返しチェックする。
【００５５】
例えば、図１３の表計算文書２４において、数値が記載されている行の２列目がＥである場合に、２列目がＣである行にＸが記載されているかどうかを３列目から６列目までチェックする処理について説明する。ＣＰＵ１１は、まず項目が記載されている２列目から、数値の記載されている行に含まれるＥとＸの記載されている行に含まれるＣとを探し出すことで前提条件の行と確認先の行とを特定する。次に、ＣＰＵ１１は、５行３列目のセルから表計算文書２４の右方向へ走査を開始する。ＣＰＵ１１は、５行３列目のセルには１と数値が記載されており前提条件を満たすので、３行３列目のセルの内容を確認する。ＣＰＵ１１は、３行３列目のセルには空白が記載されており一致条件（確認先条件）であるＸとは異なるため、エラーを出力する。次に、ＣＰＵ１１は、５行４列目のセルにはＢが記載されており前提条件である数値ではないため、スキップする。次に、ＣＰＵ１１は、５行５列目のセルには３が記載されているため、３行５列目のセルをチェックする。ＣＰＵ１１は、３行５列目のセルにはＸが記載されており確認先条件と一致しているため、問題無しと判定する。次に、ＣＰＵ１１は、５行６列目のセルにはＣが記載されており前提条件である数値ではないため、スキップする。ＣＰＵ１１は、５行６列目のセルが空白であり、終了条件を満たすため処理を終了する。
【００５６】
なお、行２項検証ルールは、行の特定、行のチェック範囲の指定について列２項検証ルールにおける列を行に変えたものとみなすことができ、列２項検証ルールと同様であるため、行の特定、行のチェック範囲の指定についての説明を省略する。
【００５７】
各ルール種別の説明は以上で、再びルール編集部１２４が表示する図７に示す画面の説明に戻る。
ルール種別設定部６１では、ルール種別欄のプルダウンメニューにより上述した６種類のルールのいずれかを選択し、ルール名欄にルールの名前を記入する。
【００５８】
テンプレート情報設定部６２では、ルール実行の前提条件とするための別ルールとの関連付けを設定する。
テンプレート情報設定部６２の「テンプレートルールにする」欄にマークを付すと、図７の画面上で編集中のルールは関連テンプレート用のルールとなる。このとき、関連テンプレートＩＤ欄のプルダウンメニューを選択することはできない。
テンプレート情報設定部６２の「テンプレートルールにする」欄にマークが付されていないとき、関連テンプレートＩＤ欄のプルダウンメニューにより関連テンプレートのルールＩＤを選択することができる。これにより、図７の画面上で編集中のルール（以下、元のルールという。）を関連テンプレートのルールＩＤに関連付けることができる。元のルールを関連テンプレートの別ルールと関連付けた場合、検証実行時に検証対象の文書が前提条件となった関連テンプレートのルールを満たさない場合、元のルールは検証されない。
【００５９】
文書を単純に検証した場合、想定していない文書フォーマットが混じっているとエラーを誤検出する可能性がある。検証対象の文書が関連テンプレートのルールを満たすか否かをチェックすることにより、検証対象の文書のフォーマットが想定したものであるときのみ元のルールで検証されるため、エラーの誤検出を防止することができる。
【００６０】
座標・一致条件設定部６３では、ルール種別設定部６１で選択したルール種別に応じて表計算文書２４の検証に必要な座標・一致条件を設定する。
選択されたルール種別ごとにルール種別設定部６１で入力すべき項目が異なる。そこで、ルール種別設定部６１で入力が不要な項目については非活性状態にして入力できないようにする。
【００６１】
前提の入力部では、前提条件に当たるセルの座標（位置）と一致条件を設定する。ＣＰＵ１１は、前提条件を満たす時のみ確認先条件を満たすか否か検証する。各ルール種別で検証する範囲を前提条件-確認先条件で表すと、２項検証（セル-セル）、列単項検証（セル-列）、行単項検証（セル-行）、列２項検証（列-列）、行２項検証（行-行）の５パターンがある。
前提条件の検証範囲がセルとなっているルール種別では、前提の入力部で行欄、列欄、一致条件欄の全てを入力することが必要である。
前提条件の検証範囲が列となっているルール種別では、前提の入力部で行欄（項目行に対するループの開始行）と一致条件欄を入力することが必要である。このとき、列欄には列を指定できるが対象の列位置が変動するケースでは列欄を空白にし、段落[００６４]で説明する項目の入力部にて必要な項目を記入する必要がある。前提条件の検証範囲が行となっているルール種別では、前提の入力部で列欄（ある行に対するループの開始列）と一致条件欄を入力することが必要である。このとき、行欄には行を指定できるが対象の行位置が変動するケースでは行欄を空白にし、段落[００６４]で説明する項目の入力部にて必要な項目を記入する必要がある。
【００６２】
確認先の入力部では、確認先条件に当たるセルの座標（位置）と一致条件を設定する。
確認先条件の検証範囲がセルとなっているルール種別では、前提の入力部と同様に確認先の入力部で行欄、列欄、一致条件欄の全てを入力することが必要である。
確認先条件の検証範囲が列となっているルール種別では、確認先の入力部で行欄（項目行に対するループの開始行）と一致条件欄を入力することが必要である。このとき、列欄には入力できず、列欄は空白である。確認先条件の検証範囲が行となっているルール種別では、確認先の入力部で列欄（ある行に対するループの開始列）と一致条件欄を入力することが必要である。このとき、行欄には入力できず、行欄は空白である。
【００６３】
ただし、検証する範囲が列-列、行-行のルール種別では、前提条件の検証範囲と確認先条件の検証範囲のループ開始行またはループ開始列が同じであるため、確認先の入力部では一致条件欄のみ設定する。このとき、行欄と列欄はいずれも空白である。
【００６４】
項目の入力部は、列単項検証（セル-列）、行単項検証（セル-行）、列２項検証（列-列）、行２項検証（行-行）のように列または行方向に走査するルール種別において対象となる列、行位置が変動するケースに使用される。このようなルール種別において、項目の入力部では、項目名が記載されている行または列の位置と、前提条件に当たる行または列を特定するためのデータと、確認先条件に当たる行または列を特定するためのデータと、ループ停止用に該当する列または行とを設定する。
図１１の例では、「Ａ〜Ｇ」が記載されている２行目が項目行に該当する。また、「Ｂ」と「Ｆ」がそれぞれ前提条件と確認先条件に当たる列を特定するためのデータに該当する。このとき、項目の入力部の行欄に「２」、前提欄に「Ｂ」、確認先欄に「Ｆ」を設定する。なお、項目の入力部の列欄とループ停止用欄は入力されず、空白である。
【００６５】
ループ停止条件の入力部は、列単項検証（セル-列）、行単項検証（セル-行）、列２項検証（列-列）、行２項検証（行-行）のような列、行方向に走査するルール種別において使用される。このようなルール種別において、ループ停止条件の入力部では走査の停止条件を設定する。
ループ停止条件の指定方法として、最大範囲を指定する直値に該当する行または列まで走査する方法、または特定の行または列に属するセルが停止パターンにマッチする（終了条件を満たす）まで走査する方法を選択できる。
【００６６】
出力の入力部では、確認先の入力部で入力された一致条件（確認先条件）を満たした場合にエラーにするのか、満たさない場合にエラーにするのかの選択と、エラーの際にログ情報２５に記録するエラーメッセージ内容を設定する。
例えば、出力の入力部の「条件を満たさない場合エラー」欄にマークを付さない場合、図８に示すルール定義情報ＤＢ２３の例において、エラー反転出力フラグ欄にＯＦＦが記載される。
【００６７】
プレビュー機能は、座標・一致条件設定部６３で設定した内容が妥当かどうかを予め一つの文書に対してチェックする機能である。プレビュー機能部６４の「プレビュー」ボタンが押下されると、「プレビュー対象ファイルパス」で指定したファイルパスに置かれた表計算文書２４に連動する表計算アプリケーションを起動させ、表計算文書２４を検証し、座標・一致条件設定部６３で入力された項目と、検証結果をそれぞれ色づけして表示部４０に表示する。
【００６８】
次に、図３に示すＰＣＬについて確認日の記入の妥当性を検証するルールの設定例を説明する。
検証する対象はチェックＩＤ欄がある場合の確認日欄のみであるため、適用するルール種別は”行２項検証ルール”となる。また、確認日欄は図３の１２行目に存在するが、２行目〜１０行目はチェック内容が記載されておりチェック内容次第では確認日欄の行数が変わる恐れがある。このため、確認日欄の行数が変わっても検証できるように確認日の行を「確認日」の項目を元に抽出する。確認日の項目は１列目固定である。
【００６９】
この場合、図１４に示すように、項目の入力部の列欄に”１”、確認先欄に”確認日”、確認先の入力部の一致条件欄に”￥ｄ｛１，２｝／￥ｄ｛１，２｝”（日付を意味する正規表現）を設定する。次に、確認日をチェックすべき列（３列目）の１行目には必ず４桁の数字で記載されたチェックＩＤが入る特徴を利用し、図１４の確認先の入力部の列欄に”３“、ループ停止条件の入力部の行欄に”１”、停止パターンに”．＋”を設定する。検証する列の範囲の開始位置は図３では３列目であるが、間に列が挿入されてずれるケースを考慮して、前提の入力部の一致条件欄に”￥ｄ｛４｝”（チェックＩＤを意味する４桁の数字の正規表現）を設定する。
【００７０】
ここまでルールの設定について説明した。次にルールの実行について説明する。
表計算文書２４を検証するユーザは、図１のメニュー表示部１２１を用いて処理対象のフォルダのルートパスを設定する。ルートパスが設定されると、メニュー表示部１２１は文書検証部１２５を呼び出す。
【００７１】
図１５は、文書検証部１２５における文書検証処理の流れを示す。
ＣＰＵ１１は、後述するファイル走査処理を行い、フォルダに対応するドキュメント種別を選定し、検証の対象である表計算文書２４を取得する（Ｓ１０１）。
ＣＰＵ１１は、次に検証の対象である表計算文書２４を取得できたか否かを判別する（Ｓ１０２）。ここで、ＣＰＵ１１は、メニュー表示部１２１で設定されたルートパス以下のフォルダに表計算文書２４が含まれていない場合、またはルートパス以下のフォルダに含まれている表計算文書２４の検証を全て終了した場合に、検証の対象である表計算文書２４は取得できないと判別する。
ＣＰＵ１１は、検証の対象である表計算文書２４を取得できない場合（Ｓ１０２：Ｎｏ）、文書検証処理を終了してメニュー表示部１２１に戻る。一方、ＣＰＵ１１は、検証の対象である表計算文書２４を取得できた場合（Ｓ１０２：Ｙｅｓ）、記憶部２０に記憶されている関連付け情報ＤＢ２３に基づいて、ステップＳ１０１で取得されたドキュメント種別ＩＤをキーに関連付け情報ＤＢ２３のドキュメント種別ＩＤに一致するレコードを抽出し、ステップＳ１０１で選定されたドキュメント種別に対応する１以上のルールＩＤを求める。そして、ＣＰＵ１１は、求められたルールＩＤに対応するルール定義情報（以下、ルールという。）を記憶部２０に記憶されているルール定義ＤＢ２３から抽出して読み出す（Ｓ１０３）。
【００７２】
そして、ＣＰＵ１１は、抽出したルールＩＤに対応するルールを全て処理したか否か判別する（Ｓ１０４）。
ＣＰＵ１１は、抽出したルールＩＤに対応するルールの中に処理されていないルールがある場合（Ｓ１０４：Ｎｏ）、テンプレートルールでないルールを選択し（Ｓ１０５）、そのルールが関連するテンプレートルールを有するか否か判別する（Ｓ１０６）。
【００７３】
ＣＰＵ１１は、選択されたルールに対して関連テンプレートが指定されている場合（Ｓ１０６：Ｙｅｓ）、ルール定義ＤＢ２３から関連するテンプレートルールのルールＩＤを抽出し（Ｓ１０７）、後述する検証処理を実行する（Ｓ１０８Ａ）。ステップＳ１０８Ａの検証処理では、ＣＰＵ１１は、テンプレートルールに設定されているルール種別に基づき表計算文書２４を検証する。表計算文書２４がテンプレートルールを満たし、ステップＳ１０８Ａの検証処理でエラーとならなかった場合（Ｓ１０９：Ｙｅｓ）、ＣＰＵ１１は、ステップＳ１０５で選択したルールＩＤに対応するルールの検証処理を実行する（Ｓ１０８Ｂ）。なお、ステップＳ１０８Ａとステップ１０８Ｂは同一の検証処理を実行する。
表計算文書２４がテンプレートルールを満たしておらず、ステップＳ１０８Ａの検証処理でエラーとなった場合（Ｓ１０９：Ｎｏ）、ＣＰＵ１１は、ログ出力部１２６を呼び出し、記憶部２０にログ情報２５を記録して（Ｓ１１１）、ステップＳ１０４に戻り、次のルールＩＤに対応するルールを処理する。
【００７４】
ＣＰＵ１１は、ステップＳ１０５で選択されたルールに対して関連テンプレートが指定されていない場合（Ｓ１０６：Ｎｏ）、または上述したように、ステップＳ１０８Ａの検証処理でエラーとならなかった場合（Ｓ１０９：Ｙｅｓ）、ステップＳ１０５で選択されたルールの検証処理を実行する（Ｓ１０８Ｂ）。
表計算文書２４がルールを満たしておらず、ステップＳ１０８Ｂの検証処理でエラーとなった場合（Ｓ１１０：Ｎｏ）、ＣＰＵ１１は、ログ出力部１２６を呼び出し、記憶部２０にログ情報２５を記録して（Ｓ１１１）、ステップＳ１０４に戻り、次のルールを処理する。
表計算文書２４がルールを満たしており、ステップＳ１０８Ｂの検証処理でエラーとならなかった場合（Ｓ１１０：Ｙｅｓ）、ＣＰＵ１１は、ステップＳ１１１をスキップしてステップＳ１０４に戻り、次のルールを処理する。
【００７５】
ＣＰＵ１１は、ステップＳ１０３で抽出したルールを全て処理した場合（Ｓ１０４：Ｙｅｓ）、ステップＳ１０１に戻り、次の表計算文書２４を検証する。
【００７６】
このように、ＣＰＵ１１は、記憶部２０に記憶されているルール定義情報ＤＢ２３から抽出されたルール（ルール定義情報）に含まれる関連テンプレートＩＤ（関連テンプレートのルールＩＤ）に基づいて、関連テンプレートのルールＩＤに対応するルールを記憶部２０に記憶されているルール定義情報ＤＢ２３から抽出する（Ｓ１０７）。そして、ＣＰＵ１１は、抽出されたルールに基づいて表計算文書２４を検証する（Ｓ１０８Ａ）。次に、ＣＰＵ１１は、検証の結果によりステップＳ１０５で選択されたルールに基づいて表計算文書２４を検証するか否かを判別し（Ｓ１０９）、検証すると判別した場合（Ｓ１０９：Ｙｅｓ）に、ステップＳ１０５で選択されたルールに基づいて表計算文書２４を検証する（Ｓ１０８Ｂ）。
【００７７】
以上の流れにより、ＣＰＵ１１はルートパス以下の全ての表計算文書２４を関連するルールにより検証する。
【００７８】
図１６は、ステップＳ１０１のファイル走査処理の流れを示す。
ファイル走査処理は、検証処理の対象である表計算文書２４の探索、表計算文書２４の属するドキュメント種別ＩＤの取得、検証済みの表計算文書２４を再度検証する場合の検証のスキップの３つの処理を実行する。ファイル走査処理は、ルートパスで指定されるルートフォルダの下のフォルダを深さ優先探索で走査する。
【００７９】
ＣＰＵ１１は、前回ファイル走査処理を行った際にステップＳ２０６で作成されたファイル一覧が存在し、そのファイル一覧中に未検証のファイル（表計算文書２４）が有るか否かを判別する（Ｓ２０１）。なお、ファイル走査処理が文書検証処理から最初に呼び出されたとき（文書検証処理の起動後、ステップＳ１０１が最初に実行されたとき）、ファイル一覧は存在しない。
【００８０】
ＣＰＵ１１は、ファイル一覧が存在しないか、またはファイル一覧の中のファイルが全て検証済みである場合（Ｓ２０１：Ｎｏ）、ルートフォルダの下に未検証のフォルダが有るか否か調べる（Ｓ２０２）。ＣＰＵ１１は、未検証のフォルダが無い場合（Ｓ２０２：Ｎｏ）、文書検証処理に戻る。
ＣＰＵ１１は、未検証のフォルダがある場合（Ｓ２０２：Ｙｅｓ）、ドキュメント定義情報ＤＢ２１の一致条件のフィールドとフォルダ名が一致するフォルダを深さ優先で探索する。その際、既にファイル一覧が作成された検証済みのフォルダは探索の対象から除外される。ＣＰＵ１１は、ドキュメント定義情報ＤＢ２１の一致条件とフォルダ名が一致するフォルダが無かった場合（Ｓ２０３：Ｎｏ）、文書検証処理に戻る。
ＣＰＵ１１は、ドキュメント定義情報ＤＢ２１の一致条件とフォルダ名が一致するフォルダを発見した場合（Ｓ２０３：Ｙｅｓ）、発見したフォルダをカレントフォルダとし、ドキュメント定義情報ＤＢ２１からカレントフォルダのフォルダ名に対応するドキュメント種別ＩＤを取得する（Ｓ２０４）。
【００８１】
次に、ＣＰＵ１１は、カレントフォルダおよびカレントフォルダの下に配置されているサブフォルダの中にファイルが有るか否か調べる（Ｓ２０５）。カレントフォルダまたはその下に配置されているサブフォルダの中にファイルが有る場合（Ｓ２０５：Ｙｅｓ）、ＣＰＵ１１は、それらのファイルのファイルパスを含むファイル一覧を作成する（Ｓ２０６）。次に、ＣＰＵ１１は、ファイル一覧に含まれるファイル（表計算文書２４）の１つを検証対象とて取得して、そのファイルパスを検証対象のファイルパスとして設定し（Ｓ２０７）、文書検証処理に戻る。
一方、カレントフォルダまたはその下に配置されているサブフォルダの中にファイルが無い場合（Ｓ２０５：Ｎｏ）、ＣＰＵ１１は、ステップＳ２０２に戻り、未検証のフォルダを深さ優先で探索する。なお、再度未検証のフォルダを探索するとき、ステップＳ２０５でファイルが無いと判別されたカレントフォルダおよびその下に配置されているサブフォルダは検証済みとみなす。
【００８２】
ＣＰＵ１１は、ファイル一覧が存在し、そのファイル一覧の中に未検証のファイルが有る場合（Ｓ２０１：Ｙｅｓ）、ファイル一覧の中から未検証のファイルを１つ選択する（Ｓ２０８）。
次に、ＣＰＵ１１は、メニュー表示部１２１の処理で再実行機能が有効に設定されているか否か判別する（Ｓ２０９）。ＣＰＵ１１は、メニュー表示部１２１の処理で再実行機能が無効に設定されている場合（Ｓ２０９：Ｎｏ）、選択されたファイルを検証対象として取得して、そのファイルパスを検証対象のファイルパスとして設定し（Ｓ２１１）、文書検証処理に戻る。
【００８３】
ＣＰＵ１１はメニュー表示部１２１の処理で再実行機能が有効に設定されている場合（Ｓ２０９：Ｙｅｓ）、前回文書検証処理が実行されたときのログ情報２５を記憶部２０から読み込む。そして、ＣＰＵ１１は、ステップＳ２０８で選択されたファイルのファイルパスをキーにログ情報２５を検索し、ログ情報２５の中に選択されたファイル（表計算文書２４）が含まれているか否か判別する（Ｓ２１０）。
ＣＰＵ１１は、ログ情報２５の中に選択されたファイルが含まれている場合（Ｓ２１０：Ｙｅｓ）、選択されたファイル（表計算文書２４）を検証対象として取得して、そのファイルパスを検証対象のファイルパスとして設定し（Ｓ２１１）、文書検証処理に戻る。
ＣＰＵ１１は、ログ情報２５に選択されたファイル（表計算文書２４）が含まれていない場合（Ｓ２１０：Ｎｏ）、前回の文書検証処理ではエラーとならなかったファイルであるため、選択されたファイル（表計算文書２４）を検証済みとみなし、ステップＳ２０１に戻る。これにより、前回の文書検証処理でエラーとならなかった表計算文書２４を検証処理の対象から除外することができる。
【００８４】
図１７は、検証処理１０８Ａ、１０８Ｂの処理の流れを示す。
まずチェック対象の表計算文書２４のファイルパスを元にファイル（表計算文書２４）をオープンする（Ｓ３１）。
次に実行中のルールのルール種別を決定し（Ｓ３２）、ルール種別が１の場合は単項検証処理（Ｓ３３１）、２の場合は２項検証処理（Ｓ３３２）、３の場合は行単項検証処理（Ｓ３３３）、４の場合は行２項検証処理（Ｓ３３４）、５の場合は列単項検証処理（Ｓ３３５）、６の場合は列２項検証処理（Ｓ３３６）を実行する。対象のファイルが複数のシートで構成されている場合は各々のシートに対しチェック処理を実行する。ＣＰＵ１１は、検証を終了すると、チェック対象ファイル（表計算文書２４）をクローズする（Ｓ３４）。
【００８５】
単項検証処理（Ｓ３３１）では実行中のルールの確認先位置_列、確認先位置_行にある対象ファイルのセル内容が確認先一致条件を満たすかどうか評価を行う。実行中ルールのエラー反転出力フラグがＯＦＦかつ確認先一致条件を満たさない場合もしくは実行中ルールのエラー反転出力フラグがＯＮかつ確認先一致条件を満たす場合はログ出力部１２６にファイルパス、対象ファイル名、対象シート名、チェック対象のセルの列と行位置、エラーメッセージ内容の情報を渡し、ログ出力部１２６を呼び出す。
【００８６】
２項検証処理（Ｓ３３２）では実行中のルールの前提位置_列、前提位置_行にある対象ファイルのセル内容が前提一致条件を満たすかどうか評価を行う。一致しない場合はチェック処理対象から除外とみなしそのまま処理を終了する。一致する場合は、単項検証処理（Ｓ３３１）と同じ処理を実行する。
【００８７】
図１８はステップＳ３３３の行単項検証処理の流れを示す。
まず前提判定処理（Ｓ３３３１）で実行中のルールの前提位置_列、前提位置_行にある対象ファイルのセル内容が前提一致条件を満たすかどうか評価を行う。前提条件に一致しない場合はチェック処理対象から除外とみなしそのまま処理を終了する。
一致する場合は、項目列判定処理（Ｓ３３３２）に移る。項目列判定処理（Ｓ３３３２）ではルールの項目列が０かどうか判定を行う。ルールの項目列が０の場合、項目列は未設定とみなし、ルールの項目列が０以外の場合は項目列が設定されているとみなす。項目列が設定されている場合、ルールの確認先項目一致条件が設定されていれば確認先行探索処理（Ｓ３３３３）を実行する。また、ルールの確認先項目一致条件が設定されていなければ確認先行探索処理（Ｓ３３３３）を実行せずにループ停止項目一致条件の判定処理に進む。確認先行探索処理（Ｓ３３３３）では対象ファイルの項目列で指定された列全体に対してルールの確認先項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ１２内の確認先行に格納する。またルールのループ停止項目一致条件が設定されていればループ停止対象行探索処理（Ｓ３３３４）を実行する。また、ルールのループ停止項目一致条件が設定されていなければループ停止対象行探索処理（Ｓ３３３４）を実行せずに必須データ確認処理（Ｓ３３３５）を実行する。ループ停止対象行探索処理（Ｓ３３３４）では同じ列全体に対してルールのループ停止項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ１２内のループ停止対象行に格納する。
【００８８】
次に必須データ確認処理（Ｓ３３３５）でチェックに必要なデータ（確認先行、ループ停止対象行）が揃っているかどうかチェックを行う。具体的にはメモリ１２内の確認先行が０かどうかチェックし、０の場合はルールの確認先位置_行も０かどうかをチェックする。ルールの確認先位置_行が０でなければメモリ１２内の確認先行に値を格納する。もしルールの確認先位置_行も０の場合は、設定エラー処理（Ｓ３３３８）でログ出力部１２６にファイルパス、対象ファイル名、対象シート名、エラーメッセージ“確認先行が設定されていません“のデータを渡し、ログ出力部１２６を呼ぶ。ループ停止対象行についても確認先行と同様に、設定されている場合はメモリ１２内のループ停止対象行に値を格納し、未設定の場合は設定エラー処理（Ｓ３３３８）でログ出力部１２６にエラーメッセージ”ループ停止対象行が設定されていません“のデータを渡し、ログ出力部１２６を呼ぶ。
【００８９】
チェック処理に必要なデータが揃っている場合、走査列の開始値をルールの確認先位置_列に設定し、ループ停止判定処理（Ｓ３３３６）に進む。ループ停止判定処理（Ｓ３３３６）では対象ファイル内でメモリ内のループ停止対象行と走査列に該当するセルに対してループ停止条件を満たすかどうかチェックする。ループ停止条件を満たさないあるいは走査列が最大確認範囲_列を超えた場合は処理を終了する。確認先判定処理（Ｓ３３３７）では走査列、確認先行にあるセルが確認先一致条件を満たすかどうか評価を行う。実行中ルールのエラー反転出力フラグがＯＦＦかつ確認先一致条件を満たさない場合もしくは実行中ルールのエラー反転出力フラグがＯＮかつ確認先一致条件を満たす場合はログ出力部１２６にファイルパス、対象ファイル名、対象シート名、チェック対象のセルの列と行位置、エラーメッセージ内容の情報を渡し、ログ出力部１２６を呼び出す。確認先一致の評価後、走査列をインクリメントし、ループ停止判定処理（Ｓ３３３６）を呼び出す。以上より行単項検証処理（Ｓ３３３）を実現できる。
【００９０】
図１９はステップＳ３３４の行２項検証処理の流れを示す。
行単項検証処理（Ｓ３３３）と共通の処理については同一のステップ番号を付して説明を省略し、差異のある部分のみ説明する。
行２項検証処理（Ｓ３３４）では前提判定処理（Ｓ３３４３）を各列に対して実施しているため、最初に項目列判定処理（Ｓ３３３２）を実行する。または項目列設定がされている場合、前提行探索処理（Ｓ３３４１）が追加される。前提行探索処理（Ｓ３３４１）では対象ファイルの項目列で指定された列全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの行位置をメモリ１２内の前提項目行に格納する。また必須データ確認処理（Ｓ３３４２）では確認先行、ループ停止対象行に加え前提項目行が設定されているかどうかを確認する。具体的にはメモリ１２内の前提項目行が０かどうかチェックし、０の場合はルールの前提位置_行も０かどうかをチェックする。ルールの前提位置_行が０でなければメモリ１２内の前提行に値を格納する。もしルールの前提位置_行も０の場合は、設定エラー処理でログ出力部１２６にファイルパス、対象ファイル名、対象シート名、エラーメッセージ“前提行が設定されていません“のデータを渡し、ログ出力部１２６を呼ぶ。
【００９１】
必須データ確認処理（Ｓ３３４２）で必要なデータが揃った場合、走査列の開始値をルールの確認先位置_列に設定し、ループ停止判定処理を実行する。ループ停止判定処理でループ停止条件を満たすかどうかチェックし、ループ停止条件を満たさない場合は行２項検証処理（Ｓ３３４）を終了する。ループ停止条件を満たさない場合は前提判定処理（Ｓ３３４３）を実行する。前提判定処理（Ｓ３３４３）では走査列、前提行にあるセルが前提一致条件を満たすかどうか評価を行う。実行中ルールのエラー反転出力フラグがＯＦＦかつ前提一致条件を満たさない場合もしくは実行中ルールのエラー反転出力フラグがＯＮかつ前提一致条件を満たす場合は確認先判定処理（Ｓ３３３７）に移り、満たさない場合は走査列をインクリメントし、ループ停止判定処理に移る。確認先判定処理（Ｓ３３３７）を実行後、走査列をインクリメントし、ループ停止判定処理に移る。
【００９２】
図２０はステップＳ３３５の列単項検証処理の流れを示す。
行単項検証処理（Ｓ３３３）と基本的な処理の流れは同じで行と列が入れ替わるだけのため差異の部分のみ説明する。
項目行判定処理（Ｓ３３５２）ではルールの項目行が０かどうか判定を行う。確認先列探索処理（Ｓ３３５３）ではファイルの項目行で指定された行全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ１２内の確認先列に格納する。ループ停止対象列探索処理（Ｓ３３５４）では同じ行全体に対してルールのループ停止項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ１２内のループ停止対象列に格納する。必須データ確認処理（Ｓ３３５５）ではチェックに必要なデータ（確認先列、ループ停止対象列）が揃っているかどうかチェックを行う。チェック処理に必要なデータが揃っている場合、走査行の開始値をルールの確認先位置_行に設定し、ループ停止判定処理（Ｓ３３５６）に進む。ループ停止判定処理（Ｓ３３５６）では対象ファイル内でメモリ内のループ停止対象列と走査行に該当するセルに対してループ停止条件を満たすかどうかチェックする。ループ停止条件を満たすあるいは走査行が最大確認範囲_行を超えた場合は処理を終了する。確認先判定処理（Ｓ３３５７）で走査行、確認先列にあるセルが確認先一致条件を満たすかどうか評価を行う。確認先一致の評価後、走査行をインクリメントし、ループ停止判定処理（Ｓ３３５６）を呼び出す。
【００９３】
図２１はステップＳ３３６の列２項検証処理の流れを示す。
行２項検証処理（Ｓ３３４）と処理の流れは同じで行と列が入れ替わるだけでまた項目行判定処理（Ｓ３３５２）、確認先列探索処理(Ｓ３３５３)、ループ停止対象列探索処理（Ｓ３３５４）、ループ停止判定処理（Ｓ３３５６）に関してはステップＳ３３５の列単項検証処理と同一のため差異の部分のみ説明する。
前提列探索処理（Ｓ３３６１）では対象ファイルの項目行で指定された行全体に対してルールの前提項目一致条件を満たすセルを探し、一致条件を満たすセルが見つかればそのセルの列位置をメモリ１２内の前提項目列に格納する。必須データ確認処理（Ｓ３３６２）では確認先列、ループ停止対象列に加え前提項目列が設定されているかどうかを確認する。必須データ確認処理（Ｓ３３６２）で必要なデータが揃った場合、走査行の開始値をルールの確認先位置_行に設定し、ループ停止判定処理を実行する。前提判定処理（Ｓ３３６３）では走査行、前提列にあるセルが前提一致条件を満たすかどうか評価を行う。
ログ出力部１２６では文書検証部１２５から来た出力データを元にファイルオープンし、処理時刻、ファイルパス、ファイル名、シート名、列、行、メッセージの順にカンマ区切りでログ情報２５に１行毎に追記し、ファイルをクローズする。図２２はログ情報２５の一例を示す。
【００９４】
以上で文書検証部１２５の処理の説明は終わり、図２のフォルダ構成、図３のＰＣＬに対して図４、図６、図８の各種ＤＢデータでメニュー表示部１２１の再実行機能を無効で設定した場合の具体的な処理の流れを以降で説明する。
【００９５】
まず文書検証部１２５が呼ばれると図１５においてファイル走査処理（Ｓ１０１）が呼ばれ、図１６のファイル走査処理ではまずルートの直下にファイルがあるかどうかを確認する。しかし、ファイルはないため次にサブフォルダの存在を確認する。するとＰＣＬのフォルダが見つかるためＰＣＬをキーにドキュメント定義情報ＤＢ２１の一致条件を満たすレコードを摘出する。図４のようにドキュメント種別ＩＤのデータが一致条件を満たすレコードがあるため、ドキュメント種別ＩＤの情報をメモリ１２に格納し、現在走査中のファイルパスをＰＣＬのフォルダのパスに更新する。
【００９６】
次にＰＣＬのフォルダの直下にファイルがあるかどうかを確認するがファイルは見つからないため、サブフォルダの存在を確認する。するとチームＡのサブフォルダが見つかるためチームＡをキーにドキュメント定義情報ＤＢ２１の一致条件を満たすレコードを抽出する。しかしチームＡに一致するレコードは存在しないため、ドキュメント種別ＩＤの情報は更新しない。そして現在走査中のファイルパスをチームＡのファイルパスに更新する。
次にチームＡの直下にファイルがあるかどうかを確認する。するとファイルが存在するので再確認フラグがＯＮかＯＦＦか確認する。メニュー表示部１２１で再実行機能にチェックされていない場合は再確認フラグがＯＦＦになり、対象ファイルパスを設定しファイル走査処理（Ｓ１０１）が完了する。
【００９７】
ファイル走査処理（Ｓ１０１）で対象ファイルパスが指定されているので検証ルールを抽出する処理（Ｓ１０３）を行う。検証ルールの抽出処理（Ｓ１０３）ではメモリ１２に格納されたドキュメント種別ＩＤを参照し、この値をキーとして関連付け情報ＤＢ２２からドキュメント種別ＩＤが１のレコードを抽出する。図６より該当するレコードは３件見つかり、ルールＩＤ２１、２８，２９がメモリ１２に保存される。メモリ１２に保存されたルールＩＤ２１，２８，２９をキーにルール定義情報ＤＢ２３のルールＩＤと一致するレコードを抽出すると図８となり、抽出されたレコードがメモリ１２に保存される。
【００９８】
ルールＩＤ２１、２７，２８のルールから順に処理が進められるが、ルールＩＤ２１はテンプレートフラグがＯＮとなっているためテンプレートルールとして認識される。そのためルールＩＤ２１の処理はスキップされ、ルールＩＤ２７のルールの処理から実行される。
【００９９】
ルールＩＤ２７はテンプレートフラグがＯＦＦであるため、関連テンプレートＩＤが設定されているかを確認する。ルールＩＤ２７の関連テンプレートＩＤは２１と設定されているため、テンプレートルールを抽出する処理（Ｓ１０７）を行う。
テンプレートルールを抽出する処理（Ｓ１０７）ではテンプレートフラグがＯＮかつルールＩＤが２１のレコードを抽出する。結果としてルールＩＤ２１が見つかったためルールＩＤ２１に対して検証処理（Ｓ１０８Ａ）を実行する。検証処理（Ｓ１０８Ａ）で対象となるチームＡのＰＣＬファイルをオープンする。次にルールＩＤ２１のルール種別は１であるため単項検証処理（Ｓ３３１）を実行する。
【０１００】
単項検証処理（Ｓ３３１）ではルールＩＤ２１の確認先位置_列が１、確認先位置_行が１で確認先一致条件が"チェック条件"となっているため、オープンしたファイルの１行１列目のセルの値が"チェック条件"と同じかチェックする。図３より１行１列目は"チェック条件"であるため条件を満たし、またルールＩＤ２１のエラー反転出力フラグはＯＦＦであるため、テンプレートルールを満たしていると認識される。テンプレートルールを満たしているためルールＩＤ２７に対して検証処理（Ｓ１０８Ｂ）を実行する。検証処理（Ｓ１０８Ｂ）でルールＩＤ２７のルール種別は４であるため行２項検証処理（Ｓ３３４）を実行する。
【０１０１】
行２項検証処理（Ｓ３３４）ではまず項目列判定処理（Ｓ３３３２）でルールＩＤ２７の項目列が０かどうか判定を行う。ルールＩＤ２７の項目列は０であるため必須データ確認処理（Ｓ３３４２）に移る。必須データ確認処理（Ｓ３３４２）でメモリ１２内の前提項目行は０であるため、ルールＩＤ２７の前提位置_行が０かどうか判定を行う。ルールＩＤ２７の前提位置_行は１であるためメモリ１２内の前提項目行を１に更新する。確認先行も同様にメモリ１２内では０だがルールＩＤ２７の確認先位置_行は１２であるためメモリ１２内の確認先行を１２に更新する。ループ停止対象行も同様にメモリ１２内では０だがルールＩＤのループ停止対象行は１であるためメモリ内のループ停止対象行を１に更新する。結果としてチェックに必要なデータは揃っているため走査列の開始値をルールＩＤ２７の確認先位置_列である３に設定され、ループ停止判定処理（Ｓ３３３６）に進む。ループ停止判定処理（Ｓ３３３６）ではオープンしたファイルの走査列とループ停止対象行に該当するセルがループ停止条件を満たすかどうか判定を行う。ファイルの走査列３、ループ停止対象行１に該当するセルは”０００１”でループ停止条件は”．＋”であり、ループ停止条件を満たすので前提判定処理（Ｓ３３４３）に進む。
【０１０２】
前提判定処理（Ｓ３３４３）ではオープンしたファイルの走査列と前提行に該当するセルが前提一致条件を満たすかどうか判定を行う。ファイルの走査列３、前提行１に該当するセルは"０００１"で前提一致条件は”￥ｄ｛４｝”であり、前提一致条件を満たすので確認先判定処理（Ｓ３３３７）に進む。
確認先判定処理（Ｓ３３３７）ではオープンしたファイルの走査列と確認先行に該当するセルが確認先一致条件を満たすかどうか判定を行う。ファイルの走査列３、確認先行１２に該当するセルは”５／２６”で確認先一致条件は”．＋”であり、エラー反転出力フラグがＯＦＦのため確認先一致条件を満たすのでファイルの走査列をインクリメントし、ループ停止判定処理（Ｓ３３３６）に進む。ループ停止判定処理（Ｓ３３３６）でファイルの走査列４、ループ停止対象行１に該当するセルは”０００２”でループ停止条件は”．＋”であり、ループ停止条件を満たすので前提判定処理（Ｓ３３４３）に進む。
【０１０３】
前提判定処理（Ｓ３３４３）でファイルの走査列４、前提行１に該当するセルは”０００２”で前提一致条件は”￥ｄ｛４｝”であり、前提一致条件を満たすので確認先判定処理（Ｓ３３３７）に進む。
確認先判定処理（Ｓ３３３７）でファイルの走査列４、確認先行１２に該当するセルは”  ”で確認先一致条件は”．＋”であり、エラー反転出力フラグがＯＦＦのため確認先一致条件を満たさないため、ルールＩＤ２７のエラーメッセージ内容を参照し、ログ出力部１２６にファイルパス：”Ｃ：￥チームＡ￥ＰＣＬ”、対象ファイル名：”ＰＣＬ．ｘｌｓ”、対象シート名："１"、列："４"、行："１２"、エラーメッセージ内容："確認日が未記入です。"の情報を渡し、ログ出力部１２６で処理を受け付けた時刻の情報を付与し、カンマ区切りで処理時刻、ファイルパス、ファイル名、シート名、行、列、メッセージの順に記載を行う。今回は下記情報がログ情報２５に追記される。
"2009/8/22
14:30","C:\チームA\PCL","PCL1.xls","1","12","4","確認日が未記入です。"
【０１０４】
次に走査列をインクリメントし、走査列５ではループ停止条件、前提一致条件を満たすため確認先判定処理（Ｓ３３３７）に進む。確認先判定処理（Ｓ３３３７）でファイルの走査列５、確認先行１２に該当するセルは"○"で確認先一致条件は”．＋”であり、エラー反転出力フラグがＯＦＦのため確認先一致条件を満たすので走査列をインクリメントし、ループ判定処理に進む。
走査列６，７の場合も同様でループ停止条件、前提一致条件、確認先一致条件をすべて満たしているので走査列をそのままインクリメントされる。走査列８の場合は走査列４と同様で確認先一致条件を満たさないためログ出力部１２６で下記ログを追加出力する。
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","8","確認日が未記入です。"
走査列９の場合ループ停止判定処理（Ｓ３３３６）でファイルの走査列９、ループ停止対象行１に該当するセルは”  ”でループ停止条件は”．＋”でありループ停止条件を満たさないため行２項検証処理を終了し、対象ファイルをクローズする。
【０１０５】
次のルールＩＤ２８に対しても同様に関連テンプレートが２１と設定されているためルールＩＤ２１に対して検証処理（Ｓ１０８Ａ）を実行する。結果としてテンプレートルールを満たしているためルールＩＤ２８に対して検証処理（Ｓ１０８Ｂ）を実行する。ルールＩＤ２８のチェック種別は４であるため行２項検証処理（Ｓ３３４）を実行する。行２項検証処理（Ｓ３３４）内の項目列判定処理（Ｓ３３３２）でルールＩＤ２８の項目列が０かどうか判定を行う。項目列は１と設定されているため、前提項目行、確認先行、ループ停止対象行の探索処理に移る。
【０１０６】
まずルールＩＤ２８の前提項目一致条件は”チェック条件”と設定されているため、対象ファイルの項目列である１列目にチェック条件のキーワードと一致する行を検索する。図３より１行１列目のセルが条件を満たすため前提項目行は１がセットされる。次にルールＩＤ２８の確認先項目一致条件は”確認日”と設定されているため、対象ファイルの項目列である１列目にチェック条件のキーワードと一致する行を検索する。図３より１２行１列目のセルが条件を満たすため確認先行は１２がセットされる。次にルールＩＤ２８のループ停止項目一致条件は”チェック条件”と設定されているため、対象ファイルの項目列である１列目にチェック条件のキーワードと一致する行を検索する。図３より１行１列目のセルが条件を満たすためループ停止行は１がセットされる。
【０１０７】
次に必須データ確認処理（Ｓ３３４２）でメモリ１２内の前提項目行、確認先行、ループ停止行を見るがいずれもセットされているため、走査列の開始値をルールＩＤ２８の確認先位置_列である３に設定し、ループ停止判定処理に進む。ループ停止条件及び前提一致条件はルールＩＤ２７と同じのため３〜８列目は確認先判定処理（Ｓ３３３７）の動作のみ説明する。確認先判定処理（Ｓ３３３７）でルールＩＤ２８の確認先一致条件である￥ｄ｛１，２｝／￥ｄ｛１，２｝を満たさない列は４列目の”  ”,５列目の”○”,８列目の”  ”が該当し、エラーメッセージ内容は"確認日が不正です。"であるためログ出力部１２６では下記３行がエラーログとして追記される。
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","4","確認日が不正です。"
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","5","確認日が不正です。"
"2009/8/22
14:31","C:\チームA\PCL","PCL1.xls","1","12","8","確認日が不正です。"
【０１０８】
走査列が９の場合、ループ停止判定処理でファイルの走査列９、ループ停止対象行１に該当するセルは”  ”でループ停止条件は”．＋”でありループ停止条件を満たさないため行２項検証処理を終了し、対象ファイルをクローズする。
【０１０９】
以上でドキュメント種別に関連するルールに関する検証処理を一通り実行したことになるので、ファイル走査処理（Ｓ１０１）にて次のチェック対象のファイルを探索する。図２のチームＡ以下にあるファイル全てチェックが終わると、チームＢのフォルダに移りチームＢ以下のファイル全てをチェックしていく、ＰＣＬのサブフォルダ全てに対して同様の処理を進め、議事録のフォルダに走査が移った場合、対象ドキュメント種別情報はルートの状態に戻り、議事録がドキュメント定義情報ＤＢ２１の一致条件に合わなければチェック対象から外れる。ドキュメント定義情報ＤＢ２１で議事録、設計文書に関する定義は未設定であるため議事録及び設計文書以下のフォルダに対してチェックは実行されず文書検証部１２５の処理を終了する。
【０１１０】
なお、上記実施形態では、ルールの種別を示すルール種別情報をルール定義情報ＤＢ２３に明示的に格納したが、ルール種別情報は、ルール定義情報ＤＢ２３に明示的に格納せず、位置情報に黙示的に含まれており、検証処理の際に位置情報から求めることとしても良い。
例えば、図８のルール定義情報ＤＢ２３の中の確認位置＿列欄と確認位置＿行欄と確認先一致条件欄のみ定義され、前提欄と項目欄とループ停止条件欄の中の各項目が全て０または空白であった場合、ルール種別情報を単項検証ルールと判別することができる。
【０１１１】
また、上記実施形態では、表計算文書２４やその他の文書は記憶部２０のフォルダに格納されているとしたが、フォルダは単なる名称に過ぎず、例えば、記憶部２０のディレクトリ等に格納されているとしても良い。
【０１１２】
以上説明したように、本発明によれば、複数のセルを含む表計算文書の妥当性をセルの位置情報を含めて検証することができる。
また、関連付け情報ＤＢ２２とルール定義情報ＤＢ２３を分けて管理しているため、他人が作成したルールの展開もしくは他人へのルールの展開が容易に実現できる。
また、ルール定義情報ＤＢ２３でルールをデータベース化しているため、ルール種別を追加したい場合でも既に定義されたデータへの悪影響を無くすことができる。
また、テンプレート用のルールを用意することで想定したテンプレートに対してのみルールを実施することができ、誤認識による過剰検出を抑止することができる。
【０１１３】
更に、本実施形態の文書検証装置によれば、次のような効果がある。
位置情報を含んだ表計算文書の検証ルールを６種類のルール種別に基づきＧＵＩ上で表計算文書の様々な検証パターンに追従した表計算文書の検証ルールの設定及び検証ルールと対象となる表計算文書の紐付けが容易にできる。
また、ルール編集部１２４にシミュレート機能を持たせることでルール編集後すぐにルール自体の評価を行うことができる。
また、エラーとなった文書を修正しエラーとなっていた文書のみ再度実行したい場合に対して前回実行したログ情報２５を参照し、文書検証部１２５でチェック実行可否を自動的に判断することで大量の表計算文書に対して効率的に処理を実行できる。
【０１１４】
以上、本発明の実施形態について説明したが、設計上の都合やその他の要因によって必要となる様々な修正や組み合わせは、請求項に記載されている発明や発明の実施形態に記載されている具体例に対応する発明の範囲に含まれると理解されるべきである。
【符号の説明】
【０１１５】
１…文書検証装置、１０…処理部、１１…ＣＰＵ、１２…メモリ、１２１…メニュー表示部、１２２…ドキュメント情報編集部、１２３…関連情報編集部、１２４…ルール編集部、１２５…文書検証部、１２６…ログ出力部、２０…記憶部、２１…ドキュメント定義情報データベース、２２…関連付け情報データベース、２３…ルール定義情報データベース、２４…表計算文書、２５…ログ情報、３０…入力部、４０…表示部、
５１…ドキュメント種別一覧表示部、５２…ドキュメント設定ボタン、５３…ルール一覧表示部、５４…ルール設定部５４、６１…ルール種別設定部、６２…テンプレート情報設定部、６３…座標・一致条件設定部、６４…プレビュー機能部。
【図１】
2011090598.tif 000003
【図２】
2011090598.tif 000004
【図３】
2011090598.tif 000005
【図４】
2011090598.tif 000006
【図５】
2011090598.tif 000007
【図６】
2011090598.tif 000008
【図７】
2011090598.tif 000009
【図８】
2011090598.tif 000010
【図９】
2011090598.tif 000011
【図１０】
2011090598.tif 000012
【図１１】
2011090598.tif 000013
【図１２】
2011090598.tif 000014
【図１３】
2011090598.tif 000015
【図１４】
2011090598.tif 000016
【図１５】
2011090598.tif 000017
【図１６】
2011090598.tif 000018
【図１７】
2011090598.tif 000019
【図１８】
2011090598.tif 000020
【図１９】
2011090598.tif 000021
【図２０】
2011090598.tif 000022
【図２１】
2011090598.tif 000023
【図２２】
2011090598.tif 000024