(57)【特許請求の範囲】
【請求項１】
計算式が含まれる表計算データと、十進数を用いた計算により得られる計算精度が指定計算精度として示される指定計算精度情報とを入力する表計算データ入力部と、
前記表計算データ入力部により入力された表計算データと指定計算精度情報とを対応付けて記憶する表計算データ記憶部と、
前記表計算データ内の計算式に対する入力値を通信ネットワークを介して受信する入力値受信部と、
前記入力値受信部により受信された入力値から得られる浮動少数点数と前記表計算データ内の計算式とを用いて計算を行い、浮動少数点数を用いた計算結果が非数及び無限のいずれかになった場合は浮動少数点数を用いた計算結果を採用し、浮動少数点数を用いた計算結果が非数及び無限のいずれでもない場合は、前記入力値受信部により受信された入力値から得られる十進浮動小数点数と前記表計算データ内の計算式とを用いて計算を行い、十進浮動小数点数を用いた計算結果を採用する指定精度計算部とを有することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、更に、
前記指定精度計算部により採用された計算結果を、前記通信ネットワークを介して、前記入力値の生成元に送信する計算結果送信部を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記表計算データ入力部は、
前記表計算データ内の入力用セルの位置と出力用セルの位置とが示されるセル位置情報を、前記表計算データと前記指定計算精度とともに入力し、
前記入力値受信部は、
前記表計算データ内の計算式に対する入力値を、前記セル位置情報に示されるいずれかの入力用セルと関連付けて受信し、
前記指定精度計算部は、
前記入力値受信部により受信された入力値を、前記表計算データにおいて、当該入力値と関連付けられている入力用セルの位置に適用して計算を行い、
前記表計算データ内の出力用セルの値を計算結果とすることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記表計算データ入力部は、
表計算データを定義する利用者により任意に定義された入力用セルの位置と出力用セルの位置とが示されるセル位置情報を入力することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
コンピュータが、計算式が含まれる表計算データと、十進数を用いた計算により得られる計算精度が指定計算精度として示される指定計算精度情報とを入力する表計算データ入力ステップと、
前記コンピュータが、前記表計算データ入力ステップにより入力された表計算データと指定計算精度情報とを対応付けて記憶する表計算データ記憶ステップと、
前記コンピュータが、前記表計算データ内の計算式に対する入力値を通信ネットワークを介して受信する入力値受信ステップと、
前記コンピュータが、前記入力値受信ステップにより受信された入力値から得られる浮動少数点数と前記表計算データ内の計算式とを用いて計算を行い、浮動少数点数を用いた計算結果が非数及び無限のいずれかになった場合は浮動少数点数を用いた計算結果を採用し、浮動少数点数を用いた計算結果が非数及び無限のいずれでもない場合は、前記入力値受信ステップにより受信された入力値から得られる十進浮動小数点数と前記表計算データ内の計算式とを用いて計算を行い、十進浮動小数点数を用いた計算結果を採用する指定精度計算ステップとを有することを特徴とする情報処理方法。
【請求項６】
計算式が含まれる表計算データと、十進数を用いた計算により得られる計算精度が指定計算精度として示される指定計算精度情報とを入力する表計算データ入力ステップと、
前記表計算データ入力ステップにより入力された表計算データと指定計算精度情報とを対応付けて記憶する表計算データ記憶ステップと、
前記表計算データ内の計算式に対する入力値を通信ネットワークを介して受信する入力値受信ステップと、
前記入力値受信ステップにより受信された入力値から得られる浮動少数点数と前記表計算データ内の計算式とを用いて計算を行い、浮動少数点数を用いた計算結果が非数及び無限のいずれかになった場合は浮動少数点数を用いた計算結果を採用し、浮動少数点数を用いた計算結果が非数及び無限のいずれでもない場合は、前記入力値受信ステップにより受信された入力値から得られる十進浮動小数点数と前記表計算データ内の計算式とを用いて計算を行い、十進浮動小数点数を用いた計算結果を採用する指定精度計算ステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークを介して受信した入力値と、表計算データ（以下、スプレッドシートともいう）内の計算式とを用いて、所定の計算を行う情報処理装置等に関する。
【背景技術】
【０００２】
特許文献１に記載の技術では、スプレッドシートにビジネスロジックのルールや計算式を記述し、通信ネットワーク経由でスプレッドシートへの入力値を受信し、入力値とスプレッドシート内の計算式を用いて計算を行っている。
この技術では、スプレッドシートを修正することで、業務管理者が直接業務のルールを変更することができる。
ビジネスロジックをアプリケーションで記述する必要がなくなり、アプリケーションの開発量が削減できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３３９３３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の技術では、スプレッドシートに記述した計算式に従って計算を行う場合、計算誤差が発生するという課題があった。
金銭の計算を行う場合、１円の誤差も発生することは許されないが、小さい誤差でも、金銭の計算では四捨五入を行うために誤差が計算結果に影響してしまう。
つまり、従来の技術では、金銭計算向けのスプレッドシートと、一般向けスプレッドシートとで計算精度を区別することができないため、金銭計算用の計算精度で計算されない場合に、金銭計算では許容されない誤差が生じてしまう可能性がある。
図１６に誤差が発生する例を示す。
図１６（ａ）では、０．１を二進数に変換したときに循環小数となり有限の桁数で表すことができないため、（０．３−０．２−０．１）＝０と正しく計算できない例を示している。
図１６（ｂ）では、（０．３−０．２−０．１）＝０と正しく計算できない結果、四捨五入した値が正しい値にならない例を示している。
【０００５】
本発明では、このような事情に鑑みたものであり、表計算データごとに、複数段階の計算精度の中から要求される計算精度の指定を受付け、指定された計算精度にて表計算データを用いた計算を行う情報処理装置等を実現することを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、
計算式が含まれる表計算データと、複数段階の計算精度の中から指定された計算精度である指定計算精度が示される指定計算精度情報とを入力する表計算データ入力部と、
前記表計算データ入力部により入力された表計算データと指定計算精度情報とを対応付けて記憶する表計算データ記憶部と、
前記表計算データ内の計算式に対する入力値を通信ネットワークを介して受信する入力値受信部と、
前記入力値受信部により受信された入力値と前記表計算データ内の計算式とを用いて、前記表計算データと対応付けられている指定計算精度情報に示される指定計算精度にて計算を行う指定精度計算部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、表計算データごとに、複数段階の計算精度の中から要求される計算精度の指定を受付け、指定された計算精度にて表計算データを用いた計算を行うことができるので、用途ごとに、要求される計算精度を満たす計算結果を得ることができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るＷｅｂサービス提供システムの構成例を示す図。
【図２】実施の形態１に係るスプレッドシート定義クライアント装置の構成例を示す図。
【図３】実施の形態１に係るスプレッドシート処理サーバ装置の構成例を示す図。
【図４】実施の形態１に係る計算要求入力クライアント装置の構成例を示す図。
【図５】実施の形態１に係る計算要求処理サーバ装置の構成例を示す図。
【図６】実施の形態１に係るスプレッドシートの属性情報の例を示す図。
【図７】実施の形態１に係るＷｅｂサービス提供システムにおける処理手順を示すフローチャート図。
【図８】実施の形態１に係るＷｅｂサービス提供システムにおける処理手順を示すフローチャート図。
【図９】実施の形態１に係るＷｅｂサービス提供システムにおける処理手順を示すフローチャート図。
【図１０】実施の形態１に係るスプレッドシートの例を示す図。
【図１１】実施の形態１に係る計算対象情報の例を示す図。
【図１２】実施の形態１に係る計算結果情報の例を示す図。
【図１３】実施の形態１に係る数値を表す文字列で数値を与えた例を示す図。
【図１４】実施の形態１に係る数値を浮動小数点と十進浮動小数点数の組で与えた例を示す図。
【図１５】実施の形態１に係る十進浮動小数点数が「なし」の場合の例を示す図。
【図１６】計算誤差が発生する例を示す図。
【図１７】実施の形態１に係るＷｅｂサービス提供システムの各装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
以下では、スプレッドシートを利用したＷｅｂサービス提供システムを説明する。
【００１０】
また、以下では、スプレッドシートのフォーマットは固定しないで、スプレッドシートの入力するセルの位置と結果が出力されるセルの位置のみを指定する方式を採用する。
これにより、アプリケーションの要件を取り入れた形式でスプレッドシートを記述することができ、ユーザが理解し易い形式でスプレッドシートを記述することが可能とする。
つまり、スプレッドシートのフォーマットを業務管理者が設計することができ、業務管理者は、その業務に最も適したフォーマットでスプレッドシートを作成することができる。
業務管理者が自由に決めることができるフォーマットには、スプレッドシートのサイズ、シートの枚数や、表の種類や、表のサイズや、表のカラムと行の名称や、スプレッドシートで使用する変数の種類や名称、データを入力するセルの位置、結果を出力するセルの位置などがある。
【００１１】
また、スプレッドシートに記述されている計算式で計算を行う場合は、金銭計算用のスプレッドシート（以下、金融向けのスプレッドシートという）と、一般向けスプレッドシート（科学技術計算用などを含む）を区別し、金融向けのスプレッドシートでは正確な計算を実行し、一般向けスプレッドシートの場合はＩＥＥＥ７５４（ＩＥＥＥ浮動小数点数演算標準）に従った演算を実行する。
スプレッドシートの評価では、スプレッドシート処理サーバ装置によりシート種別属性が参照されて、「金融向けスプレッドシート」と「一般向けスプレッドシート」が判別される。
「金融向けスプレッドシート」の場合は、十進数で正確な計算を実行し、「一般向けスプレッドシート」の場合は、二進数で高速に計算を行う。
【００１２】
また、業務のルールが変更された場合は、業務管理者がスプレッドシートの内容を修正する。
スプレッドシート検証機能を使用してスプレッドシートのフォーマットが崩れていないかを確認する。
また、スプレッドシート検証機能で試し計算を行い、スプレッドシートが想定通りの計算結果を出力することを確認する。
改修したスプレッドシートをスプレッドシート格納装置に保存して、スプレッドシート処理サーバ装置が起動時に読み込むことで、新しいスプレッドシートに従って業務ロジックが実行される。
スプレッドシートの有効期間開始日属性と有効期間終了日属性を記述することで、同じ業務に対して複数世代のスプレッドシートを作成することができる。
スプレッドシート処理サーバ装置は、有効期間開始日属性と有効期間終了日属性を参照して有効期間が対応しているスプレッドシートを選択して業務処理を実行する。
【００１３】
実施の形態１．
図１は、スプレッドシートを利用したＷｅｂサービス提供システムのシステム構成例を示している。
本実施の形態に係るＷｅｂサービス提供システムは、計算要求入力クライアント装置１００、計算要求処理サーバ装置１１０、スプレッドシート処理サーバ装置１２０、スプレッドシート格納装置１３０、及びスプレッドシート定義クライアント装置１４０を主要要素とする。
計算要求入力クライアント装置１００、計算要求処理サーバ装置１１０、及びスプレッドシート処理サーバ装置１２０は通信ネットワーク２００を介して接続されている。
スプレッドシート定義クライアント装置１４０は、業務管理者が利用する端末装置であり、業務管理者は、スプレッドシート格納装置１３０に格納するスプレッドシートを、表示装置１５１及び入力装置１５２を用いて、スプレッドシート定義クライアント装置１４０において生成する。
計算要求入力クライアント装置１００は、ユーザが利用する端末装置であり、ユーザは、スプレッドシート処理サーバ装置１２０に対する計算要求を、表示装置１６１及び入力装置１６２を用いて、計算要求入力クライアント装置１００において生成する。
【００１４】
図２は、スプレッドシート定義クライアント装置１４０の構成例を示す。
【００１５】
スプレッドシート定義部１４１は、業務管理者の指示に基づき、スプレッドシートを作成する。
また、スプレッドシート定義部１４１は、スプレッドシートの属性情報を設定する。
属性情報は、スプレッドシート処理サーバ装置１２０においてスプレッドシートを解釈して実行するときに参照される情報である。
属性情報には、図６に示すように、シート種別として、対応するスプレッドシートが金融向けのスプレッドシートであるか一般向けのスプレッドシートであるかが示されている。
つまり、属性情報には、スプレッドシートに要求される計算精度（金銭計算向けの計算精度か一般計算向けの計算精度か）が示されており、指定計算精度情報の例に相当する。
また、属性情報には、シートＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）、有効期間開始日、有効期間終了日、入力セル位置、出力セル位置が示される。
スプレッドシート拡張部１４２は、業務管理者の指示に基づき、スプレッドシートを拡張する。
スプレッドシートの拡張とは、スプレッドシート上に記述されている表の列や行を増やす等の作業である。
スプレッドシート検証部１４３は、業務管理者の指示に基づき、スプレッドシートの検証を行う。
スプレッドシート出力部１４４は、スプレッドシート定義部１４１により生成されたスプレッドシート、属性情報を表示するために、スプレッドシート、属性情報を表示装置１５１に出力する。
また、スプレッドシート出力部１４４は、スプレッドシート検証部１４３による検証結果を表示装置１５１に出力する。
【００１６】
図３は、スプレッドシート処理サーバ装置１２０及びスプレッドシート格納装置１３０の構成例を示す。
スプレッドシート処理サーバ装置１２０及びスプレッドシート格納装置１３０は、情報処理装置の例に相当する。
【００１７】
スプレッドシート格納装置１３０において、スプレッドシート情報入力部１３２は、スプレッドシート定義クライアント装置１４０から、スプレッドシートと属性情報を入力する。
なお、スプレッドシートと属性情報を合わせてスプレッドシート情報と表記する。
スプレッドシート情報入力部１３２は、表計算データ入力部の例に相当する。
スプレッドシート情報記憶部１３１は、スプレッドシート情報入力部１３２により入力されたスプレッドシートと属性情報を対応付けてスプレッドシート情報１３１０として記憶する。
スプレッドシート情報記憶部１３１は、表計算データ記憶部の例に相当する。
【００１８】
次に、スプレッドシート処理サーバ装置１２０において、計算対象情報受信部１２１は、計算対象情報を通信ネットワーク２００から受信する。
計算対象情報には、計算要求入力クライアント装置１００により生成された入力値（スプレッドシート内の計算式に対する入力値）が含まれている情報である。
計算対象情報受信部１２１は、入力値受信部の例に相当する。
計算結果情報返信部１２２は、スプレッドシートを用いた計算の結果を計算結果情報として、通信ネットワーク２００及び計算要求処理サーバ装置１１０を介して、計算要求入力クライアント装置１００に送信する。
計算結果情報返信部１２２は、計算結果送信部の例に相当する。
スプレッドシート解析部１２３は、計算対象情報に基づき、計算要求入力クライアント装置１００により要求されたスプレッドシートを特定する。
また、スプレッドシート解析部１２３は、特定したスプレッドシートを解釈し、また、スプレッドシートを用いた計算の結果を表す計算結果情報を生成する。
十進数任意精度演算部１２４は、スプレッドシート解析部１２３により金融向けスプレッドシートが選択された場合に、十進数を用いて、高精度の計算精度にて計算を行う。
浮動少数点数演算部１２５は、スプレッドシート解析部１２３により一般向けスプレッドシートが選択された場合に、十進数任意精度演算部１２４よりも低い計算精度にて、二進数を用いて高速に計算を行う。
十進数任意精度演算部１２４及び浮動少数点数演算部１２５は、指定精度計算部の例に相当する。
【００１９】
図４は、計算要求入力クライアント装置１００の構成例を示す。
【００２０】
計算要求送信部１０１は、ユーザの指示に基づき、計算要求を生成し、通信ネットワーク２００を介して計算要求処理サーバ装置１１０に送信する。
計算要求には、計算対象のスプレッドシートを指定するシートＩＤや、スプレッドシート内の計算式に対する入力値が含まれる。
計算結果受信部１０２は、スプレッドシート処理サーバ装置１２０からの計算結果情報を通信ネットワーク２００及び計算要求処理サーバ装置１１０を介して受信する。
計算結果表示部１０３は、計算結果受信部１０２が受信した計算結果情報を表示装置１６１に出力して、表示装置１６１に計算結果を表示させる。
【００２１】
図５は、計算要求処理サーバ装置１１０の構成例を示す。
【００２２】
計算要求受信部１１１は、計算要求入力クライアント装置１００から送信された計算要求を通信ネットワーク２００から受信する。
計算対象情報送信部１１２は、計算要求受信部１１１により受信された計算要求を、計算対象情報として通信ネットワーク２００を介してスプレッドシート処理サーバ装置１２０に送信する。
計算結果情報受信部１１３は、スプレッドシート処理サーバ装置１２０からの計算結果情報を通信ネットワーク２００を介して受信する。
計算結果返信部１１４は、計算結果情報受信部１１３により受信された計算結果情報を通信ネットワーク２００を介して計算要求入力クライアント装置１００に送信する。
【００２３】
次に、図７及び図８を参照して、本実施の形態に係るＷｅｂサービス提供システムの処理手順を説明する。
【００２４】
先ず、業務管理者は、スプレッドシート定義クライアント装置１４０のスプレッドシート定義部１４１を使用して、スプレッドシートを作成する（３０１）。
このとき、業務管理者は、スプレッドシート定義部１４１を使用して、図６のスプレッドシートの属性情報も作成する。
前述したように、属性情報はスプレッドシートを解釈して実行するときに参照する情報である。
図１０（ａ）にスプレッドシートの例を示し、図１０（ｂ）に図１０（ａ）のスプレッドシートに対応する属性情報の例を示す。
なお、図１０（ｂ）の例では、有効期間開始日、有効期間終了日は省略されている。
【００２５】
次に、業務管理者は、必要であれば、スプレッドシート定義クライアント装置１４０のスプレッドシート拡張部１４２を使用して、スプレッドシートを拡張する（３０２）。
拡張方法としては、スプレッドシート上に記述されている表の行を増やす場合や、表の列を増やす場合や、複数の表の行や列を一度に増やす拡張方法がある。
【００２６】
次に、業務管理者は、スプレッドシート定義クライアント装置１４０のスプレッドシート検証部１４３を使用して、スプレッドシートの検証を行う（３０３）。
検証内容としては、セルに設定されている数式の構文の間違いや、数式で参照されている参照先（セルやシート）が無効なセルや無効なシートを指していないか、セルの数式で記述されている表の検索内容が有効かなどの検証である。
図１０（ａ）に無効なセルの参照の例を示す。
【００２７】
次に、業務管理者は作成したスプレッドシートと属性情報をスプレッドシート格納装置１３０に保存する（３０４）。
スプレッドシート格納装置１３０では、スプレッドシート情報入力部１３２がスプレッドシートと属性情報を入力し、スプレッドシート情報記憶部１３１がスプレッドシートと属性情報とを対応付けてスプレッドシート情報１３１０として記憶する。
スプレッドシート格納装置１３０では、複数の業務のスプレッドシートを保存できる。
また、同じ業務の複数の世代のスプレッドシートを保存できる。
スプレッドシートの世代は有効期間開始日と有効期間終了日で指定する期間により世代をあらわすことができる。
【００２８】
次に、スプレッドシート処理サーバ装置１２０は、起動時に、全てのスプレッドシート情報１３１０をスプレッドシート格納装置１３０から読み込む（３０５）。
スプレッドシート処理サーバ装置１２０がスプレッドシート情報１３１０を読み込むのは起動時のみである。
スプレッドシートの評価や計算時の処理はスプレッドシート処理サーバ装置１２０内のワークメモリ上で行い、スプレッドシート格納装置１３０からスプレッドシートを読み込むことはない。
【００２９】
次に、ユーザは、計算要求入力クライアント装置１００を使用して、入力装置１６２から計算要求内容を入力して、計算要求送信部１０１を使用して送信する（３０６）。
ユーザは、計算要求送信部１０１を用いて、計算対象となるスプレッドシートのシートＩＤ、入力セル位置ごとの入力値を指定して計算要求内容を生成する。
入力値の指定は、例えば、対応するスプレッドシートのセル構成が示されるイメージ画面をＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）により表示装置１６１に表示し、ユーザがイメージ画面に表される入力セル位置ごとに入力値を指定することが考えられる。
【００３０】
次に、計算要求処理サーバ装置１１０は、計算要求受信部１１１を使用して、ユーザが送信した計算要求を受信する（３０７）。
【００３１】
次に、計算要求処理サーバ装置１１０は、計算要求の中からスプレッドシート処理サーバ装置１２０が受け付ける計算単位の情報を取り出して、それを計算対象情報として、計算対象情報送信部１１２を使いスプレッドシート処理サーバ装置に送信する（３０８）。
計算要求に複数の計算対象情報が含まれる場合は、複数の計算対象情報を送信する。
計算対象情報にはスプレッドシートを特定するためのシートＩＤも含まれる。
また、複数の世代のシートから対象のシートを選択するための「日付」の情報が含まれることがある。
計算対象情報の例を図１１に示す。
図１１では、シートＩＤ（２０１１０５０１）、期日（２０１１０５０１）入力値（日本、男性、２０等）がＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で記述されている計算対象情報を例示している。
【００３２】
次に、スプレッドシート処理サーバ装置１２０は、計算対象情報受信部１２１を使用して計算対象情報を受信する（３０９）。
【００３３】
次に、スプレッドシート処理サーバ装置１２０では、スプレッドシート解析部１２３が、受信した計算対象情報の中からシートＩＤを取り出して、対応するスプレッドシートを特定する。
また、日付が指定されていた場合は、スプレッドシート解析部１２３は、スプレッドシートの有効期間を参照して、複数の世代のスプレッドシートから該当するスプレッドシートを特定する。
そして、スプレッドシート解析部１２３は、特定したスプレッドシートの属性情報の入力セル位置属性（図６、図１０（ｂ））で指定されるセルに計算対象情報の入力値を設定する（３１０）。
入力値を設定するときの順序は、計算対象情報の中の最初のデータから順に、属性情報の入力セル位置属性の「入力位置１」から設定していく。
【００３４】
次に、スプレッドシート処理サーバ装置１２０において、属性情報の出力セル位置属性（図６、図１０（ｂ））で指定されている位置の全てのセルの値を計算するために、スプレッドシート解析部１２３が、スプレッドシートの解析と評価を行う（３１１）。
セルに設定されている式について、式の中で他のセルを参照している場合は、参照しているセルから値を取得し、式の中で変数が使用されていれば変数の値に置き換えるなどの処理を行う。
さらに参照先のセルに式が設定されている場合は同じことを繰り返す。
【００３５】
スプレッドシート解析部１２３は、セルの解析の中で、数値演算をみつけた場合は、スプレッドシートの属性情報のシート種別属性（図６、図１０（ｂ））を参照して処理の分岐を行う（３１２）。
【００３６】
もし、シート種別属性が「一般向けスプレッドシート」の場合は（３１３）に分岐する。
一方、シート種別属性が「金融向けスプレッドシート」の場合は（３１４）に分岐する。
【００３７】
一般向けスプレッドシートの場合は、浮動少数点数演算部１２５で計算を実行する（３１３）。
金融向けスプレッドシートの場合は、十進数任意精度演算部１２４で計算を実行する（３１４）。
十進数任意精度演算部１２４による計算の詳細は図９を使用して説明する。
【００３８】
次に、スプレッドシート処理サーバ装置１２０では、スプレッドシート解析部１２３が、出力セル位置で指定されているセルの解析と評価を全て実行した後、計算結果を「出力位置１」から順に並べて、計算結果情報としてまとめ、計算結果情報返信部１２２を使用して計算結果情報を計算要求処理サーバ装置１１０に返信する（３１５）。
計算結果情報の例を図１２に示す。
【００３９】
計算要求処理サーバ装置１１０では、計算結果情報受信部１１３で受信した計算結果情報をまとめて、計算結果として計算結果返信部１１４を通して計算要求入力クライアント装置１００に返信する（３１６）。
【００４０】
最後に、計算要求入力クライアント装置１００は、計算結果受信部１０２で受信した計算結果を計算結果表示部１０３及び表示装置１６１を使い表示する（３１７）。
【００４１】
次に、図９を用いて十進数任意精度演算部１２４の動作を説明する。
【００４２】
十進数任意精度演算部１２４は、スプレッドシート解析部１２３から四則演算子と二つの数値を受け取る（４０１）。
二つの数値は、数値を表す文字列で与えられる場合と、浮動小数点数と十進浮動少数点数の組で与えられる場合の二通りがある。
文字列で与えられる場合の例を図１３に示す。
浮動少数点数と十進浮動少数点数の組で与えた例を図１４に示す。
なお、二つのうち一方の数値のみが文字列で与えられている場合もある。また、十進浮動少数点数の値は「なし」の場合もある（図１５）。
【００４３】
次に、十進数任意精度演算部１２４は、二つの数値について、文字列で与えられているものがあるか判別して、文字列で与えられているものがある場合は（４０３）に進む。無い場合は（４０４）に進む（４０２）。
【００４４】
二つの数値が文字列で与えられている場合は、十進数任意精度演算部１２４は、二つの数値を表す文字列から浮動少数点数と、十進浮動少数点数を生成する（４０３）。
浮動少数点数に変換する方法は、ＩＥＥＥ７５４（ＩＥＥＥ浮動小数点数演算標準）に従う。
十進浮動少数点数への変換は文字列が表す値をそのまま十進数に変換する。
なお、浮動少数点数と十進浮動少数点数の違いは、浮動少数点数は内部表現が二進数になっているために、十進数の０．１は循環小数となるため正確な値を表すことができない。
それに対し、十進浮動少数点数は内部表現も十進数のため、０．１なども正確な値で表すことができる。
【００４５】
次に、十進数任意精度演算部１２４は、二つの浮動少数点数に対して、指定された演算子で演算を実行する（４０４）。
この演算はＩＥＥＥ７５４（ＩＥＥＥ浮動小数点数演算標準）に従って実行する。
【００４６】
次に、十進数任意精度演算部１２４は、計算の結果を参照して値が「非数」や「無限」になっているかを判別し、「非数」や「無限」になっている場合は（４０６）に進む。「非数」や「無限」になっていない場合は（４０７）に進む（４０５）。
【００４７】
計算結果が「非数」や「無限」になっている場合は、十進数任意精度演算部１２４は、浮動少数点数で計算した「非数」や「無限」の結果を浮動少数点数の計算結果とし、十進浮動少数点数の計算結果を「なし」とする（４０６）。
【００４８】
一方、計算結果が「非数」や「無限」でない場合は、十進数任意精度演算部１２４は、十進浮動少数点数の計算を実行する（４０７）。
十進数の計算は、例えばＪａｖａ（登録商標）のＢｉｇＤｅｃｉｍａｌクラスと同様に計算する。
そして、十進数任意精度演算部１２４は、十進浮動少数点数で計算した結果を十進浮動少数点数の計算結果とし、浮動少数点数で計算した結果を浮動少数点数の結果として採用する（４０８）。
【００４９】
最後に、十進数任意精度演算部１２４は、スプレッドシート解析部１２３に、計算結果を返す（４０９）。
また、スプレッドシート解析部１２３から浮動少数点数での計算結果と、十進浮動少数点数での計算結果を要求された場合はその二つの値も返す。
これらの二つの値は、引き続き次の計算を行う場合に、十進数任意精度演算部１２４に渡されて使用される。
【００５０】
以上のように、スプレッドシートの解析を実行するときに入力セル位置を判断する方式を採用すると共に、スプレッドシートの用途が金融と一般とを指定することで、スプレッドシートの計算精度を制御するようにしたことで、以下の効果が得られる。
１）スプレッドシートの属性で金融向けと一般向けを指定するだけで、スプレッドシートを金銭計算にも、科学技術計算にも利用できる。
２）十進数任意精度演算部は、お金の計算を正確に実行できると同時に、浮動少数点数の「非数」や「無限」にも対応している。
この十進数任意精度演算部を使用することで、浮動少数点数を使用して開発されたアプリケーションを、お金が扱えるよう改修することが容易になる。
３）スプレッドシートのフォーマットを固定する必要がなくなり、業務の要件に合わせて、スプレッドシートに記述する表の種類や形式や、行や列の用途を変更できるようになり、フォーマットが固定されている場合よりも、理解が容易でコンパクトなスプレッドシートを記述できる。
これにより、スプレッドシートの開発工数と保守の工数を削減できる。
つまり、特許文献１では、スプレッドシートにビジネスロジック（ビジネスルールや計算式）を記述するときのフォーマットが固定されており、そのため、指定された形式に従ってスプレッドシートを記述する必要があった。
しかしながら、本実施の形態では、スプレッドシートのフォーマットの自由度を高めることができる。
【００５１】
なお、上記の説明では、計算要求入力クライアント装置１００とスプレッドシート定義クライアント装置１４０との間に計算要求処理サーバ装置１１０を介在させていた。
しかし、スプレッドシート定義クライアント装置１４０が計算要求入力クライアント装置１００からの計算要求をそのまま利用でき、また、計算要求入力クライアント装置１００がスプレッドシート定義クライアント装置１４０からの計算結果情報をそのまま利用できるのであれば、計算要求入力クライアント装置１００とスプレッドシート定義クライアント装置１４０が直接通信を行うようにしてもよい。
【００５２】
また、上記の説明では、金融向けのスプレッドシートと一般向けのスプレッドシートという形で、それぞれのスプレッドシートに要求される計算精度を区別しているが、計算精度の区別の仕方は、これに限らない。
【００５３】
以上、本実施の形態では、次の手段を備えたスプレッドシートを利用したＷｅｂサービス提供システムを説明した。
（ａ）計算要求をユーザが入力するための計算要求入力クライアント装置１００、
（ｂ）計算要求を受信するとそれをＸＭＬ形式にしてスプレッドシート処理サーバ装置１２０に送信して、受信した計算結果を計算要求入力クライアント装置１００に返信する計算要求処理サーバ装置１１０、
（ｃ）スプレッドシートの計算式や表を解釈して計算を実行するスプレッドシート処理サーバ装置１２０、
（ｄ）シートの有効期限が設定することも可能であり、複数の世代のスプレッドシートを保持するスプレッドシート格納装置１３０、
（ｅ）スプレッドシートをＧＵＩで作成するスプレッドシート定義クライアント装置１４０、
（ｆ）スプレッドシートを表示する表示装置１５１、
（ｇ）スプレッドシートを入力する入力装置１５２、
（ｈ）計算結果を表示する表示装置１６１、
（ｉ）計算要求を入力する入力装置１６２。
【００５４】
また、本実施の形態では、計算要求入力クライアント装置１００が以下の手段を備えていることも説明した。
計算要求を計算要求処理サーバ装置１１０に送信する計算要求送信部１０１、
計算要求処理サーバ装置１１０からの計算結果を受信する計算結果受信部１０２、
計算結果をユーザに対して表示するために表示装置１６１に送る計算結果表示部１０３。
【００５５】
また、本実施の形態では、計算要求処理サーバ装置１１０が以下の手段を備えていることも説明した。
計算要求を計算要求入力クライアント装置１００から受け取る計算要求受信部１１１、
計算要求の中からスプレッドシートで計算するための情報を抜き出してスプレッドシート処理サーバ装置１２０に送る計算対象情報送信部１１２、
スプレッドシート処理サーバ装置１２０から返信された計算結果を受け取る計算結果情報受信部１１３、
計算結果情報を計算要求に対する計算結果に追加して計算要求入力クライアント装置１００に返信する計算結果返信部１１４。
【００５６】
また、本実施の形態では、スプレッドシート処理サーバ装置１２０が以下の手段を備えていることも説明した。
計算要求処理サーバ装置１１０から計算対象情報を受信する計算対象情報受信部１２１、
計算結果情報を計算要求処理サーバ装置１１０に返信する計算結果情報返信部１２２、
スプレッドシートを構文解析してスプレッドシートをメモリ上に読み込むスプレッドシート解析部１２３、
スプレッドシートに記述されている計算式のうち、お金に関係する正確な計算を実行する十進数任意精度演算部１２４、
スプレッドシートに記述されている計算式のうち、科学技術計算などのお金以外の計算を実行する浮動少数点数演算部１２５。
【００５７】
また、本実施の形態では、スプレッドシート格納装置１３０が以下の手段を備えていることも説明した。
複数の表や計算式を記述した、複数のスプレッドシートを入力するスプレッドシート情報入力部１３２、
スプレッドシート情報入力部１３２により入力された複数のスプレッドシートを記憶するスプレッドシート情報記憶部１３１。
【００５８】
また、本実施の形態では、スプレッドシート定義クライアント装置１４０が以下の手段を備えていることも説明した。
スプレッドシートを新規作成して編集するスプレッドシート定義部１４１、
スプレッドシートを一定のルールに従って拡張して、計算対象の項目を増やすためのスプレッドシート拡張部１４２、
作成されたスプレッドシートに記述されている表や計算式が正常に解釈できることを検証するスプレッドシート検証部１４３。
【００５９】
また、本実施の形態では、
スプレッドシート処理サーバ装置１２０は、
スプレッドシートのシート種別属性が、「金融向けスプレッドシート」が指定されていた場合は、十進数任意精度演算部１２４を使用して正確なお金の計算を行い、
シート種別属性に「一般向けスプレッドシート」が指定されていた場合は、浮動少数点数演算部１２５を使用して、結果的にＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）に付属する浮動少数点数演算機能を利用して高速に演算を行うことを説明した。
【００６０】
また、本実施の形態では、
十進数任意精度演算部１２４は、
十進数の計算を行うときに、「浮動少数点数」と、「十進浮動小数点数」を使用して計算を行い、「浮動少数点数」計算結果が非数や無限になった場合は「浮動少数点数」で計算した結果を採用し、それ以外の場合は、「十進浮動小数点数」で計算した結果を採用することを説明した。
【００６１】
最後に、本実施の形態に示した計算要求入力クライアント装置１００、計算要求処理サーバ装置１１０、スプレッドシート処理サーバ装置１２０、スプレッドシート格納装置１３０、スプレッドシート定義クライアント装置１４０（以下、これらの装置をまとめて「計算要求入力クライアント装置１００等」という）のハードウェア構成例について説明する。
図１７は、本実施の形態に示す計算要求入力クライアント装置１００等のハードウェア資源の一例を示す図である。
なお、図１７の構成は、あくまでも計算要求入力クライアント装置１００等のハードウェア構成の一例を示すものであり、計算要求入力クライアント装置１００等のハードウェア構成は図１７に記載の構成に限らず、他の構成であってもよい。
また、計算要求入力クライアント装置１００、計算要求処理サーバ装置１１０、スプレッドシート処理サーバ装置１２０、スプレッドシート格納装置１３０、スプレッドシート定義クライアント装置１４０は、それぞれ、異なるハードウェア構成であってもよい。
【００６２】
図１７において、計算要求入力クライアント装置１００等は、プログラムを実行するＣＰＵ９１１（中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
本実施の形態で説明した「スプレッドシート情報記憶部１３１」は、例えば、磁気ディスク装置９２０やＳＳＤにより実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００６３】
計算要求入力クライアント装置１００、計算要求処理サーバ装置１１０、スプレッドシート処理サーバ装置１２０では、通信ボード９１５は、図１に示すように、通信ネットワークに接続されている。
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００６４】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００６５】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００６６】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
計算要求入力クライアント装置１００等の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００６７】
上記プログラム群９２３には、本実施の形態の説明において「〜部」（「スプレッドシート情報記憶部１３１」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００６８】
ファイル群９２４には、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の計算」、「〜の演算」、「〜の解析」、「〜の評価」、「〜の作成」、「〜の生成」、「〜の設定」、「〜の検証」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００６９】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【００７０】
このように、本実施の形態に示す計算要求入力クライアント装置１００等は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００７１】
１００  計算要求入力クライアント装置、１０１  計算要求送信部、１０２  計算結果受信部、１０３  計算結果表示部、１１０  計算要求処理サーバ装置、１１１  計算要求受信部、１１２  計算対象情報送信部、１１３  計算結果情報受信部、１１４  計算結果返信部、１２０  スプレッドシート処理サーバ装置、１２１  計算対象情報受信部、１２２  計算結果情報返信部、１２３  スプレッドシート解析部、１２４  十進数任意精度演算部、１２５  浮動少数点数演算部、１３０  スプレッドシート格納装置、１３１  スプレッドシート情報記憶部、１３２  スプレッドシート情報入力部、１４０  スプレッドシート定義クライアント装置、１４１  スプレッドシート定義部、１４２  スプレッドシート拡張部、１４３  スプレッドシート検証部、１４４  スプレッドシート出力部、１５１  表示装置、１５２  入力装置、１６１  表示装置、１６２  入力装置、２００  通信ネットワーク、１３１０  スプレッドシート情報。
【図１】
0005932262.tif 000002
【図２】
0005932262.tif 000003
【図３】
0005932262.tif 000004
【図４】
0005932262.tif 000005
【図５】
0005932262.tif 000006
【図６】
0005932262.tif 000007
【図７】
0005932262.tif 000008
【図８】
0005932262.tif 000009
【図９】
0005932262.tif 000010
【図１０】
0005932262.tif 000011
【図１１】
0005932262.tif 000012
【図１２】
0005932262.tif 000013
【図１３】
0005932262.tif 000014
【図１４】
0005932262.tif 000015
【図１５】
0005932262.tif 000016
【図１６】
0005932262.tif 000017
【図１７】
0005932262.tif 000018