Softex CelwareTech Blog
バニラJS Webアプリ2026-05-29

数式導出をSTEPで見せる学習UIの作り方

数式や計算過程を一度に見せず、概要、条件式、行列、係数、最終式へ順番に追える学習UIとして整理する設計パターンです。

バニラJS学習UI数式スプライン補間Webアプリ

はじめに

数値計算の説明画面では、最初からすべての式を並べると、初心者はどこから読めばよいか分かりにくくなります。

そこで、導出の流れをSTEPに分け、入力点、未知数、条件式、係数行列、解ベクトル、最終式へ順番に進めるUIにすると、計算の意味を追いやすくなります。

この記事では、スプライン補間学習計算ツールで使った、数式導出を段階表示する学習UIの作り方を整理します。

使う場面

  • 数学やアルゴリズムの導出過程をWebアプリ上で見せたい
  • 計算結果だけでなく、途中式や条件式も説明したい
  • ブログ記事の解説順と、デモアプリの画面順を合わせたい
  • JavaScriptだけで軽量な学習用Webアプリを作りたい

一度に見せない

計算系の画面でありがちな失敗は、入力、グラフ、条件式、行列、結果表をすべて同じ重みで並べることです。

情報量が多い画面では、ユーザーは「どれが原因で、どれが結果なのか」を見失いやすくなります。

学習UIでは、まず全体像を短く見せ、そのあとに計算の依存順で表示します。

STEP構成の例

スプライン補間学習計算ツールでは、次のような順番で表示しています。

| STEP | 表示内容 | 役割 | |---|---|---| | 1 | 入力点、区間幅、未知数、条件数 | 何を計算するかを確認する | | 2 | 定数や条件式 | 行列に入る式の意味を確認する | | 3 | 一般形の係数行列 | 式全体の構造を見る | | 4 | 実際の数値行列 | 入力点を代入した結果を見る | | 5 | 解ベクトル、係数表、最終式 | 計算結果が補間式になる流れを見る |

この順番にすると、ユーザーは「点を入れる」「条件が作られる」「行列になる」「係数が出る」「式になる」という流れを追えます。

実装イメージ

画面上では、各STEPを配列データとして持っておくと扱いやすくなります。

const learningSteps = [
  {
    title: "入力点と区間幅",
    render: renderPointSummary,
  },
  {
    title: "条件式の整理",
    render: renderConditionEquations,
  },
  {
    title: "係数行列",
    render: renderMatrix,
  },
  {
    title: "係数表と補間式",
    render: renderFinalFormula,
  },
];

表示側では、現在の入力値や計算結果を受け取り、各STEPの描画関数へ渡します。

function renderLearningPanel(state) {
  learningSteps.forEach((step, index) => {
    const section = document.createElement("section");
    section.className = "learning-step";
    section.innerHTML = `<h3>STEP ${index + 1}: ${step.title}</h3>`;
    section.appendChild(step.render(state));
    learningPanel.appendChild(section);
  });
}

STEPごとの描画責務を分けると、通常補間、パラメトリック補間、閉曲線補間のようにモードが増えても、差し替える範囲を限定しやすくなります。

ブログ記事と順番を合わせる

学習UIは、ブログ記事と一緒に読まれることがあります。

この場合、記事の見出し順とアプリのSTEP順がずれていると、読者は対応関係を探す必要があります。

そのため、記事側も次のように揃えると効果的です。

  • 記事のH2とアプリのSTEP名を近い言葉にする
  • 式番号や条件名をアプリ側にも表示する
  • アプリのモード説明から、対応する記事へリンクする
  • 記事の途中から、該当するデモアプリへリンクする

この導線設計については、技術ブログとWebアプリを相互リンクさせる導線設計でも整理しています。

注意点

STEPを細かくしすぎると、今度はスクロールが増えて読みにくくなります。

1つのSTEPには、1つの目的だけを持たせます。 「条件式を理解する」「行列に対応させる」「数値代入を見る」のように、ユーザーが今見るべきものを明確にしておくと、画面全体の見通しがよくなります。

また、処理が重い場合は、描画のたびに画面が固まらないように、setTimeout(0)でプログレスバーとキャンセルを効かせるパターンのような分割処理も候補になります。

まとめ

数式導出を見せるUIでは、計算結果を一度に並べるよりも、入力、条件式、行列、係数、最終式へ順番に進める構成が分かりやすくなります。

ブログ記事とWebアプリの表示順を揃えておくと、読者が記事と実画面を行き来しながら学習しやすくなります。

この技術で業務改善しませんか?

Excel VBA・GAS・Webアプリで業務の自動化ツールを開発しています。 「こんなことできる?」というご相談だけでもお気軽にどうぞ。

無料相談はこちら →