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>自作サー...
Upcoming SlideShare
Loading in...5
×

NanoA

17,899

Published on

Introduction of NanoA, a minimalist web application framework written in perl

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
17,899
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

NanoA

  1. 1. NanoA a minimalist approach to WAF Cybozu Labs, Inc. Kazuho Oku
  2. 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. 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. 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. 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. 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. 7. インストーラ <ul><li>CGI 1ファイルのみ </li></ul><ul><li>自己展開して suEXEC 環境なら自動設定 </li></ul><ul><li>デモ </li></ul>
  8. 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. 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. 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. 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. 12. 例 : 掲示板 <ul><li>http: //kazuho .31tools. com/nanoa/nanoa . cgi/tinybbs/ </li></ul>
  13. 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>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×