GitHubが「Teletype for Atom」リリース。開発者向けエディタ「Atom」でも、複数プログラマが同時にコード編集可能

2017年11月20日

GitHubは、オープンソースで公開している開発者向けのエディタ「Atom」で複数のプログラマがリモートでコードの編集を行える追加機能「Teletype for Atom」のベータ版をリリースしました

Teletype for Atom

Teletype for AtomをインストールしたAtomでは、Portal(ポータル)と呼ばれる機能が利用できるようになります。自分のAtomをポータルにすることで、ほかのプログラマを自分のAtomエディタに招待できるようになり、複数のプログラマで同一のコードが編集可能になります。

複数のプログラマが自分のエディタから同時にコードを編集可能

以下は公開されたデモ動画から、「Teletype for Atom」の動作を紹介しましょう。

Atomエディタ右下のポータルボタンをクリック。ID番号が生成されます。

Teletype for Atom fig1

Slackやメールなど任意のコミュニケーションツールでID番号を招待者に通知します。

招待されたプログラマは、自分のAtomエディタのTeletype for AtomにID番号を入力することで、ポータルに参加できます。

Teletype for Atom fig2

共有操作が始まると、エディタ画面には参加人数分のカーソルが表示されます。下記ではカーソルが2つ表示され(ピンクの下線を引いた場所)、同時にコードが編集されています。

Teletype for Atom fig3

それぞれのユーザーは、自分のAtomエディタの環境そのままでポータルとなったAtomエディタ上のコードに対して編集ができます。そのため、上のユーザーは白い画面、下のユーザーが黒い画面で、それぞれ同一のコードを編集しているわけです。

Teletype for Atom fig4

Atomエディタ間の通信はPtoPのWebRTCを採用

Teletype for Atomでは、Atomエディタ間の通信にWebRTCを採用しています。

WebRTCはW3Cによって標準化が進められているWeb標準の技術で、Webブラウザ間でリアルタイムにコミュニケーションを行うための仕組みを実現しようとしています。

WebRTCは音声や動画などを扱えるため、Webブラウザ上でテレビ電話のような実装も可能ですが、Teletype for AtomではこのWebRTCのデータチャネルを用いてAtomエディタ間で相互にエディタ操作データをやりとりしています。

また、WebRTCではWebブラウザ同士がPtoPの仕組みでサーバを介さず直接データをやりとりできるようになっています。

Teletype for Atomでもこの機能を用い、Atomエディタ相互の通信を開始するフェーズのみサーバを用い、エディタ操作の情報のやりとりはAtomエディタ同士がPtoPで直接通信を行っています。

Teletype for Atom fig5

そのため、例えばサーバを運営しているGitHubによってエディタ操作の情報が記録される、といった心配がありません。

コンフリクトをどう避けているのか?

複数のプログラマが同一のコードを同時に編集する場合、例えば同時にコードの同じ場所を変更するような、お互いに競合するような操作をする可能性があります。このような操作に対して、Teletype for Atomはどうふるまうのでしょうか?

GitHubの説明によると、Teletype for Atomではコンフリクトを避けるためのデータ構造「Conflict-free Replicated Data Types」(CRDT)およびそれに対応したフレームワークの実装を採用することで、全体として競合が発生するような状態を回避していると説明されています。

GitHubはこのCRDTの実装をteletype-crdtとして公開しています。

Teletype for Atomは現在ベータ版として公開されており、すぐに使い始めることができます。

ちょうどマイクロソフトもVisual StudioやVisual Studio Codeで編集作業を共有できる「Visual Studio Live Share」を発表したところです。今後、コードエディタでのコラボレーションは、開発ツールにおいて標準的な機能になっていくのでしょうか。

参考

あわせて読みたい

プログラミング言語 GitHub




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本