EmacsがHTTPサーバーになる
simple-httpd.elは、Emacsを簡易HTTPサーバーとして動かすパッケージです。
このパッケージがおもしろいのは、HTTPサーバーがelispで実装されているため、Emacsでなければ実現できない摩訶不思議な機能ができるのです。
Emacasユーザーのおもちゃ、というと少し失礼ではあるけれど、静的なHTTPサーバーとして手軽に使えます。
基本
まずは静的なHTMLのサーバーとしての使いかたです。
M-x httpd-start
でサーバーを開始します。
M-x httpd-stop
でストップです。
カスタマイズ変数 httpd-root
で静的なファイルの置き場を指定します。 この変数を M-x customize-option
で変更すれば、サーバーを再起動しなくても、すぐに反映されます。
ポート番号は httpd-port
で初期値は8080になっています。
ブラウザで表示するには次のURLへアクセスします。(初期値) http://localhost:8080/
バッファがコンテンツになる
試しに次のコードをevalしてください。
(defservlet scratch text/plain ()
(insert-buffer-substring (get-buffer-create "*scratch*")))
ここで、 http://localhost:8080/scratch
にブラウザでアクセスすると、Emacsのscratchバッファがテキストで表示されます。
Emacs側でscratchバッファを変更してから、ブラウザをリロードすれば、変更が反映されます。
使い道としては、vi信者の友人に自慢するぐらいしか思い付かないけれど、たぶんものすごく可能性のある機能ですね。
CGIっぽいこともできる
次のコードをevalしてみてください。
(defun httpd/hello-world (proc path &rest args)
(with-httpd-buffer proc "text/html"
(insert "<h1>hello, " (file-name-nondirectory path) "</h1")))
次のURLへブラウザでアクセスすると、
http://localhost:8080/hello-world/Emacs
hello, Emacs
と表示されます。
URLの最後のパスが関数の関数として渡されます。
インストール
インストールには Emacsのパッケージ管理を使います。
パッケージのリポジトリにMELPAを指定しておいてから、 M-x package-install
を実行して、 simple-httpd
を入力してください。
以上、使い道はいまいちわかりませんが、Emacsにはこんなこともできるぞと、自慢できる一品でした。