カテゴリ: CodeIgniter 更新日: 2026/01/24

CodeIgniterのバリデーションルール一覧と使い方まとめ!初心者でも安心

CodeIgniterのバリデーションルール一覧と使い方まとめ
CodeIgniterのバリデーションルール一覧と使い方まとめ

先生と生徒の会話形式で理解しよう

生徒

「CodeIgniterでフォームの入力チェックをしたいんですけど、どうすればいいですか?」

先生

「CodeIgniterには、バリデーション機能が標準で用意されています。これを使えば、簡単に入力チェックができますよ。」

生徒

「バリデーションって何ですか?」

先生

「バリデーションとは、ユーザーが入力したデータが正しいかどうかをチェックする機能のことです。例えば、メールアドレスが正しい形式かどうかや、必須項目が入力されているかなどを確認できます。」

生徒

「なるほど!具体的にどんなルールが使えるんですか?」

先生

「それでは、CodeIgniterのバリデーションルールを詳しく見ていきましょう!」

1. CodeIgniterのバリデーションとは?

1. CodeIgniterのバリデーションとは?
1. CodeIgniterのバリデーションとは?

CodeIgniterのバリデーション機能は、Webアプリケーションでユーザーが入力したデータの妥当性をチェックするための仕組みです。例えば、お問い合わせフォームで名前やメールアドレスを入力してもらう際に、入力漏れがないか、メールアドレスの形式が正しいかなどを自動的に確認できます。

バリデーションを使わないと、空欄のまま送信されたり、間違った形式のデータがデータベースに保存されたりする可能性があります。これを防ぐために、CodeIgniterでは様々なバリデーションルールが用意されています。

2. バリデーションの基本的な使い方

2. バリデーションの基本的な使い方
2. バリデーションの基本的な使い方

CodeIgniterでバリデーションを使うには、まずコントローラーでバリデーションライブラリを読み込みます。そして、チェックしたい項目に対してルールを設定し、バリデーションを実行します。基本的な流れを見てみましょう。

以下は、名前とメールアドレスをチェックする簡単な例です。


// コントローラーでの記述例
public function submit()
{
    $validation = \Config\Services::validation();
    
    $validation->setRules([
        'name' => 'required|min_length[3]',
        'email' => 'required|valid_email'
    ]);
    
    if ($validation->withRequest($this->request)->run()) {
        echo '入力データは正しいです';
    } else {
        echo '入力エラーがあります';
    }
}

この例では、nameフィールドは必須で3文字以上、emailフィールドは必須で正しいメールアドレス形式であることをチェックしています。バリデーションルールは、パイプ記号(|)で複数つなげて指定することができます。

3. 必須チェックのルール

3. 必須チェックのルール
3. 必須チェックのルール

最も基本的なバリデーションルールは、必須チェックです。フォームの入力項目で、必ず入力してほしい項目に対して使用します。

ルール名 説明
required 入力が必須であることを示します。空欄の場合はエラーになります。
required_with[field] 指定したフィールドに値がある場合のみ必須になります。
required_without[field] 指定したフィールドに値がない場合のみ必須になります。

// 必須チェックの例
$validation->setRules([
    'username' => 'required',
    'password' => 'required',
    'email' => 'required'
]);

4. 文字数に関するルール

4. 文字数に関するルール
4. 文字数に関するルール

入力された文字数をチェックするルールも重要です。パスワードは最低8文字以上にしたい、コメントは200文字以内にしたいなど、文字数の制限を設けることができます。

ルール名 説明
min_length[n] 最小文字数を指定します。n文字以上必要です。
max_length[n] 最大文字数を指定します。n文字以下である必要があります。
exact_length[n] 正確な文字数を指定します。ちょうどn文字である必要があります。

// 文字数チェックの例
$validation->setRules([
    'password' => 'required|min_length[8]|max_length[20]',
    'zipcode' => 'exact_length[7]',
    'comment' => 'max_length[500]'
]);

この例では、パスワードは8文字以上20文字以下、郵便番号は正確に7文字、コメントは500文字以内に制限しています。

5. 数値に関するルール

5. 数値に関するルール
5. 数値に関するルール

数値のチェックも頻繁に使用されます。年齢や価格など、数値だけを受け付けたい場合や、特定の範囲内の数値に制限したい場合に便利です。

