こないだ言ってたばりったーは実はもう完成してたんだけど、なんかサンプルアプリのつもりが作ってるうちに段々ガチなフレームワークと化してきて、大したアプリじゃないのに中身は意外と複雑でしかもバグだらけ、みたいなことになってしまった。

うーんこれ公開してもいいけど参考になんねーよな、つか飽きたなーとか思って別の遊びを始めたら意外とそっちが楽しくなってきちゃって、こんなものが出来た。

faultier's Asagao at master - GitHub

何これ

Plackを使ってSinatraっぽい感じでWebアプリを書ける雰囲気のフレームワークみたいな(弱々しく)。一応README.jaを読むとどんなものかは何となく伝わるんじゃないかしら。ドキュメントとサンプルアプリくらいは作ってみようとは思いますが、何ができるか試してみる際にはソース読んでくだしあ。(追記)簡単なサンプルコードドキュメント(予定地)作ったよ。

TODO

  • Sinatraが出来ることは一通り出来るようにはしたい
  • 例えばPlack::Builderのenableとかを直に書けるようにするとか
  • passとかbeforeとかafterとか
  • configとかdispatchとか適当すぎるのでどうにかする
  • 今テンプレートがText::MicroTemplateだけなので他のも対応する

思ったこと

Sinatraの中身は意外とサッパリしてた。割とさらっと読めるレベル。

あとこういうDSL的な見た目になるものを実装するのはやっぱりRubyのが楽でいいなぁと思った。同じことやるのにPerlの方がもうちょっとトリックがいる感じ。いやまぁ、慣れの問題もあるんだけども。

なんだか最近個人的にPlack期到来中なんだけど、面白いからみんなもっといじるといいよ。

追記

ブコメで「CPANにDancerってのがありますよ」と教えてもらった。うはぁ。ほんとだ、被ってら。向こうはバージョン1.0ですし当然ながらもっとずっとちゃんとしてます。ひー。わかっててやったんならともかく知らなかったのはとても恥ずかしい。

強いて言うなら、向こうは全部自前実装だけどこっちはPlackに乗ってるっていうのが強みなくらいかなぁ。動かせる環境が増えても楽とかミドルウェアを重ねられるとか、ほら、いいことあるよ。あと俺TemplateToolkit嫌いなのでText::MicroTemplateでviewを書けるようにしたとか。…でもDancerは最小限の依存しかないのでインストールやデプロイは楽そうだけど、AsagaoはAny::MooseとかPath::Dispatcherとか色んなものに依存しててレンタルサーバとかに上げにくいかもしれない。

むしろお手本にさせてもらおう。後でソース読もう。

さらに追記

ブコメで「Dancer::Handler::PSGI があるから plack の上でもうごかせるよ!」って教えてもらいました。

あれー。

あれー。

あれー。

残念でござる。もう完全に意味ないでござる。まぁ勉強だと思ってとりあえず作ろうと思ってたところまでは全部作っちゃうか。