[emacs] Emacs LispでWebAppの開発に必要なN個のこと

求められている気がしたので、EmacsLispについて知っていることを書いておこうと思った。

パッケージマネージャ

Cask を使うのが今風。先日CartonというPerlのパッケージマネージャと名前がかぶっていたので、改名された。

ちなみに、普段使いであれば、Emacs24.xから標準で入っているpackage.elを使うか、el-getを使う。

アプリケーションサーバ

イベントドリブンなElnodeと、httpd.elをpure Emacsで書きなおした simple-httpd.el がある。

他にもElservもあるが入手困難。

リクエストパラメータの処理

Elnodeであれば、elnode-http-param関数からassoc listで取れる。
simple-httpd.elは、得意の正規表現で頑張る。

ルーティング

Elnodeであれば、elnode-hostpath-dispatcherというよく見るようなディスパッチャーがある。
それ以外はちょっとよくわかりません。

データベース

強引にCLI経由でアクセスする mysql.el と、TCPで頑張ってドライバを書いた pg.el がある。

NoSQLなMongoDBもpure Emacsでアクセスできる。

拙作の edbi.el を使えば、Perl DBI でアクセスできるものなら大抵のDBにアクセスできそう。

ORMのようなものは、今のところ見たこと無い。

ビューのレンダリング

そもそもEmacsなのでテキスト処理は得意なはず。orgmodeの機能を使って変換するのもいいかもしれない。

Mustacheという標準的テンプレート形式のテンプレートエンジンや、PerlのText::MicroTemplate的なものがある。(2013/09/11 追記。kitokitokiさんブコメより)

JSONであればjson.elがあるが多少遅いので、LispらしくprincしてS式で返すのが速い。

HTTPクライアント

標準のurl.elがあるが、@tkfさんのrequest.elが使いやすくておすすめ。

テストフレームワーク

標準で ert というフレームワークがあるので、Emacs24時代はこれを使うのが普通みたい。

Ecukes という、 Cucumber 的な振る舞い記述式のテストフレームワークがある。
GUIの操作を記述してテストする場合は、こちらを使うと大変便利。

Caskと組み合わせてgithubとTravis-CIでテストを回すのがクール。

アプリケーションフレームワーク

すみません。ちょっとよくわかりません。
エディタの上で動くMVCフレームワークであれば、今 Widget MVC というものを作っていますが、多分求められているものと違う気がします。


以上。