読者です 読者をやめる 読者になる 読者になる

BeepBeepのチュートリアルをやってみた(2)

Erlang

前エントリのBeepBeepチュートリアルの続きをやってみた。そして、挫折した。

Ajaxを使う」っていう前者の方は「まあ普通かな」という感じで、Erlangで普通っぽいWebアプリケーションを作れそうなところは関心したが、ちょっと複雑になった後者の「CouchDBとBeepBeepでブログを作る」っていう方は、厳しい。

何が厳しいというと、

  • プログラムにエラーがある時、何がエラーなのか全く分からない
  • Validation機構がない「Webフレームワーク」は使うのを遠慮したい

ということ。

Erlangはもともとエラーの原因が分かりにくい言語だけど、もう少しライブラリ・フレームワークの方でなんとかしてくれないと厳しい。普通にチュートリアルを写経したつもりなのに、ブラウザには"Internal Server Error"としか表示されないと萎える。

関数型言語でWebアプリケーションのロジック/ビューを書くというのは思ったほど悪くない、むしろ良いという印象を受けたけど、良いValidationライブラリがないとWebアプリケーションを作るのは難しい。

チュートリアルにある次のコードは、

handle_request("create",[]) -> 	
    Title = beepbeep_args:get_param("title", Env),
    Slug = beepbeep_args:get_param("slug", Env),
    Body = beepbeep_args:get_param("body", Env),
    case lists:member("", [Title, Slug, Body]) of
        true ->
            {render, "blog/create.html",[]};
        false ->
            bb_blog_utils:create_document(Title, Slug, Body),
            {redirect, lists:concat(["/blog/view/",Slug,"/"])}
    end.

PHPで言えば、

$title = $_REQUEST["title"];
$slug = $_REQUEST["slug"];
$body = $_REQUEST["body"];
if ($title && $slug && $body) {
  // 正常時の処理
} else {
  // エラー
}

くらいのレベルのコードだしなぁ。

"microframework"を名乗るくらいだから、Validationライブラリは外部ライブラリを使うか、あるいはアプリケーション作成者がゴリゴリValidationのコードを書くってことを想定しているのかもしれないけど。

MochiWebアプリケーションの例として多少参考になるから、もう少し研究してみるつもりだけど、BeepBeepで何か作るのは厳しい。