GitHubは2017年11月15日（米国時間）、オープンソースエディタ「Atom」でチームメンバーと手軽にコードを共有し、リアルタイムに共同編集できるパッケージ「Teletype for Atom」のβ版をリリースした。

Teletype for Atomを使えば、チームメンバーのリモートで行われるキー操作が自分のAtom画面に直接反映される。Atomで開ける任意のファイルを共有し、衝突なく、低レイテンシで共同編集が行えるという。

Teletype for Atomを使う

Teletype for Atomを利用するには、Atom 1.22以降が必要だ。インストールは、Atomの「Settings（設定）」ビューからか、コマンドラインで「apm install teletype」と入力して行う。インストール後、ステータスバー上の新しいコラボレーションメニューから、ローカルワークスペースに「ポータル」を開くことができるようになる。ポータルを開いたユーザーは、そのポータルのホストとなる。

次に、ホストはポータルの「ポータルID」をお好みのチャットサービスでチームメンバーに知らせる。

チームメンバーは、コラボレーションメニューから「Join a portal」をクリック。ポータルIDをフィールドに入力して「Join」をクリックすることでポータルにゲストとして参加できる。

ポータルに参加すると、ゲストのワークスペースに新しいタブが表示される。そのタブにホストのコード内容が表示され、共同編集ができる。ポータル参加者は、全員が「カーソル」を持ち、同時にタイプできる。共有はピクセルレベルではなく、キー操作レベルで行われるため、参加者はそれぞれのカスタムキーバインド、パッケージ、テーマを保持できる。

ホストがポータルを共有しても、コードはローカルディスクに保存される。ホストがファイルを切り替えると、アクティブなタブの内容がゲストに送信され、ゲストはホストの作業についていくことが可能だ。

実装の詳細

衝突が発生しない共同編集

Teletype for Atomは、ポータル参加者による共同編集で衝突が発生しないように、「CRDT（Conflict-free Replicated Data Types）」の理論的枠組みに基づいて設計されている。CRDTは基本的に、データが複数の操作で更新される場合に、それらの操作が異なる順序で適用されても、常に同じ表現となるデータ構造を指す。

ピア接続

Teletype for Atomでは、共同編集者同士の接続に「WebRTC」チャンネルが採用されている。接続メタデータを交換する最初のハンドシェイクは、GitHubのサーバで行われるが、その後は全てのデータが暗号化されたピアツーピア接続でやりとりされる。これによってプライバシーが最大化され、レイテンシが最小化されるという。

エディタ非依存のクライアントライブラリ

Teletype for Atomは、ユーザーインタフェースコンポーネントやAtom固有の統合コードを実装している。そのロジックの大部分は、「teletype-client」というエディタ非依存のライブラリに含まれている。teletype-clientはWebベースアプリケーションなどにも統合できるという。

今後の方向

Teletype for Atomの長期的ビジョンには、異なるテキストエディタ間での共有サポートが含まれている。また将来的には、音声アプリケーションとの組み合わせや、Atom以外のアプリケーションとの画面共有も目指しているとしている。