食わず嫌いはよくない

よくエンジニアの成長を止めるものに、新規技術についていくのが面倒になる、と言うのがありますよね。ボクももともとアクティブな人間ではないので、最新のガジェットにはついていけておらず、半導体屋に勤めているにも関わらず、最新技術にフォローできていない、と思っています。

食わず嫌いだったもの

ボクは、昔っから食わず嫌いが多かったです。その最たるモノが納豆です(これは今でも食べれません)。その他にもなすび(今は好き)や刺身なんかがあります。

そして、日々の開発で食わず嫌いだったものは、

の二つです。

最近、効率化を目指せば目指すほど、上記の二つのツールの適用が必須と思えてきましたので、意を決して使ってみました。

今回は、そのうちのtmuxの話です。

何に使うの?

正直、ここがよくわかっていませんでした。と言うのも、本職では、Exceed on Demandと言う商用のXクライアントを使っており、これがSuspend, Resumeの機能を持っていたので、GNU Screenを使う必然性を特に感じることができませんでした。

とは言いつつ、Geekな皆さんはScreen/tmuxをバリバリ使いこなしているので、私は指を加えて羨望の眼差しで見ておりました。

tmuxにした理由

GNU Screenでもいいのですが、
http://d.hatena.ne.jp/tmatsuu/20090709/1247150771
この記事を参考にtmuxにしました。

インストール

Macは非常に簡単。

sudo port install tmux

とするだけ。Linuxでも簡単だと思うのですが、私のサーバーの環境だとパッケージ管理ツールが使えなかったので、ソースからビルドすることに。
ソースは、
http://tmux.sourceforge.net/
からダウソします。

そして、おもむろに、

% ./configure
Configured for Linux

えっ、それだけ? って感じw

一応、これでconfig.mkファイルとかができるらしいので、環境依存なところは、このファイルに書くか、Makefileに直書きすればよさげです。
(私はMakefileを直に編集しました)

あとは、お決まりのmake; make installでおkです。

どう使っているの?

tmuxはローカルでしょぼしょぼ使っていても効果は半減です。もちろん、たくさんのTerminalを立ち上げる必要がなく、一つの画面だけで操作できるので、それなりに便利ですが、やはりServerと組み合わせて使うものでしょう。

ちなみに、私のtmuxの画面はこんな感じです。

なにも味気ないのが恐縮ですが、緑の帯がローカルマシンのtmuxで、青の帯がサーバーマシンで起動したtmuxになります。

キーバインドは、ローカル側がC-t, サーバー側がC-qを使用しています。

何が便利?

一日はどのように過ごしているでしょうか?

私の場合、

朝: 出社

前日から流しているジョブの状況を確認するため、一番にターミナルに移動。ローカルのターミナル/tmuxはずっと立ち上げっぱなしなので、サーバーにsshでログインして、

% tmux attach-session -t 0

として、前日からのセッションを立ち上げるだけで、仕事の続きができます。

これは便利です。何が便利って、前日帰るときに、明示的にdetachしていなくても無問題だからです。逆に、もしローカル側のターミナルをcloseするだけで、リモートのセッションも死んでしまうようだったら、tmuxに何のメリットも感じなかったでしょう。まさに、いちいちdetachするのがめんどくさがりな私に合ってます。

昼: 仕事

さて、昼間は当然仕事をしています。全てをリモート環境で仕事出来れば良いのですが、私の場合、プログラム環境はローカルの方が自由にいじれるので、開発はローカルでやっています。VCSにはgitを使っています。

コードがコンパイル出来るようになれば、

% git commit
% git push origin TRY-HOGE

として、トピックブランチをサーバーに転送して、サーバー側で、

% git pull
% git branch TRY-HOGE origin/TRY-HOGE
% git checkout TRY-HOGE

とするだけで、ローカルとサーバーで同じ環境の出来上がり。

後は、サーバー上でテストを実行するだけです。もちろんここでも、tmuxが大活躍しています。なにせ、tmuxのおかげで、windowを行ったり来たりせず、一つの画面でできるわけですからね。

夜: 帰宅

ここでは何も考えずに、Macをバタンと閉じます。これだけで、サーバー側のtmuxは自動的にdetachされます。勝手に死んだりすることはありません。

今後使っていきたい機能

まだまだ使いこなせていないと感じています。特に、通知機能を使いこなせれば、遊んでいる時でもtmuxから通知を受け取って、すぐに仕事に復帰したりすることが可能でしょう。今後、使っていきたいですね。

最後に

エンジニアの皆さん、やはり技術の食わず嫌いはよくないです。Geekの皆さんが使っているのにはわけがあります。100%使いこなせなくて、10%使いこなすだけでも、効率アップが図れるでしょう。そしてあいた時間で家族との時間を持ったり、勉強だったりをして、自らをブラッシュアップしないといけませんね。