カテゴリ: Spring 更新日: 2026/01/09

JavaのSpringで使う@Rangeアノテーション入門ガイド!初心者でもわかる数値バリデーション

Springの@Rangeアノテーション
Springの@Rangeアノテーション

教材紹介 Spring Boot 学習のおすすめ教材

Spring Bootを使ったWebアプリケーション開発を、 環境構築から実践まで一通り学びたい方には、 定評のある入門書が参考になります。

Spring Boot 3 プログラミング入門をAmazonで見る

※ Amazon広告リンク

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

生徒

「Springで数値の範囲を制限してチェックする方法はありますか?」

先生

「はい、@Rangeアノテーションを使えば、最小値や最大値を簡単に指定して入力値を検証できますよ。」

生徒

「例えば年齢が0以上120以下じゃないといけない、というチェックもできますか?」

先生

「もちろん可能です。実際のコードを見ながら一緒に学んでいきましょう。」

1. @Rangeアノテーションとは?

1. @Rangeアノテーションとは?
1. @Rangeアノテーションとは?

@Rangeアノテーションは、Hibernate Validatorが提供する数値バリデーションのためのアノテーションです。JavaのSpringアプリケーションでフォーム入力やリクエストパラメータを検証するときによく使われ、整数値や小数値が指定された範囲内に収まっているかを自動的にチェックしてくれます。例えば年齢、価格、数量などの制御に最適です。

2. @Rangeアノテーションの基本的な使い方

2. @Rangeアノテーションの基本的な使い方
2. @Rangeアノテーションの基本的な使い方

SpringのDTOやエンティティクラスでフィールドに@Rangeを付与するだけで数値チェックが可能です。以下は年齢を検証する例です。


import org.hibernate.validator.constraints.Range;

public class UserForm {

    @Range(min = 0, max = 120, message = "年齢は0以上120以下で入力してください")
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

この例では年齢が0未満または120を超えるとエラーとなり、ユーザーにエラーメッセージを返すことができます。

3. Spring MVCでのバリデーション処理

3. Spring MVCでのバリデーション処理
3. Spring MVCでのバリデーション処理

Spring MVCでは@ValidとBindingResultを使うことで@Rangeによる数値チェックを自動的に行えます。以下はコントローラでの利用例です。


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import jakarta.validation.Valid;

@Controller
public class UserController {

    @GetMapping("/age")
    public String showForm(UserForm userForm) {
        return "ageForm";
    }

    @PostMapping("/age")
    public String submitForm(@Valid UserForm userForm, BindingResult bindingResult, Model model) {
        if (bindingResult.hasErrors()) {
            return "ageForm";
        }
        model.addAttribute("age", userForm.getAge());
        return "success";
    }
}

これにより、フォーム入力の数値が範囲外なら自動的にエラーメッセージを表示できます。

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

4. @Rangeと@Min/@Maxの違い

4. @Rangeと@Min/@Maxの違い
4. @Rangeと@Min/@Maxの違い

数値バリデーションには@Minと@Maxもありますが、@Rangeは1つのアノテーションで最小値と最大値の両方を指定できます。コードが簡潔になり、可読性も高まるのが利点です。


@Min(0)
@Max(120)
private int age;

このように書く代わりに、@Rangeを使えば1行で表現できます。

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

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

初心者が混乱しないように、エラーメッセージは具体的に書くのがポイントです。例えば価格のチェックなら以下のように設定できます。


@Range(min = 100, max = 10000, message = "価格は100円以上10000円以下で入力してください")
private int price;

こうすることでユーザーが何を修正すれば良いか明確に理解できます。

6. 入力チェックの実用例

6. 入力チェックの実用例
6. 入力チェックの実用例

@Rangeアノテーションは年齢や価格以外にも、在庫数や数量制限など幅広い場面で使えます。例えば商品数量の入力チェックに適用できます。


@Range(min = 1, max = 100, message = "数量は1以上100以下で入力してください")
private int quantity;

7. HTMLフォームとの組み合わせ

7. HTMLフォームとの組み合わせ
7. HTMLフォームとの組み合わせ

フロントエンドのHTMLフォームで入力タイプをnumberにすれば、ブラウザ側でも数値入力の制御が可能です。Springの@Rangeと併用することで二重のバリデーションを実現できます。


<form action="/age" method="post">
    <label for="age">年齢</label>
    <input type="number" id="age" name="age" min="0" max="120" required />
    <button type="submit">送信</button>
</form>

8. 初心者が理解しておきたいポイント

8. 初心者が理解しておきたいポイント
8. 初心者が理解しておきたいポイント

初心者がSpringの@Rangeアノテーションを使うときに覚えておきたいポイントは以下の通りです。

