blogこの広告は、90日以上更新していないブログに表示しています。LISPディープラーニングなどの重い処理を含むプログラムを出先から開発したいというときがよくある。いうときまずやるのが、SSHでGPUを積んだ開発マシンにリモートログインしてターミナル上でEmacs/Vimで開発するというやり方だが、LTEで速くなったとはいえ入力の反映がもたつくことがよくあり、非常にストレスが溜まる。moshも使ってみたが大して差は感じられなかった。その他にもCtrlとMeta以外のモディファイアキーを使いたいなど、やっぱりGUI版のEmacsで開発したいと思うことがよくある。SLIMEはLisp処理系側で動くSwankと呼ばれるサーバと、それに接続するEmacs側フロントエンドの機能で構成されている。このサーバとクライアントの通信はローカルネットワークに限らないので、リモートからLisp処理系に接続することもできるのだ。知らないけど同じSwankクライアントであるslimv.vimやatom-slimeでも原理的にはできるはずである。SSHでSwankのポートをポートフォワーディングして開発マシンに接続するホストの設定は~/.ssh/configでしておく。開発マシンでSwankサーバを立ち上げる接続が切れても再開できるようにscreen上でLisp処理系を立ち上げる。4005)これでサーバの4005番をSSH経由でローカルの4005番に繋げられた。ポート番号は自由に設定できる。ポートフォワーディングしたローカルのポートに対してslime-connectする。localhost:4005に接続して開発マシンのREPLがローカルのEmacs上に現われる。この時、「ローカルのSLIMEとリモートのSwankサーバのバージョンが違うけど大丈夫?」というプロンプトが出ることがある。これが邪魔なときは.emacsに以下のように書いておく。'ignore)一連のコマンドをまとめるややこしいので2、3のコマンドで済むようにしておく。ローカルの~/.bashrcなどにエイリアスを書いておく。myhost'次に3.のSwankサーバを起動するLispコードをファイルに保存して開発マシンの~/swank-start.lispに置いておく。それから開発マシンの~/.bashrcなどに処理系を起動してSwank起動コードを読み込むためのエイリアスを書く。~/.bashrcを読むように書いておく。RETでREPLが立ち上がる。TRAMPを使ってリモートのファイルを弄るリモートのファイルを編集するにはEmacsに標準搭載されているTRAMPが使える。"/tmp")オートセーブの度にリモートと通信しようとしてEmacsが止まるので、オートセーブファイルはローカルの/tmpに保存するようにしておく。することによりリモートのファイルを開ける。magit-statusすると普通にmagitが使えるし、コミットもプッシュもできることに気付く。通信が発生するので多少待たされはする。まとめサーバ側でSwankサーバを立てておくことにより出先からEmacs+SLIMEでリモート開発できる出先のノートPCで重い処理を回してもCPU使用率が最低レベルなのでバッテリーも長持ちローカル/リモートに関わらずLisp式単位で開発マシンのREPLで評価できるリモートのファイルの編集はEmacsの機能TRAMPによりできるmagitもリモートでできるローカルのEmacsの編集機能がそのまま使えるためにキビキビ動く。低速回線でもストレスがない。月別アーカイブはてなブログをはじめよう!masatoiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。