【初心者必見】Spring Bootの「return redirect:/game」と「return game」の違いを徹底解説!
こんにちは。ゆうせいです。
Spring Boot × ThymeleafでWebアプリケーションを作っていると、必ず一度は迷うポイントがあります。それが――
「
return "redirect:/game";とreturn "game";は何が違うの?」
という問題です。
見た目はとても似ている2つのコード。でも、実は動き方がまったく違うんです。
この違いを理解しないままアプリを作ると、予想外のエラーや不具合に悩まされることになりますよ!
この記事では、初心者の方でもわかりやすいように、図解・たとえ・具体例を交えてこの2つの使い分け方を解説します。
📘 まずは2つのコードの意味を整理しよう!
return "game";
これはテンプレート名を返すコードです。
Spring Bootでは、以下のようなテンプレートがあるとします:
src/main/resources/templates/game.html
このとき、return "game"; と書けば、そのまま game.html が表示されます。
return "redirect:/game";
これはリダイレクト命令です。
実行されると、ブラウザに対してこう指示します:
「いったん /game にアクセスし直して!」
つまり、今のリクエストを終了して、新しいリクエストを開始するのです。
🔍 たとえ話で理解しよう!
たとえるなら、こんな感じです:
| 方法 | たとえ | 
|---|---|
return "game" | 今いる部屋でそのまま作業を続ける | 
return "redirect:/game" | 別の部屋(画面)に移動して、改めて作業を始める | 
✅ 表で比較してみよう!
| 項目 | return "game" | return "redirect:/game" | 
|---|---|---|
| 動作 | そのままテンプレートへ遷移 | URLを再読み込み | 
| リクエスト数 | 1回 | 2回(リダイレクトあり) | 
| URL | 変わらない | 変わる(/game に) | 
| セッション再取得 | しない | 再取得される | 
| 主な用途 | データを表示したいとき | 処理の後にURLを変えたいとき/再実行したいとき | 
🔁 こんな時はどっちを使う?
return "game" を使うべき場面
- ユーザーに何か情報を表示したいだけ
 - 今のリクエスト中に完結している処理
 - ゲーム画面を初めて表示するとき など
 
return "redirect:/game" を使うべき場面
- フォーム送信後、ページをリロードしても再送信されないようにしたい(PRGパターン)
 - セッションに保存したデータを使って、コントローラーのメソッドを再実行したいとき
 - 状態の再初期化(例:ゲームをリスタート)など
 
🎮 実例で見てみよう:数当てゲーム
@GetMapping("/game/restart")
public String restart(HttpSession session) {
    session.setAttribute("kazuate", new Kazuate());
    return "redirect:/game";  // ← ここが大事!
}
このケースではリスタートのたびに /game を再実行させたいので、リダイレクトが必要なんです。
これをもし return "game"; にしてしまうと、テンプレートは表示されるけれど、コントローラーの処理(セッションのチェックや初期化)が実行されません!
🔚 まとめ:新人エンジニアへのアドバイス
「見た目は似ていても、中身はまったく違う!目的に応じて使い分けよう」
| 目的 | 選ぶべきコード | 
|---|---|
| 表示だけなら | return "game"; | 
| URLをリセットしたい・処理を再実行したい | return "redirect:/game"; | 
🎓 次のステップとして学ぶべきこと!
forward:との違い(サーバー内部の転送)- PRG(Post-Redirect-Get)パターンの理解
 RedirectAttributesを使った一時データの渡し方- ユーザー体験をよくするためのリダイレクト設計
 
迷ったときは、「この遷移、リクエストを再実行する必要あるかな?」と自分に問いかけてみてくださいね。
リダイレクトとテンプレート表示の正しい使い分けができるようになると、あなたのWebアプリはぐっと安定して、意図通りに動くようになりますよ!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
 - 
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。 
最新の投稿
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能④
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能③
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能②
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能①