NanoA a minimalist approach to WAF Cybozu Labs, Inc. Kazuho Oku
自己紹介 <ul><li>サイボウズ・ラボ所属 </li></ul><ul><li>ラボで作ったもの </li></ul><ul><ul><li>Japanize, Pathtraq, Q4M, … </li></ul></ul><ul><li...
今日の Perl WAF は複雑 ( のようだ ) <ul><li>プロ向けのツールとして発展してきた経緯 </li></ul><ul><li>屋上屋を重ねすぎ </li></ul><ul><li>覚えることが多すぎる </li></ul...
WAF の余計な要素 <ul><li>ディスパッチテーブル </li></ul><ul><ul><li>ファイルパスを使えばいいじゃん </li></ul></ul><ul><li>テンプレートのエスケープ指示 </li></ul><ul><...
WAF の余計な要素 (2) <ul><li>mod_perl ( fastcgi) が必須 </li></ul><ul><ul><li>CGI でも動いてほしい </li></ul></ul><ul><ul><li>CGI で十分...
NanoA の特徴 <ul><li>インストーラ </li></ul><ul><li>ディスパッチテーブルレス </li></ul><ul><li>コンポーネント指向 </li></ul><ul><li>View と Controller...
インストーラ <ul><li>CGI 1ファイルのみ </li></ul><ul><li>自己展開して suEXEC 環境なら自動設定 </li></ul><ul><li>デモ </li></ul>
コンポーネント指向 <ul><li>サービス開発時はアプレット「だけ」書く </li></ul><ul><li>設定は複数のアプレットで共有 </li></ul><ul><ul><li>例 : ユーザー管理コンポーネント , 設定コンポーネ...
View と Controller が可換 <ul><li>View と Controller が同一の API をもつ </li></ul><ul><li>PHP スタイルのコーディングも可能 </li></ul><ul><...
フォーム生成/バリデータ <ul><li>基本的な項目が指定可能 </li></ul><ul><ul><li>required, min_length, max_length, regexp, email, # of choices, … </...
NanoA のディレクトリ構成 <ul><li>app/MyApp/start.pm を書くだけで動きます </li></ul><ul><li>nanoa/ </li></ul><ul><li>  nanoa.cgi </li></ul><...
例 : 掲示板 <ul><li>http: //kazuho .31tools. com/nanoa/nanoa . cgi/tinybbs/ </li></ul>
NanoA の今後 <ul><li>たぶん MENTA よりも思想性重視 </li></ul><ul><ul><li>機能的な部分は MENTA を svn externals </li></ul></ul><ul><li>自作サー...
of 13

NanoA

Introduction of NanoA, a minimalist web application framework written in perl
Published on: Mar 3, 2016
Published in: Technology      
Source: www.slideshare.net


