Perl でユーザー登録フォームの入力検証(バリデーション)を書いていく全3回の連載です。名前とメールアドレスの必須チェックを if 文で書くところから始め、パスワードの強度や確認用パスワードの一致、利用規約への同意、年齢制限を足して if 文のネストが深くなったところで、検証ルールを1つずつ Moo のクラスに分け、set_next でつなぐ Chain of Responsibility パターンに組み直します。
各回は前の回のコードに手を入れていく作りなので、通して読むなら第1回からが早道です。このページは目次を兼ねた案内板です。入口は「どこから読むか」で、困りごとが決まっているなら「困りごとから探す」で、順に追うなら「全話一覧」で選んでください。
対象は、Perl の基本的な文法がわかる方です。コードは Perl v5.36 以降(サブルーチンシグネチャ)で書いています。第3回では Moo の has と extends でクラスを書くので、Moo が初めてなら、先に前シリーズ「変数とサブルーチンだけで書いていたPerlを、Mooのクラスで整理する全12回」の目次(このページの最後にリンクがあります)から読んでください。
どこから読むか
- 第1回 — バリデーションを if 文で書くところから、設計が変わる順にたどりたいなら。第2回で、ルールを足すと何が困るかを確かめる
- 第2回 — if 文がネストしていく様子と、その何が困るのかから入りたいなら。前提は第1回の validate_user
- 第3回 — 検証ルールをクラスに分けてつなぐ形を先に見たいなら。第2回の問題点と並べた表がある
困りごとから探す
入力チェックを、どう書き始めればいいかわからない
検証ルールを足すたびに、if 文が深くなっていく
検証ルールを、1つずつ足したり外したりしたい
全話一覧
- 第1回 ユーザー登録フォームの入力チェックを、Perlのif文だけで書いてみる。名前とメールアドレスから始める【if文】
- 第2回 パスワード・確認一致・利用規約・年齢を足したら、validate_userのif文が3段にネストした【コードの臭い】
- 第3回 ネストしたif文に埋もれた検証ルールを、1ルール1クラスに分けて鎖でつなぐ【Chain of Responsibility】
必要なモジュール
第1回と第2回は外部モジュールを使いません。第3回で使う Moo はインストールしてください。
| |
