リモートのファイル編集は、しばらく scp が当たり前でした。
ただ、実務で扱うファイルが増えると、手順が少しずつ重くなってきました。
どれが最新か迷ったり、更新し忘れたり。
ここで「直接編集できれば、流れが止まらないのでは」と思ったのがきっかけです。
結論はシンプルで、EmacsのTRAMPを使うと作業のリズムが整いやすい、という体感でした。
1. 「TRAMP」という発想
「TRAMP」は、EmacsからSSH経由でリモートのファイルを開く仕組みです。
TRAMPは “Transparent Remote Access, Multiple Protocol(透過的なリモートアクセス自動切り替えプロトコル)” の略です1。
この「Multiple Protocol」というのは、 SSH、SCP、FTP、telnetなど様々な接続方法に対応しているからで、リモートファイルを意識せずローカルファイルのように扱える仕組みです。
ユーザーからすると、リモートのファイルも自分のパソコン上のファイルも同じように C-x C-f で開いて編集できる、という「透過性」がTRAMPの最大の特徴です。
難しそうに聞こえますが、やっていることは「リモートのパスを書いて開く」だけです。
実際に触ってみると「普通に編集できる」がそのまま通用します。
2. diredでリモートフォルダに入る手順
ここからが本題です。
diredでリモートのフォルダへ入る流れを、細かく分けて書きます。
C-x d で dired を開きます。
入力するパスは次の形です2。
/ssh:USER@HOST:~/
diredで開けたら、あとは普通にファイルを開いて保存するだけです。
リモートコンピュータのユーザーのホームに行きたいなら ~ を使うのがポイントです3。
私はここで混乱して、意図せず / を見てしまいました。
ちなみに、diredでは、キーのgを入力するとファイルリストが更新されます4。
3. 使ってみて良かった点
良かった点は、ざっくり言うと「作業が連続的になる」ことです5。
- 最新のファイル場所で迷わない
- コピーの往復がなく、差分管理が減る
- 編集と確認が一つの流れになる
たとえるなら、紙をコピーして持ち歩くのをやめて、机の上で直接書き込む感じです。
少しの違いですが、日々の実務だと効きます。
現状は「全部TRAMPに寄せる」ではなく、作業内容で使い分けています6。
- 軽い編集や確認はTRAMP
- 大量の操作や重い処理は端末で直接、またはscp、git
TRAMPは「scpの代替」というより、作業の流れを崩さない道具だと思っています。
- TRAMPは「Transparent Remote Access, Multiple Protocol」の略で、SSH以外にもscp、telnet、FTPなど複数のプロトコルに対応しています。 – TRAMP User Manual
- 非標準のSSHポート番号を使用する場合は、ホスト名の後に「#」でポート番号を指定できます(例:/ssh:USER@HOST#2222:~/)。 – Emacs Tramp でリモート上のファイルを直接編集する方法|Windowsにも対応
- ~/.ssh/configでホスト名のエイリアスを設定しておくと、/ssh:myserver:~/のように短く記述できます。 – Emacs でリモートホストのファイルを SSH 接続して直接編集
- TRAMPはdiredと統合されており、ローカルとリモートのファイル間でコピーや移動などの操作も可能です。 – Emacs TRAMP
- TRAMPは編集時にファイルを一時的にローカルに転送し、保存時にリモートに書き戻します。接続はキャッシュされるため、複数回の編集でも効率的に動作します。 – Quick Start Guide (TRAMP User Manual)
- TRAMPは地理的に遠い接続(国をまたぐVPN接続など)では待ち時間が長くなる傾向があります。そのような場合は直接SSHでログインする方が効率的です。 – emacs+tramp-modeでシームレスにリモートワークする