リモートから作業中のセッションに接続し、共同作業してもらう方法


リモートから同じセッションに接続することにより、ペアコーディングやインフラ作業などの共同作業が捗ります。席を移動したりする手間とか、使い慣れないキーボードの操作ともおさらばです。

wemuxを活用し、単一コンソールの複数人操作を実現します。例えば、誰かが文字を打ちこめば、もう一方のコンソールでも同じように表示されますし、逆向きも同様といった感じです。お互いに声をかけあって作業しないと、しっちゃかめっちゃかになります(笑)。
操作自体は、普段のコンソール作業と何ら変わりありません(tmuxのキーバインドが有効です)。

wemux
https://github.com/zolrath/wemux

リモートからの作業用アカウント作成

システム環境設定 - ユーザとグループ

の画面より、新しくwemux-guestなどリモートユーザを作ります。

次に、wemux-guestでログインしなおしたあと、

システム環境設定 - 共有 

の画面より、リモートログインにチェックを付けます。これにより、外部からのssh接続が可能となります。

wemuxをインストール

$ brew install https://github.com/downloads/zolrath/wemux/wemux.rb

$ wemux conf
host_list=(hoge)

hogeさん(ホスト)のマシンでfugaさん(リモート)に共同作業してもらう

hogeさんの作業

hoge $ wemux
(wemuxのセッションに移行します)

fugaさんの作業

hogeさんマシンのIPやwemux-guestのパスワードは予め教えてもらっておきます。

fuga $ ssh [email protected]

wemux-guest $ wemux attach
(wemuxのセッションに移行します)

hoge $ 

これで共同作業を行うことが出来ます。何か文字を打ってみてください。相手の画面上にも表示されているはずです。

作業を終えたとき

tmux同様 "Ctrl+b d" して、自らデタッチしてもらうか、wemux外のセッションにおいて、

hoge $ wemux kick wemux-guest

で追い出すことも出来ます。
使い終わったあとは、適宜wemux-userのリモートログインを不可するとか、パスワード変更しておいてください。

おわり

今回は、自分の作業マシンでの共同作業を想定しましたが、お互いがログイン可能なサーバー上での利用の方が、より一般的かと思います。他にも、色々と使い方を工夫してみて頂けると幸いです!