(57)【要約】【課題】端末から送信されてきた計算対象データの計算を行うサーバ装置において、サーバ装置の計算処理の負荷を軽減し、レスポンスタイムを短縮することが可能なサーバ装置を提供する。【解決手段】サーバ装置１は、計算対象データを受信する計算対象データ受信手段１５と、計算対象データを計算する計算手段１１と、計算結果データを送信する計算結果送信手段１１と、計算対象データ受信手段１５により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断手段１１と、を備え、計算手段１１は、受信データ判断手段１１により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わない。【選択図】図１
2018049308.tif 000002
【特許請求の範囲】
【請求項１】
計算対象データを受信する計算対象データ受信手段と、
前記計算対象データを計算する計算手段と、
前記計算結果データを送信する計算結果送信手段と、
前記計算対象データ受信手段により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断手段と、
を備え、
前記計算手段は、前記受信データ判断手段により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わない、
ことを特徴とするサーバ装置。
【請求項２】
前記計算手段により計算された結果である計算結果データを前記計算対象データに対応付けて保存する計算結果保存手段を備え、
前記計算結果送信手段は、前記受信データ判断手段により同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データと同じ前記計算対象データの計算結果である前記計算結果データを前記計算結果保存手段から読み出して送信することを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記計算対象データを送信した端末の地域情報を取得する地域情報取得手段を備え、
前記受信データ判断手段は、前記地域情報取得手段により取得された端末の地域情報を利用して、前記保存された前記計算対象データと同じ計算対象データを新たに受信したか否かを判断する地域情報利用判断手段を備える、ことを特徴とする請求項２に記載のサーバ装置。
【請求項４】
前記地域情報取得手段は、前記端末自体の端末情報に基づいて前記地域情報を特定して取得することを特徴とする請求項３に記載のサーバ装置。
【請求項５】
前記地域情報取得手段は、前記端末から送信された前記地域情報を取得することを特徴する請求項３に記載のサーバ装置。
【請求項６】
前記地域情報取得手段は、前記計算対象データとともに受信した、当該計算対象データが記載されている教材の教材情報に基づいて前記地域情報を取得することを特徴する請求項３に記載のサーバ装置。
【請求項７】
前記計算対象データは関数式データであり、
前記関数式データを正規化する正規化手段を備え、
前記受信データ判断手段は、前記正規化手段により前記新たに受信した関数式データが正規化された正規化後の関数式データと、前記計算結果保存手段に保存された前記正規化後の関数式データとが同じであるか否かを判断する正規化データ判断手段を備える、
ことを特徴とする請求項２から請求項６のいずれか一項に記載のサーバ装置。
【請求項８】
前記正規化手段が行う正規化処理は、前記関数式データ中の項毎に計算を行う単純化処理、前記関数式データ中に小数がある場合に当該小数を分数化する分数化処理、および前記関数式データが因数分解可能である場合に因数分解する因数分解処理を含むことを特徴とする請求項７に記載のサーバ装置。
【請求項９】
前記正規化手段が行う正規化処理は、前記関数式データ中の定数に数値を代入する代入処理を含むことを特徴とする請求項７または請求項８に記載のサーバ装置。
【請求項１０】
前記正規化手段が行う正規化処理は、前記関数式データが引用形式の場合に引用先の関数式データを引用元の関数式データに当てはめて１つの関数式データとする処理を含むことを特徴とする請求項７から請求項９のいずれか一項に記載のサーバ装置。
【請求項１１】
計算対象データを受信する計算対象データ受信処理と、
前記計算対象データを計算する計算処理と、
前記計算結果データを送信する計算結果送信処理と、
前記計算対象データ受信処理により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断処理と、
を含み、
前記計算処理では、前記受信データ判断処理により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わない、
ことを特徴とする計算方法。
【請求項１２】
コンピュータを、
計算対象データを受信する計算対象データ受信手段と、
前記計算対象データを計算する計算手段と、
前記計算結果データを送信する計算結果送信手段と、
前記計算対象データ受信手段により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断手段
として機能させるとともに、
前記計算手段は、前記受信データ判断手段により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わないように機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置、計算方法およびプログラムに係り、特に端末から送信されてきた計算対象データの計算を行うサーバ装置、計算方法およびプログラムに関する。
【背景技術】
【０００２】
従来から、ブラウザ上で動作する関数電卓等の数学アプリケーションが知られている。そして、例えば、このような数学アプリケーションが関数式をグラフ表示するアプリケーションである場合、ユーザが、関数式や計算範囲、ステップ等を入力すると、ブラウザ上で、入力された計算範囲やステップから関数式に代入する各変数を割り出し、各変数をそれぞれ関数式に代入して計算を行い、計算結果をグラフ上にプロットすることで、入力された関数式のグラフ表示を行うように構成される。
【０００３】
しかし、この場合、ユーザがブラウザ上で操作することで、上記の計算を行うための計算アルゴリズムを見ることができる場合が多いが、このような計算アルゴリズムは、通常、計算アルゴリズムや数学アプリケーション等を開発する際のノウハウが盛り込まれているため、競業他社等に知られたくない場合も少なくない。
【０００４】
そこで、例えば特許文献１に記載されているように、ユーザが端末に入力した関数式（計算範囲やステップ等を含む。）をサーバ装置に送信し、サーバ装置で上記のような計算を行い、一連の計算結果等を端末側に送信して、端末上にグラフ表示させるように構成することが可能である。このように構成すれば、ユーザ等が計算アルゴリズム等を見ることができないようにしながら、端末上では、関数式を的確にグラフ表示させることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−０９９９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、例えば、このような端末を生徒や児童に持たせ、授業中に数十人の生徒等がそれぞれ端末を操作して電子教科書を開き、関数式をグラフ表示させる問題を一斉に解くような状況では、端末上の電子教科書に載っている関数式が、各端末からそれぞれサーバ装置には送信される状態になる。
【０００７】
しかし、電子教科書に載っている関数式は同じであるのに、サーバ装置は、各端末から関数式データが送信されてくる毎に同じ計算を毎回行わなければならなくなるが、これではサーバ装置の計算処理の負荷が大きくなる。また、それとともに、生徒等（ユーザ）はすぐに答えが知りたいにもかかわらず、答え、すなわちこの場合は端末上でのグラフ表示が遅くなり、レスポンスタイムが長くなってしまうといった問題があった。
【０００８】
本発明は、上記の問題点を鑑みてなされたものであり、端末から送信されてきた計算対象データの計算を行うサーバ装置において、サーバ装置の計算処理の負荷を軽減し、迅速な処理が可能なサーバ装置、計算方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
以上の課題を解決するため、本発明のサーバ装置は、
計算対象データを受信する計算対象データ受信手段と、
前記計算対象データを計算する計算手段と、
前記計算結果データを送信する計算結果送信手段と、
前記計算対象データ受信手段により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断手段と、
を備え、
前記計算手段は、前記受信データ判断手段により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わない、
ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、端末から送信されてきた計算対象データの計算を行うサーバ装置において、サーバ装置の計算処理の負荷を軽減し、迅速な処理が可能となる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係るサーバ装置と端末の内部構成等を示すブロック図である。
【図２】端末のＣＰＵの動作等を説明するフローチャートである。
【図３】（Ａ）〜（Ｄ）端末の表示部に表示される画面の例を表す図である。
【図４】本実施形態に係るサーバ装置のＣＰＵの動作等を説明するフローチャートである。
【図５】サーバ装置の記憶部の端末ＤＢの構成例を表す図である。
【図６】サーバ装置のキャッシュメモリの計算結果ＤＢの構成例を表す図である。
【図７】正規化手段における正規化処理を説明するフローチャートである。
【図８】（Ａ）〜（Ｃ）端末の表示部に表示される画面の例を表す図である。
【発明を実施するための形態】
【００１２】
以下、本発明に係るサーバ装置、計算方法およびプログラムの実施の形態について、図面を参照して説明する。
【００１３】
なお、本発明の範囲は、図示例に限定されない。特に、以下では、計算対象データが関数式データであり、サーバ装置が、複数の端末からそれぞれ送信されてきた関数式データや計算範囲、ステップ等に基づいて関数式データに対応するグラフを表示するための計算結果データを計算し、各計算結果データをそれぞれの端末に送信する場合について説明するが、本発明はこの場合に限定されず、例えば、それぞれの端末から送信されてきた計算対象データに基づいて統計的な計算等を行って計算結果データを端末に送信するような場合も含まれる。
【００１４】
図１は、本実施形態に係るサーバ装置と端末の内部構成等を示すブロック図である。図１ではサーバ装置１と１つの端末を例示するが、実際には複数の端末がネットワークを介して接続される。サーバ装置１は、ＣＰＵ（Central Processing Unit）１１と、表示部１２と、入力部１３と、記録媒体読取部１４と、通信部１５と、記憶部１６と、フラッシュメモリ１７等がバスに接続されて構成されている。
【００１５】
表示部１２は、ＣＰＵ１１からの制御に従って、図示しないディスプレイ上に各種情報を表示するようになっている。なお、図１に示すように、表示部１２のディスプレイ上にタッチパネル１２１を設け、ユーザがタッチパネル１２１にタッチする等して入力等の操作を行うことができるように構成することも可能である。
【００１６】
入力部１３は、図示しないキーボードやテンキー、マウス等で構成されており、ユーザがキーボード等を操作して入力した内容をＣＰＵ１１に出力するようになっている。記録媒体読取部１４は、着脱自在に装着される記録媒体１４１から情報を読み取ることができるようになっている。
【００１７】
通信部１５は、ネットワークを介して端末２０から送信されてきたデータ（例えば後述する計算対象データ）等を受信し、また、ＣＰＵ１１の指示に従って、サーバ装置１からネットワークを介して端末２０にデータ（例えば後述する計算結果データ）等を送信するようになっている。
【００１８】
記憶部１６は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等で構成されており、サーバ装置全体を制御する制御プログラム１６１や、本発明に係るプログラムである計算プログラム１６２等が記憶されている。また、記憶部１６には、端末２０から送信されてきた計算対象データや端末２０等に関するデータを記憶する端末ＤＢ１６３も記憶されている。
【００１９】
フラッシュメモリ１７には、計算結果データを一時的に記憶する計算結果ＤＢ１７１が記憶されている。なお、上記の端末ＤＢ１６３や計算結果ＤＢ１７１の具体的な構成等については後で説明する。
【００２０】
ＣＰＵ１１は、サーバ装置１の動作を制御するようになっている。具体的には、ＣＰＵ１１は、記憶部１６に記憶されている制御プログラム１６１や各種アプリケーションプログラムの中から指定されたプログラムを読み出してＲＡＭの作業領域に展開し、ＲＡＭに展開されたプログラムとの協働で、各種処理を実行するようになっている。また、ＣＰＵ１１は、通信部１５を制御して、ネットワークを介して端末２０にデータ（例えば後述する計算結果データ）等を送信させるようになっている。
【００２１】
一方、端末２０も、ＣＰＵ２１と、表示部２２と、入力部２３と、記録媒体読取部２４と、通信部２５と、記憶部２６等がバスに接続されて構成されている。
【００２２】
なお、端末２０は、計算対象データ等をサーバ装置１に送信できるものであれば、パーソナルコンピュータ等のコンピュータやタブレット端末、スマートフォン等のどのような形態の端末でもよく、専用端末であってもよい。また、前述した特許文献１では、関数電卓上に表示されたＱＲコード（登録商標）等の２次元コードを撮影して送信する場合が示されており、本発明でも計算対象データから変換された２次元コードを撮影して送信するように構成してもよいが、必ずしもそのように構成する必要はない。
【００２３】
端末２０においても、表示部２２や表示部２２、入力部２３、記録媒体読取部２４、通信部２５はサーバ装置１の場合と同様に構成することが可能である。
【００２４】
また、端末２０の記憶部２６には、サーバ装置１から送信されてきた計算結果データに基づいて表示部２２上に関数式データをグラフ表示させるためのグラフ表示処理プログラム２６１等の各種プログラムや、端末２０自体の識別情報である端末ＩＤ２６２のほか、電子教科書等の教材データ２６３等が記憶されている。
【００２５】
また、記憶部１６には、端末２０を使って、現在、生徒等が入力した関数式データを一時的に記憶する関数式記憶エリア２６４や、生徒等が解いている問題が掲載されている電子教科書等の教材の出版元や教材名、ページ、問題番号の情報（以下、教材情報という。）を一時的に記憶する教材情報記憶エリア２６５が設けられている。
【００２６】
そして、ＣＰＵ２１は、端末２０の動作を制御するようになっており、ＣＰＵ２１は、記憶部２６に記憶されている各種のプログラムを読み出してＲＡＭの作業領域に展開し、ＲＡＭに展開されたプログラムとの協働で、各種処理を実行するようになっている。
【００２７】
［端末の動作］
まず、端末２０側の動作について、図２に示すフローチャート等に基づいて説明する。ユーザが端末２０を操作してサーバ装置１のホームページにアクセスする等すると、端末２０のＣＰＵ２１は、記憶部２６からグラフ表示処理プログラム２６１（図１参照）を読み出してグラフ表示処理のアプリケーションを起動する。その際、ＣＰＵ２１は、図３（Ａ）に示すような初期画面を表示部２２に表示する。
【００２８】
そして、ＣＰＵ２１は、ユーザにより電子教科書等の教材（テキスト）を表示する旨の指示が入力されると（ステップＳ１：Ｙｅｓ）、ユーザの操作に応じて教材やページを指定して（ステップＳ２）、指定した教材に対応する教材データ２６３を記憶部２６から読み出す。そして、図３（Ｂ）に示すように、画面上部に、指定された教材の指定されたページのデータを表示する（ステップＳ３）。
【００２９】
続いて、ユーザが画面の関数式入力エリアＡ（図３（Ｂ）参照）をタッチしたりカーソルを移動させる等して関数式入力エリア指定が行われると（ステップＳ４：Ｙｅｓ）、図３（Ｃ）に示すように、ユーザの操作に応じて関数式データ（計算対象データ）を入力し、グラフ表示する対象となる関数式データを指定して（ステップＳ５）、入力された関数式データを関数式記憶エリア２６４に一時的に記憶する。また、ＣＰＵ２１は、その時点で画面上に表示されている教材データ２６３の教材情報（すなわち出版元や教材名（教科書名）、ページ、問題番号の情報）を教材情報記憶エリア２６５に一時的に記憶する。
【００３０】
また、図３（Ｃ）等に示すように、デフォルトでは、例えば、関数式データをグラフ表示する範囲（サーバ装置１における計算範囲に対応。）は横（ｘ方向）が−８〜＋８、縦（ｙ方向）が−５〜＋５の範囲に設定され、ステップ（関数式に代入するｘの間隔）は０．２に設定されているが、ユーザが表示範囲（計算範囲）やステップを変更した場合には、ＣＰＵ２１は、それらのデータも関数式記憶エリア２６４に一時的に記憶する。なお、ステップの代わりに、ｘ方向の計算範囲を何分割するかを表す分割数データを設定するように構成することも可能である。
【００３１】
続いて、ユーザによりグラフ表示を実行する操作が行われると（ステップＳ６；Ｙｅｓ）、ＣＰＵ２１は、関数式記憶エリア２６４に一時的に記憶させた関数式データや、ｘ方向の計算範囲（デフォルトの場合は−８〜＋８、変更された場合は変更された計算範囲）、ステップ（或いは分割数データ）のほか、教材情報（出版元、教材名、ページ、問題番号）や端末ＩＤ２６２を記憶部２６から読み出して、サーバ装置１に送信する（ステップＳ７）。
【００３２】
なお、端末２０が、当該端末２０が使用される国や地域を表す情報（以下、地域情報という。）を有している場合には、ＣＰＵ２１は、関数式データ等をサーバ装置１に送信する際に地域情報を送信するように構成することも可能である。また、ＣＰＵ２１が、インストールされているＯＳ（Operating System）に設定されている国情報等を読み出し、それを地域情報として送信するように構成することも可能である。
【００３３】
そして、ＣＰＵ２１は、サーバ装置１から計算結果データを受信すると（ステップＳ８）、図３（Ｄ）に示すように、受信した計算結果データを画面のグラフ上にプロットして、入力された関数式データをグラフ表示するようになっている（ステップＳ９）。
【００３４】
［サーバ装置の動作］
次に、サーバ装置１の動作について、図４に示すフローチャート等に基づいて説明する。また、本実施形態に係るサーバ装置１の作用についてもあわせて説明する。なお、以下で説明するサーバ装置１の計算処理は、前述した本発明に係る計算方法やプログラムに従って行われるため、以下の説明は、本発明に係る計算方法やプログラムについての説明にもなっている。
【００３５】
サーバ装置１の通信部１５がいずれかの端末２０から計算処理の依頼を受信すると（ステップＳ１１：Ｙｅｓ）、関数式データ（計算対象データ）等を受信して、ＣＰＵ１１は、関数式データ等を記憶部１６の端末ＤＢ１６３に登録する（ステップＳ１２）。
【００３６】
本実施形態では、端末ＤＢ１６３は、図５に示すような構成になっており、ＣＰＵ１１は、端末２０から関数式データ等を受信すると、端末ＤＢ１６３に、登録した順に登録ＩＤを付けて関数式データや教材情報、端末ＩＤ等を登録する。なお、端末ＤＢ１６３における「計算結果Ｎｏ．」については後で説明する。
【００３７】
また、本実施形態では、ＣＰＵ１１は、関数式データ等を送信した端末２０が存在する地域を表す地域情報を取得するようになっている（ステップＳ１３）。その際、上記のように、端末２０から関数式データ等を送信する際に、端末２０が自らの地域情報を送信するように構成されている場合は、サーバ装置１のＣＰＵ１１は、端末２０から送信された地域情報を取得し、図５に示すように、受信した関数式データに対応付けて端末ＤＢ１６３に登録する。
【００３８】
また、端末２０が地域情報を送信するように構成されていない場合は、ＣＰＵ１１は、端末２０自体の端末情報、すなわち例えば端末２０のＩＰ（Internet Protocol）アドレス等に基づいて地域情報を特定して取得するように構成することも可能である。さらに、ＣＰＵ１１は、上記のように関数式データとともに受信した教材情報（特に出版元）に基づいて地域情報を取得するように構成することも可能である。
【００３９】
続いて、ＣＰＵ１１は、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）の計算結果である計算結果データが、キャッシュメモリ１７の計算結果ＤＢ１７１に保存されていなければ（ステップＳ１４〜Ｓ１６：いずれもＮｏ）、受信した関数式データ（計算対象データ）の計算を新規に実行する（ステップＳ１７）。なお、ステップＳ１４〜Ｓ１６の各処理については後で説明する。
【００４０】
具体的には、ＣＰＵ１１は、ステップＳ１７では、端末２０から関数式データとともに受信した計算範囲やステップ（或いは分割数データ）に基づいて、関数式に代入する複数の変数値（すなわちｘの値）を割り出す。そして、各変数値ｘをそれぞれ関数式に代入して計算値ｙ（すなわちｘに対応するｙの値）をそれぞれ計算する。
【００４１】
そして、ＣＰＵ１１は、図６に示すように、計算した結果である計算結果データ（すなわちこの場合は変数値ｘと計算値ｙ）を関数式データ（計算対象データ）にそれぞれ対応付けてキャッシュメモリ１７の計算結果ＤＢ１７１に保存する（ステップＳ１８）。
【００４２】
その際、例えば、ＣＰＵ１１は、図６に示すように、関数式データに変数値ｘを代入して計算して計算結果データ（変数値ｘ、計算値ｙ）を計算結果ＤＢ１７１に保存するごとに、計算結果Ｎｏ．を割り当てていき、図５に示すように、関数式データ（計算対象データ）に関する計算結果である計算結果データの計算結果Ｎｏ．が何番から何番までであるかを、記憶部１６の端末ＤＢ１６３に登録した関数式データ（計算対象データ）に対応付けて登録するように構成することが可能である。
【００４３】
そして、ＣＰＵ１１は、計算処理の依頼（ステップＳ１１参照）に対応する関数式データ（計算対象データ）に関する計算結果データをキャッシュメモリ１７の計算結果ＤＢ１７１に保存すると（ステップＳ１８）、これらの計算結果データ（この場合はｘ、ｙの行列データになる。）を、通信部１５からネットワークを介して依頼元の端末２０に送信させて（ステップＳ１９）、一連の計算処理を終了して、次の計算処理の依頼を待つ状態に戻る（ステップＳ１１）。
【００４４】
一方、サーバ装置１のＣＰＵ１１は、上記のようにいずれかの端末２０から計算処理の依頼があり（ステップＳ１１：Ｙｅｓ）、当該端末２０から受信して記憶部１６の端末ＤＢ１６３に登録（ステップＳ１２）した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）が既にキャッシュメモリ１７の計算結果ＤＢ１７１に保存されている場合（ステップＳ１６：Ｙｅｓ）、すなわち、端末２０から、保存された関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）を受信した場合には、受信した関数式データ（計算対象データ）の計算（ステップＳ１７）や計算結果データのキャッシュメモリ１７への保存（ステップＳ１８）を行わず、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）の計算結果である計算結果データをキャッシュメモリ１７の計算結果ＤＢ１７１から読み出して（ステップＳ２０）、依頼元の端末２０に送信させるようになっている。
【００４５】
すなわち、ＣＰＵ１１は、端末２０から受信した関数式データ（計算対象データ）を記憶部１６の端末ＤＢ１６３に登録すると（ステップＳ１２）、キャッシュメモリ１７の計算結果ＤＢ１７１を検索して、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）がキャッシュメモリ１７の計算結果ＤＢ１７１内にあるかどうかを検索する。
【００４６】
そして、ＣＰＵ１１は、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）がキャッシュメモリ１７の計算結果ＤＢ１７１に保存されている場合には（ステップＳ１６：Ｙｅｓ）、受信した関数式データ（計算対象データ）の計算等は行わず、当該関数式データ（計算対象データ）の計算結果である計算結果データをキャッシュメモリ１７の計算結果ＤＢ１７１から読み出して（ステップＳ２０）、それらの計算結果データを、通信部１５からネットワークを介して依頼元の端末２０に送信させるようになっている（ステップＳ１９）。
【００４７】
しかし、キャッシュメモリ１７の計算結果ＤＢ１７１に保存されている計算結果データの量が膨大である場合には検索に時間がかかる。そこで、本実施形態では、検索時間を短縮してレスポンスタイム（すなわち端末２０から計算処理の依頼があってから計算結果データを当該端末２０に送信するまでの時間、或いは端末２０上にグラフ表示がなされるまでの時間）をより短縮するために、まず、前述した地域情報や教材情報を利用して（地域情報や教材情報に基づいて検索範囲を狭めて）検索を行うようになっている。
【００４８】
具体的には、ＣＰＵ１１は、上記のようにして端末２０から受信した関数式データ（計算対象データ）を記憶部１６の端末ＤＢ１６３（図５参照）に登録したり（ステップＳ１２）、端末２０の地域情報を取得して端末ＤＢ１６３に登録すると（ステップＳ１３）、端末ＤＢ１６３内に、今回取得した地域情報と同じ又は近い地域を示す地域情報に対応付けられた、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）が既に登録されているか否かを判断する（ステップＳ１４）。
【００４９】
また、今回取得した地域情報と同じ又は近い地域を示す地域情報に対応付けられた、受信した関数式データ（計算対象データ）とｖ関数式データ（計算対象データ）が端末ＤＢ１６３に登録されていない場合には（ステップＳ１４：Ｎｏ）、ＣＰＵ１１は、続いて、端末ＤＢ１６３内に、関数式データ（計算対象データ）と同時に受信した教材情報（図５参照）と同じ教材情報（出版元、教材名、ページ、問題番号の何れか又は複数）に対応付けられた、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）が既に登録されているか否かを判断する（ステップＳ１５）。
【００５０】
さらに、受信した教材情報と同じ教材情報（出版元、教材名、ページ、問題番号の何れか又は複数）に対応付けられた、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）が端末ＤＢ１６３に登録されていない場合には（ステップＳ１５：Ｎｏ）、ＣＰＵ１１は、受信した関数式データ（計算対象データ）と同じ関数式データ（計算対象データ）がキャッシュメモリ１７の計算結果ＤＢ１７１に保存されているか否かを検索（全検索）して判断する（ステップＳ１６）。
【００５１】
そして、ステップＳ１４〜Ｓ１６のいずれかの処理でＹｅｓ判定の場合、ＣＰＵ１１は、前述したように受信した関数式データ（計算対象データ）の計算等は行わずに、端末ＤＢ１６３上で、既に登録されている同じ関数式データ（計算対象データ）に対応付けられている計算結果Ｎｏ．（図５参照）を基に、キャッシュメモリ１７の計算結果ＤＢ１７１に保存されている、当該関数式データ（計算対象データ）の計算結果である計算結果データをキャッシュメモリ１７の計算結果ＤＢ１７１から読み出して（ステップＳ２０）、それらの計算結果データを、通信部１５からネットワークを介して依頼元の端末２０に送信させる（ステップＳ１９）。
【００５２】
［効果］
以上のように、本実施形態に係るサーバ装置１、計算方法およびプログラムによれば、サーバ装置１のＣＰＵ１１は、受信した計算対象データ（本実施形態では関数式データ）がキャッシュメモリ１７に保存されていない場合には当該計算対象データの計算を実行して計算結果データを端末２０に送信するが、キャッシュメモリ１７に保存された計算対象データと同じ計算対象データを受信した場合には、受信した計算対象データの計算を行わず、受信した計算対象データと同じ計算対象データの計算結果データをキャッシュメモリ１７から読み出して端末２０に送信する。
【００５３】
そのため、キャッシュメモリ１７に保存された計算対象データと同じ計算対象データを受信した場合には受信した計算対象データの計算を行わずに済むため、サーバ装置１の計算処理の負荷を軽減することが可能となるとともに、計算処理を行わない分だけレスポンスタイムを短縮することが可能となる。
【００５４】
そのため、例えば、生徒等が関数式をグラフ表示させる問題を一斉に解くような状況では、サーバ装置１は、最初に受信した関数式データ（計算対象データ）の計算を行えば、その後送信されてくる同じ関数式データ（計算対象データ）の計算を行う必要がなくなりレスポンス良く計算結果データを送信することが可能となる。そのため、生徒側も、関数式データ（計算対象データ）を送信するとすぐに端末２０上にグラフ表示されるようになり、効率良く学習を行うことが可能となる。
【００５５】
［正規化処理について］
ところで、前述した図３（Ｃ）では、生徒等が問題に記載された通りに関数式データを入力する場合を示したが、例えば、別の生徒等が別の端末２０で、問題の上側の式を、
ｙ＝１．５ｘ２＋ｘ−４
のように分数を小数化したり、問題では昇べきの順に記載されていた関数式を降べきの順に替えたりして関数式入力エリアＡに入力する場合がある（後述する図８（Ａ）参照）。また、例えば問題が、
ｙ＝（２ｘ２＋ｘ−３）−（ｘ２＋４ｘ＋１）
のように記載されている場合に、生徒等が項ごとに計算して
ｙ＝ｘ２−３ｘ−４
と入力する場合もある。
【００５６】
そして、生徒等が問題に記載された通りに関数式データを入力したり、問題に記載された関数式を替えて入力したりすると、サーバ装置１のＣＰＵ１１は、受信した関数式データの内容は同じ内容であるにもかかわらず、それらを異なる関数式データであると判断して、必要のない計算処理を行ってしまい、サーバ装置１の計算処理の負荷が増大したりレスポンスタイムが長くなったりする。
【００５７】
そこで、計算対象データが上記のような関数式データである場合、サーバ装置１のＣＰＵ１１は、受信した関数データを正規化し、正規化した正規化後の関数式データ（以下、正規化関数式データという。）と、キャッシュメモリ１７の計算結果ＤＢ１７１に保存された正規化関数式データとが同じである場合には、受信した関数式データの計算を行わず、キャッシュメモリ１７の計算結果ＤＢ１７１に保存されている、受信した正規化関数式データと同じ正規化関数式データの計算結果データを読み出して端末２０に送信するように構成することが可能である。
【００５８】
また、この場合も、受信した関数式データを正規化した正規化関数式データがキャッシュメモリ１７の計算結果ＤＢ１７１に保存されていなければ、ＣＰＵ１１は、受信した関数式データの計算を行うとともに、受信した関数式データを正規化した正規化関数式データと計算結果である計算結果データとをキャッシュメモリ１７の計算結果ＤＢ１７１に保存する。
【００５９】
なお、関数式データの正規化処理は、上記のように、端末２０から受信した関数式データに対してサーバ装置１のＣＰＵ１１が行うように構成してもよく、また、端末２０が正規化処理を行い（すなわち端末２０が正規化手段として機能するように構成し）、正規化関数式データをサーバ装置１に送信するように構成することも可能である。
【００６０】
そして、正規化処理をサーバ装置１のＣＰＵ１１が行う場合、正規化処理は、例えば図４に示したフローチャートのステップＳ１３とステップＳ１４の各処理の間で行われる。また、端末２０で正規化処理を行う場合、正規化処理は、例えば図２に示したフローチャートのステップＳ６とステップＳ７の各処理の間で行われるように構成される。
【００６１】
ここで、正規化処理とは、関数式データを統一された形態に変換する処理のことであり、同じ内容の関数式データを同じ形の関数式データに変形する処理のことである。そして、正規化処理では、図７に示すフローチャートに従って、下記のような各処理が行われる。なお、以下では、関数式データの正規化処理を行う手段（サーバ装置１のＣＰＵ１１或いは端末２０のＣＰＵ２１）を正規化手段として説明する。
【００６２】
正規化手段は、まず、関数式データを項毎に計算して単純化し（単純化処理）、項毎に次数順に整列する（ステップＳ２１）。すなわち、例えば、関数式データが、
ｙ＝（２ｘ２＋ｘ−３）−（ｘ２＋４ｘ＋１）
のような関数式である場合、項毎に計算して単純化し、
ｙ＝ｘ２−３ｘ−４
の形にして正規化する。
【００６３】
そして、予め設定された仕方（すなわち昇べきか降べきか）に従って関数式データを次数順に整列する。すなわち、例えば、設定された次数順が昇べきであれば、上記の関数式データを、
ｙ＝−４−３ｘ＋ｘ２
の形に変更して正規化する。降べきの場合は上記の関数式データのままである。以下では、次数順が降べきに設定されている場合について説明するが、昇べきに設定されている場合も同様に説明される。
【００６４】
次に、正規化手段は、関数式データ中に小数がある場合には（ステップＳ２２：Ｙｅｓ）、その小数を分数化する分数化処理を行う（ステップＳ２３）。すなわち、例えば、関数式データが、
ｙ＝１．５ｘ２＋ｘ−４
であれば、
ｙ＝３／２ｘ２＋ｘ−４
に変更して正規化する。図８（Ａ）では、関数式が、
ｙ＝１．５ｘ２＋ｘ−４
小数化して入力されているが、分数化の正規化することにより、
ｙ＝３／２ｘ２＋ｘ−４
となる。
【００６５】
図３（Ｄ）の関数式が、
ｙ＝−４＋ｘ＋３／２ｘ２
と昇べきの順に記載されているが、を降べきの順に正規化することにより、
ｙ＝３／２ｘ２＋ｘ−４
となる。その結果、図８（Ａ）では、図３（Ｄ）と同じ計算式と判断されて、新たに計算せずに、図３（Ｄ）の計算結果（各点の座標データ）を送信する。その結果、図３（Ｄ）の端末で表示されたものと、同じグラフ画像が図８（Ａ）の端末で表示される。
【００６６】
また、正規化手段は、関数式データが因数分解可能である場合には（ステップＳ２４：Ｙｅｓ）、因数分解する因数分解処理を行う（ステップＳ２５）。すなわち、例えば、関数式データが、
ｙ＝ｘ２−３ｘ−４
であれば、右辺を因数分解して、
ｙ＝（ｘ＋１）（ｘ−４）
に変更して正規化する。
【００６７】
また、正規化手段は、関数式データ中に定数がある場合には（ステップＳ２６：Ｙｅｓ）、関数式データ中の定数に数値を代入する処理を行う（ステップＳ２７）。すなわち、例えば、関数式データが、
ｙ＝ｘ２＋ａｘ＋５
ａ＝４
の形であれば、上側の関数式データ中の定数ａに数値４を代入して、
ｙ＝ｘ２＋４ｘ＋５
に変更して正規化する。
【００６８】
また、正規化手段は、関数式データが引用形式の場合には（ステップＳ２８：Ｙｅｓ）、引用先の関数式データを引用元の関数式データに当てはめて１つの関数式データとする処理を行う（ステップＳ２９）。すなわち、例えば、関数式データが、
ｙ１＝ｘ２
ｙ＝２＋ｙ１
の形であれば（図８（Ｂ）参照）、引用先の関数式データ「ｙ１＝ｘ２」を引用元の関数式データ「ｙ＝２＋ｙ１」に当てはめるとともに降べきの順に並べ替えて、
ｙ＝ｘ２＋２
に変更して正規化する。
【００６９】
一方、図８（Ｃ）では、
ｙ＝ｘ２＋２
のデータが
ｙ＝ｘ２＋２
に変更して正規化される。従って、図８（Ｃ）の計算式は、図８（Ｂ）と同じ計算式と判断されて、新たに計算せずに、図８（Ｂの計算結果（各点の座標データ）を送信する。その結果、図８（Ｂ）の端末で表示されたものと、同じグラフ画像が図８（Ｃ）の端末で表示される。
【００７０】
以上のように関数式データを正規化することで、同じ内容の関数式データを同じ形の関数式データ（正規化関数式データ）で表すことが可能となる。そのため、サーバ装置１のＣＰＵ１１がキャッシュメモリ１７の計算結果ＤＢ１７１を検索する際に（ステップＳ１４〜Ｓ１６参照）、正規化した正規化関数式データの形と、キャッシュメモリ１７の計算結果ＤＢ１７１に保存された正規化関数式データの形を比較して検索すれば、同じ内容の正規化関数式データが必ずヒットする。そのため、同じ内容の正規化関数式データを的確に検索することが可能となるとともに、検索のヒット率を的確に向上させることが可能となる。
【００７１】
そして、内容は同じであるにもかかわらず関数式データの形が異なるために（例えば「ｙ＝（２ｘ２＋ｘ−３）−（ｘ２＋４ｘ＋１）」と「ｙ＝ｘ２−３ｘ−４」や「ｙ＝ｘ２−３ｘ−４」と「ｙ＝−４−３ｘ＋ｘ２」等）、検索してもヒットせず、サーバ装置１のＣＰＵ１１が、関数式データの形が異なるために同じ内容の計算処理を何度も行ってしまい、サーバ装置１の計算処理の負荷が増大したりレスポンスタイムが長くなったりすることを的確に防止することが可能となる。
【００７２】
なお、上記のように関数式データが引用形式（図８（Ｂ）参照）の場合、別の生徒等が別の端末２０で、問題の「ｙ２＝２＋ｙ１」のｙ１に「ｙ１＝ｘ２」を予め代入して、図８（Ｃ）に示すように「ｙ２＝２＋ｘ２」と入力する場合もある。しかし、この場合も、正規化手段は、関数式データ「ｙ＝２＋ｘ２」を降べきの順に並べ替えて、
ｙ＝ｘ２＋２
に変更して正規化する。そして、この場合、図８（Ｂ）の場合に正規化した正規化関数式データ「ｙ＝ｘ２＋２」がキャッシュメモリ１７の計算結果ＤＢ１７１に保存されているため、キャッシュメモリ１７の計算結果ＤＢ１７１を検索すれば正規化関数式データ「ｙ＝ｘ２＋２」が必ずヒットすることになる。
【００７３】
以上、本発明の実施形態を説明したが、本発明の範囲は、上述の実施形態等に限定するものではなく、特許請求の範囲に記載された発明の範囲とその均等の範囲を含む。
【００７４】
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
〔付記〕
＜請求項１＞
計算対象データを受信する計算対象データ受信手段と、
前記計算対象データを計算する計算手段と、
前記計算結果データを送信する計算結果送信手段と、
前記計算対象データ受信手段により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断手段と、
を備え、
前記計算手段は、前記受信データ判断手段により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わない、
ことを特徴とするサーバ装置。
＜請求項２＞
前記計算手段により計算された結果である計算結果データを前記計算対象データに対応付けて保存する計算結果保存手段を備え、
前記計算結果送信手段は、前記受信データ判断手段により同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データと同じ前記計算対象データの計算結果である前記計算結果データを前記計算結果保存手段から読み出して送信することを特徴とする請求項１に記載のサーバ装置。
＜請求項３＞
前記計算対象データを送信した端末の地域情報を取得する地域情報取得手段を備え、
前記受信データ判断手段は、前記地域情報取得手段により取得された端末の地域情報を利用して、前記保存された前記計算対象データと同じ計算対象データを新たに受信したか否かを判断する地域情報利用判断手段を備える、ことを特徴とする請求項２に記載のサーバ装置。
＜請求項４＞
前記地域情報取得手段は、前記端末自体の端末情報に基づいて前記地域情報を特定して取得することを特徴とする請求項３に記載のサーバ装置。
＜請求項５＞
前記地域情報取得手段は、前記端末から送信された前記地域情報を取得することを特徴する請求項３に記載のサーバ装置。
＜請求項６＞
前記地域情報取得手段は、前記計算対象データとともに受信した、当該計算対象データが記載されている教材の教材情報に基づいて前記地域情報を取得することを特徴する請求項３に記載のサーバ装置。
＜請求項７＞
前記計算対象データは関数式データであり、
前記関数式データを正規化する正規化手段を備え、
前記受信データ判断手段は、前記正規化手段により前記新たに受信した関数式データが正規化された正規化後の関数式データと、前記計算結果保存手段に保存された前記正規化後の関数式データとが同じであるか否かを判断する正規化データ判断手段を備える、
ことを特徴とする請求項２から請求項６のいずれか一項に記載のサーバ装置。
＜請求項８＞
前記正規化手段が行う正規化処理は、前記関数式データ中の項毎に計算を行う単純化処理、前記関数式データ中に小数がある場合に当該小数を分数化する分数化処理、および前記関数式データが因数分解可能である場合に因数分解する因数分解処理を含むことを特徴とする請求項７に記載のサーバ装置。
＜請求項９＞
前記正規化手段が行う正規化処理は、前記関数式データ中の定数に数値を代入する代入処理を含むことを特徴とする請求項７または請求項８に記載のサーバ装置。
＜請求項１０＞
前記正規化手段が行う正規化処理は、前記関数式データが引用形式の場合に引用先の関数式データを引用元の関数式データに当てはめて１つの関数式データとする処理を含むことを特徴とする請求項７から請求項９のいずれか一項に記載のサーバ装置。
＜請求項１１＞
計算対象データを受信する計算対象データ受信処理と、
前記計算対象データを計算する計算処理と、
前記計算結果データを送信する計算結果送信処理と、
前記計算対象データ受信処理により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断処理と、
を含み、
前記計算処理では、前記受信データ判断処理により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わない、
ことを特徴とする計算方法。
＜請求項１２＞
コンピュータを、
計算対象データを受信する計算対象データ受信手段と、
前記計算対象データを計算する計算手段と、
前記計算結果データを送信する計算結果送信手段と、
前記計算対象データ受信手段により受信された計算対象データと同じ計算対象データを新たに受信したか否かを判断する受信データ判断手段
として機能させるとともに、
前記計算手段は、前記受信データ判断手段により、同じ計算対象データを新たに受信したと判断された場合に、新たに受信した計算対象データの計算を行わないように機能させるためのプログラム。
【符号の説明】
【００７５】
１  サーバ装置
１１  ＣＰＵ（計算手段、計算結果送信手段、受信データ判断手段、地域情報取得手段、正規化手段、正規化データ判断手段）
１５  通信部（計算対象データ受信手段）
１７  キャッシュメモリ（計算結果保存手段）
２０  端末
２１  端末のＣＰＵ（正規化手段）
【図１】
2018049308.tif 000003
【図２】
2018049308.tif 000004
【図３】
2018049308.tif 000005
【図４】
2018049308.tif 000006
【図５】
2018049308.tif 000007
【図６】
2018049308.tif 000008
【図７】
2018049308.tif 000009
【図８】
2018049308.tif 000010