作品の仕組み 2026-09-09
KuraCalcの仕組み ― 計算結果をXに共有できる、β版の関数電卓
KuraCalcは、ブラウザの中だけで動く関数電卓で、いまはβ版です。いちばんの特徴は、計算結果をそのままXに共有できるボタン。普通の電卓にはない部分です。入力した式を「機械が読める形」に整え、使える文字だけかを検査してから計算します。微分は中心差分、積分はシンプソン法という数値計算で、記号計算はしません。グラフはx軸を細かく刻んで点を打ち、スライダーで係数を動かせます。計算は端末内で完結し、AIコンパニオンへの質問だけが外部に送られます。式の正規化、検査、数値計算の精度、限界を書きます。
この記事の位置: AIが作り、コードが検分する → 送らない(端末の中で完結する) → [数字と実寸] → 教材の設計
公開初日に来た共有カードは、「2^10 = 1024」でした。二枚目は「sin(30) = -0.988」。二枚目を見て、作った側として少しひやりとしました。度のつもりで打った式が、RADモードのまま、ラジアンで計算されている。30度のsinは0.5で、30ラジアンのsinが-0.988。電卓は正しく、打った人の期待と違う。この作品の「変わっている点」は共有ボタンだと本文に書きましたが、共有されたからこそ、この食い違いが作った側に見えた。この記事は、その二枚目から始まります。
KuraCalcは、インストール不要でブラウザの中で動く関数電卓です。四則演算、べき乗、平方根、三角関数、対数、階乗、関数のグラフ、簡単な統計、そして微分と積分。先に断っておくと、KuraLabの作品の中では、まだβ版の位置づけです。計算と共有は使えますが、機能も見た目も、これから変わります。
この電卓でいちばん変わっているのは、計算そのものではなく、計算結果をXに共有できるボタンがあることです。普通の電卓は、計算して、答えを見て、終わり。KuraCalcは、式と答えと、その式を開き直せるURLを投稿文にして、そのまま投稿できる。「この計算、合ってる?」と誰かに見せる、解いた式を残しておく、宿題の検算を友だちと共有する。電卓を「一人で使う道具」から「見せられる道具」にする、というのが、この作品で試していることです。共有されるのは、共有ボタンを押した式と答えだけです。
裏側は、「文字列の式を、どう安全に計算するか」という一つの問題で、その解き方を工程順に書きます。
一つ目の工程は、式の正規化です。人が打つ式は、機械がそのまま読める形ではありません。「π」は「PI」に、「×」と「÷」は「*」と「/」に、全角の「−」は半角の「-」に、「^」は「**」(べき乗)に。「sin(」「log(」「ln(」は、大文字小文字を問わず内部の関数名に揃えます。「2x」「3(x+1)」「2π」のように、掛け算の記号を省いた書き方(暗黙の乗算)は、数字や閉じ括弧の直後に文字や開き括弧が来るパターンを見つけて「*」を補います。「5!」のような階乗は、階乗の関数呼び出しに置き換えます。この工程で、人の書き方の揺れを、一つの形に畳みます。
二つ目の工程が、検査です。正規化した式に、数字、四則の記号、括弧、小数点、カンマ、感嘆符、英字、以外の文字が含まれていれば、計算せずにエラーを返します。理由は、この電卓が式の計算にJavaScriptの関数生成(文字列から関数を作る仕組み)を使っているからです。文字列をそのまま実行に回すと、式の形をした別の命令が紛れ込む余地が生まれる。使える文字を白い名簿で限定し、名簿にない文字が一つでもあれば止める。名簿に通った式だけを、PI・e・前回の答え(ANS)・変数x・スライダーの係数a,b,c・三角関数などの決まった名前を渡して評価します。計算結果が無限大や数でない値になった場合も、エラーとして返します。
| 工程 | 内容 |
|---|---|
| 正規化 | π→PI、×÷→* /、^→**、暗黙の乗算に*を補う、n!→階乗関数 |
| 検査 | 数字・四則・括弧・小数点・カンマ・!・英字以外が含まれていれば計算しない |
| 評価 | PI・e・ANS・x・a・b・c・関数を渡して計算。無限大や非数はエラー |
| 微分 | 中心差分(点の左右の差を幅で割る) |
| 積分 | シンプソン法(区間を800分割、1・4・2・4…・1の重み) |
| グラフ | xを刻んで評価し点を結ぶ。スライダーで係数を変えると描き直す |
三つ目は、微分と積分です。KuraCalcは記号計算(x²を微分して2xを出す)をしません。数値で解きます。微分は「中心差分」で、指定した点の少し右と少し左で関数の値を計算し、その差を幅で割ります。幅は、点の大きさに応じた小さな値(点の絶対値の10万分の1、最小でも10万分の1)です。積分は「シンプソン法」で、区間を800に分割し、各点の関数の値に1・4・2・4…・1の重みを付けて足し、幅の3分の1を掛けます。滑らかな関数なら十分な精度が出ますが、区間の中に不連続や鋭い尖りがある関数では誤差が出ます。「deriv(f(x), 点)」「int(f(x), 開始, 終了)」という書き方で、式の中に埋め込んで使えます。
| どこで処理 | サーバーへ | |
|---|---|---|
| 式の計算・グラフ・履歴(履歴は端末内に保存) | ブラウザ内 | 送らない |
| AIコンパニオンへの質問文 | 外部の生成AI API | 送る(個人情報は入れない) |
| Xへの共有(この電卓の特徴) | 式と答えとURLを投稿文にして投稿 | 共有ボタンを押した式と答えのみ |
四つ目は、グラフです。表示範囲のxを細かく刻み、各xで式を評価して点を打ち、線で結びます。スライダーの係数a,b,cを動かすと、式を評価し直して描き直すので、「aを変えると放物線がどう動くか」を目で追えます。評価は上の検査を通った式に対してだけ行い、計算できない点(ゼロ割り、定義域外)は飛ばします。
五つ目は、データの扱いです。電卓本体の計算とグラフは、ブラウザの中で完結し、入力した式も結果もサーバーに送りません。式の履歴は、このブラウザの中(端末の保存領域)に最大200件まで残り、サーバーには保存されません。例外が一つあり、画面右下から開く「AI数学コンパニオン」に入力した質問文は、回答を生成するために外部の生成AIのAPIへ送られます。ここは、暗記シートスクラッチの仕組みの記事で書いた「送らない」の唯一の例外で、だから、個人情報や公開したくない内容を質問に含めないよう案内しています。コンパニオンの答えは生成AIのものなので誤りが混ざることがあり、計算そのものは電卓側で確かめる、という使い分けです。
限界を書いておきます。数値計算は浮動小数点の精度に依存し、0.1+0.2が0.30000000000000004になる類の誤差は避けられません。厳密な記号計算、高精度の数値計算、複素数、行列は扱いません。宿題の検算、グラフの形の確認、統計の数字を素早く出す、という用途のための道具です。専門の数式処理ソフトの代わりではありません。
角度の単位について、いまの形を書きます。画面には今のモード(DEG/RAD)を表示し、初期値は「度」です。関数電卓の初期値はラジアンのものが多いのですが、この電卓を使うのは宿題の検算をする人が多く、教科書の三角関数は度で書かれています。履歴にも、計算したときのモードを残します。ただ、Xへの投稿文には、まだ角度の単位が入りません。「sin(30) = -0.988」という投稿だけでは、見た人は、どちらのモードで計算したかを知る手がかりがない。共有できる電卓は、共有された式が「どの設定で計算されたか」まで運ばないと、カードの数字が独り歩きします。投稿文に単位を載せることを、次の改善に置いています。
検査の白い名簿は、いまは文字の種類で決める一行の正規表現で、英字は種類として通しています。通す英字を「関数名と定数名と変数名の一覧にある単語だけ」(sin、cos、tan、log、ln、sqrt、abs、PI、e、ANS、x、a、b、c、deriv、int など)に絞り、名簿にない単語が一つでもあれば式全体をエラーにする形にすることを、次の改善に置いています。なお、入力した式はサーバーに送らないので、利用者がどんな式を打ったかを、KuraLabの側で見ることはできません。
精度についても、数字を書きます。シンプソン法の分割数800で、x²を0から1まで積分すると、答えは0.33333333333、真の値3分の1との差は10桁目以降。sin(x)を0からπまで積分すると2.0000000000。滑らかな関数では、この精度で足ります。一方、√xを0から1まで積分すると、x=0で傾きが無限大になるところがあるので誤差が出て、真の値3分の2(0.6666667)に対して0.6666631。宿題の検算には十分で、精密計算には向かない、と本文に書いた線は、この0.6666631のあたりにあります。
β版なので、この記事に書いた工程も、これから変わる可能性があります。変わったら、この記事も直します。この作品の設計で最初に決めたのは、「文字列を実行に回すなら、通す文字を先に決める」ことでした。オリクジの仕組みの記事で書いた「AIが詠み、コードが検分する」型と、形は違いますが、考え方は同じです。入力を信用せず、検分を通ったものだけを先に進める。電卓の場合、その検分は一行の正規表現で、それが、この道具の安全の全部です。
公開初日の二枚目、「sin(30) = -0.988」は、投稿文に角度の単位が載らないことを教えてくれました。電卓を「見せられる道具」にする、と本文に書きました。見せられる道具は、見た人が同じ結果を出せる道具でなければならず、そのためには式と答えだけでなく、設定まで一枚に載せる必要がある。共有ボタン一つの裏で、次に直すのはそこです。β版の「変わる」は、こういう変わり方です。
執筆:長澤 湊(宅地建物取引士・行政書士・測量士補) 内容確認日:2026-10-03
この記事は制度と手続きの一般的な説明で、個別の事案についての法律・税務の相談や判断ではありません。制度や数字は内容確認日の時点のものです。ご自身の事案は、弁護士・司法書士・税理士・行政書士など、該当する専門家に確かめてください。