TRAMP で楽々リモート開発

suzukiEmacs

はじめまして、社内唯一の Emacs 派の suzuki です。

社内ではなかなか広まらないので、社外にアピールしつつ社内での利用者を増やそうという魂胆でこの記事を書いてみます。

さて、PHP などの Web アプリケーションを開発する場合、開発用に PC とサーバをそれぞれ用意することも多いかと思います。この場合、開発用 PC で PHP プログラムを編集し、テストする場合には開発用サーバへ PHP プログラムを転送して実行、というプロセスになると思います。

develop process 1
図1 : 開発プロセス1

面倒くさいのを解消することこそ開発者としての醍醐味(?)だと思っていますので、ここはなんとかしましょう。そこで、(やや強引ですが) Emacs の登場です!

最近の Emacs に標準で入っている TRAMP という機構を使うと、次のようにリモートにあるファイルを直接編集できるようになります。

develop process 2
図2 : 開発プロセス2

では、使い方です。

Emacs の標準では C-x C-f (Ctrl キーを押しながら x キー、続いて Ctrl キーを押しながら f キー)を押す事により、ファイルを読み込みます。ホームディレクトリにある hoge.php というファイルを読み込むなら、このように入力します。

図3 : Emacs でローカルファイルの編集
図3 : Emacs でローカルファイルの編集

TRAMP を使って、リモートファイルの編集を行いたい場合は、先ほどの hoge.php の代わりに次のように入力します。

図4 : Emacs でリモートファイルの編集
図4 : Emacs でリモートファイルの編集

画像を見て分かると思いますが、読み込みを指示するファイル名部分を次のように指定してやるだけで、リモートファイルを読み出せます。

 /[ユーザ名]@[リモートホスト名]:/path/to/file

最初の / (スラッシュ)がミソで、これを指定してやると自動的に TRAMP を利用したファイル読み出しモードになります。

これだけで、ファイルがローカルにあるのかリモートにあるのか、あまり意識をせずに編集する事が可能です。さらにリモートサーバ上のファイル名の補完や Dired による一覧表示などもできてしまいます。

内部的には ssh で接続(別の方式に変更も可能)しますので、接続の都度パスフレーズやパスワードの入力を求められたりします。危険度を認識した上でパスフレーズなしの公開鍵認証を使ってやると、その辺りからも解放されます。

なお、いくら便利だからといって、この方法で本番サーバのファイルを直接変更するのは避けましょう。

図5 開発プロセス3
図5 開発プロセス3

まぁ、普通はしませんよね?(笑)

suzukiEmacs

Posted by suzuki