Graphcal へようこそ¶
Graphcal は、工学計算のための型安全で、単位を認識し、Git と親和性の高いリアクティブプログラミング言語です。スプレッドシートやその場しのぎのスクリプトを、型付けされ、バージョン管理された単一の計算グラフに置き換えます。
ドキュメントは英語と日本語で提供しています。ヘッダーの言語選択で各言語版のホームに移動でき、ページタイトルの上のリンクで同じページの別言語版を開けます。コード例とプレイグラウンドは共通で、プレイグラウンドの UI は英語のままです。

Graphcal の言語サーバーは計算されたノードの値をインラインで表示するため、プレーンテキストの計算ファイルがライブな工学ワークシートのように感じられます。
クイック例¶
Graphcal によるツィオルコフスキーのロケット方程式:
// `Velocity` and `Acceleration` are prelude dimensions.
param dry_mass: Mass = 1200.0 kg;
param fuel_mass: Mass = 2800.0 kg;
param isp: Time = 320.0 s;
const node g0: Acceleration = 9.80665 m/s^2;
node v_exhaust: Velocity = @isp * @g0;
node mass_ratio: Dimensionless = (@dry_mass + @fuel_mass) / @dry_mass;
node delta_v: Velocity = @v_exhaust * ln(@mass_ratio);
実行します:
$ graphcal eval rocket.gcl
dry_mass = 1200 kg
fuel_mass = 2800 kg
isp = 320 s
g0 = 9.80665 m/s^2
v_exhaust = 3138.128 m/s
mass_ratio = 3.333333
delta_v = 3778.221 m/s
なぜ Graphcal なのか¶
- 型安全性 -- 次元の不一致はコンパイル時に検出されます。
- 単位の認識 -- 物理的な次元を定義し、単位を付与し、単位間で変換できます。コンパイラーが次元の整合性を強制します。Mars Climate Orbiter のような失敗はもう起こりません。
- リアクティブ計算 -- パラメーターとノードからなる DAG を定義します。入力を変更すると、依存するすべての値が自動的に更新されます。
- Git との親和性 -- 差分の取得やマージがきれいに行えるプレーンテキストの
.gclファイルです。バイナリのスプレッドシートは不要です。 - ライブなエディター体験 -- LSP サーバーが計算値をインラインで表示するインレイヒントを提供し、エディターをライブな計算シートに変えます。
はじめに¶
-
インストール
Cargo を使って crates.io から Graphcal をインストールします。
-
ブラウザープレイグラウンド (実験的)
インストール不要で、アルファ段階の Graphcal をすぐに試せます。Examples メニューから例を選んで入力を変更すると、リアクティブに更新されるグラフで共振、音の干渉、エイリアシング、カオス、待ち行列、フィードバックの遅延を探究できます。各実験には、試す入力変更とモデルの仮定を記載しています。
-
インタラクティブチュートリアル
プレイグラウンドで開ける単一ファイルの例を使って、Graphcal を段階的に学びます。
-
言語リファレンス
すべての言語機能に関する正式なドキュメントです。
-
CLI リファレンス
コマンドラインインターフェースの完全なドキュメントです。
-
Tenax 連携
一度コンパイルし、型付けされた工学モデルを永続的な Arrow IPC 経由で提供します。
-
エディターのセットアップ
VS Code 拡張機能をインストールするか、ライブなインレイヒント付きで Zed/Neovim をセットアップします。