ページ

2012-11-27

私の異常な開発環境 または私は如何にして心配するのを止めてドールを愛するようになったか


この前の3連休の2日目に12時間ぐらい使って開発環境を整えてました。

何やったの?

.vimrcとか.zshrcの設定が色々な所からのコピペで崩壊しそうだったので、思い切って一新しました。

とは言っても、githubとかに載っている綺麗な設定をそのままコピってきただけです。

はよ画像

一新後の作業環境の画像は下の方にあります。
ご納得のゆくまで御覧下さい。

.なんとかってなんだよ

.vimrcはvimっていう僕が使っているテキストエディタの設定ファイルです。
エディタはいつもvimとemacsで戦争になるのですが、僕はvimしか使ったことがないのでvim派です。

.zshrcってのはzshっていう神が創造なされた究極のツールの設定ファイルです。

どんなふうにしたのよ?

.vimrcはyuroyoroさんっていう人が公開している設定ファイルをそのまま頂戴しました。
なんかすごく高機能になってて凄いのですが、ちょっと起動が重いので後で再び改造して少し軽量化したいです。

.zshrcは色々設定するのが面倒なのでoh-my-zshっていうzshの設定のためのFrameworkを使っています。

これをベースに色々弄るのがよさそうなのでそうしました。

.vimrcもneobundle.vimっていうプラグインのパッケージマネージャ使ってるし、管理するツールを一枚かぶせて使うといい感じになりそうですね。

そもそも開発環境どうなってんのよ?

開発は基本的にmac book airでのターミナルでやります。
ターミナルはiTerm2ってのを使ってます。
(ターミナルで出来ない開発はEclipseとかXCodeとか色々使います)

Linuxのサーバで開発することも多いので、macでもLinuxでも同じ設定で作業できるように色々な設定ファイルはdotfilesという形でgithubにおいてあります。
gitでcloneしてセットアップ用のスクリプトを動かせばすぐに環境が作れます。

あと、作業中はターミナルそのままではなくtmuxっていうターミナルマルチプレクサを使っています。

これがあればターミナル分割できるし、セッションっていう形で作業環境が保持されるので突然sshが切れても大丈夫です。

broken pipeが怖くないです。

具体的には?

具体的にどのように開発しているのかシチュエーション別で紹介してみたいと思います。

macのローカルで作業する場合

iTerm2起動して、tmuxにアタッチして色々作業。
アタッチっていうのはtmuxの作業環境を復元することを言います。作業環境がセッションとして保持されているので、それに再接続っていう感じです。


macからsshでLinuxサーバに作業する場合

iTrem2を起動して新しいタブを作ります。
で、そのタブでsshして接続先のサーバに入ります。この時、ローカルではtmuxは立ち上げません。
sshで接続後、接続先のサーバ内でtmuxを立ち上げます。
これで、突然切断されてもLinuxでの作業環境が保持されます。

ローカルでtmuxを起動して、sshでサーバに接続してその中で更にtmuxを起動するとtmuxが入れ子になってカオスになるので、こんな風に運用しています。

で、ひとつ問題が発生しました。


なによ?

ローカルの環境(mac)でも、リモートの環境(サーバ)でも同じ環境を構築できるようにしたが為に、今どっちで作業しているのか分かり難くなりました。

ちゃんとプロンプト見たりtmuxのステータスバー見れば分かるのですが、調子に乗ってサクサクっと作業していると良く分かんなくなることがあります。

どうしたのよ?

ってことで色々考えた結果、iTem2の背景画像が変えられることを利用して、ローカルの作業環境とリモートの作業環境で背景画像を変えるようにしました。

サーバの数が増えるともれなく死にそうです。

iTrem2の設定画面からローカル用とリモート用のプロファイルを作ってタブを作るときに指定するようにしています。

本当は接続先を見極めて自動的に切り替えたりしたいのですが、うまい方法が見つからなかったので諦めました(背景色なら変えられるそうです)。

まぁタブを作るのは、最初にiTerm2を起動した時ぐらいなので、そんなに負担にはならないと思います。

で、下の画像が現在の開発環境です。


こっちはローカル


こっちがリモート


タブを作るときはメニューのProfilesからプロファイルを選んで一発です。


この背景にしてから開発中のストレスが急激に低減されました。良いと思います。

0 件のコメント:

コメントを投稿