キャッチーな台詞を吐いて客寄せするテクです、どうもマコピーです。
いつか、こんな記事を書いたんですが、
Nephiaの思想について一言 - ぱいぱいにっき
──あれから。
あれから僕たちは例年より暑い夏に狂わされたのか、まだ見果てぬ理想郷、もしくはWAFという役割を持って荒野に産み落とされた一筋に光たるNephaに、急かされ、そして熱狂し、いくつかの教訓を得て、僕たちは彼女の真の姿を理解するに至った。
黒魔術
僕らは彼女に黒魔術を教え、そして彼女は成長していく。
振り返ると脳内麻薬が出ていた僕達は彼女の変わっていく姿を真っ直ぐ見ることが出来ていなかったのかもしれない。
型グロブ、caller、ダイナミックスコープ、シンボリックテーブル、goto、パッケージ変数……
彼女が背負わされた業のようなものは誰の責任でもない。だが、重すぎた。
そこで、僕達は彼女を殺し、そして生き返らせることにした。
Future Nephia - Voson -
彼女の第二章の始まりである。
ytnobody/Voson · GitHub
もちろんVosonとは量子力学上のボソン粒子が由来になっているって言うことらしいですが、某宇宙戦艦のワープ航法も関連していないわけではないようです。
で、VosonはそのうちNephiaとそっくりそのまま入れ替わります。
今までのNephiaはPrimalNephiaとして没します。RIP。
Vosonの特徴としてはコアDSLはグローバルなものがappでその中で使えるのがreqとresしかないというシンプル仕様です。つまりNephia::Liteそのものですね。Nephia::LiteもつまりRIP。
さらにOOPじゃないのは限界があったのでOOP化しております。これにより黒魔術分が減ったのと、プラグインチェイン機構が整理されたのでいろんなプラグインが書きやすくなっております。
あずまさん(@ytnobody)さん渾身のAAがVoson::CoreのPODに書かれております。
こんなかんじでActionでappをくるんでいって最終的にはFilterでレスポンスを加工するような感じです。ちなみに今までのgetやpostなどのDSLはVoson::Plugin::Dispatchに実装されているのですが、ActionChainで実装されています。みんな大好きText::Xslateを使ったテンプレはVoson::Plugin::View::Xslateでrenderっていう名前のDSLをexportsするっていうまあ普通の方法ですね。こんなかんじで従来のDSLをバコバコ追加していく方法もOK。
そうそう、コンテキストが追加されました。生存時間が1つのリクエスト-レスポンスの間だけの入れ物です。Amon2だと$cであったりしますね。こいつはアプリを書く側からは見えないようになっていますが、プラグインで使っていく感じです。
さて、僕はNephiaの思想は変わらないと思っています。ただアプローチ方法をもう少し洗練させただけです。
やり方は何通りでもある。
Perlのこのモットーが示している通り、僕たちは少しなんか違うなって思ったら引き返してやり直せる、そうgitならね、って感じでやっているので、Nephia先生の今後にご期待ください。
Voson::Plugin::TengとVoson::Plugin::FormValidator::Liteは書くつもりですよ。あと@typester先生のPath::AttrRouterがCPANizeされたらDispatch代わりに使える何かを作って、Ark化を狙っております。えへへ。
あとこの記事偉そうに書いていますが僕は初めのほうで文句をあずまさんに言っただけで、私まだ1行もコードを提供しておりません。えへへ。