コラボレーション型リアルタイムエディタとは、異なるコンピュータやモバイルデバイス上の異なるユーザーが、同じデジタル文書、コンピュータファイル、またはクラウドに保存されたデータ(オンラインスプレッドシート、ワープロ文書、データベース、プレゼンテーションなど)をリアルタイムで共同編集、同時編集、またはライブ編集することを可能にする、コラボレーションソフトウェアまたはWebアプリケーションの一種です。編集内容は自動的かつほぼ瞬時にマージされます。
リアルタイム編集機能は、オンラインユーザー全員が各自のデバイスで文書を編集する際に、その編集内容を自動的かつ定期的に、多くの場合ほぼ瞬時に同期します。これは、編集の競合を回避または最小限に抑えることを目的としています。
非同期型共同編集(つまり、リアルタイムではなく、遅延があり、オフラインで行われる編集)では、通常、各ユーザーが手動で編集内容を送信(公開、プッシュ、コミット)、更新(更新、プル、ダウンロード、同期)、そして(編集の競合が発生した場合は)マージする必要があります。非同期型共同編集は遅延があるため、複数のユーザーが同じ行、単語、要素、データ、行、またはフィールドを編集してしまうことがあり、その結果、編集の競合が発生し、手動での編集マージまたは上書きが必要になります。この場合、ユーザーは使用する編集内容を選択するか、(システムと設定によっては)警告の有無にかかわらず、自分の編集内容または他のユーザーの編集内容を自動的に上書きする必要があります。
共同作業型のリアルタイムエディタの最初の例は、1968年にダグラス・エンゲルバートが『すべてのデモの母』の中で実演したものである。この概念が広く普及するまでには数十年を要した。
1991年にON Technology社からInstant UpdateというソフトウェアがクラシックMac OS向けにリリースされました。[ 1 ]このソフトウェアはLAN経由で複数のユーザーが1つのドキュメントをリアルタイムで編集することを可能にし、ワークグループサーバーに依存していました。
2001年のCOMDEXでは、Cutting Edge SoftwareのJeff Musa氏が開発した共同作業用スプレッドシート「Quickoffice Conference」がデモンストレーションされた。このソフトウェアは、ピアツーピアおよびピアツーマルチピアの会議とコラボレーション機能を可能にするように設計されており、Palm OSモバイルプラットフォーム上で動作した。[ 2 ]
インターネットを介したリアルタイムの共同編集への関心から、2003年から2005年の間にMoonEditとSubEthaEditが開発され、その後すぐにGobbyが登場しました。
Ajaxテクノロジーとブラウザの「コンテンツ編集可能」機能の導入により、 Web 2.0現象の一環として、2005 年頃に Web ベースのリアルタイム共同編集が発展しました。特に、Writely という製品は爆発的なユーザー増加を見せ、2006 年 3 月に Google に買収されました (後にGoogle Docsとして知られるようになり、後にGoogle Driveに改名されました)。これは、ドキュメント全体に対する同時編集を提供しましたが、他のユーザーからの変更は、クライアント プログラムがサーバーをポーリングした後 (約 30 秒ごと) にのみ反映されました。もう 1 つの初期の Web ベースのソリューションは JotSpotLive で、ほぼリアルタイムで行ごとの同時編集が可能でした。[ 3 ]しかし、2006 年 11 月に Google が親会社 JotSpot を買収した後、このサイトは閉鎖されました。Google Sites はJotSpot のリファクタリングとして 2007 年 2 月にリリースされましたが、[ 4 ] [ 5 ] [ 6 ] [ 7 ] JotLive のようなマルチユーザーリアルタイム機能は備えていません。Synchroedit (リッチテキスト) と MobWrite (プレーンテキスト) プロジェクトは、リアルタイムのブラウザベースの共同編集のギャップを埋めるための、より最近のオープンソースの試みですが、特に大規模なアーキテクチャでは、真のリアルタイム性能を実現することはまだできていません。
2009年、Googleは、電子メールやインスタントメッセージングに取って代わることを期待していたリアルタイムコラボレーション環境であるGoogle Waveのベータテストを開始しました。EtherPadはGoogleに買収され、EtherPadチームはWaveプロジェクト内で作業することになりました。しかし、Googleは2010年8月にブログ[ 8 ]で、ユーザーの採用が不十分だったため、Waveをスタンドアロンプロジェクトとして開発することを中止すると発表しました。Googleが2009年12月に放棄されたEtherPadのソースコードをオープンソースとして公開した後、コミュニティが開発を引き継ぎ、Etherpad liteという完全な書き直しを作成しました。これは完全にJavaScriptで書かれ、 Node.jsの上に構築されています。運用変換技術に基づくもう1つの注目すべきツールはCKEditorです。[ 9 ] 2020年にはこの概念への関心が急増しており、Microsoftも最近、OTやCRDTではなく、新しいTotal Order Broadcastテクノロジーに依存するFluid Frameworkをリリースしました。 [ 10 ] Fluidは現在フレームワークに依存しません。マイクロソフトは、まだ実運用には適していないと述べている。[ 11 ]
2016 年 6 月、Collabora Productivity は、 LibreOfficeテクノロジーを使用したオープンソースのオンライン オフィス スイートであるCollabora Onlineの V1.0 をリリースしました。数行のコードで任意の Web サイトに統合できます。Node.js 、PHP、Python、ReactJS 、 .NETなど複数の言語のサンプル統合コードを含むソフトウェア開発キットが存在し、これらのAPI仕様により、カスタマイズ可能なユーザー インターフェイスとの相互運用可能な統合が可能です。[ 12 ] [ 13 ] [ 14 ] Collabora Online では、ドキュメントはサーバー上に残り、各ユーザーが同じドキュメントを同時に共有するため、他のユーザーの入力を見るための余分な遅延なしに、1 つのドキュメントのみをインタラクティブに編集できます。テキスト ドキュメントの段落をロックする必要がなくなります。ワード プロセス ドキュメント、スプレッドシート、プレゼンテーション、描画、ベクター グラフィックスのリアルタイムでの共同編集が可能になります。
リアルタイムの共同編集は、Microsoft Office on the web (旧Office Online )などのWeb アプリケーションでオンラインで行うことができます。これは、 Office.com、OneDrive、SharePointクラウド ストレージに保存されているWord文書、Excelスプレッドシート、 PowerPoint、その他のMicrosoft Office文書のオンライン ( Web ベース) 同時編集 ( Microsoftでは「共同編集」と呼んでいます)をサポートしています。また、Google ドキュメントやその他のGoogle Workspace生産性 (オフィス スイート)アプリでは、Google Driveに保存されているワード プロセッシング文書やその他の文書のオンライン共同編集が可能です。リアルタイムの共同編集は、Power Sheet BI for Excel [ 15 ]のようにハイブリッドな方法でも行うことができます。これは、デスクトップ ソフトウェアでのオフライン、Web ベース、オンラインの共同編集、およびバージョン履歴への即時アクセスを備えた Web ベースおよびモバイル アプリで自動的に同期できます。 2020年には、特にビジネスユースケースにおいて、これらのアプリケーションをセキュアなウェブアプリケーションに組み込むことへの関心が再び高まり、MicrosoftとVaadinがリアルタイム同期データ共有の複雑さを処理する専用のリアルタイムコラボレーションバックエンドでリードしており、開発者はAPIを通じてこれを利用できます。[ 16 ] [ 17 ] Mozillaは2013年にJavaScriptライブラリTogetherJSをリリースしました。これはメッセージングシステムとオプションでフォーム同期のための運用変換アルゴリズムを介して、あらゆるウェブアプリケーションにリアルタイムの共同編集機能を追加します。[ 18 ]
VaadinプラットフォームのベンダーであるVaadin Ltd.は、2020年10月にコラボレーションエンジンのV1.0をリリースしました[ 19 ]。これは、開発者が数行のコードを使用して、Javaバックエンドを持つあらゆるWebアプリケーションにリアルタイムのコラボレーションおよび編集機能を迅速に構築できるようにすることを前提としています(特定のユースケースについては、まだ限定的な高レベルAPIを介して)。[ 20 ]この機能は現在Javaをサポートしていますが、ベンダーは、Vaadinプラットフォームが今後予定されているFusionフレームワークを通じてTypeScriptベースのUI構築も可能にするという最近の継続的な拡張に沿って、TypeScriptベースのAPIも近日中にリリースされる予定であると述べています。[ 21 ] [ 22 ]
リアルタイムの共同編集ソリューションの複雑さは、通信遅延に起因します。理論的には、通信が瞬時に行われるのであれば、リアルタイムの共同編集エディタの作成は、シングルユーザーエディタの作成と比べてそれほど難しくはありません。なぜなら、ドキュメントは次のようなアルゴリズムを使用して編集できるからです。
しかし、通信速度はネットワーク遅延によって制限されます。これは根本的なジレンマを生み出します。ユーザーは自分の編集内容を文書に即座に反映させたいと考えていますが、即座に反映させると、通信遅延のために、編集内容を文書の異なるバージョンに挿入せざるを得なくなります。
この問題を説明する例を挙げましょう。ボブとアリスが「Mary」という単語を含む文書から始めたとします。ボブは「M」を削除し、「H」を挿入して「Hary」に変更します。アリスは、ボブからの編集を受け取る前に、「r」を削除し、「a」を削除して「My」に変更します。すると、ボブとアリスは、それぞれ自分のコンピューターには存在しなかったバージョンの文書に適用された編集を受け取ることになります。
したがって、リアルタイムの共同編集における課題は、ローカルには存在しなかったバージョンの文書で作成された、リモートユーザーによる編集内容を正確に適用する方法を見つけることであり、それらの編集内容はユーザー自身のローカルでの編集内容と競合する可能性がある。
最も高度なソリューションは、サーバーを必要とせず、ロックも使用せず(すべてのユーザーが同時にドキュメントのすべての部分を自由に編集できる)、ユーザー数に制限なく対応できる(コンピュータのリソースによってのみ制限される)方法でこの問題を解決します。UNAとSubEthaEditは、このアプローチを採用している2つのプログラムの例です。
これらの高度なアプローチは最高のユーザーエクスペリエンスを実現しますが、基本的なコラボレーションエディタはクライアント/サーバーモデルでも作成できます。クライアント/サーバーシナリオでは、ドキュメントが開かれると、エディタインスタンスの1つがコラボレーションサーバーの役割を割り当てられます。このサーバーは、ネットワーク遅延を検出し、時刻同期サーバーとして機能することで、他のエディタが同期状態を維持することを保証します。サーバーは、他のユーザーがドキュメントに加えた変更のタイムスタンプ付き通知を受け取ります。サーバーは、これらの変更がローカルコピーにどのように影響するかを判断し、変更内容をコラボレーションプールにブロードキャストします。一部のモデルでは、変更がローカルで行われた場合でも、サーバーから正式な応答が返されるまで、クライアントには変更が反映されません。
このアプローチは、処理能力は著しく劣るものの、比較的低コストで基本的な共同作業を可能にする。そのため、処理リソースが限られている状況では好ましい。NetSketchはこのモデルを採用したプログラムの一例である。
過去には、マイクロソフトとIBMは既存のアーキテクチャにコラボレーション機能を追加する取り組みを行ってきました。[ 23 ] リアルタイムコラボレーションとして宣伝されているものの、これらの「ワークスペース」アプローチでは、ドキュメントのロック(一度に1人しか編集できないようにする)または競合する変更の「調整」が必要となり、一般的にユーザーからは不十分であると認識されています。