使い方
- 01カーネルを選びます
JavaScript と MATLAB / Octave はローカルで動作し、Python (Pyodide) と R (webR) はランタイムのダウンロードが必要です。 - 02プロンプトに入力して Enter を押します。Shift+Enter で改行、↑/↓ で履歴を移動、Ctrl/Cmd+L でクリアします。未完成の文 — 開き括弧、MATLAB の
... 行、: で終わる Python 行 — はプロンプトを … に変え、Enter で続行します。 - 03ノートブックには Cells に切り替えます。各セルには独自のカーネルセレクターがあり、JavaScript と Python のセルを1つのドキュメントに置けます。Ctrl+Enter で1セル実行、Run above でそのセルと前のセルを実行、Run all でリスト全体を実行します。
- 04Vars ペインでデータを移動します。Pull all はセッション変数をデータワークスペースにコピーし、Push all はそれらをセッションに注入します — 言語間の唯一の橋です。
- 05Figures ペインを確認します。MATLAB と JavaScript の
plot 出力は SVG または PNG としてダウンロードされ、matplotlib の図は PNG 画像として届きます。
実行例
MATLAB カーネルで連立方程式を解き、共有ワークスペースを通じて JavaScript で検証します。以下の出力はすべて同じ入力から再現されます。
Vars ペインで Pull all を押します。ワークスペースに A(3×3 行列)と b、x(プレビュー 8 -11 -3 と 2 3 -1 を持つ3要素ベクトル)が加わります。JavaScript に切り替えて Push all を押すと、同じ値がセッションに入ります:
残差はゼロではありません — 解は倍精度なので、8.8817841970013e-16 は浮動小数点が到達できる限界です。
#1>> A = [2 1 -1; -3 -1 2; -2 1 2]; b = [8; -11; -3];
>> x = A\b
x =
2.0000
3.0000
-1.0000
>> norm(A*x - b)
ans = 8.8818e-16
#2> math.multiply(A, x)
[8, -11, -3]
> math.norm(math.subtract(math.multiply(A, x), b))
8.8817841970013e-16
各カーネルの正体
- JavaScript は mathjs 上で動作し、プロジェクトライブラリが注入されます(
math、cas、stats、fin、logic、graph、latex、currency、date、family、print、ws、plot)。ダウンロードは不要で、セッションはソースから再構築されます(落とし穴を参照)。
- MATLAB / Octave は一般的なサブセット向けの TypeScript インタープリターです。列優先の double、セル、文字列、制御フロー、約120の組み込み関数を扱い、struct、クラス、複素数、sparse、整数型はありません。4 × 10⁷ 演算または8秒の予算でローカル実行します。
- Python(Pyodide 0.28.3) は初回利用時に約12 MBをダウンロードします。インポートはパッケージローダーを起動し、matplotlib の図はキャプチャされた PNG として返り、取り込んだ numpy 配列と pandas DataFrame は行列/ベクトル変数とテーブル変数になります。
- R(webR 0.6.0) は約30 MBをダウンロードし、実行間で webR のベース R グローバル環境を保持し、プロットは返しません — R ではテキストを、Python では matplotlib を使ってください。
覚えておきたい制限
- 中断できません。
- コードはメインスレッドで同期的に実行されます — Ctrl+C や停止ボタンはありません。長い処理は分割してください。内部予算があるのは MATLAB だけです。
- セッションはページとともに終わります。
- トランスクリプト、履歴、ノートブックのテキストは再読み込み後も残りますが、セッション変数は残りません。永続するのはワークスペース変数だけです(各最大 20,000 要素)— Vars ペインが保存ボタンです。
- 初回利用にはネットワークが必要です。
- Python と R は cdn.jsdelivr.net から取得されます。ダウンロードに失敗すると再試行でき、成功するとキャッシュされます。
- できないこと。
- MathWorks MATLAB でもパッケージマネージャーでもありません。Toolbox、Simulink、struct、複素数型、sparse 型はありません。Python は Pyodide のパッケージ群に限られ、R はグラフィックを返しません。データはデータワークスペースから取り込んでください。コードなしの行列計算には数学ツール、要約と検定には統計、1つの式の入力には関数電卓があります。
JavaScript セッションは解釈ではなくスキャンされる
取り込まれるのはトップレベルの let/const/var 宣言と単純な name = … 代入だけです。2つの結果がほぼ全員を引っかけます:
- ブロックや関数本体の内側で最初に作られた変数はセッションに入りません。
if (true) { let hidden = 41; } の後で typeof hidden は undefined を返します — エラー行は何も警告しません。
- 例外を投げた実行は何も書き戻さないため、エラー前に計算された変数は失われます。
let before = 1; throw new Error('boom') を実行し、boom エラーを確認してから typeof before を読むと undefined です。トップレベルの let kept = 41 は kept + 1 に依然として 42 と答えます。
Python、R、MATLAB はセッションをネイティブに保持するため、これは JavaScript に固有です。
どんな場面で役立つか
別の言語で計算を照合する
上記のように MATLAB で解き、共有ワークスペース上で JavaScript で残差を再計算します。2つの実装は 8.8817841970013e-16 まで一致します。コードを残すにはノートブックを JSON としてエクスポートします(結果は破棄され、再実行で再現できます)。または、ある言語のセルをネイティブスクリプトとしてエクスポートします(notebook.js、notebook.m、notebook.py、notebook.R)。
言語間でデータを移動する
Python でテーブルを整え、Pull all でワークスペースへ、次のステップのために Push all で R や MATLAB へ渡します — またはデータワークスペースでページをまたいで変数を保ちます。取り込んだベクトルは統計に直接入り、要約と検定に使えます。
プライバシー
コード、コンソールのトランスクリプト、変数はブラウザ内にとどまります。cdn.jsdelivr.net から取得されるのは Python と R のランタイムだけです(1回のみ)。
参考文献
- Pyodide, Pyodide ドキュメント, pyodide.org (访问日期:2026-10-01)— WebAssembly 上の Python と科学パッケージ。
- webR, webR ドキュメント, docs.r-wasm.org (访问日期:2026-10-01)— ブラウザ内の R: コンソールとセッションの意味論。
- MathWorks, mldivide, \, mathworks.com (访问日期:2026-10-01)— バックスラッシュ演算子は正方線形系を解きます。
- MDN Web Docs, let, developer.mozilla.org (访问日期:2026-10-01)— セッションの罠の背後にあるブロックスコープ。
- mathjs, ドキュメント, mathjs.org (访问日期:2026-10-01)— JavaScript 実行に注入されるライブラリ。
- R Core Team, An Introduction to R, cran.r-project.org (访问日期:2026-10-01)— ベース R のオブジェクトとセッション。
本页计算器
精选工具,点开即用;小工具可直接试算,数值会带入完整计算器。