食わず嫌いはよくない
よくエンジニアの成長を止めるものに、新規技術についていくのが面倒になる、と言うのがありますよね。ボクももともとアクティブな人間ではないので、最新のガジェットにはついていけておらず、半導体屋に勤めているにも関わらず、最新技術にフォローできていない、と思っています。
食わず嫌いだったもの
ボクは、昔っから食わず嫌いが多かったです。その最たるモノが納豆です(これは今でも食べれません)。その他にもなすび(今は好き)や刺身なんかがあります。
そして、日々の開発で食わず嫌いだったものは、
- GNU Screen or tmux
- vim
の二つです。
最近、効率化を目指せば目指すほど、上記の二つのツールの適用が必須と思えてきましたので、意を決して使ってみました。
今回は、そのうちの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%使いこなすだけでも、効率アップが図れるでしょう。そしてあいた時間で家族との時間を持ったり、勉強だったりをして、自らをブラッシュアップしないといけませんね。