オレオレWAFを
正式リリースするまでの話
YAPC::Asia Tokyo 2013
LT-thon
@ytnobody
http://github.com/nephia/Nephia
http://nephia.github.io/
今まで作者である僕自身がNephiaについて
きちんと話したことがなかったので
(これまでは主に@mackee_wさんや@__papix__さんが色々解説してくれたりしてました)
今日は大まかながらも自ら説明します。
およそ14か月前
v.0.01 on github
Nephia、産声をあげる。
元々はJSON APIに特化した
WAFを作るつもりだった
13か月前くらい?
@equinox79氏の手により、adre.so公開。
Nephiaを利用した最初のwebサービス
http://adre.so/慶應義塾日吉キャンパス
その後
しばらく放置
5ヶ月くらい前
@ichigotake氏曰く
「Nephiaそろそろ何とかしてくださいよ」
このままでは
真綿で喉元を締め付けられる!!!
開発再開
大体3か月くらい前
Hachioji.pmの面々を巻き込み
主にセットアップまわりの機能拡張をして
Shipit
様々なプラグインが開発されたが
同時にその内部構造のヒドさに
「このままでは開発続けられない」
という声が続出
それまでのコードを凍結し
新しい構造のWAF(コードネーム:Voson)を開発。
3週間くらい前?
github上で名前をかえた
旧Nephia => PrimalNephia
Voson => Nephia
9/29(日)
苦肉の策の集大成として
新生Nephia
Shipit予定
なんでつくったか
Amon2とかあるじゃない
Amon2でも大きいと感じるケースがあった
が、素のPlackだとだるいかもなーという
まあそんなこといってるけど、
麻疹の一種です
想定する用途
単発JSON API
超小規模WebAPP
ペライチっぽいけど動的とか
ホビー用途
(昔流行ったCGIゲームのPSGI版とか?)
特徴
DSLマンセー!!!!!!!!!!!!!111
おそらく最小クラスのソースコード量
(Nephia::Coreでコード部分だけで142行)
フック機構
(builder_chain)
これによって比較的容易に拡張可能。
フック機構
(action_chain, filter_chain)
これによって比較的容易に拡張可能。
セットアップ方式が2種類ある
(今後増やせる)
Nephia::Setup::Plugin::Minimal
Nephia::Setup::Plugin::Normal
Minimal セットアップ
・Routerなし
・View?なにそれ。
・最小限のDSL(app, req, param)
Normal セットアップ
・Router::Simple
・Text::MicroTemplate
・bootstrap, jquery
・controllerの帰り値がhashrefの場合、
JSONにしてくれる
Etc. etc...
DEMO
(時間あれば)
ベンチも取ってみたので、気になる方はどうぞ。
https://gist.github.com/ytnobody/6492083
単純な例ですが
速度だけならそんなに悪くないと思います。
Thank you!
次回のshipitでAPIが安定するので
ぜひお試しください!

L tthon