SlideShare a Scribd company logo
1 of 11
FormValidator::Nested
株式会社ジェミニウム
千葉征弘 <chiba@geminium.com>
自己紹介
• 株式会社ジェミニウム CTO
• PAUSE ID: CHIBA
• id:nihen(hatena, twitter, wassr)
• IRC での nick は chiba(__)
• ブログ
– へぼへぼ CTO 日記 (http://www.geminium.com/chiba_blog/)
– へぼへぼプログラマ日記 (http://d.hatena.ne.jp/nihen/)
• まったくプログラムのことは書いていない
My CPAN modules
• Acme::Coro::Suke
– Coro … …に「うわぁ べんぞうさんの中 すごく
…あったかいナリぃ 」といわせるモジュール
• IO::File::WithPath
– 開いたファイルの PATH を覚えてる IO::File
• FormValidator::Nested
– Nest したパラメータに対応した FormValidator
今日のテーマ
• Acme::Coro::Suke …の話 ではなく
FormValidator::Nested のお話
FormValidator が何故か好き
• 初 CPAN module が FormValidator::Nested
• 2009 年 8 月 18 日
• PAUSE ID request したのはその 2 年前の
2007 年 2 月でその時の why ”にも New
YAML-base FormValidator Module. e.g.
FormValidator::YAML and Catalyst-Plugin. ” と
書いてい
た。 http://groups.google.co.jp/group/perl.modules/browse_thread/thread/39b9e2516f55f958/9245563
2a24e3cb4
FormValidator とは
• 基本的には http の POST メソッドの時の入
力値検証を目的としたもの
• 入力値検証?なにそれサニタイズ脳?
– 違うよ!全然違うよ!
– サニタイズ脳は本来入力を許されるべき値を
除去してしまうこと
– 入力値検証は入力が許されない値が入力され
た場合に正常系処理を行わないこと
FormValidator に求める機能
• 追加 Form と更新 Form の設定を dry に
• requiredif 等の他値参照
• 豊富な標準 validate 機能
– 日本語系 ( ひらがな、カタカナ )
– DB 連携
• メッセージング
• 簡易な拡張性
• Filter 機能との設定の共有
• Nest したデータ構造を扱える
すべてを満たしているのは ::Nested だけ! w
Nest したデータ構造とは
• http の POST は通常フラットなデータ構造
しか扱えない
• そこで下記のように擬似的にネストデー
タを表現したりする。 user[0]
[mail]=hoge@example.com&user[0][name]=chiba
• PHP だと標準でネストデータに変換してく
れる。
• Perl では CGI::Expand モジュールでできま
す
Nest したデータを FormValidator
で
• user[0][mail] と user[1][mail] の検証項目をdryに書き
たい
• パラメータ名が固定じゃない場合はそもそも検証でき
ない FormValidator は多い
• FormValidator::Nested ではこう書ける
[hoge.yml]
user:
nested: user
array: 1
[user.yml]
mail:
validators:
- Email#email
FormValidator をどう使っている
か
• POST はブラウザ遷移禁止
• XHR で POST して response に成功か失敗か
を json でいれる
• 失敗した場合に FormValidator の result の
データ構造をいれておいてエラーメッ
セージを適切な場所に表示
以上です
• ご清聴ありがとうございました

More Related Content

Similar to Form Validator Nested

oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutoFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutTsuubito Ishii
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in OkazakiEtsushi Ishii
 
nameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオnameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオc-mitsuba
 
自社開発をしていなかった会社が Python を選んだ理由
自社開発をしていなかった会社が Python を選んだ理由自社開発をしていなかった会社が Python を選んだ理由
自社開発をしていなかった会社が Python を選んだ理由Daisuke Komatsu
 
130427 kansai-emacs-github
130427 kansai-emacs-github130427 kansai-emacs-github
130427 kansai-emacs-githubYuki Shibazaki
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについてHiraku Nakano
 
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話sairoutine
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4Satoshi Yazawa
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!TATSUYA HAYAMIZU
 
Cmsインサイド 120801 公開版
Cmsインサイド 120801 公開版Cmsインサイド 120801 公開版
Cmsインサイド 120801 公開版株式会社RYUS
 
20151213 tokushimaapp
20151213 tokushimaapp20151213 tokushimaapp
20151213 tokushimaapp健一 辰濱
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたしRyunosuke SATO
 
Nullabilityについて
NullabilityについてNullabilityについて
Nullabilityについてishikawa akira
 

Similar to Form Validator Nested (17)

oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer WorkoutoFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
 
a-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazakia-blogcsm な寺子屋 2 in Okazaki
a-blogcsm な寺子屋 2 in Okazaki
 
nameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオnameless ある沼にDeepDiveした人のポートフォリオ
nameless ある沼にDeepDiveした人のポートフォリオ
 
Modulemaking
ModulemakingModulemaking
Modulemaking
 
自社開発をしていなかった会社が Python を選んだ理由
自社開発をしていなかった会社が Python を選んだ理由自社開発をしていなかった会社が Python を選んだ理由
自社開発をしていなかった会社が Python を選んだ理由
 
130427 kansai-emacs-github
130427 kansai-emacs-github130427 kansai-emacs-github
130427 kansai-emacs-github
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについて
 
SCM, CI and Maven Repo
SCM, CI and Maven RepoSCM, CI and Maven Repo
SCM, CI and Maven Repo
 
JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話JSでファミコンエミュレータを作った時の話
JSでファミコンエミュレータを作った時の話
 
130713 kyotopm-lt
130713 kyotopm-lt130713 kyotopm-lt
130713 kyotopm-lt
 
Twitter API
Twitter APITwitter API
Twitter API
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
 
Cmsインサイド 120801 公開版
Cmsインサイド 120801 公開版Cmsインサイド 120801 公開版
Cmsインサイド 120801 公開版
 
20151213 tokushimaapp
20151213 tokushimaapp20151213 tokushimaapp
20151213 tokushimaapp
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
Nullabilityについて
NullabilityについてNullabilityについて
Nullabilityについて
 

Form Validator Nested

  • 2. 自己紹介 • 株式会社ジェミニウム CTO • PAUSE ID: CHIBA • id:nihen(hatena, twitter, wassr) • IRC での nick は chiba(__) • ブログ – へぼへぼ CTO 日記 (http://www.geminium.com/chiba_blog/) – へぼへぼプログラマ日記 (http://d.hatena.ne.jp/nihen/) • まったくプログラムのことは書いていない
  • 3. My CPAN modules • Acme::Coro::Suke – Coro … …に「うわぁ べんぞうさんの中 すごく …あったかいナリぃ 」といわせるモジュール • IO::File::WithPath – 開いたファイルの PATH を覚えてる IO::File • FormValidator::Nested – Nest したパラメータに対応した FormValidator
  • 4. 今日のテーマ • Acme::Coro::Suke …の話 ではなく FormValidator::Nested のお話
  • 5. FormValidator が何故か好き • 初 CPAN module が FormValidator::Nested • 2009 年 8 月 18 日 • PAUSE ID request したのはその 2 年前の 2007 年 2 月でその時の why ”にも New YAML-base FormValidator Module. e.g. FormValidator::YAML and Catalyst-Plugin. ” と 書いてい た。 http://groups.google.co.jp/group/perl.modules/browse_thread/thread/39b9e2516f55f958/9245563 2a24e3cb4
  • 6. FormValidator とは • 基本的には http の POST メソッドの時の入 力値検証を目的としたもの • 入力値検証?なにそれサニタイズ脳? – 違うよ!全然違うよ! – サニタイズ脳は本来入力を許されるべき値を 除去してしまうこと – 入力値検証は入力が許されない値が入力され た場合に正常系処理を行わないこと
  • 7. FormValidator に求める機能 • 追加 Form と更新 Form の設定を dry に • requiredif 等の他値参照 • 豊富な標準 validate 機能 – 日本語系 ( ひらがな、カタカナ ) – DB 連携 • メッセージング • 簡易な拡張性 • Filter 機能との設定の共有 • Nest したデータ構造を扱える すべてを満たしているのは ::Nested だけ! w
  • 8. Nest したデータ構造とは • http の POST は通常フラットなデータ構造 しか扱えない • そこで下記のように擬似的にネストデー タを表現したりする。 user[0] [mail]=hoge@example.com&user[0][name]=chiba • PHP だと標準でネストデータに変換してく れる。 • Perl では CGI::Expand モジュールでできま す
  • 9. Nest したデータを FormValidator で • user[0][mail] と user[1][mail] の検証項目をdryに書き たい • パラメータ名が固定じゃない場合はそもそも検証でき ない FormValidator は多い • FormValidator::Nested ではこう書ける [hoge.yml] user: nested: user array: 1 [user.yml] mail: validators: - Email#email
  • 10. FormValidator をどう使っている か • POST はブラウザ遷移禁止 • XHR で POST して response に成功か失敗か を json でいれる • 失敗した場合に FormValidator の result の データ構造をいれておいてエラーメッ セージを適切な場所に表示