GNU screenが手放せない件について

こまつ みつのり(Mitsunori Komatsu) 2007-09-18 22:43:28

GNU screenというツールがあります。具体的な説明はWikipediagoogle検索結果を見て頂きたいのですが、イメージとては「タブ切り替え型のWebブラウザーのように、一つのtelnetクライアントアプリケーションのウィンドウ内で複数のtelnet操作ができるもの」が近いかと思います(本エントリーではtelnetを例に挙げていますが、sshも同様と考えて下さい)。

私も最近、GNU screenを使用していますが、日常の開発作業で手放せなくなってきました。これを使用することで享受できるメリットについて簡単に説明します。

1. telnetクライアントを複数立ち上げなくて良い。

一つのtelnetクライアント(Tera TermやPutty、Poderosaなど)を立ち上げるだけで、複数のtelnet操作がscreen上で可能になります。気分的に、沢山のtelnetクライアントアプリが立ち上がっているとどんどんテンションが下がってきますが、screenを使うと気分すっきり&やる気満々です。

2. telnetクライアント画面のコピペがキーボードで可能に。

これまで、telnetクライアント画面同士のコピペは、マウスで選択(コピー)して右クリックでペースト、といった操作を行っていたため手がキーボードとマウスを彷徨っていました。特にコピペしようとしたけれど途中で思い直すケースでは右手が必要以上にヒラヒラ舞っていて、すこし恥ずかしくなってしまいます。開発作業中の赤面はできるだけ避けたいものです。screenを使う場合、telnetクライアント内の各画面同士のコピペはキーボードで行いますのでマウスは使用しません。個人的にはできるだけキーボードから手を離したくない派なので、これだけでもscreenを使う恩恵を受けています。

3. 作業の中断と再開が可能に。

screenにはattachとdetachという操作があります。screen上での作業を中断する場合、detach操作を行いscreen上の作業から離れることができます。あくまで「切り離し(detach)」であって「終了」ではありません。重要なのは、detachしてもそれまで起動してたプログラムはそのままscreen上で動作し続ける、ということです。そしてattach操作によって切り離したscreen上の作業を「取り付け(attach)」することができます。したがって、screen上で作業をしていた場合、帰宅する際にdetachしてからtelnetクライアントを落とし、次の日telnetクライアントを立ち上げattachすることで前日に中断した作業状態から再開することができます。毎回、telnetクライアントを複数立ち上げ、一つ目はこのコードを表示しておいて、二つ目でテストを実施、三つ目でlogをtail -fする、というお気に入りのセットアップが不要になります。また、長い時間のかかるバッチ処理にも効果的です。

4. 複数のtelnetクライアントで一つのscreen上の作業にattach

3の応用になりますが、なんと一つのscreenセッションに複数attachを行うことが可能です。具体的には、Aさん、Bさん、Cさんが各自のWindowsマシンで開発している状況で、Aさんがトラブった場合、BさんとCさんはAさんのscreenセッションにattachし、Aさんと同じ画面を見たり操作したりしてフォローできるのです。これにより遠隔地での作業においても、技術的なサポートを行いやすくなります。また隣に移動しなくともペアプログラミングが可能となるので、ナビゲーターの地力が圧倒的に高い場合はドライバー:ナビゲーター=1:Nというペア群にできるのではないか?と妄想したりしています(まだ実際に試していませんが…)。

以上、「GNU screenというツールがあって、使いこなすととても便利」という話をしましたが、具体的な使い方についてはgoogle等で探してみてください。結構、著名なプログラマーが使っていたりしてアルファギークに数ミリ近づけられそうな気持ちになるかもしれません。

最後に一つ、「最初使いづらくても頑張って使ってみて」とアドバイスさせてください。慣れないうちは全然良さがわからないかもしれません。作業効率も気のせいか落ちているかもしれませんが、おそらく気のせいではありません。最初は落ちていると思います。そこをグッと我慢して使い続けてみてください。「なんでもっと早くGNU screenを使わなかったのだろう」と思える日がきっと来るはずです。

※このエントリはZDNetブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet編集部の見解・意向を示すものではありません。

SpecialPR