Transcripts - NanoA

  • 1. NanoA a minimalist approach to WAF Cybozu Labs, Inc. Kazuho Oku
  • 2. 自己紹介 <ul><li>サイボウズ・ラボ所属 </li></ul><ul><li>ラボで作ったもの </li></ul><ul><ul><li>Japanize, Pathtraq, Q4M, … </li></ul></ul><ul><li>使用言語 </li></ul><ul><ul><li>C/C++, Perl, JavaScript, … </li></ul></ul><ul><ul><li>半分はミドルウェア屋さん </li></ul></ul><ul><ul><li>パートタイム Perl デベロッパ </li></ul></ul><ul><ul><li>パートタイム WebApp デベロッパ </li></ul></ul>
  • 3. 今日の Perl WAF は複雑 ( のようだ ) <ul><li>プロ向けのツールとして発展してきた経緯 </li></ul><ul><li>屋上屋を重ねすぎ </li></ul><ul><li>覚えることが多すぎる </li></ul><ul><ul><li>情報がどこにあるかわからない </li></ul></ul><ul><li>パートタイムデベロッパーにはつらい </li></ul><ul><ul><li>ミドルウェア屋さんとか </li></ul></ul><ul><ul><li>研究屋さんとか </li></ul></ul><ul><ul><li>自営業の方とか </li></ul></ul>
  • 4. WAF の余計な要素 <ul><li>ディスパッチテーブル </li></ul><ul><ul><li>ファイルパスを使えばいいじゃん </li></ul></ul><ul><li>テンプレートのエスケープ指示 </li></ul><ul><ul><li>テンプレートエンジンで自動処理できるはず </li></ul></ul><ul><li>コントローラとテンプレートの分離 </li></ul><ul><ul><li>We ♥ PHP! </li></ul></ul><ul><li>設定ファイル </li></ul><ul><ul><li>Convention over Configuration </li></ul></ul>
  • 5. WAF の余計な要素 (2) <ul><li>mod_perl ( fastcgi) が必須 </li></ul><ul><ul><li>CGI でも動いてほしい </li></ul></ul><ul><ul><li>CGI で十分なケースも多い </li></ul></ul><ul><ul><ul><li>例 : Japanize </li></ul></ul></ul><ul><li>CPAN モジュールへの依存 </li></ul><ul><ul><li>インストールが面倒 </li></ul></ul><ul><ul><li>環境依存は悪 </li></ul></ul>
  • 6. NanoA の特徴 <ul><li>インストーラ </li></ul><ul><li>ディスパッチテーブルレス </li></ul><ul><li>コンポーネント指向 </li></ul><ul><li>View と Controller が可換 </li></ul><ul><li>フォーム生成/バリデータが付属 </li></ul><ul><li>CGI で ( も ) 高速 </li></ul><ul><li>Simple but Powerful </li></ul><ul><li>モジュールは MENTA と共有 </li></ul>
  • 7. インストーラ <ul><li>CGI 1ファイルのみ </li></ul><ul><li>自己展開して suEXEC 環境なら自動設定 </li></ul><ul><li>デモ </li></ul>
  • 8. コンポーネント指向 <ul><li>サービス開発時はアプレット「だけ」書く </li></ul><ul><li>設定は複数のアプレットで共有 </li></ul><ul><ul><li>例 : ユーザー管理コンポーネント , 設定コンポーネント , … </li></ul></ul><ul><ul><li>という風にしたいけどコンポーネント書いてない </li></ul></ul><ul><li>UI の制限がない XOOPS </li></ul>
  • 9. View と Controller が可換 <ul><li>View と Controller が同一の API をもつ </li></ul><ul><li>PHP スタイルのコーディングも可能 </li></ul><ul><ul><li>ちょっとしたアプリケーションには便利 </li></ul></ul><ul><li>双方向にインクルード可能 </li></ul><ul><ul><li>View から Controller を呼び出したり </li></ul></ul><ul><ul><li>Controller から View を呼び出したり </li></ul></ul><ul><li>デモ </li></ul>
  • 10. フォーム生成/バリデータ <ul><li>基本的な項目が指定可能 </li></ul><ul><ul><li>required, min_length, max_length, regexp, email, # of choices, … </li></ul></ul><ul><li>CSRF 対策が組み込み </li></ul>
  • 11. NanoA のディレクトリ構成 <ul><li>app/MyApp/start.pm を書くだけで動きます </li></ul><ul><li>nanoa/ </li></ul><ul><li>  nanoa.cgi </li></ul><ul><li>  app/ </li></ul><ul><li>   app1/ </li></ul><ul><li>    start.pm        -- app1 のトップページ </li></ul><ul><li>   app2/ </li></ul><ul><li>    config.pm       -- app2 の全体設定 </li></ul><ul><li>    start.pm        -- app2 のトップページ </li></ul><ul><li>    controller1.pm    -- 別のコントローラ </li></ul><ul><li>    template/       -- テンプレートディレクトリ </li></ul><ul><li>     start.mt </li></ul><ul><li>     controller.mt </li></ul>
  • 12. 例 : 掲示板 <ul><li>http: //kazuho .31tools. com/nanoa/nanoa . cgi/tinybbs/ </li></ul>
  • 13. NanoA の今後 <ul><li>たぶん MENTA よりも思想性重視 </li></ul><ul><ul><li>機能的な部分は MENTA を svn externals </li></ul></ul><ul><li>自作サービスでは使うつもり </li></ul><ul><ul><li>Japanize? </li></ul></ul><ul><li>アプレット開発者絶賛募集中 </li></ul><ul><ul><li>nanoa/trunk/app 下に置いてほしい </li></ul></ul><ul><ul><li>Nanoa と一緒に配布します </li></ul></ul><ul><li>NanoA をよろしくお願いします </li></ul>

Related Documents