Microsoft は、リアルタイム共同 Web アプリケーション用の Typescript ライブラリである Fluid Framework のコードを Github で公開しました。
Fluid Framework はしばらく前から開発が進められてきました。2019年5月のBuildでプレビュー版が公開され、今年初めのBuild 2020でより詳細な情報が公開されました。Microsoftは当時、1か月以内にオープンソース化すると発表していましたが、実際には4か月もかかっています。
Mac 上でローカルに実行される「Hello World」Fluid の例
Fluid Framework の用途は何でしょうか?執筆時点ではドキュメントサイトが機能不全に陥っており、壊れたホームページが表示されたり、Azure Static Web App として実行されているように見えるサイトが「異常に高い使用率のため」制限されているというエラーメッセージが表示されたりと、状況は様々です。静的 Web アプリは高いスケーラビリティが求められるため、これは Fluid Framework 開発者にとってだけでなく、Azure の新機能の一例として見ても残念なことです。近いうちに修正されるのは間違いないでしょう。
「現在調査中です。多くの地域では復旧していますが、状況が分かり次第、改めてお知らせします」と、Microsoft Fluid Frameworkのソフトウェアエンジニアであるサム・ブローナー氏は述べた。
Broner氏はプロモーションビデオの中で、Fluidについて「ネイティブマルチユーザーアプリ」を簡単に構築できる方法であり、「ライブWebエクスペリエンス」を埋め込み共有できる方法だと説明しました。Fluidの本質は、開発者が定義するカスタムオブジェクトである「分散データ構造」を管理するTypeScriptクライアントフレームワークと、データを変更する操作(ops)をブロードキャストして保存するサーバーです。クライアントとの通信はWebSocket経由で行われ、HTTPよりも高速で軽量です。Microsoftによると、Fluidは低レイテンシでサーバー負荷も低く、スケーラビリティに優れています(ドキュメントサイトよりも優れていることを期待しています)。ほとんどの機能はクライアントコードに備わっているため、カスタムサーバーコードは不要です。こちらで詳細をいくつかご紹介しました。
Microsoftは、従来のOffice共有オーサリングよりも優れたパフォーマンスと拡張性を備えた共同ドキュメント作成のために、365サービスでこのフレームワークを使用しています。Microsoft 365には独自のFluidサーバーと.fluidドキュメントタイプがあります。他のOfficeドキュメントとは異なり、完全にクラウドベースです。ファイルをダウンロードしてローカルで作業することはできません。
今日のMicrosoftのFluid Frameworkドキュメントサイト:期待していたほどのスケーラビリティはない
FAQドキュメントでは、いくつかの長所と短所が明確に説明されています。サーバーがすべてのオペレーションを保存するため、ブラウザはセッションを閉じて再参加することで最新の状態に戻ることができます。しかし、セッションを超えて保持されるデータについては、開発者がオペレーションをデータベースまたはファイルに保存する必要があります。.fluidファイルはその一例ですが、これはMicrosoft 365でのみ機能します。同社によると、少なくとも数百人の同時ユーザーをサポートしており、さらに拡張できる可能性があります。
FluidとSignalR(同じくWebSocketベースの.NETフレームワーク)の違いは何でしょうか?Microsoftによると、Fluidはサーバー側の処理がより軽量で、「複数のクライアント間での状態分散」に重点を置いています。どちらを使用できる場合もありますが、サーバー側でより多くのロジックが必要な場合はSignalRの方が適しており、すべてのロジックをクライアント側で実行できる場合はFluidが適しています。ターン制ゲームも可能ですが、クライアントがルールを適用し、実質的にすべてのデータを保持するため、場合によっては扱いにくい場合があります。
「不正行為の防止に関して解決すべき興味深い問題がいくつかあるかもしれない」とマイクロソフトは述べた。
コードは現在、MITライセンスの下でGitHubに公開されています。MacにVisual Studio Codeをインストールして簡単なサンプルを実行することに成功しましたが、一部のサンプルではエラーが発生しました。サーバーはNode.js上で動作しており、MicrosoftはWindowsではテストカバレッジが完全に動作しないと述べています。これは、同社がWindowsのルーツから大きく逸脱していることを示唆しています。
「Fluid Framework は、選択したアプリケーション フレームワークで動作します。純粋な JavaScript を好む場合でも、React、Angular、Vue などのフレームワークを好む場合でも同様です。」とドキュメントには記載されています。
JavaScriptであれば、どのフレームワークでも構いません。.NETはどうでしょうか?開発者はFluidコードをホストするためにJavaScriptランタイムが必要になります。Javaでも同様です。
コードは現在公開されていますが、まだプレビュー段階です。Microsoftは、「Fluid Frameworkを支えるコアテクノロジーは成熟し、安定しています。しかし、その基盤の上に構築されるレイヤーはまだ開発中です」と述べています。
Fluidは興味深いものですが、Microsoftにとっての現実的な価値は未だ不透明です。MicrosoftはFluidをリアルタイムの共同ドキュメント編集を念頭に設計しましたが、既存のOfficeドキュメントとの非互換性やオフライン作業の制限は、Microsoft 365への統合において課題となるでしょう。魅力的なユースケースが今後登場する可能性があり、このフレームワークは開発者がWebアプリケーションに共同作業機能を組み込む可能性を秘めています。®