- Fiberplaneは、インフラ向けのコラボレーションノートブックツール(インシデント対応およびインフラのデバッグ)
- 2つの大きな問題を解決するのに役立った
1. Operational Transformation
- エディタのコラボレーション機能で競合を解決するための方法が必要だった
- Google Docsが利用しているアルゴリズムであるOTを実装したが、簡単ではなかった
- 複雑さの主な原因は、サポートするオペレーションが増えるにつれて、実装すべき変換の数が幾何級数的に増加すること
- この処理を適用するためのロジックはクライアント/サーバーの両方に必要。両者の不一致によって副作用が生じる可能性がある(作業者ごとにノートブックが異なるなど)
- これを両側に別々に2回実装するのは危険。チーム規模も小さく、複製しなければならないコードが大幅に増えてしまう
- そこでバックエンドアルゴリズムをRustで実装し、WASMを使ってフロントエンドでもまったく同じコードを実行した
- これにより、開発工数を節約し、不一致のリスクを減らした
2. Providers
- もう1つの問題は、外部データソースからノートブックへデータを取り込むこと
- データソースはさまざまな形式とサイズがあり、ユーザーのブラウザから常に簡単にアクセスできるとは限らない
- この問題を解決するため、ブラウザと顧客がホスティングするプロキシサーバーの両方で実行可能なWASMベースのプラグイン「Fiberplane Providers」を作成した
- このような技術はJavaScriptでも可能だが、WASMには次のような利点がある
- より高い性能
- WASMがサポートするあらゆる言語でプラグインを作成できる
- WASMプラグインはサンドボックス内で実行されるため、悪意のあるプロバイダーの能力を制限できる
fp-bindgen
- WebAssemblyはさまざまなシナリオで役立つ
- 自社製品の開発を簡素化したり、顧客インフラにアクセスするコードを安全に実行できる
- WASMは重要で広く使われているため、独自の専用ツールも作成した
- fp-bindgenはRustソースコードに対して動作するバインディングジェネレーター
- RustでWASMプラグインを作成し、ブラウザまたはWasmer環境でホスティングするのに利用できる
- fp-bindgenはオープンソースとして公開した
1件のコメント
私はこういう種類のスタートアップ記事が好きです。
自分たちが解決した問題を他の人の役に立つように整理しつつ、関連する自分たちのオープンソースも一緒に紹介して、エコシステムに貢献しているという印象も与えてくれます。
ギークニュース・ウィークリー #177 では QuickJS-emscripten : QuickJSをWASMにコンパイルして実行する を紹介しましたが、
こちらも同じようにサンドボックス化によるプラグインというコンセプトを採っていますね。サンドボックス化のためのコンテナとしてWASMを活用するのは、いまや基本になりつつあるようです.