ルール名 説明
numeric 数値のみを許可します。
integer 整数のみを許可します。
decimal 小数を含む数値を許可します。
greater_than[n] 指定した数値より大きい値のみ許可します。
less_than[n] 指定した数値より小さい値のみ許可します。

// 数値チェックの例
$validation->setRules([
    'age' => 'required|integer|greater_than[0]|less_than[150]',
    'price' => 'required|decimal',
    'quantity' => 'required|numeric'
]);

6. メールアドレスとURLのルール

6. メールアドレスとURLのルール
6. メールアドレスとURLのルール

メールアドレスやURLは特定の形式があるため、専用のバリデーションルールが用意されています。これらを使うことで、正しい形式かどうかを簡単にチェックできます。

ルール名 説明
valid_email 正しいメールアドレスの形式かチェックします。
valid_emails カンマ区切りで複数のメールアドレスをチェックします。
valid_url 正しいURLの形式かチェックします。
valid_ip 正しいIPアドレスの形式かチェックします。

例えば、valid_emailを使うと、「example@test.com」は正しいと判定されますが、「example@test」は形式が不完全なのでエラーになります。

7. 文字種別のルール

7. 文字種別のルール
7. 文字種別のルール

入力された文字の種類をチェックするルールもあります。英数字のみ、アルファベットのみなど、特定の文字種別に制限したい場合に使用します。

ルール名 説明
alpha アルファベットのみを許可します。
alpha_numeric アルファベットと数字のみを許可します。
alpha_dash アルファベット、数字、アンダースコア、ハイフンを許可します。
alpha_space アルファベットとスペースのみを許可します。

ユーザー名やIDなど、特定の文字のみを受け付けたい場合に便利です。

8. 比較と一致のルール

8. 比較と一致のルール
8. 比較と一致のルール

パスワード確認欄など、2つの入力項目が同じ値であることをチェックしたい場合に使用するルールです。

ルール名 説明
matches[field] 指定したフィールドと値が一致するかチェックします。
differs[field] 指定したフィールドと値が異なるかチェックします。
in_list[list] 指定したリストの中に値が含まれているかチェックします。

// 比較チェックの例
$validation->setRules([
    'password' => 'required|min_length[8]',
    'password_confirm' => 'required|matches[password]',
    'status' => 'required|in_list[active,inactive,pending]'
]);

この例では、パスワード確認欄が元のパスワードと一致するかをチェックし、ステータスは指定した3つの値のいずれかであることを確認しています。

9. データベース関連のルール

9. データベース関連のルール
9. データベース関連のルール

CodeIgniterでは、データベースと連携したバリデーションルールも用意されています。既に登録されているメールアドレスを拒否したり、存在するIDかどうかをチェックしたりできます。

ルール名 説明
is_unique[table.field] データベース内で値が一意(重複していない)かチェックします。
is_not_unique[table.field] データベース内に値が存在するかチェックします。

例えば、ユーザー登録時に既に使われているメールアドレスを拒否する場合、is_unique[users.email]というルールを使います。これにより、usersテーブルのemailカラムに同じ値が存在しないことを確認できます。

10. エラーメッセージのカスタマイズ

10. エラーメッセージのカスタマイズ
10. エラーメッセージのカスタマイズ

バリデーションエラーが発生した際、ユーザーにわかりやすいメッセージを表示することが大切です。CodeIgniterでは、エラーメッセージを自由にカスタマイズできます。

デフォルトでは英語のエラーメッセージが表示されますが、日本語のメッセージに変更したり、各項目ごとに独自のメッセージを設定したりできます。エラーメッセージは、app/Language/ja/Validation.phpファイルで一括設定するか、ルール設定時に個別に指定できます。

バリデーションルールを組み合わせることで、より複雑なチェックも可能になります。例えば、パスワードは8文字以上で、英数字を含み、既存のユーザー名と異なることを確認するなど、複数の条件を同時にチェックできます。

CodeIgniterのバリデーション機能を活用することで、安全で使いやすいWebアプリケーションを作成できます。最初は基本的なルールから始めて、徐々に複雑なバリデーションにも挑戦してみましょう。

カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.8
Java&Spring記事人気No8
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説