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にはこんなこともできるぞと、自慢できる一品でした。