(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-07-11
(45)【発行日】2024-07-22
(54)【発明の名称】表計算装置、表計算方法、表計算プログラム、及び、アドインプログラム
(51)【国際特許分類】
G06N 3/0475 20230101AFI20240712BHJP
G06F 16/957 20190101ALI20240712BHJP
G06F 40/18 20200101ALI20240712BHJP
【FI】
G06N3/0475
G06F16/957
G06F40/18
(21)【出願番号】P 2024523169
(86)(22)【出願日】2024-01-25
(86)【国際出願番号】 JP2024002148
【審査請求日】2024-04-17
【早期審査対象出願】
(73)【特許権者】
【識別番号】501375087
【氏名又は名称】株式会社ビジー・ビー
(74)【代理人】
【識別番号】100095407
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100110135
【氏名又は名称】石井 裕一郎
(74)【代理人】
【識別番号】100163452
【氏名又は名称】南郷 邦臣
(72)【発明者】
【氏名】中野 克平
(72)【発明者】
【氏名】グエン マイン ディン
【審査官】佐藤 直樹
(56)【参考文献】
【文献】ヘイショー,GoogleスプレッドシートでChat GPTを使う方法,heysho.com[オンライン],2023年,[検索日 2024.02.15]インターネット<URL:https://heysho.com/chat-gpt-google-sheet/>
【文献】NAKIC-ALFIREVIC, Antonio,Revolutionize Excel with QueryStorm's Chat GPT Extension for C#,Toolify.ai[オンライン],2023年,[検索日 2024.02.15]インターネット<URL:https://www.toolify.ai/de/ai-news-de/revolutionize-excel-with-querystorms-chat-gpt-extension-for-c-282547>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/0475
G06F 16/957
G06F 40/18
(57)【特許請求の範囲】
【請求項1】
作業シート及びキャッシュシートを処理する表計算装置であって、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定されると、
(a)前記入力済値に基づくクエリを生成し、
(b)前記クエリを外部サーバへ送信し、
(c)前記外部サーバからのアンサーを取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として格納し、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されていると、前記クエリを前記外部サーバへ送信して前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得する、
ことを特徴とする表計算装置。
【請求項2】
(1)前記セルである第1セル、前記他のセルである第2セル、又は、前記第1セル及び前記第2セルと異なる第3セルが編集されたとき、(2)前記第3セルを含む列又は行が削除されたとき、(3)計算を指示する操作が行われたとき、(4)前記作業シートを有する作業ブックが保存されるとき、(5)前記作業ブックが開かれたとき、又は、(6)前記作業シート若しくは前記キャッシュシートの少なくとも1つが印刷されるとき、の少なくとも1つのときに、前記セルに対する前記再計算を実行する、
ことを特徴とする請求項1に記載の表計算装置。
【請求項3】
前記クエリは、(1)前記入力済値が複数の分類のいずれに分類されるのかを問う問い合わせ、又は、(2)前記入力済値を指定された言語に翻訳した結果を問う問い合わせ、を含み、かつ、
前記クエリを、生成AI(Artificial Intelligence)を搭載した前記外部サーバへ送信する、
ことを特徴とする請求項1又は2に記載の表計算装置。
【請求項4】
作業シート及びキャッシュシートを処理する表計算装置が実行する方法であって、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定される場合に、
(a)前記入力済値に基づくクエリを生成し、
(b)前記クエリを外部サーバへ送信し、
(c)前記外部サーバからのアンサーを取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として格納すること、及び、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されている場合に、前記クエリを前記外部サーバへ送信して前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得すること、
を有する、
ことを特徴とする表計算方法。
【請求項5】
通信部を備え、かつ、作業シート及びキャッシュシートを処理する表計算装置のコンピュータを、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定されると、
(a)前記入力済値に基づくクエリを生成し、
(b)前記通信部に前記クエリを外部サーバへ送信させ、
(c)前記外部サーバからのアンサーを前記通信部から取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として格納し、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されていると、前記クエリを前記外部サーバへ送信させて前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得する、
表計算部として機能させる、
ことを特徴とする表計算プログラム。
【請求項6】
表計算プログラム用のアドインプログラムであって、
通信部を備え、かつ、作業シート及びキャッシュシートを処理する表計算装置のコンピュータを、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定されると、
(a)前記入力済値に基づくクエリを生成し、
(b)前記通信部に前記クエリを外部サーバへ送信させ、
(c)前記外部サーバからのアンサーを前記通信部から取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として出力し、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されていると、前記クエリを前記外部サーバへ送信させて前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得する、
問合部として機能させる、
ことを特徴とするアドインプログラム。
【請求項7】
前記問合部は、前記キャッシュシートが存在しない場合に、前記作業シートを有する作業ブックに前記キャッシュシートを生成し、生成された前記キャッシュシートへ前記クエリ情報と前記アンサーとを格納する、
ことを特徴とする請求項6に記載のアドインプログラム。
【請求項8】
前記作業シートと前記キャッシュシートとは、それぞれ同じ電子ファイルに保存される、
ことを特徴とする請求項6又は7に記載のアドインプログラム。
【請求項9】
前記外部サーバは、生成AI(Artificial Intelligence)を搭載しており、
前記クエリには、前記生成AIが生成する前記アンサーのランダム性を制御する引数であるランダム性制御引数が含まれ、
前記問合部は、前記クエリ情報が前記キャッシュシートに格納されていると、
(1)前記ランダム性制御引数に基づいて設定された、又は、前記表計算装置が備える入力部に行われる操作に基づいて設定されたキャッシュヒット率で、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを取得し、
(2)100%の確率から前記キャッシュヒット率を減算して得られる確率で、前記入力済値に基づく新たなクエリを、前記通信部に前記外部サーバへ送信させ、かつ、前記外部サーバからの新たなアンサーを前記通信部から取得する、
ことを特徴とする請求項6
又は7に記載のアドインプログラム。
【請求項10】
通信部を備え、かつ、表計算プログラムを実行する
ことで、スプレッドシートを処理する表計算装置のコンピュータを、
前記表計算プログラムから取得される問合引数に基づくクエリ、又は、前記クエリを表すクエリ情報と、前記クエリに対するサーバのアンサーと、が、対応付けられて
前記スプレッドシートに保存されている保存済の場合に、
(1)前記通信部に前記クエリを前記サーバへ送信させることを抑制し、
(2)前記クエリ又は前記クエリ情報に対応付けられている前記アンサーを、前記スプレッドシートから取得し、かつ、
(3)取得された前記アンサーを、前記表計算プログラムへの返値として出力する、
問合部として機能させる、
ことを特徴とするアドインプログラム。
【請求項11】
前記問合部は、前記スプレッドシートに保存された前記アンサーを、ユーザの操作に従って前記表計算装置が変更した後に、前記表計算プログラムから前記問合引数を取得する度に、
(1)前記通信部に前記クエリを前記サーバへ送信させることを抑制し、
(2)前記クエリ又は前記クエリ情報に対応付けられている変更後のアンサーを、前記スプレッドシートから取得し、かつ、
(3)取得された前記変更後のアンサーを、前記表計算プログラムへの返値として出力する、
ことを特徴とする請求項10に記載のアドインプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、表計算装置、表計算方法、表計算プログラム、及び、アドインプログラムに関する。
【背景技術】
【0002】
従来から、表計算を行う装置が知られている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1の装置では、表に含まれるセルに、サーバへの問い合わせにより得られる値を用いる数式が設定されていると、当該セルの再計算が行われる度に、サーバへの問い合わせが行われてしまう。このため、特許文献1の装置では、通信量の増加を抑制できないという問題があった。
【0005】
本発明は、このような点に鑑みてなされたものであり、その目的とするところは、通信量の増加を抑制できる表計算装置、表計算方法、表計算プログラム、及び、アドインプログラムを提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の第1の観点に係る表計算装置は、
作業シート及びキャッシュシートを処理する表計算装置であって、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定されると、
(a)前記入力済値に基づくクエリを生成し、
(b)前記クエリを外部サーバへ送信し、
(c)前記外部サーバからのアンサーを取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として格納し、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されていると、前記クエリを前記外部サーバへ送信して前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得する、
ことを特徴とする。
【0007】
また、上記目的を達成するため、本発明の第2の観点に係るアドインプログラムは、
通信部を備え、かつ、表計算プログラムを実行する表計算装置のコンピュータを、
前記表計算プログラムから取得される問合引数に基づくクエリ、又は、前記クエリを表すクエリ情報と、前記クエリに対するサーバのアンサーと、が、対応付けられてスプレッドシートに保存されている保存済の場合に、
(1)前記通信部に前記クエリを前記サーバへ送信させることを抑制し、
(2)前記クエリ又は前記クエリ情報に対応付けられている前記アンサーを、前記スプレッドシートから取得し、かつ、
(3)取得された前記アンサーを、前記表計算プログラムへの返値として出力する、
問合部として機能させる、
ことを特徴とする。
【発明の効果】
【0008】
本発明に係る表計算装置、表計算方法、表計算プログラム、及び、アドインプログラムによれば、通信量の増加を抑制できる。
【図面の簡単な説明】
【0009】
【
図1】本発明の実施例に係る表計算システムの一構成例を表すシステム構成図である。
【
図2】表計算装置の一構成例を表すハードウェア構成図である。
【
図3】表計算装置が有する機能の一例を表す機能ブロック図である。
【
図4】表計算装置が処理するワークシートの一例を表す図である。
【
図5】実施例に係る表計算装置が処理するキャッシュシートの一例を表す図である。
【
図6】表計算装置が実行する表計算処理の一例を表すフローチャートである。
【
図7】実施例に係る表計算装置が実行する問合処理の一例を表すフローチャートである。
【
図8】実施例の変形例7に係る表計算装置が処理するキャッシュシートの一例を表す図である。
【
図9】実施例の変形例9に係る表計算装置が実行する問合処理の一例を表すフローチャートである。
【発明を実施するための形態】
【0010】
<実施例>
以下、本発明の実施例について添付図面を参照しつつ説明する。本発明の実施例に係る表計算システム1は、アドインプログラムが追加された表計算プログラムを実行する、
図1に示すような表計算装置100を備える。本実施例では、表計算プログラムは、Excelであるとして、以下の説明を行うが、これに限定される訳ではない。
【0011】
表計算装置100は、例えば、インターネット、LAN(Local Area Network)、又は、WAN(Wide Area Network)であるネットワークNTを介して、サーバ900に接続されている。サーバ900は、表計算システム1に含まれず、表計算システム1の外側に位置しているため、外部サーバとも称される。サーバ900は、例えば、ChatGPT(Generative Pre-trained Transformer)である対話型の生成AI(Artificial Intelligence)を搭載している。サーバ900は、表計算装置100からクエリを受信すると、受信されたクエリに対するアンサーを、生成AIを用いて生成し、生成されたアンサーを表計算装置100へ返信する。このため、サーバ900は、AIサーバとも称される。
【0012】
表計算装置100は、
図2に示すような、CPU(Central Processing Unit)101、RAM(Random Access Memory)102、ROM(Read Only Memory)103a、記憶装置103b、データ通信回路104a、ビデオカード105a、表示装置105b、及び、入力装置105cをそれぞれ1又は複数備えている。CPU101は、ROM103a又は記憶装置103bに保存されたプログラムを実行する。RAM102は、プログラムの実行時において、処理対象とされるデータを一時的に記憶する。記憶装置103bは、例えば、半導体メモリであるフラッシュメモリ、又は、ハードディスクであり、各種のデータを記憶する。
【0013】
表計算装置100のデータ通信回路104aは、ネットワークNTがインターネットである場合に、例えば、LTE(Long Term Evolution)及び5G(5th Generation)といった通信規格に従って、不図示の基地局と電波を用いたデータ通信を行う。これにより、データ通信回路104aは、基地局に接続されたネットワークNTを介してサーバ900とデータ通信する。これに対して、ネットワークNTがLAN又はWANである場合に、データ通信回路104aは、「11ac」等の通信規格に従ってネットワークNTに接続された不図示のアクセスポイントと電波を用いた通信を行う。
【0014】
表計算装置100のビデオカード105aは、CPU101から出力された信号に基づいて画像信号を出力する。表示装置105bは、例えば、LCD(Liquid Crystal Display)、PDP(Plasma Display Panel)、又は、EL(Electroluminescence)ディスプレイであり、ビデオカード105aから出力された画像信号に従って画像を表示する。入力装置105cは、例えば、キーボード、マウス、又は、タッチパッドの少なくとも1つであり、ユーザの操作に応じた信号を入力する。
【0015】
表計算装置100の入力装置105cに対して、表計算プログラムの実行を開始するための操作をユーザが行うと、入力装置105cは、当該操作に応じた信号を出力する。当該信号が入力装置105cから出力されると、CPU101は、記憶装置103bに保存されている表計算プログラムを実行する。本実施例では、表計算プログラムには、アドインプログラムが追加されているため、CPU101は、表計算プログラム自体とアドインプログラムとの双方を実行することで、
図3に示すような表計算部130として機能する。表計算部130は、表計算プログラム自体をCPU101が実行することによって実現される計算部110と、アドインプログラムをCPU101が実行することによって実現される問合部120と、を含む。また、記憶装置103bは、情報記憶部190として機能する。
【0016】
次に、入力装置105cに対して、情報記憶部190に予め保存されている電子ファイルを選択し、選択された電子ファイルで表されるワークブック(作業ブック、又は、単に、ブックという)を開くための操作が行われると、CPU101は、選択された電子ファイルを読み出す。次に、CPU101は、読み出された電子ファイルで表されるブックを開き、開かれたブックを表示装置105bに表示させる。
【0017】
本実施例では、説明を簡単にするため、1枚の表計算用紙(スプレッドシートという)を予め有する既存のブックが開かれる場合を具体例として挙げて、以下の説明を行うが、新規のブックが生成されても良い。スプレッドシートは、複数の行、及び、複数の列をそれぞれ有し、それぞれの行は、走査方向に並ぶ複数のセルを有し、それぞれの列は、副走査方向に並ぶ複数のセルを有する。本実施例では、開かれる既存のブックが有する1枚のスプレッドシートがワークシート(作業シートとも称する)であり、キャッシュシートでない場合を具体例として以下の説明を行う。
【0018】
ワークシートは、ユーザの操作に従って、値の入力、又は、数式の設定が、セルに行われるスプレッドシートであり、キャッシュシートは、ワークシートのセルに設定された数式の計算に用いられる値が、セルに入力されるスプレッドシートである。以下、説明を簡単にするため、セルに値を入力すること、及び、セルに数式を設定することを、セルを編集すると総称する。また、ワークシートのセルをワークセルと称し、キャッシュシートのセルをキャッシュセルと称する。
【0019】
本実施例では、既存のブックが有する1枚のワークシートの2行A列のセルに、
図4に示すような、アンケートに対する回答を表す文字列「スキルを学ぶ機会があります」が値として既に入力されている場合を具体例として挙げて、以下の説明を行う。また、本実施例では、既存のブックが開かれた後、ワークシートが有する2行B列のセル(ワークセル2Bという)に、同じワークシートの2行A列のセル(ワークセル2Aという)に入力された値(入力済値という)を参照する問合関数を呼び出す数式が、ユーザによって設定される場合を具体例として挙げて説明を行う。問合関数を呼び出す数式とは、問合関数を含む数式を意味し、問合関数とは、(1)引数(問合引数という)を引き渡され、かつ、(2)問合引数に基づいて生成されたクエリに対するサーバ900のアンサーを返値とする関数を意味する。
【0020】
本実施例では、問合関数は、(1)(a)参照する入力済値と、(b)(i)数式に含まれる文字列であり、かつ、(ii)複数の分類を表す文字列と、を問合引数とし、かつ、(2)複数の分類の内で、入力済値が分類される分類先を問い合わせるクエリに対するサーバ900のアンサーを返値とする関数である。また、本実施例では、複数の分類が、「給与」、「キャリア設計」、及び、「福利厚生」を含む場合を具体例として挙げて説明を行う。これらのため、ワークセル2Bの数式によって呼び出される問合関数は、分類「給与」、「キャリア設計」、及び、「福利厚生」の内で、ワークセル2Aの入力済値で表されるアンケートの回答が分類される分類先として、サーバ900が回答した分類を表すアンサーを返値とする。
【0021】
ユーザの操作に従ってブックが開かれた後、数式をワークセル2Bに入力するための操作が、ユーザによって、表計算装置100の入力装置105cに行われると、入力装置105cは、当該操作に応じた信号を出力する。当該信号が出力されると、CPU101は、当該操作に従ってワークセル2Bを編集する。その後、CPU101は、例えば、イベントハンドラから、発生したイベントを表す情報を取得する。次に、CPU101は、取得された情報で表されるイベント(取得イベントという)が、セルが編集されたというイベント(編集イベントという)であると判別すると、ブックが有するセルの計算を行う。セルの計算を行うとは、セルに設定されている数式を計算することを意味する。また、セルに設定されている数式を計算することは、セルに数式が設定されたときから数えて、又は、セルに設定された数式が変更されたときから数えて、1度目の計算と、2度目以降の計算(再計算という)と、を含む。
【0022】
このために、表計算装置100のCPU101は、表計算プログラム自体に処理内容が記載されている、
図6に示すような表計算処理を実行する。表計算処理の実行が開始されると、計算部110は、ブックの有する全てのスプレッドシートの全てのセルについて、下記のステップS03を含む後続の処理が行われたか否かを判別する(ステップS01)。このとき、計算部110は、全てのセルについて処理が行われた訳ではないと判別し(ステップS01;No)、処理が行われていないセルの1つを処理対象とする(ステップS02)。本実施例では、先ず、ワークセル2Aが処理対象とされる場合を具体例として挙げて、以下の説明を行う。
【0023】
次に、表計算装置100の計算部110は、処理対象であるワークセル2Aには、アンケートの回答を表す文字列が入力されており、数式が設定されていないと判別し(ステップS03;No)、ステップS01から上記処理を繰り返す。次に、計算部110は、ステップS01及びS02の処理を再度実行することで、ブックが有する複数のセルの内で、既に処理対象とされたワークセル2Aと異なるセルの1つを処理対象とする。本実施例では、ワークセル2Bが処理対象とされる場合を具体例として、以下の説明を行う。
【0024】
ステップS02が実行された後に、表計算装置100の計算部110は、処理対象としたワークセル2Bに数式が設定されていると判別する(ステップS03;Yes)。次に、計算部110は、ワークセル2Bの数式が問合関数を呼び出すと判別する(ステップS04;Yes)。その後、計算部110として機能するCPU101は、表計算プログラムに追加されている1又は複数のアドインプログラムの内で、問合関数の名称を表す情報と予め対応付けられている表計算プログラム用のアドインプログラムを情報記憶部190から読み出す。次に、CPU101は、読み出したアドインプログラムを実行することで、
図7に示すような問合処理を実行する(ステップS05)。これにより、CPU101は、
図3に示すような問合部120として機能する。
【0025】
問合処理の実行が開始されると、表計算装置100の問合部120は、(1)ワークセル2Bが参照するワークセル2Aの入力済値と、(2)ワークセル2Bの数式に含まれる複数の分類を表す文字列と、を問合引数として、表計算プログラム自体から取得する(ステップS11)。
【0026】
次に、表計算装置100の問合部120は、ブックがキャッシュシートを有するか否かを判別する。本実施例では、キャッシュシートの名称には、キャッシュシートであることを表す予め定められた文字列(キャッシュ名称文字列という)が含まれるが、ワークシートの名称には、キャッシュ名称文字列が含まれない。このため、問合部120は、先ず、例えば、アドインプログラムを表すバイナリーデータからキャッシュ名称文字列を取得する。次に、問合部120は、ブックが有する全てのスプレッドシートの名称を取得し、取得された名称の内で、キャッシュ名称文字列を含む名称が存在するか否かを判別することで、ブックがキャッシュシートを有するか否かを判別する。本実施例では、キャッシュ名称文字列を含む名称が存在しないため、問合部120は、キャッシュシートをブックが有さないと判別する(ステップS12;No)。
【0027】
その後、表計算装置100の問合部120は、新しいキャッシュシートをブックに生成する(ステップS13)。本実施例では、新しいキャッシュシートのセルに、値が入力されておらず、かつ、数式が設定されていない場合を具体例として挙げて、以下の説明を行う。
【0028】
キャッシュシートを生成した後、表計算装置100の問合部120は、生成されたキャッシュシートに、問合引数に基づいて生成されるクエリを表す情報(クエリ情報という)が格納されているか否かを判別する(ステップS14)。キャッシュシートにクエリ情報が格納されているとは、キャッシュシートにクエリ情報が保存されていることを意味し、キャッシュシートにクエリ情報が保存されているとは、キャッシュシートが有するセルに、クエリ情報が値として入力されていることを意味する。
【0029】
本実施例では、クエリとは、(1)サーバ900へ送信されるデータであり、かつ、(2)(a)サーバ900のURL(Uniform Resource Locator)を表す情報と、(b)テキストデータと、を含むデータである。本実施例では、テキストデータが、例えば、JSON(JavaScript Object Notation)のデータフォーマットに従って構造化されたテキスト(構造化テキストという)を表すデータである場合を具体例として挙げて、以下の説明を行う。しかし、テキストデータによって表されるテキストは、構造化されていないテキストであっても良いし、JSONのフォーマット以外のフォーマットに従って構造化されたテキストであっても良い。
【0030】
テキストデータによって表されるテキストは、(1)問合引数に基づいて生成される文字列であり、かつ、(2)サーバ900への問合内容を表す文字列を含んでいる。ここで、問合引数は、ワークセル2Aの入力済値「スキルを学ぶ機会があります」と、複数の分類「給与」、「キャリア設計」、及び、「福利厚生」を表す文字列である。このため、本実施例では、問合引数に基づいて生成される問合内容を表す文字列が、「『スキルを学ぶ機会があります』という回答は、『給与』、『キャリア設計』、及び、『福利厚生』のどれに分類できますか?」という質問を表す文字列を含む場合を具体例として挙げて以下の説明を行う。また、本実施例では、クエリを表す情報は、クエリを特定するための情報であり、クエリを特定するための情報は、クエリに含まれるテキストデータのハッシュ値である場合を具体例として挙げて、以下の説明を行う。しかし、クエリ情報は、ハッシュ値に限定される訳ではなく、クエリを特定するための情報であれば、どのような情報であっても良い。
【0031】
ステップS14において、表計算装置100の問合部120は、問合引数として取得された(1)ワークセル2Aの入力済値、及び、(2)複数の分類を表す文字列に基づいて、サーバ900への問合内容を表す文字列を含む構造化テキストを生成する。次に、問合部120は、生成された構造化テキストのハッシュ値を算出することで、クエリ情報を生成する。その後、問合部120は、生成されたクエリ情報に基づいてキャッシュシートを検索することで、生成されたクエリ情報をキャッシュシートから取得することを試行する。次に、問合部120は、クエリ情報が取得されないため、クエリ情報がキャッシュシートに格納されていないと判別する(ステップS14;No)。
【0032】
次に、表計算装置100の問合部120は、例えば、アドインプログラムを表すバイナリーデータから、サーバ900のURLを表す情報を取得する。その後、問合部120は、取得されたURLを表す情報と、生成された構造化テキストを表すテキストデータと、を含むクエリを生成する(ステップS15)。その後、問合部120は、生成されたクエリを、
図2のデータ通信回路104aへ出力し、データ通信回路104aは、クエリをサーバ900へ送信する。このようにして、問合部120は、クエリをサーバ900へ送信させる制御をデータ通信回路104aに行う(ステップS16)。その後、データ通信回路104aが、クエリに対するアンサーをサーバ900から受信すると、問合部120は、データ通信回路104aからアンサーを取得する(ステップS17)。本実施例では、「キャリア設計」という分類を表す文字列がアンサーとして取得される場合を具体例として挙げて以下の説明を行う。
【0033】
その後、表計算装置100の問合部120は、クエリ情報とアンサー「キャリア設計」とを対応付けてキャッシュシートに格納する(ステップS18)。このために、問合部120は、
図5に示す3行A列のキャッシュセルに、クエリ情報であるキャッシュ値を、値として入力する。また、問合部120は、3行B列のキャッシュセルに、アンサー「キャリア設計」を値として入力する。その後、表計算装置100の問合部120は、アンサー「キャリア設計」を問合関数の返値として、表計算プログラム自体へ出力してから(ステップS19)、問合処理の実行を終了する。
【0034】
図6のステップS05で、問合処理が実行された後、表計算装置100の計算部110は、アドインプログラムから、問合関数の返値としてアンサー「キャリア設計」を取得する。次に、計算部110は、取得されたアンサーを用いて、ワークセル2Bに設定されている数式を計算する(ステップS06)。本実施例では、ワークセル2Bには、問合関数の返値を計算結果とする数式が設定されているため、計算部110は、返値として取得されたアンサー「キャリア設計」を、ワークセル2Bの値としてワークセル2Bに格納する(ステップS07)。アンサー「キャリア設計」をセルの値として当該セルに格納するとは、当該セルに設定されている数式を維持しながら、当該セルに表示される数式の計算結果を、文字列「キャリア設計」に変更又は維持することを意味する。本実施例では、返値として出力されたアンサーは、値としてワークセル2Bに格納されるため、返値として出力することを、セルの値として出力するともいう。
【0035】
アンサー「キャリア設計」が値としてワークセル2Bに格納された後、表計算装置100の計算部110は、ステップS01に戻り、ステップS01からステップS03の処理の実行を繰り返す。これにより、計算部110は、ブックが有する複数のセルの内で、ワークセル2A及び2Bと異なるセルを順に処理対象とし、数式が設定されていないと判別する。このように判別されるのは、ワークセル2A及び2Bと異なるセルは、(1)未だ編集されていないため、値が入力されておらず、かつ、数式も設定されていないか、又は、(2)クエリ情報が値として入力されているが、数式が設定されていないためである。その後、計算部110は、全てのセルについて処理を行ったと判別し(ステップS01;Yes)、表計算処理の実行を終了する。
【0036】
次に、
図4に示す3行A列のワークセル(ワークセル3Aという)に、アンケートに対する回答を表す文字列「福利厚生が不十分です」が、値として入力される場合を具体例として挙げて説明を行う。
【0037】
文字列をワークセル3Aに入力するための操作が行われると、CPU101は、当該操作に従ってワークセル3Aを編集し、
図6に示す表計算処理について、ブックを開いたときから数えて、二度目の実行を行う。次に、表計算装置100の計算部110は、ステップS01からS03の処理を実行することで、ワークセル2Aを処理対象とし、ワークセル2Aには、数式が設定されていないと判別する。その後、計算部110は、ステップS01に戻り、ステップS01からS03の処理を再度実行することで、ワークセル2Bを処理対象とし、ワークセル2Bに数式が設定されていると判別する(ステップS03;Yes)。次に、計算部110は、ステップS04及びS05の処理を実行することで、ワークセル2Bの数式が問合関数を呼び出すと判別し、
図7に示す問合処理について、ブックを開いたときから数えて、二度目の実行を行う。
【0038】
その後、表計算装置100の問合部120は、ステップS11の処理を実行した後に、ブックが有する全てのスプレッドシートの名称の内で、キャッシュ名称文字列を含む名称が存在すると判別する。このため、問合部120は、ブックがキャッシュシートを有すると判別する(ステップS12;Yes)。次に、問合部120は、新しいキャッシュシートを生成するステップS13の処理を実行せずに、クエリ情報がキャッシュシートに保存されているか否かを判別する(ステップS14)。このとき、問合部120は、クエリ情報をキャッシュシートから取得することを試行し、問合処理の一度目の実行時においてキャッシュシートに格納されたクエリ情報を取得する。このため、問合部120は、クエリ情報がキャッシュシートに格納されていると判別する(ステップS14;Yes)。
【0039】
次に、表計算装置100の問合部120は、ステップS15からS18の処理を実行せず、クエリ情報に対応付けられたアンサー「キャリア設計」をキャッシュシートから取得する(ステップS20)。すなわち、問合部120は、クエリを生成すること、クエリを送信させる制御をデータ通信回路104aに行うこと、及び、アンサーをデータ通信回路104aから取得すること、に代えて、キャッシュシートからアンサーを取得する。その後、問合部120は、キャッシュシートから取得されたアンサー「キャリア設計」を問合関数の返値として、表計算プログラムへ出力してから(ステップS19)、問合処理の実行を終了する。
【0040】
図6のステップS05で、問合処理が二度目に実行された後、表計算装置100の計算部110は、ステップS06及びS07の処理を実行することで、キャッシュシートから取得されたアンサー「キャリア設計」を値としてワークセル2Bに格納する。本実施例では、キャッシュシートから取得されたアンサーは、返値として出力され、返値として出力されたアンサーは、値としてワークセル2Bに格納されるため、キャッシュシートからアンサーを取得することを、ワークセル2Bに格納する値としてアンサーを取得するともいう。
【0041】
ワークセル2Bにアンサーを値として格納した後、表計算装置100の計算部110は、ステップS01に戻り、ステップS01からステップS03の処理を繰り返す。これにより、計算部110は、ブックが有する複数のセルの内で、ワークセル2A及び2Bと異なるセルを順に処理対象とし、数式が設定されていないと判別する。その後、計算部110は、全てのセルについて処理を行ったと判別し(ステップS01;Yes)、表計算処理の実行を終了する。
【0042】
最後に、ブックの保存を指示する操作が、表計算装置100の入力装置105cに行われる場合を具体例として挙げて、以下の説明を行う。入力装置105cが当該操作に応じた信号を出力すると、表計算装置100の計算部110は、情報記憶部190が記憶している電子ファイルを、編集後のブックを表す電子ファイルに書き換える。これにより、計算部110は、表計算プログラムによって編集されたワークシートと、アドインプログラムによって生成され、かつ、クエリ情報が格納されたキャッシュシートと、を同じ電子ファイルに保存する。
【0043】
これらの構成によれば、表計算装置100は、クエリ情報がキャッシュシートに格納されていると、クエリをサーバ900へ送信してアンサーを取得するのに代えて、クエリ情報に対応付けてキャッシュシートに格納されているアンサー「キャリア設計」をワークセル2Bに格納する値として取得する。このため、表計算装置100は、通信量の増加を抑制できる。ここで、サーバ900の利用料金が、サーバ900と表計算装置100との通信量、又は、アンサーを生成するのに要したサーバ900の計算量の少なくとも1つに応じて決まる場合に、表計算装置100は、サーバ900の利用料金の増加を抑制できる。
【0044】
また、クエリ情報とアンサーとがキャッシュシートに格納されるため、第三者が運営するキャッシュサーバを不要とすることができる。すなわち、第三者が運営するキャッシュサーバに、クエリ情報とアンサーとを保存する必要を無くすことができる。このため、第三者が運営するキャッシュサーバの利用料金の支払いを不要とすることができるので、表計算装置100の運用コストの増加を抑制できる。
【0045】
また、表計算装置100は、第三者のキャッシュサーバにクエリ情報とアンサーとを保存する必要を無くすことができるので、情報の漏出を抑制できる。すなわち、例えば、サーバ900への問合内容が、第三者のキャッシュサーバから漏洩することを防止できる。さらに、自社が運営するキャッシュサーバが不要となるため、運用コストの増加を抑制できる。自社とは、例えば、表計算システム1を運用する自然人又は法人を含むが、これに限定される訳でない。
【0046】
また、これらの構成によれば、表計算装置100の問合部120は、ブックにキャッシュシートが存在しない場合に、当該ブックにキャッシュシートを生成し、生成されたキャッシュシートへクエリ情報とアンサーとを格納する。さらに、表計算装置100の計算部110は、ワークシートとキャッシュシートとを、それぞれ同じ電子ファイルに保存する。このため、ユーザは、キャッシュシートに格納されたクエリ情報及びアンサーと、ワークシートに表示されている値と、を容易に比較できる。
【0047】
<実施例の変形例1>
実施例では、1つのクエリ情報がキャッシュシートに格納される場合について説明したが、複数のクエリ情報がキャッシュシートに格納されても良い。この場合、問合部120は、キャッシュシートに既に格納されている1又は複数のクエリ情報を取得してから、キャッシュシートに新たに格納する1つのクエリ情報と、取得された1又は複数のクエリ情報と、を、昇順又は降順を含む予め定められた規則に従ってソートしても良い。ソートに用いられるアルゴリズムは、例えば、クイックソートを含む公知のソートアルゴリズムであって良い。その後、問合部120は、キャッシュシートに既に格納されている1又は複数のクエリ情報を削除してから、ソートされた複数のクエリ情報をソートの結果に従って順にキャッシュシートに格納しても良い。また、問合部120は、バイナリサーチを含む公知の探索アルゴリズムを用いてキャッシュシートに格納された複数のクエリ情報から所望のクエリ情報を検索しても良い。この構成によれば、表計算装置100は、クエリ情報を検索するのに要する計算量の増加を抑制できる。
【0048】
<実施例の変形例2>
実施例では、問合関数は、アンケートの回答を表す入力値を問合引数とすると説明した。また、実施例では、問合関数は、問合引数で表される回答が「キャリア設計」を含む複数の分類のいずれに分類されるかを問い合わせるクエリに対する、サーバ900のアンサーを返値とする関数であると説明した。しかし、問合関数は、アンケートの回答を表す入力値を問合引数とし、問合引数で表される回答が、複数の分類「肯定的な内容」、「否定的な内容」、及び、肯定的でも否定的でもない「中立的な内容」のいずれに分類されるか、を問い合わせるクエリに対する、サーバ900のアンサーを返値とする関数であっても良い。
【0049】
また、入力値を含む問合引数は、文字若しくは文字列又は数値を含むどのようなデータであっても良いし、クエリで表される問合内容、及び、アンサーで表されるサーバ900の回答の内容は、どのような内容であっても良い。このため、問合関数は、例えば、翻訳対象とする文字列を問合引数とし、翻訳対象とする文字列を予め指定された言語へ翻訳した結果を問い合わせるクエリに対する、サーバ900のアンサーを返値とする関数であっても良い。さらに、問合関数は、翻訳対象とする文字列と、ユーザによって指定された言語を表す情報と、を問合引数とし、翻訳対象とする文字列をユーザによって指定された言語へ翻訳した結果を問い合わせるクエリに対する、サーバ900のアンサーを返値とする関数であっても良い。
【0050】
<実施例の変形例3>
実施例では、表計算装置100のCPU101は、取得イベントが編集イベントであると判別すると、
図6の表計算処理を実行すると説明した。しかし、CPU101は、取得イベントが、(1)編集イベント、(2)削除イベント、(3)計算指示操作イベント、(4)セーブイベント、(5)オープンイベント、又は、(6)プリントイベントの少なくとも1つのいずれかであると判別すると、表計算処理を実行することでセルの計算を行っても良い。
【0051】
編集イベントは、ワークセル2A、2B、若しくは、3Aを含むワークシートのセル、又は、キャッシュシートのセルが編集されたというイベントであり、削除イベントは、ワークシート又はキャッシュシートの行又は列が削除されたというイベントである。計算指示操作イベントは、セルに設定されている数式の計算を指示する操作が行われたというイベントである。計算を指示する操作は、例えば、「F9」キーを押し下げる操作、及び、「Shift」キーと「F9」キーとを同時に押し下げる操作を含む。計算を指示される数式は、アクティブなスプレッドシートが有する、又は、ブックに含まれる全てのスプレッドシートが有する、全てのセル、又は、ユーザによって選択された範囲に含まれるセル、に設定された数式を含む。
【0052】
セーブイベントは、ブックの保存が行われるというイベントであり、かつ、ブックの保存が開始されるタイミングであるセーブタイミングよりも予め定められた時間だけ前のタイミングから、セーブタイミングまでの間に生じるイベントである。オープンイベントは、ブックが開かれたというイベントであり、かつ、ブックを開き終えたタイミングであるオープンタイミングから、オープンタイミングよりも予め定められた時間だけ後のタイミングまでの間に生じるイベントである。プリントイベントは、ブックが有するスプレッドシートの少なくとも1つが印刷されるというイベントであり、かつ、スプレッドシートの少なくとも1つの印刷が開始されるタイミングであるプリントタイミングから、プリントタイミングよりも予め定められた時間だけ前のタイミングまでの間に生じるイベントである。
【0053】
<実施例の変形例4>
実施例では、文字列「スキルを学ぶ機会があります」が、
図4のワークセル2Aに値として入力されており、ワークセル2Aの入力済値を参照する数式が、ワークセル2Bに設定される場合を具体例として挙げて説明を行った。しかし、本変形例では、文字列「スキルを学ぶ機会があります」が、ワークセル2Aを含む1又は複数のワークセル(1又は複数の入力値セルという)に、値として入力されている場合を具体例として挙げて、以下の説明を行う。また、本変形例では、1又は複数の入力値セルと異なるセルであり、かつ、ワークセル2Bを含む複数のワークセル(複数の数式セルという)に数式が設定されており、かつ、当該数式は、1又は複数の入力値セルの入力済値を参照する問合関数を呼び出す数式である場合を具体例として挙げて、以下の説明を行う。
【0054】
また、本変形例では、
図5に示した3行B列のキャッシュセル(キャッシュセル3Bという)に格納された文字列「キャリア設計」を視認したユーザが、キャッシュセル3Bに格納された文字列を「福利厚生」に変更する操作を、表計算装置100の入力装置105cに行う場合を具体例として挙げて、以下の説明を行う。このとき、表計算装置100のCPU101は、入力装置105cから出力される信号に基づいてキャッシュセル3Bを編集する。その後、CPU101は、イベントを表す情報を取得し、取得された情報で表される取得イベントが編集イベントであると判別すると、
図6の表計算処理、及び、
図7の問合処理を実行する。
【0055】
このとき、表計算装置100の問合部120は、
図7のステップS20及びS19を順に実行することで、1又は複数の入力値セルの入力済値に基づくクエリをサーバ900へ送信させる制御の実行を抑制する。また、問合部120は、キャッシュセル3Bに格納された変更後のアンサー「福利厚生」を取得し、取得された変更後のアンサー「福利厚生」を出力する。その後、計算部110は、
図6のステップS06及びS07を順に実行することで、出力された変更後のアンサー「福利厚生」を、値として複数の数式セルに格納する。
【0056】
これらの構成によれば、表計算装置100は、ユーザの操作に従ってキャッシュセル3Bに格納されたAIのアンサー「キャリア設計」を「福利厚生」へ変更した後、複数の数式セルに対して再計算を実行するときに、キャッシュセル3Bに格納されている変更後のアンサー「福利厚生」を、値として複数の数式セルに格納する。このため、例えば、AIのアンサーと、ユーザが正しいと考えるアンサーと、が相違する場合に、ユーザは、キャッシュシートに格納されたアンサーを変更すれば、ワークシートが有する複数の数式セルに格納される値を、ユーザが正しいと考えるアンサーに変更できるため、ユーザの利便性が向上する。
【0057】
<実施例の変形例5>
実施例では、クエリに含まれる問合内容を表す文字列は、質問を表す文字列を含むと説明した。しかし、問合内容を表す文字列は、これに限定される訳ではなく、(a)質問を表す文字列の他に、(b)質問によってアンサーに課せられる制限を緩和する文字列を含んで良い。このために、表計算装置100の問合部120は、
図7のステップS14において、問合内容を表す文字列を含む構造化テキストを生成した後、例えば、アドインプログラムを表すバイナリーデータから制限を緩和する文字列を取得し、取得された文字列を、生成された構造化テキストに追加しても良い。
【0058】
実施例では、質問を表す文字列が、「『スキルを学ぶ機会があります』という回答は、『給与』、『キャリア設計』、及び、『福利厚生』のどれに分類できますか?」という文字列である場合を具体例として挙げて説明した。このため、質問によってアンサーに課せられる制限は、複数の分類「給与」、「キャリア設計」、及び、「福利厚生」のいずれかに、「スキルを学ぶ機会があります」という回答が分類されることを表す文字列をアンサーとしなければならない、という制限である。
【0059】
このため、本変形例では、制限を緩和する文字列は、(1)アンケートに対する回答が複数の分類のいずれにも分類されないことを表す文字列(非分類文字列という)を含み、かつ、(2)アンケートに対する回答が複数の分類のいずれにも分類されない場合に、非分類文字列をアンサーとするように、アンサーに課せられる制限を緩和する文字列である場合を具体例として挙げて、以下の説明を行う。
【0060】
回答が複数の分類のいずれにも分類されないとは、(1)回答を複数の分類のいずれかに分類することが不可能若しくは不適切なこと、(2)回答を複数の分類のいずれかに分類するよりも、複数の分類のいずれとも異なる分類に分類する方が適切であること、又は、(3)回答を分類すること自体が不可能若しくは不適切なこと、の少なくとも1つを含む。分類することが不可能な又は不適切な回答は、例えば、複数の分類のいずれとも意味上の関連性を有さない回答を含み、複数の分類のいずれとも意味上の関連性を有さない回答は、例えば、「特になし。」及び「特に言うことはありません。」という回答を含む。
【0061】
また、本変形例では、非分類文字列は、「分類不能」という文字列である場合を具体例として挙げて説明する。このため、制限を緩和する文字列が、「分類できない場合は『分類不能』と答えてください。」という文字列である場合を具体例として挙げて、以下の説明を行う。しかし、非分類文字列は、これに限定される訳ではなく、「該当なし」若しくは「非該当」、又は、「分類なし」若しくは「無分類」という文字列であっても良い。すなわち、制限を緩和するこれらの文字列は、複数の分類のいずれかに、アンケートの回答が分類されることを表す文字列をアンサーとしなければならない、という制限を、(1)複数の分類のいずれか、又は、(2)(a)「分類不能」、(b)「該当なし」、(c)「非該当」、(d)「分類なし」、若しくは、(e)「無分類」という文字列を、アンサーとしなければならない、という制限に緩和する。
【0062】
これらの構成によれば、表計算装置100は、例えば、クエリの生成に習熟していないユーザが、問合引数として、非分類文字列を含まない複数の分類を設定しても、アンサーに課せられる制限を、複数の分類のいずれかをアンサーとしなければならないという制限から、複数の分類のいずれか又は非分類文字列をアンサーとしなければならないという制限へ緩和できる。このため、表計算装置100は、回答が複数の分類のいずれにも分類されない場合に、当該複数の分類のいずれかに当該回答が分類されるとのアンサーをサーバ900のAIが出力することを抑制できる。よって、表計算装置100は、問合関数が出力するアンサーの精度の低下を抑制できる。
【0063】
<実施例の変形例6>
実施例の変形例5では、クエリに含まれる問合内容を表す文字列は、(a)質問を表す文字列と、(b)質問によってアンサーに課せられる制限を緩和する文字列と、を含むと説明したが、これに限定される訳ではない。問合内容を表す文字列は、(a)質問を表す文字列と、(b)質問によってアンサーに課せられる制限を緩和する文字列と、の他に、(c)アンサーの表現形式に課せられる制限を表す文字列(表現制限文字列という)を含んで良い。このために、表計算装置100の問合部120は、
図7のステップS14において、問合内容を表す文字列と、制限を緩和する文字列と、を含む構造化テキストを生成した後、例えば、アドインプログラムを表すバイナリーデータから表現制限文字列を取得し、取得された文字列を、生成された構造化テキストに追加しても良い。本変形例では、表現制限文字列は、文又は文章でアンサーが表現されるのではなく、指定された語数の単語でアンサーが表現されなければならない、という制限を表す文字列であり、例えば、文字列「一語で答えてください。」である場合を具体例として挙げて、以下の説明を行う。しかし、表現制限文字列は、これに限定される訳ではなく、例えば、文字列「一つの単語で答えてください。」又は「一つの名詞で答えてください。」であっても良い。
【0064】
この場合、表計算装置100の問合部120は、取得されたアンサーが複数の分類のいずれか1つ、又は、非分類文字列であると、当該アンサーが制限に違反して無いと判別し、当該アンサーを表計算プログラムへ出力しても良い。このように判別されるのは、本変形例において、複数の分類のそれぞれ、及び、非分類文字列は、一つの単語であるため、表現制限文字列で表される制限に従っているためである。これに対して、問合部120は、取得されたアンサーが複数の分類のいずれでも無く、かつ、非分類文字列でも無い場合、当該アンサーが、質問によって課せられる緩和後の制限、又は、表現形式の制限に違反していると判別しても良い。アンサーが違反していると判別する場合、問合部120は、当該アンサーを非分類文字列である「分類不能」に変更し、変更後のアンサーをクエリ情報と対応付けて格納すると共に、変更後のアンサーを表計算プログラムへ返値として出力しても良い。
【0065】
これらの構成によれば、表計算装置100の問合部120は、取得されたアンサーが、例えば、文又は文章で表現される場合に、形態素解析、構文解析、意味解析、又は、文脈解析の少なくとも1つを含む解析を行い、解析結果に基づいてアンサーの表現形式を変更して出力する場合と比べて少ない計算量で、問合関数が返値として出力するアンサーの表現形式を精度良く制限できる。また、これらの構成によれば、表計算装置100は、問合関数が出力する返値を、ユーザによって設定された複数の分類のいずれか、又は、非分類文字列に、少ない計算量で精度良く制限できる。
【0066】
本変形例では、指定された語数が一語であり、かつ、複数の分類のそれぞれ及び非分類文字列の語数が一語である場合を例に挙げて説明したが、これに限定される訳ではない。指定された語数、並びに、複数の分類のそれぞれ及び非分類文字列の語数は、二以上の数であっても良い。また、本変形例では、問合内容を表す文字列が、(a)質問を表す文字列と、(b)アンサーの表現形式に課せられる制限を表す文字列と、(c)質問によってアンサーに課せられる制限を緩和する文字列と、を含む場合について説明した。しかし、問合内容を表す文字列は、(a)質問を表す文字列と、(b)アンサーの表現形式に課せられる制限を表す文字列と、を含むが、(c)質問によってアンサーに課せられる制限を緩和する文字列を含まなくても良い。
【0067】
<実施例の変形例7>
実施例では、表計算装置100の問合部120は、クエリ情報とアンサーとを対応付けてキャッシュシートに格納すると説明した。しかし、本変形例では、問合部120は、
図8に示すように、クエリ情報と、クエリ補助情報と、アンサーと、を対応付けてキャッシュシートに格納する。クエリ補助情報とは、表計算装置100のユーザによるクエリの特定を補助する情報である。本変形例では、クエリ補助情報は、問合関数の名称を表す情報と、問合引数と、を含む。このため、問合部120は、
図7のステップS18において、例えば、アドインプログラムを表すバイナリーデータから、問合関数の名称を表す文字列を取得する。本変形例では、問合関数の名称が「BB.CATEGORIZE」である場合を具体例として挙げて、以下の説明を行う。
【0068】
次に、表計算装置100の問合部120は、
図8に示す3行A列のキャッシュセルに、クエリ情報であるキャッシュ値を、値として入力する。その後、問合部120は、3行B列のキャッシュセルに、問合関数の名称「BB.CATEGORIZE」を表す文字列を値として入力する。また、問合部120は、3行C列のキャッシュセルに、ワークセル2Aの入力済値であって、問合引数として取得されたアンケートの回答「スキルを学ぶ機会があります」を表す文字列を値として入力する。さらに、問合部120は、3行D列のキャッシュセルに、問合引数として取得された複数の分類「給与」、「キャリア設計」、及び、「福利厚生」を表す文字列を値として入力する。また、問合部120は、3行E列のキャッシュセルに、アンサー「キャリア設計」を値として入力する。これらの構成によれば、表計算装置100は、クエリ補助情報と、アンサーと、を対応付けてキャッシュシートに格納するため、ユーザは、キャッシュシートを視認することで、サーバ900への問合内容の履歴を容易に推測又は確認できる。
【0069】
<実施例の変形例8>
実施例では、構造化テキストは、サーバ900への問合内容を表す文字列を含むと説明したが、本変形例に係る構造化テキストは、サーバ900が備える生成AIに引き渡される引数(AI引数という)をさらに含んでいる。本変形例では、AI引数は、例えば、(1)モデル指定引数、(2)同表現抑制引数、(3)一般的表現抑制引数、又は、(4)ランダム性制御引数の少なくとも1つを含むが、AI引数は、これらに限定される訳ではない。
【0070】
モデル指定引数は、サーバ900の生成AIが使用する訓練済みデータを含む処理系一式を指定する引数である。生成AIが使用する処理系一式は、生成AIが使用する言語モデルをさらに含んで良い。また、モデル指定引数は、例えば、ChatGPTで用いられる引数「model」であっても良く、例えば、「GPT3.5」又は「GPT4」を指定する引数であっても良い。さらに、モデル指定引数は、Google Gemini(単に、Geminiという)で処理系一式を指定するために用いられる引数であっても良いし、ChatGPT及びGemini以外の生成AIで用いられる引数であっても良い。
【0071】
同表現抑制引数は、アンサーにおいて同じ表現が使用されることを抑制するための引数であり、例えば、ChatGPTで用いられる引数「frequency_penalty」であっても良い。一般的表現抑制引数は、アンサーにおいてありふれた表現が使用されることを抑制するための引数であり、例えば、ChatGPTで用いられる引数「presence_penalty」であっても良い。ランダム性制御引数は、生成AIが出力するアンサーのランダム性を制御するための引数であり、例えば、ChatGPTで用いられる引数「temperature」又は「TOP_P」の少なくとも1つであっても良い。また、同表現抑制引数、一般的表現抑制引数、又は、ランダム性制御引数の少なくとも1つは、Geminiで用いられる引数であっても良いし、ChatGPT及びGemini以外の生成AIで用いられる引数であっても良い。
【0072】
AI引数が、例えば、ワークセル2Bに設定される数式に含まれている場合、表計算装置100の問合部120は、
図7のステップS11で、ワークセル2Aの入力済値、及び、複数の分類を表す文字列の他に、AI引数を、問合引数として取得しても良い。また、数式にAI引数が含まれておらず、問合引数としてAI引数が取得されない場合、問合部120は、例えば、アドインプログラムを表すバイナリーデータから、予め定められたAI引数のデフォルト値を取得し、取得されたデフォルト値をAI引数に設定しても良い。その後、ステップS14において、問合部120は、(1)問合引数として取得された(a)ワークセル2Aの入力済値、及び、(b)複数の分類を表す文字列と、(2)問合引数として取得された、又は、デフォルト値が設定されたAI引数と、に基づいて、AI引数が含まれる構造化テキストを生成する。次に、問合部120は、生成された構造化テキストのハッシュ値を算出することでクエリ情報を生成する。
【0073】
その後、表計算装置100の問合部120は、クエリ情報がキャッシュシートに格納されていないと判別すると、ステップS15で、AI引数が含まれるクエリを生成し、ステップS16で、生成されたクエリをサーバ900へ送信させる制御を行う。サーバ900の生成AIは、クエリに含まれるAI引数に従ってアンサーを生成し、生成されたアンサーを表計算装置100へ返信する。
【0074】
<実施例の変形例9>
実施例では、表計算装置100の問合部120は、
図7の問合処理を実行することで、キャッシュシートにクエリ情報が保存されている場合(保存済の場合という)に、「100%」の確率で、キャッシュシートからアンサーを取得すると説明した。しかし、本変形例では、問合部120は、
図9に示すような問合処理を実行することで、保存済の場合に、ランダム性制御引数に基づいて設定されたキャッシュヒット率(単に、ヒット率という)で、キャッシュシートからアンサーを取得する。
【0075】
ヒット率とは、保存済の場合に、表計算装置100の問合部120が、キャッシュシートからアンサーを取得する確率である。本変形例では、ランダム性制御引数が、ワークセル2Bに設定される数式に含まれる場合を具体例として挙げて、以下の説明を行う。このため、
図9に示す問合処理の実行を開始すると、表計算装置100の問合部120は、表計算プログラムから、(1)ワークセル2Bが参照するワークセル2Aの入力済値と、(2)ワークセル2Bの数式に含まれる(a)複数の分類を表す文字列、及び、(b)ランダム性制御引数と、を問合引数として取得する(ステップS11)。
【0076】
次に、表計算装置100の問合部120は、実施例で説明したステップS12の処理、又は、ステップS12及びS13の処理を実行した後に、クエリ情報がキャッシュシートに格納されているか否かを判別する(ステップS14)。このとき、問合部120は、クエリ情報がキャッシュシートに格納されていないと判別すると(ステップS14;No)、ステップS15からS19の処理を実行してから、問合処理の実行を終了する。キャッシュシートにクエリ情報が保存されていない場合(未保存の場合という)に実行されるステップS15からS19の処理は、実施例で説明した処理と同様の処理である。
【0077】
これに対して、表計算装置100の問合部120は、キャッシュシートにクエリ情報が格納されていると判別すると(ステップS14;Yes)、ステップS11で取得されたランダム性制御引数に基づいてヒット率を設定する(ステップS21)。本変形例では、ランダム性制御引数は、ChatGPTで用いられる「temperature」であるため、ランダム性制御引数「temperature」には、ランダム性を最も低く制御する値「0.0」以上、かつ、ランダム性を最も高く制御する値「2.0」以下の値が設定されている場合を具体例として挙げて説明を行う。このため、問合部120は、例えば、以下の数式(1)を用いて算出される値にヒット率を設定する。すなわち、問合部120は、例えば、ランダム性制御引数「temperature」が値「0.0」であれば、ヒット率を値「100%」に設定し、ランダム性制御引数「temperature」が値「1.0」又は値「2.0」であれば、ヒット率を値「50%」又は値「0%」に設定する。しかし、ヒット率の設定方法は、数式(1)を用いる方法に限定される訳ではなく、ランダム性制御引数「temperature」が、生成AIによって生成されるアンサーのランダム性をより高く制御する引数である程、より低い値にヒット率を設定する方法であれば、どのような方法であっても良い。
【0078】
ヒット率=(1-ランダム性制御引数「temperature」/2)×100%・・・(1)
【0079】
次に、表計算装置100の問合部120は、値「0」以上、かつ、値「100」以下のソフトウェア乱数を発生させ(ステップS22)、発生させたソフトウェア乱数の値と、設定されたヒット率の値と、に基づいて、キャッシュシートからアンサーを取得するか否かを決定する。ヒット率の値とは、百分率を用いてヒット率を表す場合に、パーセント記号と共に用いられる数値を意味し、例えば、ヒット率が「50%」であれば、値「50」を意味する。このとき、問合部120は、ソフトウェア乱数の値がヒット率の値以下であると判別すると(ステップS23;Yes)、キャッシュシートからアンサーを取得すると決定する。その後、問合部120は、クエリ情報に対応付けられたアンサーをキャッシュシートから取得し(ステップS20)、取得されたアンサーを表計算プログラムへ出力してから(ステップS19)、問合処理の実行を終了する。このようにして、問合部120は、キャッシュシートからアンサーを、ヒット率(事象の確率ともいう)で、取得し、取得されたアンサーを出力する。
【0080】
これに対して、表計算装置100の問合部120は、ソフトウェア乱数の値がヒット率の値より大きいと判別すると(ステップS23;No)、サーバ900の生成AIから新たなアンサーを取得すると決定する。次に、問合部120は、ヒット率を算出する基礎とされたランダム性制御引数(基礎のランダム性制御引数という)を含むクエリを生成し(ステップS15)、生成されたクエリをサーバ900へ送信させる制御をデータ通信回路104aに行う(ステップS16)。その後、問合部120は、データ通信回路104aから新たなアンサーを取得し(ステップS17)、取得された新たなアンサーで、クエリ情報と対応付けてキャッシュシートに格納されているアンサーを上書きする(ステップS18)。その後、問合部120は、新たなアンサーを表計算プログラムへ出力してから(ステップS19)、問合処理の実行を終了する。すなわち、問合部120は、100%の確率から、ヒット率である事象の確率を減算することで得られる確率(余事象の確率という)で、生成AIから新たなアンサーを取得し、取得されたアンサーを出力する。
【0081】
これらの構成によれば、表計算装置100の問合部120は、保存済の場合に、ヒット率である事象の確率で、(1)クエリをサーバ900へ送信させる制御を行うことを抑制し、(2)キャッシュシートから取得されたアンサーを表計算プログラムへ出力する。また、問合部120は、保存済の場合に、余事象の確率で、(1)クエリをサーバ900へ送信させる制御を行い、(2)サーバ900から取得された新たなアンサーを出力する。このため、問合部120は、表計算装置100とサーバ900との通信量の増加を抑制しながら、出力されるアンサーのランダム性の低下を抑制できる。
【0082】
また、これらの構成によれば、表計算装置100の問合部120は、ランダム性制御引数が、ランダム性をより高く制御する引数である程、ヒット率である事象の確率をより低く設定するため、余事象の確率をより高く設定する。すなわち、問合部120は、ランダム性制御引数が、ランダム性をより高く制御する引数である程、キャッシュシートから、ランダム性を有さないアンサーを取得する確率を低く設定し、かつ、サーバ900からランダム性を有する新たなアンサーを取得する確率をより高く設定する。このため、問合部120は、ランダム性制御引数によって制御された生成AIによって出力されるアンサーのランダム性と、問合部120によって出力されるアンサーのランダム性と、の相違が増加することを抑制できる。
【0083】
<実施例の変形例10>
実施例の変形例9では、表計算装置100の問合部120は、表計算プログラムから、ワークセル2Bの数式に含まれるランダム性制御引数を、問合引数として取得すると説明したが、これに限定される訳ではない。ランダム性制御引数がワークセル2Bに設定される数式に含まれなくとも良い。この場合、問合部120は、ランダム性制御引数を問合引数として取得せず、例えば、アドインプログラムを表すバイナリーデータから、予め定められたランダム性制御引数のデフォルト値を取得し、取得されたランダム性制御引数のデフォルト値に基づいてヒット率を設定しても良い。
【0084】
また、表計算装置100の入力装置105cに行われるユーザの操作に基づいてワークセル2Bに設定される数式には、ランダム性制御引数が含まれず、ヒット率が含まれても良い。この場合、問合部120は、ランダム性制御引数を問合引数として取得せず、ランダム性制御引数に基づいてヒット率を設定せず、ユーザの操作に基づいて設定されたヒット率を問合引数として取得しても良い。これらの構成によれば、ユーザは、表計算装置100の入力装置105cを操作するだけで、表計算装置100が削減する通信量を、ユーザが所望する量へ近づける確率に、ヒット率を設定できる。また、これらの構成によれば、ユーザは、表計算装置100の入力装置105cを操作するだけで、問合部120が出力するアンサーのランダム性を、ユーザが所望するランダム性へ近づける確率に、ヒット率を設定できる。これらのため、ユーザの利便性が向上する。
【0085】
<実施例の変形例11>
実施例の変形例9では、ランダム性制御引数は、ChatGPTで用いられる「temperature」であると説明したが、「TOP_P」であっても良い。この場合、ランダム性制御引数「TOP_P」には、ランダム性を最も低く制御する値「0.0」以上、かつ、ランダム性を最も高く制御する値「1.0」以下の値が設定される。このため、表計算装置100の問合部120は、例えば、以下の数式(2)を用いて算出される値にヒット率を設定する。しかし、ヒット率の設定方法は、数式(2)を用いる方法に限定される訳ではなく、ランダム性制御引数「TOP_P」が、ランダム性をより高く制御する引数である程、より低い値にヒット率を設定する方法であれば、どのような方法であっても良い。また、ヒット率の設定に用いられるランダム性制御引数は、ChatGPTで用いられるAI引数に限定される訳でなく、例えば、Geminiでランダム性を制御するために用いられるAI引数であっても良いし、ChatGPT及びGemini以外の生成AIで用いられる引数であっても良い。
【0086】
ヒット率=(1-ランダム性制御引数「TOP_P」)×100%・・・(2)
【0087】
<実施例の変形例12>
実施例の変形例9では、表計算装置100の問合部120は、クエリ情報がキャッシュシートに保存されている場合に(すなわち、保存済の場合に)、ヒット率を算出する基礎とされたランダム性制御引数(すなわち、基礎のランダム性制御引数)を含むクエリを送信させる制御を、余事象の確率で、行うと説明した。しかし、本変形例では、問合部120は、基礎のランダム性制御引数を、当該基礎のランダム性制御引数によって制御される場合よりも、値が高くなるようにランダム性を制御する引数へ補正する。次に、問合部120は、補正後のランダム性制御引数を含むクエリをサーバ900へ送信させる制御をデータ通信回路104aに行う。
【0088】
本変形例では、表計算装置100の問合部120は、例えば、補正後のランダム性制御引数「temperature」がランダム性を最も高く制御する値「2.0」となるように、基礎のランダム性制御引数「temperature」を補正する。このような補正が行われるのは、キャッシュシートからアンサーを取得することで生じるアンサーのランダム性の低下を抑制するためである。具体例として、値「1.0」のランダム性制御引数「temperature」によって、生成されるアンサーのランダム性が「50%」となるように生成AIが制御され、かつ、値「2.0」のランダム性制御引数「temperature」によってランダム性が「100%」となるように生成AIが制御される場合を挙げて、アンサーのランダム性が失われる理由を説明する。この場合、キャッシュシートからアンサーを取得せず、確率「100%」で、値「1.0」である基礎のランダム性制御引数「temperature」を含むクエリがサーバ900へ送信させる場合(確率「100%」で値「1.0」のランダム性制御引数を用いる場合という)には、サーバ900の生成AIから、ランダム性「50%」のアンサーが、確率「100%」で、取得される。
【0089】
これに対して、値「1.0」のランダム性制御引数「temperature」に基づいてヒット率(すなわち、事象の確率)が「50%」に設定される場合には、実施例の変形例9で説明した通り、キャッシュシートから、ランダム性「0%」のアンサーが、事象の確率「50%」で、取得される。このとき、値「1.0」である基礎のランダム性制御引数「temperature」を含むクエリが、余事象の確率「50%」で、サーバ900へ送信させる場合には、ランダム性「50%」のアンサーが、余事象の確率「50%」で、取得されるに過ぎない。このように、確率「50%」で値「1.0」のランダム性制御引数を用い、かつ、確率「50%」でキャッシュシートからアンサーを取得する場合には、取得されるアンサーのランダム性が「25%」となるので、確率「100%」で値「1.0」のランダム性制御引数を用いる場合におけるランダム性「50%」と比べて、ランダム性が「25%」低下する。
【0090】
これに対して、本変形例では、基礎のランダム性制御引数「temperature」の値「1.0」よりも高い値「2.0」に補正されたランダム性制御引数「temperature」を含む新たなクエリを送信させる制御が、余事象の確率「50%」で、行われる。このため、ランダム性「100%」のアンサーが、余事象の確率「50%」で、取得される。すなわち、本変形例では、確率「50%」でキャッシュシートからアンサーを取得しても、確率「50%」で値「2.0」のランダム性制御引数を用いるため、取得されるアンサーのランダム性は、確率「100%」で値「1.0」のランダム性制御引数を用いる場合において取得されるアンサーのランダム性「50%」と等しくなる。
【0091】
本変形例では、補正後のランダム性制御引数「temperature」が値「2.0」となるように、基礎のランダム性制御引数「temperature」を補正すると説明したが、補正方法は、これに限定される訳ではない。基礎のランダム性制御引数の補正方法は、基礎のランダム性制御引数の値よりも、補正後のランダム性制御引数の値の方が大きくなる補正方法であれば、どのような方法であっても良い。また、本変形例では、値「1.0」のランダム性制御引数「temperature」によって、生成されるアンサーのランダム性が「50%」となるように生成AIが制御され、かつ、値「2.0」のランダム性制御引数「temperature」によってランダム性が「100%」となるように生成AIが制御される場合を挙げて、アンサーのランダム性が失われる理由の説明を行った。しかし、クエリに含まれるランダム性制御引数の値と、当該クエリに対するアンサーのランダム性と、の関係は、これに限定される訳ではなく、ランダム性制御引数の値と、アンサーのランダム性と、に相関関係があれば、どのような関係であっても良い。
【0092】
これらの構成によれば、表計算装置100の問合部120は、基礎のランダム性制御引数によって制御される場合よりも、値が高くなるようにランダム性を制御する引数へ、基礎のランダム性制御引数を補正する。また、問合部120は、余事象の確率で、(1)補正後のランダム性制御引数を含む新たなクエリを、
図2のデータ通信回路104aに、サーバ900へ送信させてから、(2)サーバ900の生成AIから取得された新たなアンサーを出力する。さらに、問合部120は、事象の確率で、キャッシュシートから取得されたアンサーを出力する。これらのため、問合部120は、表計算装置100とサーバ900との通信量の増加を抑制しながら、出力するアンサーのランダム性の低下を抑制できる。
【0093】
<実施例の変形例13>
実施例では、サーバ900は、ChatGPTである生成AIを搭載していると説明したが、生成AIは、これに限定される訳でない。生成AIは、Geminiであっても良いし、これら以外のAIであっても良い。また、実施例では、表計算プログラムは、Excelであるとして説明を行ったが、これに限定される訳ではない。表計算プログラムは、Googleスプレッドシート、WPS Office Spreadsheets、又は、Numbersであっても良いし、これら以外のプログラムであっても良い。また、実施例では、表計算装置100のCPU101は、表計算プログラム自体に追加されたアドインプログラムを実行することで、問合部120として機能すると説明したが、CPU101は、表計算プログラム自体を実行することで、問合部120として機能しても良い。
【0094】
さらに、実施例では、表計算装置100の問合部120は、ブックに1枚のキャッシュシートを生成すると説明したが、2枚以上のキャッシュシートを生成しても良い。また、実施例では、キャッシュシートの名称には、キャッシュ名称文字列が含まれるが、ワークシートの名称には、名称文字列が含まれないと説明したが、これに限定される訳ではない。例えば、キャッシュシートの種類入力セルには、キャッシュ名称文字列が値として入力されているが、ワークシートの種類入力セルには、キャッシュ名称文字列が値として入力されていなくても良い。種類入力セルは、スプレッドシートの種類を表す文字列が入力されるセルとして予め定められたセルを意味する。また、種類入力セルは、例えば、予め定められた行、及び、予め定められた列のセルであっても良いし、種類入力セルであることを表す名前が定義されたセルであっても良い。この場合、問合部120は、ブックが有する全てのスプレッドシートから、種類入力セルに入力された値を取得し、取得された値の内に、キャッシュ名称文字列である値が存在する場合にブックがキャッシュシートを有すると判別し、かつ、そのような値が存在しない場合にブックがキャッシュシートを有さないと判別しても良い。
【0095】
表計算装置100が開くブックは、1枚のワークシートを有すると説明したが、複数枚のワークシートを有しても良いし、表計算装置100は、1枚のワークシートを有するブックを開いた後、開いたブックにワークシートを1枚以上追加しても良い。また、表計算装置100は、1枚以上のワークシートを有するブックを生成しても良いし、生成したブックにワークシートを1枚以上追加しても良い。また、実施例では、表計算装置100は、キャッシュシートを有さないブックを開くと説明したが、キャッシュシートを有するブックを開いても良い。さらに、表計算装置100は、キャッシュシートを有さないブックを生成しても良いし、キャッシュシートを有するブックを生成しても良い。
【0096】
さらに、実施例では、ワークセル2Bに設定された数式が呼び出す問合関数は、ワークセル2Aの入力済値を参照すると説明し、かつ、ワークセル2Aを有するワークシート(ワークシートAという)と、ワークセル2Bを有するワークシート(ワークシートBという)と、は、同じシートであると説明した。しかし、ワークシートAとワークシートBとは、異なるシートであっても良い。また、ワークシートAを有するブック(ブックAという)と、ワークシートBを有するブック(ブックBという)と、は、同じブックであっても良いし、異なるブックであっても良い。また、ブックAとブックBとが異なるブックである場合、表計算装置100の問合部120は、ブックBにキャッシュシートを生成し、生成されたキャッシュシートに、ワークシートBの計算に用いたクエリ情報を格納しても良い。さらに、実施例では、ワークセル2Bの問合関数は、ワークセル2Aの入力済値を問合引数とすると説明したが、ワークセル2Bの問合関数は、ワークセル2Bに設定された数式に含まれる値を問合引数としても良い。
【0097】
また、実施例では、ワークセル2Bには、問合関数の返値を計算結果とする数式が設定されていると説明した。しかし、ワークセル2Bには、問合関数の返値に対して、何らかの加工を行った結果を計算結果とする数式が設定されていても良い。何らかの加工は、例えば、返値に対して予め定められた文字若しくは文字列を追加する加工、返値から予め定められた文字若しくは文字列を削除する加工、又は、返値に含まれる予め定められた文字若しくは文字列を、当該文字若しくは当該文字列と異なる文字若しくは文字列に変換する加工の少なくとも1つを含んでも良い。
【0098】
また、実施例では、ワークセル2B及び3Aが、順番に編集されると説明したが、ワークセルが編集される順番はどのようなものであっても良い。また、実施例では、ワークセル2A、2B、及び、3A、並びに、これらと異なるセルが順番に処理対象とされると説明したが、セルが処理対象とされる順番はどのような順番であっても良い。
【0099】
実施例では、
図6のステップS04で、ワークセル2Bの数式が問合関数を呼び出すと判別されると説明した。しかし、ワークセル2Bの数式が問合関数を呼び出さないと判別されると(ステップS04;No)、表計算装置100の計算部110は、問合関数を用いずにワークセル2Bの数式を計算し(ステップS08)、計算結果をワークセル2Bの値として当該セルに格納しても良い(ステップS07)。
【0100】
実施例では、表計算装置100の計算部110が、ブックを保存することで、ワークシートとキャッシュシートとをそれぞれ同じ電子ファイルに保存すると説明した。しかし、問合部120が、ブックを保存することで、ワークシートとキャッシュシートとをそれぞれ同じ電子ファイルに保存しても良い。問合部120がブックを保存するタイミングは、キャッシュシートをブックに生成したタイミング、キャッシュシートにクエリ情報を格納したタイミング、又は、アンサーを返値として表計算プログラムに出力するタイミングの少なくとも1つを含んで良い。
【0101】
実施例では、クエリを表すクエリ情報と、当該クエリに対するサーバ900のアンサーと、が、対応付けられてキャッシュシートに保存されていないと、表計算装置100の問合部120は、データ通信回路104aにクエリをサーバ900へ送信させ、サーバ900からのアンサーをデータ通信回路104aから取得し、クエリ情報とアンサーとを、対応付けてキャッシュシートに保存する、と説明した。しかし、問合部120は、クエリとアンサーとが、対応付けられてキャッシュシートに保存されていないと、データ通信回路104aにクエリをサーバ900へ送信させ、サーバ900からのアンサーをデータ通信回路104aから取得し、クエリとアンサーとを、対応付けてキャッシュシートに保存しても良い。この場合、クエリとアンサーとが、対応付けられてキャッシュシートに保存されていると、問合部120は、データ通信回路104aにクエリをサーバ900へ送信させることを抑制し、クエリに対応付けられているアンサーを、キャッシュシートから取得しても良い。
【0102】
実施例では、ワークシートとキャッシュシートとが、互いに異なるスプレッドシートである場合を具体例として挙げて説明したが、ワークシートとキャッシュシートとは、互いに同じスプレッドシートであっても良い。
【0103】
実施例では、クエリ情報は、クエリに含まれるテキストデータのハッシュ値であると説明したが、これに限定される訳でない。クエリ情報は、クエリのハッシュ値であっても良いし、クエリ補助情報と同じ情報であっても良い。実施例の変形例7では、クエリ補助情報は、問合関数の名称を表す情報と、問合引数と、を含むと説明したが、これに限定される訳でない。クエリ補助情報は、問合引数を含むが、問合関数の名称を表す情報を含まなくてもよい。
【0104】
実施例及び実施例の変形例1から13は、互いにそれぞれ組み合わせることができる。実施例及び実施例の変形例1から13のいずれかに係る機能を実現するための構成を備えた表計算装置100として提供できることはもとより、複数の装置で構成されるシステムであって、実施例及び実施例の変形例1から13のいずれかに係る機能を実現するための構成をシステム全体として備えたシステムとして提供することもできる。また、実施例及び実施例の変形例1から13のいずれかに係る表計算プログラム、及び、表計算プログラム用のアドインプログラムの配布方法は任意であり、例えば、メモリカード、CD(Compact Disc)-ROM、又はDVD(Digital Versatile Disk)-ROMなどの非一時的な記録媒体に格納して配布できる他、インターネットなどの通信媒体を介して配布することもできる。また、本発明に係る方法は、実施例及び実施例の変形例1から13のいずれかに係る表計算システム1又は表計算装置100を用いて実施できる。以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【0105】
(付記)
(付記1)
作業シート及びキャッシュシートを処理する表計算装置であって、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定されると、
(a)前記入力済値に基づくクエリを生成し、
(b)前記クエリを外部サーバへ送信し、
(c)前記外部サーバからのアンサーを取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として格納し、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されていると、前記クエリを前記外部サーバへ送信して前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得する、
ことを特徴とする表計算装置。
【0106】
(付記2)
(1)前記セルである第1セル、前記他のセルである第2セル、又は、前記第1セル及び前記第2セルと異なる第3セルが編集されたとき、(2)前記第3セルを含む列又は行が削除されたとき、(3)計算を指示する操作が行われたとき、(4)前記作業シートを有する作業ブックが保存されるとき、(5)前記作業ブックが開かれたとき、又は、(6)前記作業シート若しくは前記キャッシュシートの少なくとも1つが印刷されるとき、の少なくとも1つのときに、前記セルに対する前記再計算を実行する、
ことを特徴とする付記1に記載の表計算装置。
【0107】
(付記3)
前記クエリは、(1)前記入力済値が複数の分類のいずれに分類されるのかを問う問い合わせ、又は、(2)前記入力済値を指定された言語に翻訳した結果を問う問い合わせ、を含み、かつ、
前記クエリを、生成AI(Artificial Intelligence)を搭載した前記外部サーバへ送信する、
ことを特徴とする付記1又は2に記載の表計算装置。
【0108】
(付記4)
作業シート及びキャッシュシートを処理する表計算装置が実行する方法であって、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定される場合に、
(a)前記入力済値に基づくクエリを生成し、
(b)前記クエリを外部サーバへ送信し、
(c)前記外部サーバからのアンサーを取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として格納すること、及び、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されている場合に、前記クエリを前記外部サーバへ送信して前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得すること、
を有する、
ことを特徴とする表計算方法。
【0109】
(付記5)
通信部を備え、かつ、作業シート及びキャッシュシートを処理する表計算装置のコンピュータを、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定されると、
(a)前記入力済値に基づくクエリを生成し、
(b)前記通信部に前記クエリを外部サーバへ送信させ、
(c)前記外部サーバからのアンサーを前記通信部から取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として格納し、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されていると、前記クエリを前記外部サーバへ送信させて前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得する、
表計算部として機能させる、
ことを特徴とする表計算プログラム。
【0110】
(付記6)
表計算プログラム用のアドインプログラムであって、
通信部を備え、かつ、作業シート及びキャッシュシートを処理する表計算装置のコンピュータを、
(1)前記作業シート内のセルに、当該作業シート内の他のセルに入力された入力済値を参照する問合関数を呼び出す数式が設定されると、
(a)前記入力済値に基づくクエリを生成し、
(b)前記通信部に前記クエリを外部サーバへ送信させ、
(c)前記外部サーバからのアンサーを前記通信部から取得し、
(d)前記クエリを表すクエリ情報と、前記アンサーと、を、対応付けて、前記キャッシュシートに格納し、かつ、
(e)前記取得されたアンサーを前記セルの値として出力し、
(2)前記セルに対する再計算を実行するときに、前記クエリを表す前記クエリ情報が、前記キャッシュシートに格納されていると、前記クエリを前記外部サーバへ送信させて前記アンサーを取得するのに代えて、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを、前記セルに格納する値として取得する、
問合部として機能させる、
ことを特徴とするアドインプログラム。
【0111】
(付記7)
前記問合部は、前記キャッシュシートが存在しない場合に、前記作業シートを有する作業ブックに前記キャッシュシートを生成し、生成された前記キャッシュシートへ前記クエリ情報と前記アンサーとを格納する、
ことを特徴とする付記6に記載のアドインプログラム。
【0112】
(付記8)
前記作業シートと前記キャッシュシートとは、それぞれ同じ電子ファイルに保存される、
ことを特徴とする付記6又は7に記載のアドインプログラム。
【0113】
(付記9)
前記外部サーバは、生成AI(Artificial Intelligence)を搭載しており、
前記クエリには、前記生成AIが生成する前記アンサーのランダム性を制御する引数であるランダム性制御引数が含まれ、
前記問合部は、前記クエリ情報が前記キャッシュシートに格納されていると、
(1)前記ランダム性制御引数に基づいて設定された、又は、前記表計算装置が備える入力部に行われる操作に基づいて設定されたキャッシュヒット率で、前記クエリ情報に対応付けて前記キャッシュシートに格納されている前記アンサーを取得し、
(2)100%の確率から前記キャッシュヒット率を減算して得られる確率で、前記入力済値に基づく新たなクエリを、前記通信部に前記外部サーバへ送信させ、かつ、前記外部サーバからの新たなアンサーを前記通信部から取得する、
ことを特徴とする付記6から8のいずれか一つに記載のアドインプログラム。
【0114】
(付記10)
通信部を備え、かつ、表計算プログラムを実行する表計算装置のコンピュータを、
前記表計算プログラムから取得される問合引数に基づくクエリ、又は、前記クエリを表すクエリ情報と、前記クエリに対するサーバのアンサーと、が、対応付けられてスプレッドシートに保存されている保存済の場合に、
(1)前記通信部に前記クエリを前記サーバへ送信させることを抑制し、
(2)前記クエリ又は前記クエリ情報に対応付けられている前記アンサーを、前記スプレッドシートから取得し、かつ、
(3)取得された前記アンサーを、前記表計算プログラムへの返値として出力する、
問合部として機能させる、
ことを特徴とするアドインプログラム。
【0115】
(付記11)
前記サーバは、生成AI(Artificial Intelligence)を搭載しており、
前記クエリには、前記生成AIの引数であるAI引数が含まれ、
前記AI引数には、前記生成AIが生成する前記アンサーのランダム性を制御する引数であるランダム性制御引数が含まれ、
前記問合部は、
(1)前記ランダム性制御引数に基づいて、又は、前記表計算装置が備える入力部に行われる操作に基づいて、前記クエリ又は前記クエリ情報と対応付けられている前記アンサーを、前記保存済の場合に、前記スプレッドシートから取得する確率であるキャッシュヒット率を設定し、
(2)前記保存済の場合に、設定された前記キャッシュヒット率で、
(a)前記通信部に前記クエリを前記サーバへ送信させることを抑制し、
(b)前記クエリ又は前記クエリ情報に対応付けられている前記アンサーを、前記スプレッドシートから取得し、かつ、
(c)取得された前記アンサーを、前記返値として出力する、
ことを特徴とする付記6から10のいずれか一つに記載のアドインプログラム。
【0116】
(付記12)
前記問合部は、前記ランダム性制御引数が、前記ランダム性をより高く制御する引数である程、前記キャッシュヒット率をより低く設定する、
ことを特徴とする付記6から11のいずれか一つに記載のアドインプログラム。
【0117】
(付記13)
前記問合部は、前記保存済の場合に、100%の確率から前記キャッシュヒット率を減算して得られる確率である余事象の確率で、
(1)前記問合引数に基づく新たなクエリを、前記通信部に前記サーバへ送信させ、
(2)前記サーバからの新たなアンサーを前記通信部から取得し、
(3)取得された前記新たなアンサーを、前記返値として出力する、
ことを特徴とする付記6から12のいずれか一つに記載のアドインプログラム。
【0118】
(付記14)
前記問合部は、前記キャッシュヒット率を設定する基礎とされた前記ランダム性制御引数によって制御される場合よりも、値が高くなるように前記ランダム性を制御するランダム性制御引数を含む前記新たなクエリを、前記保存済の場合に、前記余事象の確率で、前記通信部に送信させる、
ことを特徴とする付記6から13のいずれか一つに記載のアドインプログラム。
【0119】
(付記15)
前記問合引数は、複数の分類と、分類の対象とされる分類対象文字列と、を含み、
前記クエリは、前記分類対象文字列が前記複数の分類のいずれに分類されるのかという質問を表す文字列と、前記質問により前記アンサーに課せられる制限を緩和する文字列と、を含み、
前記通信部に前記クエリを、前記生成AIを搭載した前記サーバへ送信させる、
ことを特徴とする付記6から14のいずれか一つに記載のアドインプログラム。
【0120】
(付記16)
前記質問により前記アンサーに課せられる前記制限は、前記複数の分類のいずれかを前記アンサーとしなければならないという制限を含み、
前記制限を緩和する前記文字列は、前記質問により前記アンサーに課せられる前記制限を、前記複数の分類のいずれかを、又は、前記分類対象文字列が前記複数の分類のいずれにも分類されないことを表す非分類文字列を、前記アンサーとしなければならないという制限に緩和する、
ことを特徴とする付記6から15のいずれか一つに記載のアドインプログラム。
【0121】
(付記17)
前記生成AIは、対話型のAIであり、
前記クエリは、前記アンサーの表現形式に課せられる制限を表す文字列をさらに含み、
前記複数の分類のそれぞれの表現形式、及び、前記非分類文字列の表現形式は、前記表現形式に課せられる制限に従っており、
前記問合部は、前記アンサーが、前記非分類文字列でなく、かつ、前記複数の分類のいずれでもないと、前記アンサーを前記非分類文字列に変更し、変更された前記アンサーを前記返値として出力する、
ことを特徴とする付記6から16のいずれか一つに記載のアドインプログラム。
【0122】
(付記18)
前記アンサーの前記表現形式に課せられる前記制限は、予め定められた数の単語で前記アンサーが表現されなければならないという制限である、
ことを特徴とする付記6から17のいずれか一つに記載のアドインプログラム。
【0123】
(付記19)
前記問合部は、前記クエリ又は前記クエリ情報と、前記アンサーと、が、対応付けられて前記スプレッドシートに保存されていない未保存の場合に、
(1)前記通信部に前記クエリを前記サーバへ送信させ、
(2)前記サーバからの前記アンサーを前記通信部から取得し、
(3)取得された前記アンサーを、前記返値として出力し、かつ、
(4)前記クエリ又は前記クエリ情報と、前記アンサーと、を、対応付けて前記スプレッドシートに保存する、
ことを特徴とする付記6から18のいずれか一つに記載のアドインプログラム。
【0124】
(付記20)
前記セルを含む、前記作業シート内の複数のセルに前記数式が設定されており、かつ、前記キャッシュシートに格納された前記アンサーが変更されると、前記複数のセルに対して再計算を実行するときに、前記クエリを前記外部サーバへ送信して前記アンサーを取得するのに代えて、前記キャッシュシートに格納されている変更後のアンサーを値として、前記複数のセルに格納する、
ことを特徴とする付記1から3のいずれか一つに記載の表計算装置。
【符号の説明】
【0125】
1:表計算システム、100:表計算装置、101:CPU、102:RAM、103a:ROM、103b:記憶装置、104a:データ通信回路、105a:ビデオカード、105b:表示装置、105c:入力装置、110:計算部、120:問合部、130:表計算部、190:情報記憶部、900:サーバ、NT:ネットワーク
【要約】
表計算装置(100)は、セルに対する再計算を実行するときに、クエリ情報がキャッシュシートに格納されていると、クエリを外部サーバへ送信してアンサーを取得するのに代えて、クエリ情報に対応付けてキャッシュシートに格納されているアンサーをセルに格納する値として取得する。