コンテンツにスキップ

English

Graphcal へようこそ

Graphcal は、工学計算のための型安全で、単位を認識し、Git と親和性の高いリアクティブプログラミング言語です。スプレッドシートやその場しのぎのスクリプトを、型付けされ、バージョン管理された単一の計算グラフに置き換えます。

ドキュメントは英語と日本語で提供しています。ヘッダーの言語選択で各言語版のホームに移動でき、ページタイトルの上のリンクで同じページの別言語版を開けます。コード例とプレイグラウンドは共通で、プレイグラウンドの UI は英語のままです。

ロケット方程式の計算について、計算値をインラインで表示している Helix 上の Graphcal

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 をインストールする

  • ブラウザープレイグラウンド (実験的)


    インストール不要で、アルファ段階の Graphcal をすぐに試せます。Examples メニューから例を選んで入力を変更すると、リアクティブに更新されるグラフで共振、音の干渉、エイリアシング、カオス、待ち行列、フィードバックの遅延を探究できます。各実験には、試す入力変更とモデルの仮定を記載しています。

    プレイグラウンドを開く

  • インタラクティブチュートリアル


    プレイグラウンドで開ける単一ファイルの例を使って、Graphcal を段階的に学びます。

    チュートリアルを始める

  • 言語リファレンス


    すべての言語機能に関する正式なドキュメントです。

    言語リファレンス

  • CLI リファレンス


    コマンドラインインターフェースの完全なドキュメントです。

    CLI コマンド

  • Tenax 連携


    一度コンパイルし、型付けされた工学モデルを永続的な Arrow IPC 経由で提供します。

    Graphcal を Tenax に接続する

  • エディターのセットアップ


    VS Code 拡張機能をインストールするか、ライブなインレイヒント付きで Zed/Neovim をセットアップします。

    エディターのセットアップ