出来事の日付:2026年8月3日。 Jane StreetのオープンソースプロジェクトBonsaiは、OCaml開発者向けに、インクリメンタルで合成可能なステートマシンからリアクティブなインターフェースを構築するためのフレームワークを提供する。同社によると、社内のウェブアプリケーションのほぼすべてでこの技術を使用しており、その範囲は社内名簿から取引インフラを監視・操作するシステムにまで及ぶ。
BonsaiはElmから一部着想を得ているが、そのアーキテクチャは、従来のユーザーインターフェースコンポーネント内でまとめられることが多い関心事を分離している。状態管理とインクリメンタル計算は独立して合成でき、値は必要な場合にのみ再計算される。この原則はレンダリング以外にも適用され、開発者は時間とともに変化するデータセットを処理する高コストなビジネスロジックもインクリメンタル化できる。
このフレームワークは、コンポーネントを純粋関数型のステートマシンとして表現する。状態をコンポーネント階層内の明示的な位置に所属させる必要がないため、Bonsaiはユーザーがアプリケーション内を移動する際に状態を保持し、整理するためのライフサイクルおよびスコープ管理ツールを提供する。Jane Streetは、状態を持つインターフェースをタブでまとめた構成を一例として挙げている。このフレームワークは、開発者がすべての値を最上位のアプリケーションモデルに引き上げなくても、入れ子になった状態を管理できる。
OCamlでは、ブラウザー側とサーバー側のコードで同じ言語と型定義を使用することもできる。Jane Streetによると、この一貫性によって大規模アプリケーションの理解と保守が容易になり、ターミナルベースの社内ツールで使っていた既存の型やビジネスロジックをウェブ上で再利用できるようになった。ブラウザーアプリケーションはBonsai_webとJs_of_ocamlを通じて提供される。
Bonsaiには、テンプレート言語、コンポーネント固有のスタイルシート、自動アプリケーションテストのサポートが含まれる。テストでは、インターフェース要素をプログラムから操作し、ドキュメントオブジェクトモデルがどのように変化するかを記録できる。テストシナリオでは、複数のアサーションを実行し、属性やクラス名の差異を調べ、サーバー呼び出しをモック化し、基盤となる状態の変化を追跡できる。プロジェクトの文書によると、これにより開発者はブラウザーを何度も開くことなく、コンポーネントを構築してテストできる。
リポジトリの対象範囲はウェブ開発だけにとどまらない。中核となるBonsaiライブラリは、汎用のインクリメンタルなステートマシンをサポートする。Bonsai_webはそれらのプリミティブを対話型ブラウザーインターフェース向けに特化させ、Bonsai_termはターミナルアプリケーションに適用する。Jane Streetは、エイプリルフール企画として実験的な仮想現実版も制作している。
この階層構造により、再利用可能な計算モデルが特定のレンダリング環境から切り離されている。すでにOCamlに投資しているチームにとっては、状態と再計算を明示的に保ちながら、型付けされたビジネスロジックから対話型ツールへ進む道を提供する。初心者向けには、Jane StreetはQuick Startと「Thinking in Bonsai」の各ガイドに加え、状態の合成方法を比較する例を案内している。
Jane StreetでBonsaiが社内展開されていることは、同社が主張するライブラリの適用範囲を示している。一方、外部のチームは、より定着したブラウザーフレームワークと比較して、OCamlおよびJs_of_ocamlの要件、エコシステムとの適合性、学習曲線を見極める必要がある。



