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

ぱいぱいにっき

Pythonが好きすぎるけれど、今からPerlを好きになりますにっき

Nephia::Liteなる超マイクロなウェブフレームワークを書いた

どうも、のっかりのっかり、どうも、マコピーです。
最近弊社での影が薄くなっております。

さて、もう一つの最近ですが、@さんを中心に開発されているNephiaというminiぃフレームワークを触ったり改造したりコミットしたりしています。コアをミニマムにして依存を少なくし、プラグインでいろいろやるという感じの思想です。あとバリバリDSLを使います。えへへ。
使ったりしていると、「これをもっともっと、miniを超えたマイクロレベルのDSLにしたらどうか」という問いが生まれて、それを具現化したNephia::LiteなるNephiaに乗っかる感じのフレームワークを書きました。

Nephiaに関しては以下の記事でpapixさんが連載していくそうなので興味がある方はどうぞ。
Nephia入門 (1) - ひな形を生成して, plackupしよう! - Masteries


いっぽうNephia::Liteはどんなかんじかというと、

### app.psgi
use Nephia::Lite;
run {
    my $q = req->param('q');
    return {
        title => 'hello',
        query => $q,
    };
};

__DATA__
<!DOCTYPE html>
<html>
<head>
<title><?= $title ?></title>
</head>
<body>
<h1><?= $title ?></h1>
? if (defined $q) {
<p>query: <?= $q ?> </p>
? }
</body>
</html>

とまあこんなかんじで、ルートのメソッドだけを書けて、ベタッとDATAのあとにテンプレート書いてよしなにペライチなページを吐いてくれます。
これをplackupするとちゃんと立ち上がります。

何を作るのを想定しているかというと、これでとりあえずモック的なのを作ってもらって、NephiaのSubmapper機能でこのアプリをマウントするなりして小さいアプリを束ねて大きくしていく感じかなーとか思っています。思っているだけですけれど。
あと、Nephiaの機能をほとんど使えるので、Nephia::LiteからNephiaにスムーズにステップアップすることも可能です。

それと、__DATA__とそのあとのテンプレを書かないとreturnしたハッシュをそのままJSONとして吐き出します。これもこれで便利だなあって自分で思っています。俺得です。

あと便利機能として、Liteフレーバーも同梱されています。

$ nephia-setup anoapp --flavor=Lite

とかやるとよしななapp.psgiとcpanfileを吐いてくれます。どうぞご利用ください。


そんなわけでNephiaは日々進化していっていますが、コアな部分に関してはだいたい揃ってきたのでそろそろこれで簡単なアプリ書こうかなーって思っています。以上。