(57)【要約】【課題】多数のデータに対する繰返し処理を、プログラムを作成することなく手軽に実現する。【解決手段】シート内の各セルに対し、当該セルの値を算出する計算式を設定することにより計算処理を行うシステムを提供する。このシステムは、シート内における複数の入力データを記録した１又は複数のセルが第１セルに対応付けられたことに応じて、複数の入力データのそれぞれを第１セルの値として順次選択する入力データ選択部と、それぞれの入力データが第１セルの値として選択されたことに応じて、第１セル以外のセルに設定された、第１セルを参照する計算式の計算を行う計算部と、それぞれの入力データに対して計算部が計算式の計算を行った計算結果を、１又は複数の第２セルの値として出力するデータ出力部とを備える。【選択図】図５
2007249328.tif 000002
【特許請求の範囲】
【請求項１】
シート内の各セルに対し、当該セルの値を算出する計算式を設定することにより計算処理を行うシステムであって、
シート内における複数の入力データを記録した１又は複数のセルが第１セルに対応付けられたことに応じて、前記複数の入力データのそれぞれを前記第１セルの値として順次選択する入力データ選択部と、
それぞれの入力データが前記第１セルの値として選択されたことに応じて、前記第１セル以外のセルに設定された、前記第１セルを参照する計算式の計算を行う計算部と、
それぞれの入力データに対して前記計算部が前記計算式の計算を行った計算結果を、１又は複数の第２セルの値として出力するデータ出力部と
を備えるシステム。
【請求項２】
第１および第２のシートを取得する取得部を更に備え、
前記入力データ選択部は、前記第１のシート内における複数の入力データを記録した１又は複数のセルが、前記第２のシート内の前記第１セルに対応付けられたことに応じて、前記複数の入力データのそれぞれを前記第１セルの値として順次選択し、
前記計算部は、それぞれの入力データが前記第１セルの値として選択されたことに応じて、前記第２のシート内の前記第１セル以外のセルに設定された、前記第１セルを参照する計算式の計算を行い、
前記データ出力部は、それぞれの入力データに対して前記計算部が前記計算式の計算を行った計算結果を、前記第１のシート内の１又は複数の第２セルの値として出力する
請求項１に記載のシステム。
【請求項３】
前記複数の入力データを記録した１又は複数のセルが第１セルに対応付けられたことに応じて、前記第２のシートを、前記計算式が複数の入力データに対し適用されることを示すシンボルに対応付けて表示する表示部
を更に備える請求項２に記載のシステム。
【請求項４】
前記表示部は、前記第１セルに前記複数の入力データを何れかを表示し、前記計算式が設定されたセルに、前記第１セルに表示した当該入力データに対する計算結果を表示する
請求項３に記載のシステム。
【請求項５】
前記表示部は、前記第１セルに表示した当該入力データの前記複数の入力データの中の配列順序を示す識別子を、前記第２のシートに対応付けて更に表示する
請求項４に記載のシステム。
【請求項６】
前記識別子を変更するための入力を受け付ける入力部を更に備え、
前記表示部は、前記識別子が変更されたことに応じ、前記第１セルに表示する入力データを、変更された前記識別子によって識別される入力データに変更する
請求項５に記載のシステム。
【請求項７】
前記入力データ選択部は、前記第２のシートと同一の構造を有する、前記複数の入力データの数に応じた数のテンポラリ・シートを生成し、それぞれの前記テンポラリ・シートにおける前記第１セルに対応するテンポラリ・セルのそれぞれの値として、前記複数の入力データのそれぞれを選択し、
前記計算部は、それぞれの前記テンポラリ・シートに設定された計算式によって、それぞれの前記テンポラリ・セルの値に対し計算を行い、
前記データ出力部は、前記計算結果を記録するためのテンポラリ・フィールドを生成し、それぞれの入力データに対して前記計算部が前記計算式の計算を行った計算結果を、前記テンポラリ・フィールドに記録し、前記テンポラリ・フィールドに記録された計算結果を前記第２セルに出力する
請求項２に記載のシステム。
【請求項８】
前記複数の入力データが更新されたかを判断する判断部を更に備え、
前記計算部は、前記入力データの数が増加したことを条件に、増加した入力データの数に応じた前記テンポラリ・シートを生成する
請求項７に記載のシステム。
【請求項９】
前記データ出力部は、前記入力データの数が増加したことを条件に、増加した入力データの数に応じたサイズの前記テンポラリ・フィールドを生成する
請求項８に記載のシステム。
【請求項１０】
前記複数の入力データを記録した１又は複数のセルが第１セルに対応付けられたことに応じて、前記第１セルおよび前記第２セルに対する利用者による値の変更を禁止するアクセス制御部を更に備える請求項１に記載のシステム。
【請求項１１】
前記複数の入力データのそれぞれが更新されたかを判断する判断部を更に備え、
前記入力データ選択部は、前記複数の入力データの何れかが更新されたことに応じ、更新された前記入力データを前記第１セルの値として選択し、
前記計算部は、更新された前記入力データに対し、前記第１セルを参照する前記計算式の計算を行い、
前記データ出力部は、更新された前記入力データに対して前記計算部が前記計算式の計算を行った計算結果を出力する
請求項１に記載のシステム。
【請求項１２】
前記取得部は、第３のシートを更に取得し、
前記入力データ選択部は、前記第２のシート内における複数の入力データを記録した１又は複数のセルが、前記第３のシート内の第３セルに対応付けられたことに応じて、当該複数の入力データのそれぞれを前記第３セルの値として順次選択し、
前記計算部は、それぞれの入力データが前記第３セルの値として選択されたことに応じて、前記第３のシート内の前記第３セル以外のセルに設定された、前記第３セルを参照する計算式の計算を行う
請求項２に記載のシステム。
【請求項１３】
シート内の各セルに対し、当該セルの値を算出する計算式を設定することにより計算処理を行う方法であって、
シート内における複数の入力データを記録した１又は複数のセルが第１セルに対応付けられたことに応じて、前記複数の入力データのそれぞれを前記第１セルの値として順次選択するステップと、
それぞれの入力データが前記第１セルの値として選択されたことに応じて、前記第１セル以外のセルに設定された、前記第１セルを参照する計算式の計算を行うステップと、
それぞれの入力データに対して前記計算式の計算を行った計算結果を、１又は複数の第２セルの値として出力するステップと
を備える方法。
【請求項１４】
シート内の各セルに対し、当該セルの値を算出する計算式を設定することにより計算処理を行うシステムとして、情報処理装置を機能させるプログラムであって、
前記情報処理装置を、
シート内における複数の入力データを記録した１又は複数のセルが第１セルに対応付けられたことに応じて、前記複数の入力データのそれぞれを前記第１セルの値として順次選択する入力データ選択部と、
それぞれの入力データが前記第１セルの値として選択されたことに応じて、前記第１セル以外のセルに設定された、前記第１セルを参照する計算式の計算を行う計算部と、
それぞれの入力データに対して前記計算部が前記計算式の計算を行った計算結果を、１又は複数の第２セルの値として出力するデータ出力部と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表計算などの処理を行うシステムおよびその方法に関する。特に、本発明は、シートに含まれるセルの値に基づいて計算を行うシステムおよびその方法に関する。
【背景技術】
【０００２】
表計算処理を行うシステムにおいて、利用者は、セルと呼ばれる項目に値を入力することによりスプレッドシートを作成する。セルには、他のセルの値を参照した数式を記録することもできる。数式が記録されたセルには、その数式の計算結果が表示される。予め用意された関数を数式に含めることで、比較的高度な計算を手軽に実現することもできる。しかしながら、数式に含めることのできる関数は予め定められているので、他の計算を実現したい場合には、別途プログラムを作成しなければならない場合がある。表計算処理を行うシステムとして、例えばエクセル（登録商標）が用いられている（非特許文献１を参照。）。
【非特許文献１】マイクロソフトコーポレーション、Excel2003製品情報、ホームページＵＲＬ「http://www.microsoft.com/japan/office/excel/prodinfo/default.mspx」
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、プログラムの作成は数式の記述と比較して困難な作業である。このため、広く一般の利用者が手軽にプログラムを作成することはできないし、思い通りに動作しないプログラムの誤りを訂正する作業は専門家にとっても困難な場合がある。例えば、上述のエクセル（登録商標）において、予め定められた関数で実現できない処理を行うためには、利用者がVisualBasic（登録商標）などのプログラム言語でプログラムを作成しなければならない。
【０００４】
一方で、近年、表計算用のシステムには、ウェブサーバから多量の情報を直接取得する機能が設けられるようになってきている。例えば、表計算用のシステムは、多数の銘柄についての株価をウェブサーバから取得してスプレッドシートのセルに記録することができる。このような多量の情報を効率的に処理するためには、繰返し処理が有効である。しかしながら、従来の表計算用のシステムで繰返し処理を実現するためには、表計算用の数式では不十分であり、プログラムの作成が必要となる場合が多い。
【０００５】
そこで本発明は、上記の課題を解決することのできるシステム、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明においては、シート内の各セルに対し、当該セルの値を算出する計算式を設定することにより計算処理を行うシステムであって、シート内における複数の入力データを記録した１又は複数のセルが第１セルに対応付けられたことに応じて、複数の入力データのそれぞれを第１セルの値として順次選択する入力データ選択部と、それぞれの入力データが第１セルの値として選択されたことに応じて、第１セル以外のセルに設定された、第１セルを参照する計算式の計算を行う計算部と、それぞれの入力データに対して計算部が計算式の計算を行った計算結果を、１又は複数の第２セルの値として出力するデータ出力部とを備えるシステムを提供する。また、当該システムによって計算処理を行う方法および当該システムとして情報処理装置を機能させるプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【０００７】
本発明によれば、多数のデータに対する繰返し処理を、プログラムを作成することなく手軽に実現できる。
【発明を実施するための最良の形態】
【０００８】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００９】
図１は、表計算システム１０の全体構成を示す。表計算システム１０は、データベース２０と、表計算装置３０とを備える。データベース２０は、表計算に用いる複数のスプレッドシートを記録している。これらのスプレッドシートのそれぞれは、セルと呼ばれるデータフィールドを複数有する。それぞれのセルには、データが記録され、または、計算式が設定されている。あるセルに記録された計算式は、他のセルに記録されたデータを入力パラメータとして参照してもよい。表計算装置３０は、入力パラメータに基づいて、それぞれのセルに設定された計算式の計算を行い、計算結果をそのセルに表示する。また、表計算装置３０は、それぞれのセルに記録されたデータを変更するための入力を受け付けてもよい。入力パラメータとして参照されているデータの更新に応じ、表計算装置３０は、そのデータを参照している計算式の計算を行う。この結果、データの更新に応じてそれを参照する計算式の計算結果も直ちに更新されて画面に表示される。
本実施形態に係る表計算装置３０は、繰返し処理などの比較的高度な計算を、別途プログラムを作成することなく、手軽に実現可能とすることを目的とする。以下、表計算装置３０の構成を説明するために、保有する複数の銘柄の株式についての損益を計算する計算処理を例にその詳細を説明する。
【００１０】
図２は、データベース２０に含まれる第１のシートの一例である外部スプレッドシート２２を示す。外部スプレッドシート２２は、識別子をＳ１とするシートであり、繰返し処理の外部の処理を示す。外部の処理とは、即ち繰返し処理の開始前および終了後の処理である。具体的には、外部スプレッドシート２２は、複数の入力データを記録する外部入力セル２００を有する。図２の例で外部スプレッドシート２２は、座標Ｃ２からＣ４に複数の外部入力セル２００を有する。座標Ｃ２に位置する外部入力セル２００は、保有する複数銘柄の株式の名称を複数の入力データとして記録している。
【００１１】
なお、「複数の入力データを記録する」とは、入力データそれ自体を直接記録している場合のみならず、入力データを取得するための計算式を記録している場合も含む。図２の例で、外部入力セル２００は、複数銘柄の株式の名称を外部のファイルから取得するための計算式を記録している。この計算式で、Query(ファイル名, 項目名)は、「ファイル名」のファイルから「項目名」の項目に該当する複数のデータを取得する計算式を示す。この計算式の計算の結果、座標Ｃ２に位置するセル（以下、セルＣ２などと称す）には、複数銘柄の株式の名称が外部のファイルから取得されて記録される。
【００１２】
また、座標Ｃ３に位置する外部入力セル２００は、保有する複数銘柄のそれぞれについてその株数を複数の入力データとして記録している。また、座標Ｃ４に位置する外部入力セル２００は、保有する複数の株式の買価を複数の入力データとして記録している。株式の銘柄名と同様に、これらの入力データも、Query関数を含む計算式の計算の結果取得されるものであってもよい。
【００１３】
外部スプレッドシート２２は、株式の銘柄名を示す項目名をセルＡ６に含み、それぞれの銘柄名をセルＡ７からセルＡ９までに含む。また、外部スプレッドシート２２は、各銘柄の損益を示す項目名をセルＢ６に含む。また、外部スプレッドシート２２は、後述する内部スプレッドシート２４に設定された計算式の計算結果を記録するための外部出力セル２１０を含む（セルＢ７からセルＢ９に相当）。外部出力セル２１０は、本発明に係る第２セルの一例であり、図２の例のように複数のセルで構成されていてもよいし、単一のセルで構成されていてもよい。また、外部スプレッドシート２２は、それぞれの銘柄の合計を計算するための計算式をセルＢ１１に記録している。
【００１４】
図３は、データベース２０に含まれる第２のシートの一例である内部スプレッドシート２４を示す。内部スプレッドシート２４は、識別子をＳ２とするシートであり、繰返し処理の内部の処理を示す。内部の処理とは、繰返し処理が開始してから終了するまでの処理である。具体的には、内部スプレッドシート２４は、本発明に係る第１セルの一例である内部入力セル２２０を複数有する（セルＣ３からセルＣ５に相当）。セルＣ３は、保有する複数銘柄の株式のうちある株式の銘柄名を記録するために設けられている。セルＣ４は、その株式を保有している株数を記録するために設けられている。セルＣ５は、その株式の買価を記録するために設けられている。
【００１５】
また、セルＣ６には、株価の現在価格を取得するための計算式が設定されている。この計算式を実行すると、セルＣ３に記録された銘柄名の株式の現在価格が外部から取得されて表示される。また、セルＣ７には、株式の損益を計算するための計算式が設定されている。この計算式は、セルＣ６に記録された現在価格からセルＣ５に記録された買価を差し引いて、セルＣ４に記録された株数を乗じる計算を示す。更に、内部スプレッドシート２４は、セルＢ２に所定の関数を記録してもよい。この関数は、セルＣ３に表示した入力データの、図２の外部入力セル２００に記録された複数の入力データの中の配列順序を示す識別子を変更可能に表示する。以下、この識別子を、入力データのインデックスと呼ぶ。
【００１６】
図４は、データベース２０に含まれる対応情報２６の一例を示す。データベース２０は、外部スプレッドシート２２および内部スプレッドシート２４に加えて対応情報２６を記録している。対応情報２６は、外部スプレッドシート２２中のセルと内部スプレッドシート２４中のセルとを対応付け、また、対応付けの種別を含む。例えば、対応情報２６は、外部スプレッドシート２２のセルＣ２と、内部スプレッドシート２４のセルＣ３とを、対応付けの種別「入力」に対応付けて記録している。これは、外部入力セル２００であるセルＣ２に複数の入力データが記録された場合に、後述する入力データ選択部３３０によって順次それぞれの入力データがセルＣ３の値として選択されることを示す。これにより、内部スプレッドシート２４に設定された計算式が、外部スプレッドシート２２に記録されたそれぞれの入力データを入力パラメータとして繰返し処理される。
【００１７】
また、対応情報２６は、外部スプレッドシート２２のセルＣ３と内部スプレッドシート２４のセルＣ４とを対応付けて記録している。これは、外部入力セル２００であるセルＣ３に複数の入力データが記録された場合に、後述する入力データ選択部３３０によって順次それぞれの入力データがセルＣ４の値として選択されることを示す。また、対応情報２６は、外部スプレッドシート２２のセルＣ４と内部スプレッドシート２４のセルＣ５とを対応付けて記録している。これは、外部入力セル２００であるセルＣ４に複数の入力データが記録された場合に、後述する入力データ選択部３３０によって順次それぞれの入力データがセルＣ４の値として選択されることを示す。また、対応情報２６は、外部スプレッドシート２２のセルＢ７−Ｂ９と内部スプレッドシート２４のセルＣ７とを、対応付けの種別「出力」に対応付けて記録している。これは、内部出力セル２３０であるセルＣ７に計算結果が記録された場合に、その計算結果がセルＢ７−Ｂ９に出力されることを示す。
【００１８】
図５は、表計算装置３０の機能構成を示す。表計算装置３０は、取得部３００と、記憶部３１０と、判断部３２０と、入力データ選択部３３０と、計算部３４０と、データ出力部３５０と、表示部３６０と、入力部３７０と、アクセス制御部３８０とを有する。取得部３００、記憶部３１０、判断部３２０、入力データ選択部３３０、計算部３４０、データ出力部３５０、表示部３６０、入力部３７０およびアクセス制御部３８０は、典型的には、後述のＣＰＵ１０００によって実現され、プログラムによって制御される。また、記憶部３１０は、ＲＡＭなどの揮発性メモリによって実現される。
【００１９】
取得部３００は、外部スプレッドシート２２、内部スプレッドシート２４および対応情報２６をデータベース２０から取得して記憶部３１０に記憶させる。記憶部３１０は、記憶しているスプレッドシートなどを各部に供給する。また、記憶部３１０は、記憶しているスプレッドシートを、アクセス制御部３８０の制御に応じて変更する。判断部３２０は、記憶部３１０に記憶されたスプレッドシートが変更されたかを判断する。例えば、判断部３２０は、外部入力セル２００に記録された複数の入力データが変更されたか、または、内部出力セル２３０に設定された計算式が変更されたかを判断する。
【００２０】
入力データ選択部３３０は、外部スプレッドシート２２内における複数の入力データを記録した何れかの外部入力セル２００が、内部スプレッドシート２４内の内部入力セル２２０に対応付けられたか否かを対応情報２６に基づいて判断する。対応付けられたことに応じて、入力データ選択部３３０は、これら複数の入力データのそれぞれを内部入力セル２２０の値として順次選択する。計算部３４０は、それぞれの入力データが内部入力セル２２０の値として選択されたことに応じて、内部スプレッドシート２４内の内部入力セル２２０以外のセルである内部出力セル２３０に設定された、内部入力セル２２０を参照する計算式の計算を行う。データ出力部３５０は、それぞれの入力データに対して計算部３４０が計算式の計算を行った計算結果を、外部スプレッドシート２２内の外部出力セル２１０の値として出力する。即ち表示部３６０は、外部スプレッドシート２２全体を表示する場合に、この計算結果を外部出力セル２１０の値として利用者に表示する。
【００２１】
入力部３７０は、各セルに記録された値や各セルに記録された計算式を変更するための入力を利用者から受け付ける。値を変更するための入力を受け付けると、アクセス制御部３８０は、予め定められた規則に従って、値の変更が許可されているかを判断する。例えば、外部入力セル２００が内部入力セル２２０に対応付けられていることを条件に、内部入力セル２２０および外部出力セル２１０に対する利用者による値の変更を禁止する。これにより、外部スプレッドシート２２から内部スプレッドシート２４へ伝播する入力データの値と利用者による入力とが矛盾することを防止できる。値の変更が許可されている場合には、アクセス制御部３８０は、利用者の入力に応じて、記憶部３１０に記憶されたスプレッドシートを変更する。
【００２２】
また、入力部３７０は、内部スプレッドシート２４のセルＢ１に表示された識別子を変更するための入力を受け付けてもよい。この入力に基づきこの識別子が変更されたことに応じ、表示部３６０は、内部入力セル２２０に表示する入力データを、変更された識別子によって識別される入力データに変更する。これにより、利用者は、複数回繰り返される計算のうち任意の１つについて、その計算結果や計算過程を参照することができる。
【００２３】
図６は、表示部３６０による外部スプレッドシート２２の表示例を示す。表示部３６０は、外部入力セル２００であるセルＣ２に、保有する株式の複数の銘柄名を表示する。これら複数の銘柄名が複数の入力データである。また、表示部３６０は、外部入力セル２００であるセルＣ３に、保有する株式の株数を表示する。これら複数の株数データも複数の入力データである。また、表示部３６０は、外部入力セル２００であるセルＣ４に、保有する株式の買価を表示する。これら複数の買価データも複数の入力データである。
【００２４】
表示部３６０は、更に、外部出力セル２１０であるセルＢ７からＢ９までに、保有する株式の銘柄毎にその損益を表示する。これらの損益データのそれぞれは、内部スプレッドシート２４のセルＣ７に設定された計算式によって計算されたものである。また、表示部３６０は、セルＢ１１に設定された計算式の計算結果、即ち、セルＢ７からＢ９までに表示された損益の合計を表示する。ここで、計算結果の数が４以上の場合には全ての結果をセルＢ７−Ｂ９に表示することはできない。このような場合には、計算部３４０は、全ての計算結果を表示できるように、第２セルの数を増加させる処理を行ってもよい。即ち、計算部３４０は、セルＢ８とＢ９との間に不足分の行を挿入してもよい。これにより表示部３６０は全ての計算結果を表示することができる。
【００２５】
図７は、表示部３６０による内部スプレッドシート２４の表示例を示す。表示部３６０は、内部出力セル２３０であるセルＣ３に、保有する株式の複数の銘柄の何れか１つを表示する。また、表示部３６０は、入力データのインデックスをセルＢ１に表示する。図７の例で表示されるインデックスは２である。これにより、内部スプレッドシート２４のセルＣ３に表示された入力データが、外部スプレッドシート２２のセルＣ２に記録された複数の入力データのうち２番目に配列されていることが分かる。同様に、内部スプレッドシート２４のセルＣ４に表示された入力データが、外部スプレッドシート２２のセルＣ３に記録された複数の入力データのうち２番目に配列された入力データであることが分かる。同様に、内部スプレッドシート２４のセルＣ５に表示された入力データが、外部スプレッドシート２２のセルＣ４に記録された複数の入力データのうち２番目に配列された入力データであることが分かる。
【００２６】
また、表示部３６０は、セルＣ６に設定された計算式に代えて、この計算式の計算結果をセルＣ６に表示する。セルＣ６には、セルＣ３の値として選択された銘柄の現在価格を取得する計算式が設定されているので、セルＣ６にはこの現在価格が表示される。また、表示部３６０は、セルＣ７に設定された計算式に代えて、この計算式の計算結果をセルＣ７に表示する。セルＣ７には、セルＣ３の値として選択された銘柄の損益を計算する計算式が設定されているので、セルＣ７にはこの損益の計算結果が表示される。
【００２７】
また、表示部３６０は、内部スプレッドシート２４を、内部スプレッドシート２４中に設定された計算式が複数の入力データに対し適用されることを示すシンボルに対応付けて表示する。図７左下隅には、外部スプレッドシート２２または内部スプレッドシート２４をマウスなどの操作で選択可能とするためにタブが表示されている。例えば、表示部３６０は、内部スプレッドシート２４を選択するためのタブを、タブが多重に重なっている様子を表したシンボルによって表示してもよい。このように表示することで、利用者は、入力データの伝播方法や計算式の適用回数を直感的に理解することができる。
【００２８】
図８は、スプレッドシートに記録されたデータに基づく計算の処理過程を示す。取得部３００は、外部スプレッドシート２２、内部スプレッドシート２４および対応情報２６をデータベース２０から取得して記憶部３１０に記憶させる（Ｓ８００）。スプレッドシートの取得に応じ、入力データ選択部３３０、計算部３４０およびデータ出力部３５０は、各セルに設定された計算式に基づき計算を行い、表示部３６０はその計算結果を外部スプレッドシート２２および内部スプレッドシート２４中のセルに表示する（Ｓ８１０）。
【００２９】
入力部３７０は、セルに記録された入力データやセルに設定された計算式を変更するための入力、または、入力データのインデックスを変更するための入力を利用者から受け付ける（Ｓ８２０）。利用者からの入力に応じて入力データまたは計算式が変更されたことに応じ（Ｓ８３０：ＹＥＳ）、計算部３４０は、変更された入力データに基づいて、その入力データを直接的にまたは間接的に参照する計算式の計算を行い、その計算結果の表示を更新する（Ｓ８４０）。計算式が変更された場合には、計算部３４０は、その計算式の計算を再度行い、その計算結果の表示を更新する。
【００３０】
入力データのインデックスを変更するための入力を利用者から受け付けたことに応じ（Ｓ８５０：ＹＥＳ）、表示部３６０は、内部入力セル２２０に表示する入力データを、変更された識別子によって識別される入力データに変更する（Ｓ８６０）。
【００３１】
図９は、Ｓ８１０およびＳ８６０の処理の詳細を示す。表計算装置３０は、Ｓ８１０においては全ての入力データについて、Ｓ８６０においては更新された入力データを直接的にまたは間接的に参照する入力データについて、以下の処理を行う。
入力データ選択部３３０は、内部スプレッドシート２４と同一の構造を有する、複数の入力データの数に応じた数のテンポラリ・シートを生成する（Ｓ９００）。なお、既にテンポラリ・シートが生成されている場合には、複数の入力データの数と比較して不足する数のテンポラリ・シートを生成すればよい。例えば入力データの数が増加したことを条件に、入力データ選択部３３０は、増加した入力データの数に応じたテンポラリ・シートを新たに生成する。
【００３２】
次に、データ出力部３５０は、内部出力セル２３０に設定された計算式の計算結果を記録するためのテンポラリ・フィールドを生成する（Ｓ９１０）。なお、既にテンポラリ・フィールドが生成されている場合には、記録すべき計算結果の数と比較して不足するサイズの領域のみを生成すればよい。即ち、データ出力部３５０は、複数の入力データの数が増加したことを条件に、増加した入力データの数に応じたサイズのテンポラリ・フィールドを生成する。
【００３３】
次に、入力データ選択部３３０は、それぞれのテンポラリ・シートにおける内部入力セル２２０に対応するテンポラリ・セルのそれぞれの値として、外部入力セル２００に記録された複数の入力データのそれぞれを選択する（Ｓ９２０）。この処理は、例えば、次のように実装されてもよい。表計算装置３０は、更新されて再計算すべきセルを管理するキュー構造のデータ（以下、単にキューと呼ぶ）を有する。入力データ選択部３３０は、Ｓ９２０において、上記それぞれのテンポラリ・セルをキューに加える。
【００３４】
計算部３４０は、それぞれのテンポラリ・シートに設定された計算式によって、それぞれのテンポラリ・セルの値に対し計算を行う（Ｓ９３０）。この処理は例えば以下のように実装される。計算部３４０は、このキューの先頭からセルを１ずつ取り出し、そのセルの値を再計算する。セルに値自体が記録されている場合には計算部３４０は何ら計算をせず、そのセルを参照している他の全てのセルを探し出してキューに加える。例えば、計算部３４０は、テンポラリ・セルをキューから取り出した場合に、そのテンポラリ・セルの値を参照する計算式が設定された他のセルをキューに加える。セルに計算式が設定されている場合には、計算部３４０はそのセルの計算式の計算を行ってから、その計算結果を参照する他のセルをキューに加える。例えば計算部３４０は、テンポラリ・セルを参照する他のセルをキューから取り出した場合に、当該他のセルに設定された計算式の計算を行い、その計算結果を参照する他のセルをキューに加える。
【００３５】
データ出力部３５０は、それぞれの入力データに対して計算部３４０が計算式の計算を行った計算結果を、テンポラリ・フィールドに記録する（Ｓ９４０）。そして、データ出力部３５０は、テンポラリ・フィールドに記録された計算結果を、外部出力セル２１０中に表示すべきデータとして出力する（Ｓ９５０）。このデータを直接的にまたは間接的に参照する他の計算式が外部スプレッドシート２２中に含まれている場合には、当該他の計算式の計算結果が更に更新される。この処理もキューを用いて統一的な実装により実現できる。例えばデータ出力部３５０は、計算結果が外部出力セル２１０に出力されたことに応じ、外部出力セル２１０をキューに加える。計算部３４０は、外部出力セル２１０をキューから取り出すと、それを参照する他の複数のセルの計算を行う。
【００３６】
以上、図９を参照して説明した処理によれば、外部スプレッドシート２２から内部スプレッドシート２４への入力データの受渡しのみを対応情報２６に基づいて行い、その他の部分はキューを用いた統一的な実装で表計算を実現することができる。これにより、繰返し処理などの計算処理を新たに実現しつつも、従来の表計算システムを使い慣れた利用者にとって直感的で分かり易い機能を提供できる。
【００３７】
図１０は、Ｓ８６０における処理の詳細を示す。内部スプレッドシート２４の表示に関し表示部３６０は以下の処理を行う。表示部３６０は、内部入力セル２２０に表示した入力データの、外部入力セル２００に記録された複数の入力データ中の配列順序を示す識別子（上述のインデックス）を、内部スプレッドシート２４に対応付けて表示する（Ｓ１０００）。インデックスの表示箇所は、例えば、図７に例示したセルＢ１などのセルである。これに代えて、インデックスは、内部スプレッドシート２４を他のスプレッドシートから区別して選択するためのタグ（例えば図７左下部分）に表示されてもよい。
【００３８】
表示部３６０は、複数の入力データの何れかを内部入力セル２２０に表示する（Ｓ１０１０）。例えば、図７に例示したセルＣ３には、複数の銘柄名のうちの１つが表示される。表示される入力データは、外部入力セル２００に記録された複数の入力データのうち、上述のインデックスにより指定された順序で配列された入力データである。次に表示部３６０は、この入力データを参照する計算式が設定された内部出力セル２３０に、外部入力セル２００に表示した入力データに対する計算結果を表示する（Ｓ１０２０）。例えば、図７に例示したセルＣ７には、セルＣ３に表示された銘柄の株式についての損益が表示される。
【００３９】
以上、図１から図１０を参照して説明したように、本実施形態に係る表計算装置３０によれば、複数の入力データに対する繰返しの処理を簡便な操作によって実現させることができる。これにより、多量のデータに対する一括処理などを、プログラムを作成することなく手軽に実現することができる。本実施形態に係る表計算装置３０によって実現される繰返し処理は、他の繰返し処理を更に包含し、または、他の繰返し処理に包含されていてもよい。このような入れ子構造の繰返し処理の一例を以下に示す。
【００４０】
図１１は、スプレッドシートの他の例を示す。左図はスプレッドシート１２００の概念図であり、右図は、このスプレッドシート１２００のあるセルに記録されたデータの一例を示す。このセルには、XML(eXtensible Markup Language)で記述されたデータが記録されている。このデータは階層構造をなし、最上位の階層に複数のgroupタグを含む。groupタグの開始タグから終了タグまでに記述されたデータが１つの入力データを構成する。即ち、複数のgroupタグは複数の入力データを構成する。また、１つのgroupタグの開始タグから終了タグまでの間には、複数のpersonタグが記述される。
【００４１】
図１２は、当該他の例のスプレッドシートに基づく処理の概念図である。取得部３００は、第１のシートであるスプレッドシート１２００と、第２のシートであるスプレッドシート１２１０とに加えて、第３のシートであるスプレッドシート１２２０を取得する。入力データ選択部３３０は、上述の例と同様に、スプレッドシート１２００内における複数の入力データ（ここではXML文書）を記録したセルが、スプレッドシート１２１０内のセルに対応付けられたことに応じて、当該複数の入力データのそれぞれをスプレッドシート１２１０内の当該セルの値として選択する。例えば、groupタグの開始タグから終了タグまでの間に記述されたデータが、スプレッドシート１２１０内のセルの値として選択される。
【００４２】
更に、入力データ選択部３３０は、スプレッドシート１２１０内における複数の入力データ（ここではgroupタグの開始タグから終了タグまでの間のデータ）を記録したセルが、スプレッドシート１２２０内のセルに対応付けられたことに応じて、当該複数の入力データのそれぞれをスプレッドシート１２２０内の当該セルの値として選択する。例えば、personタグの開始タグから終了タグまでの間に記述されたデータが、スプレッドシート１２２０内のセルの値として選択される。スプレッドシート１２２０には、１つのpersonタグによって記述されたデータに対する計算式が記述される。計算部３４０は、それぞれの入力データがスプレッドシート１２２０中のセルの値として選択されたことに応じて、スプレッドシート１２２０内のこのセル以外のセルに設定された、このセルを参照する計算式の計算を行う。これにより、例えば、nameタグに対応する値のhanakoやageタグに対応する値の24などを参照可能とすることができる。
【００４３】
以上、図１１および図１２を参照して説明したように、複数の繰返し処理を入れ子構造で実行させることもできる。この場合、それぞれの階層のスプレッドシートには、１階層分のデータに対する処理のみを記述すればよい。これにより、XML文書などの多重階層のデータについての処理を手軽に実現可能とすることができる。
【００４４】
次に、本実施形態に係る表計算装置３０をスプレッドシート以外のデータに適用した例を説明する。インターナショナル・ビジネスマシーンズ・コーポレーションによって、ADIEU(Ad Hoc Development and Integration tool for End Users)というシステムが開発されている。このシステムは、複数のウェブページから構成されるウェブアプリケーションを手軽に作成可能とする。ADIEUにおいて、ウェブページやプログラム、或いは、プログラムによって参照される一群のデータは、カードと呼ばれるウィンドウで表される。利用者は、それぞれのカードの中のセルにデータを書き込むことによって、ウェブページの表示内容やプログラムの動作内容を定めることができる。また、利用者は、一のカードと他のカードとの間に参照関係を作成することができる。これにより、ウェブページ間のハイパーリンクや、データの参照関係を定義することができる。
【００４５】
図１３は、ADIEUシステムにおける従来例を示す。この例に示すウェブアプリケーションプログラムは、図２から図４に示すスプレッドシートと同様、複数銘柄の株式の損益を計算する。このプログラムは、カードＡ、カードＢ、カードＣ、カードＤおよびカードＥによって表される。カードＢおよびカードＥは変数の定義を示す。具体的には、カードＢは、stockNamesという配列変数の内容が、ＡＡＡ、…であることを示す。また、qtysという配列変数の内容が、２００、…であることを示す。また、pricesという配列変数の内容が８０、…であることを示す。カードＥは、totalという変数の値が０であることを示す。totalという変数は計算結果を格納するための変数であり、計算が完了していない場合には初期値である０を格納している。
【００４６】
カードＡは繰返し処理の制御を示す。この制御によって、カードＣおよびカードＤによって示される処理が、配列変数stockNamesの要素数と同じ回数だけ繰り返される。また、カードＡは、この繰返し処理を繰り返す毎に１増加する変数counterを定義している。カードＣは、配列変数sotckNamesの先頭から数えて変数counterの値と等しい順番の要素を取り出し、その銘柄名の株式の現在価格を取得するプログラムを示す。カードＤは、カードＣのプログラムで取得された現在価格から、その株式の買価を差し引き、その株式の株数を乗じて、カードＥで定義された変数totalに代入するプログラムを示す。
【００４７】
このように、従来のADIEUシステムで繰返し処理を実現するには、counterという誘導変数を導入して、繰返し処理の各回における処理の詳細を定義しなければならない。このような定義は、プログラムの作成に熟練した利用者でなければ困難な場合がある。また、この例で、利用者は合計の損益しか参照することができず、それが計算される過程で計算された各銘柄の損益などを参照できない。このため、データや計算に誤りがある場合には、誤りの原因箇所を特定することが難しい。
【００４８】
図１４は、本実施形態に係る表計算装置３０をADIEUシステムに適用した適用例を示す。表計算装置３０をADUIEシステムに適用することにより、利用者は、各カードのセルに必要な値を入力するのみで、明示的に繰返し処理を定義することなく繰返し処理を実現することができる。具体的には、図１４におけるウェブアプリケーションプログラムは、カードＢ、カードＣ、カードＥおよびカードＦによって表される。カードＢは、図１３のカードＢと同様に、配列変数stockNamesと、配列変数qtysと、配列変数pricesの内容の定義を示す。更に、カードＢは、配列変数gainsAndLossesを定義する。また、カードＥは、変数totalを定義する。カードＢおよびカードＥは、スプレッドシートの例における第１のスプレッドシートに相当し、配列変数stockNames、配列変数qtys、および、配列変数pricesは、それぞれ入力データに相当する。
【００４９】
また、カードＣおよびカードＦは、スプレッドシートの例における第２のスプレッドシートに相当する。カードＦは、変数stockNameと、変数qtyと、変数priceとを示す。図中の矢印は対応付けを示す。変数stockNameは、配列変数stockNamesに対応付けられており、変数qtyは、配列変数qtysに対応付けられており、変数priceは、配列変数pricesに対応付けられている。これらの対応付けに応じ、入力データ選択部３３０は、カードＢの配列変数の複数の要素のそれぞれを、カードＦの変数の要素として順次選択する。例えば、入力データ選択部３３０は、配列変数stockNamesのそれぞれの要素を、変数stockNameの要素として順次選択する。図１４には、第１要素が選択された場合の状態を示す。
【００５０】
カードＦは、更に、gainOrLossという変数を定義する。この変数の定義を示すセルには、計算式が設定されている。計算式は、カードＣで計算された株式の現在価格から、入力データ選択部３３０によって選択された株式の買価を差し引き、入力データ選択部３３０によって選択された株式の株数を乗じる計算を示す。また、変数gainOrLossは、カードＢの配列変数gainsAndLossesに対応付けられている。データ出力部３５０は、この対応付けに応じ、変数gainOrLossの値を配列変数gainsAndLossesの各要素として出力する。
【００５１】
以上、図１４に示す例によっても、スプレッドシートの例と同様に、簡素な入力操作で繰返し処理を手軽に作成することができる。このように、本実施形態に係る表計算装置３０は、セルとそれを参照する計算とを定義する形態のシステムであれば、表計算システムのみならず幅広く応用が可能である。
【００５２】
図１５は、表計算システム１０として機能する情報処理装置５００のハードウェア構成の一例を示す。情報処理装置５００は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。
【００５３】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００５４】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１０４０は、情報処理装置５００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。
【００５５】
また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＲＯＭ１０１０は、情報処理装置５００の起動時にＣＰＵ１０００が実行するブートプログラムや、情報処理装置５００のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００５６】
情報処理装置５００に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出され情報処理装置５００にインストールされて実行される。プログラムが情報処理装置５００等に働きかけて行わせる動作は、図１から図１４において説明した表計算システム１０における動作と同一であるから、説明を省略する。
【００５７】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置５００に提供してもよい。
【００５８】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。例えば、入力データ選択部３３０は、予め指定された外部入力セルに単一の入力データが記録されていることを条件に、その入力データを、複数のテンポラリ・シートに対応する内部入力セルの値として複数回選択してもよい。この場合、この単一の入力データに対する計算が複数のテンポラリ・シートにおいて複数回行われる。このような仕組みは、外部スプレッドシートで定義した定数を、内部スプレッドシートで参照可能とさせる場合に有効である。なお、外部スプレッドシート中で複数の入力データを持つセルが複数あり、それらが内部スプレッドシート中のセルに対応づけられているとき、それらの外部スプレッドシート中のセル中のデータ要素の数が互いに異なる場合がある。その場合には、最大の要素数に応じた繰り返し計算をし、データが不足するセルについては特定の設定値で代用する、もしくは最小の要素数に応じた繰り返し計算をし、余分なデータ要素については無視する、といった設定を選択できるようにすることも可能である。また、更に他の例として、内部スプレッドシートのセルの値は、その内部スプレッドシート内に設定された計算式、または、その内部スプレッドシートを外部スプレッドシートとする他の内部スプレッドシート内に設定された計算式からのみ参照可能としてもよい。このようにすることで、複数のテンポラリ・シートが生成されることによって生じる参照先の曖昧さを排除して、表計算システム１０の開発・保守管理や利用者の操作を容易とすることができる。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００５９】
【図１】図１は、表計算システム１０の全体構成を示す。
【図２】図２は、データベース２０に含まれる第１のシートの一例である外部スプレッドシート２２を示す。
【図３】図３は、データベース２０に含まれる第２のシートの一例である内部スプレッドシート２４を示す。
【図４】図４は、データベース２０に含まれる対応情報２６の一例を示す。
【図５】図５は、表計算装置３０の機能構成を示す。
【図６】図６は、表示部３６０による外部スプレッドシート２２の表示例を示す。
【図７】図７は、表示部３６０による内部スプレッドシート２４の表示例を示す。
【図８】図８は、スプレッドシートに記録されたデータに基づく計算の処理過程を示す。
【図９】図９は、Ｓ８１０およびＳ８６０の処理の詳細を示す。
【図１０】図１０は、Ｓ８６０における処理の詳細を示す。
【図１１】図１１は、スプレッドシートの他の例を示す。
【図１２】図１２は、当該他の例のスプレッドシートに基づく処理の概念図である。
【図１３】図１３は、ADIEUシステムにおける従来例を示す。
【図１４】図１４は、本実施形態に係る表計算装置３０をADIEUシステムに適用した適用例を示す。
【図１５】図１５は、表計算システム１０として機能する情報処理装置５００のハードウェア構成の一例を示す。
【符号の説明】
【００６０】
１０  表計算システム
２０  データベース
２２  外部スプレッドシート
２４  内部スプレッドシート
２６  対応情報
３０  表計算装置
２００  外部入力セル
２１０  外部出力セル
２２０  内部入力セル
２３０  内部出力セル
３００  取得部
３１０  記憶部
３２０  判断部
３３０  入力データ選択部
３４０  計算部
３５０  データ出力部
３６０  表示部
３７０  入力部
３８０  アクセス制御部
５００  情報処理装置
１２００  スプレッドシート
１２１０  スプレッドシート
１２２０  スプレッドシート
【図１】
2007249328.tif 000003
【図２】
2007249328.tif 000004
【図３】
2007249328.tif 000005
【図４】
2007249328.tif 000006
【図５】
2007249328.tif 000007
【図６】
2007249328.tif 000008
【図７】
2007249328.tif 000009
【図８】
2007249328.tif 000010
【図９】
2007249328.tif 000011
【図１０】
2007249328.tif 000012
【図１１】
2007249328.tif 000013
【図１２】
2007249328.tif 000014
【図１３】
2007249328.tif 000015
【図１４】
2007249328.tif 000016
【図１５】
2007249328.tif 000017