wiki:DualPy

文字端末共有ツール

ふと見ると、dual.pyっていうツールを書いてからちょうど1年だった! 今見ると、やっぱりちょっとつたない感じがします。字づらとか、モジュールの使い方とか。 いや、このコードに限らず、自分が以前に書いたコードって見たくないですよね。割と。

さて、これは何をするツールかという説明を書こうと思って早1年。 1年間あたためた成果なぞありませんが、少しは説明を書いておきましょう。

これは、2名で1つの文字端末画面を操作するツールです。

ウィンドウズのリモートアシスタンスの、文字端末版だと思って間違いではありません。 離れた場所、あるいは離れた机にいる2名で、ひとつのコマンドラインシェルを共有して操作することができます。 viemacsなどのエディタを一緒に操作することができます。 あとはSkypeでもあれば、遠隔地でペアプログラミングができるかもしれない。

教育に役に立つかもしれません。シェルやエディタの使い方って、人によってかなり違います。 人の操作を間近に見るのはいい勉強になります。viの「0 ^D」や「3 d f /」とか意味がわからない人も多いみたい。

インストール

特別なことは何もありません。 このあたりからソースを落として、適当な場所に置いてください。 めんどくさければ、とりあえずカレントディレクトリとか、個人のbinとかに置けばいいでしょう。 ファイルのモードは0555あたりにしておいてください。

使い方

前提条件として、2名とも同じサーバにログインしていることが必要です。 原理的にはネットワークを介して接続することも可能なのですが、セキュリティ上のリスクが面倒なことになるので、あえて制限しています。

実用的には、2名は同じ種類の文字端末を使用してください。 さもないと、エディタなどの表示がぐちゃぐちゃになるでしょう。

シェルは、2名のうち一方の権限で動作します。 そのため、シェルを貸し出す側(使わせる側)、シェルを借りる側(使う側)の区別があります。

まず、シェルを貸し出す側が操作します。

dual.py」を起動します。

A% dual.py 
*** Waiting on port 36461

ポート番号が表示されるので、この番号を相手に伝えてください。 伝える方法は特に用意してありませんので、メッセンジャーやSkypeや電話などでどうぞ。 気が変わった場合は、相手と接続される前なら^Cで止めてください。

次に、シェルを借りる側が操作します。

相手からポート番号を聞いて、この番号を指定して「dual.py -c ポート番号」というふうに起動します。

B% dual.py -c 36461

これで2名の画面が接続され、貸し出す側の人のシェルが起動されます。 2名のどちらも同じようにキーボード入力できるし、同じ内容が表示されます。 入力は単純に混ざるので、エディタでけんかしないようにしてください。

xterm

画面の大きさが異なると、特にエディタ等で画面の表示が崩れることがあります。 2名ともが端末としてxtermを使用している場合は、画面の大きさ(文字端末の行数とカラム数)を2名のうち小さい方に合わせるようにしています。動作中でも、片方で画面の大きさを変更すると、他方が自動的に変更されます。見ていると、ちょっとおもしろいですよ。 これには、xterm独特のエスケープシーケンスを使用しています。

xtermでなくても、このエスケープシーケンスをサポートしていることがあります。 その場合には、dual.pyのコマンド引数に-xを追加するか、DUALPYXTERMという環境変数をセットしておけば、xtermじゃなくてもxtermだと思いこんで動作します。

終わり方

dual.pyによって起動されたシェルを抜ければ、接続が切れます。 もちろん、どちらの人でも「シェルを抜ける操作」ができるので、どちらの人からも終わることができます。

(2007/4/17 sgk)