  • 数値が範囲内かどうかを簡単に検証できる
  • @Minと@Maxをまとめて書けるので便利
  • エラーメッセージはわかりやすい日本語にする
  • 年齢や価格、数量など様々な数値チェックに利用できる
  • HTMLのminやmaxと組み合わせるとより安心

これらを理解すれば、Springで安全でわかりやすい数値バリデーションを実装できるようになります。

まとめ

まとめ
まとめ

@Rangeアノテーションで学んだ数値バリデーションの基本

この記事では、JavaのSpringフレームワークで利用できる@Rangeアノテーションについて、 初心者の方にも理解しやすい形で解説してきました。 Webアプリケーションでは、ユーザーが入力する数値をそのまま信用することはできません。 年齢、価格、数量、在庫数などの数値入力は、必ず「正しい範囲」に収まっているかを確認する必要があります。 その役割をシンプルに担ってくれるのが、Hibernate Validatorが提供する@Rangeアノテーションです。

@Rangeを使うことで、「最小値以上、最大値以下」という条件をひとつのアノテーションで表現でき、 コードの見通しが良くなります。 @Min@Maxを別々に書く方法と比べて、 設定内容が一目で理解できる点も大きなメリットです。 Spring MVCやSpring Bootのフォームバリデーションにおいて、 数値チェックの基本として覚えておきたいアノテーションのひとつと言えるでしょう。

Spring MVCと@Validを組み合わせた実践的な流れ

記事中で紹介したように、@Rangeアノテーションは単体で使うのではなく、 @ValidBindingResultと組み合わせることで真価を発揮します。 フォームから送信された数値は、コントローラに到達する前に自動的に検証され、 範囲外の値が入力された場合はエラー情報としてまとめられます。

この仕組みにより、コントローラの中で数値チェックを書く必要がなくなり、 ビジネスロジックに集中できるようになります。 バリデーションの責務をアノテーションに任せることで、 コードの可読性と保守性が大きく向上します。 Springでの開発では、この「役割分担」の考え方が非常に重要です。

HTMLフォームと組み合わせた安全な入力チェック

数値バリデーションは、サーバー側だけでなくフロントエンド側でも意識することが大切です。 HTMLのinput type="number"minmax属性を設定することで、 ブラウザレベルでも入力制御が可能になります。 これにSpringの@Rangeを組み合わせることで、 ユーザー体験を損なわず、かつ安全性の高い入力チェックを実現できます。

フロントエンドとバックエンドの両方で数値の範囲を意識することは、 実務でのWebアプリケーション開発において非常に重要な考え方です。 どちらか一方に依存するのではなく、 複数の層でチェックを行うことで、より堅牢なシステムを構築できます。

まとめとしてのサンプルプログラム

最後に、この記事で学んだ内容を振り返るためのサンプルプログラムを確認してみましょう。 年齢と数量の両方に@Rangeを適用した、実務でもよく使われる例です。


import org.hibernate.validator.constraints.Range;

public class OrderForm {

    @Range(min = 0, max = 120, message = "年齢は0以上120以下で入力してください")
    private int age;

    @Range(min = 1, max = 100, message = "数量は1以上100以下で入力してください")
    private int quantity;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }
}

このように@Rangeを設定しておくことで、 数値入力に関するルールをクラス定義の時点で明確に表現できます。 後からコードを読む人にとっても、 「どの範囲の値を想定しているのか」がすぐに理解できる点は大きな利点です。

先生と生徒の振り返り会話

生徒

「@Rangeを使うだけで、年齢や数量のチェックがこんなに簡単になるとは思いませんでした。 自分でif文を書かなくてもいいんですね。」

先生

「その通りです。Springでは、よくある入力チェックを アノテーションで宣言的に書けるようになっています。 @Rangeは数値バリデーションの基本なので、ぜひ覚えておきましょう。」

生徒

「HTMLのminやmaxと組み合わせると、 ユーザーにも優しいフォームになりますね。」

先生

「そうですね。入力しやすさと安全性の両立が大切です。 @Rangeを正しく使えるようになると、 Springでのフォーム開発がぐっと楽になりますよ。」

生徒

「これからは数値入力があるフォームでは、 まず@Rangeを使えるか考えてみます。」

カテゴリの一覧へ
新着記事
JavaのIndexOutOfBoundsExceptionを完全ガイド!初心者でも理解できる例外処理と回避方法
スッキリわかるJava入門 第4版|独学でもレッスンでも学べる完全ガイド
JavaのCookieクラスのgetCommentメソッドを解説!Servlet開発でクッキーの説明文を取得する方法
JavaのBufferedOutputStreamクラスのwriteメソッドを徹底解説!初心者でもわかるファイルへのバイナリ書き込み
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.3
Java&Spring記事人気No3
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.4
Java&Spring記事人気No4
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
No.8
Java&Spring記事人気No8
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク