Flaskのエラーページをカスタマイズする方法!404・500ページの作り方まとめ
生徒
「Flaskでエラーページって自分で作ることってできますか?」
先生
「はい、Flaskでは404エラーや500エラーなどのエラーページを自分で好きなデザインにカスタマイズすることができますよ。」
生徒
「どうして自分で作ったほうがいいんですか?」
先生
「既定のエラーページはとても味気なくて分かりにくいので、ユーザーにやさしく分かりやすいページにすると、使いやすいサイトになります。それでは、Flaskでエラーページをカスタマイズする方法を学びましょう!」
1. Flaskのエラーページとは?
Flask(フラスク)とは、Python(パイソン)というプログラミング言語で作られた、Webアプリケーションを作るための便利な道具です。Flaskでは、Webページで何か間違いがあったときに「エラーページ」というものが表示されます。
たとえば、存在しないページを開こうとしたときに表示される「404 Not Found」や、アプリに不具合が起きたときに出る「500 Internal Server Error」がその代表例です。
このようなエラーページは、初期状態ではとてもシンプルで機械的な表示になっています。しかし、それを自分の好きなデザインやメッセージに変えることができるのが「エラーページのカスタマイズ」です。
2. なぜエラーページをカスタマイズするのか?
エラーページをカスタマイズすることで、Webアプリを使ってくれている人が混乱せず、安心して次の操作に進むことができます。
- ユーザーにやさしいメッセージを表示できる
- 見た目を統一できる(ブランド感を出せる)
- どんなトラブルが起きたのかを分かりやすく説明できる
たとえば、「ページが見つかりません」と日本語で表示してあげるだけで、初心者の人でも状況が理解しやすくなります。
3. Flaskでエラーページを作る基本構文
Flaskでは、@app.errorhandler()という仕組みを使って、特定のエラーが起きたときに別のページを表示するように設定できます。下記は、404エラーと500エラーのカスタムページを設定する基本の書き方です。
from flask import Flask, render_template
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
return render_template("404.html"), 404
@app.errorhandler(500)
def internal_server_error(error):
return render_template("500.html"), 500
このように書くことで、404エラーや500エラーが発生したときに、それぞれのテンプレートファイル(HTMLファイル)を表示してくれるようになります。
4. HTMLでエラーページを作ってみよう
Flaskでは、templatesというフォルダの中にHTMLファイルを置いて、見た目を整えることができます。以下は、404.htmlというファイルの例です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ページが見つかりません</title>
</head>
<body>
<h1>404 エラー</h1>
<p>申し訳ありません。お探しのページは見つかりませんでした。</p>
<a href="/">トップページへ戻る</a>
</body>
</html>
同じように、500.htmlも作成しておくと、サーバーエラーが発生したときに表示されます。500ページの例は以下です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>エラーが発生しました</title>
</head>
<body>
<h1>500 サーバーエラー</h1>
<p>申し訳ありません。サーバー内部で問題が発生しました。</p>
<a href="/">トップページへ戻る</a>
</body>
</html>
5. Flaskアプリでのエラーページ表示の流れ
実際の流れをもう一度整理しておきましょう。
- Flaskアプリで存在しないURLにアクセスされると、Flaskが「404エラーだ」と判断します。
@app.errorhandler(404)が動作して、404.htmlというファイルを使ってページを表示します。- 同じように、サーバーエラー(プログラムのミスなど)が起きたときは、
500.htmlが使われます。
つまり、Flaskに「どのエラーのときに、どのテンプレートを表示するか」を教えるだけで、誰でも簡単にオリジナルのエラーページが作れるのです。
6. より使いやすいカスタマイズの工夫
エラーページをより使いやすくするためには、次のような工夫がおすすめです。
- トップページへのリンクをつける
- 優しい言葉で案内する(例:「ページが見つかりません」より「お探しのページは見つかりませんでした」など)
- サイトのデザインに合わせた色やレイアウトにする
- エラー内容を記録する(ログに残す)※初心者のうちは無理にやらなくてもOK
ユーザーが迷わないように、しっかりと案内してあげることが大切です。
7. テストで確認してみよう
カスタムエラーページを作ったら、実際に動作確認してみましょう。以下のような確認をしてみるとよいです。
- 存在しないURL(例:
/not-found)を開いて、404ページが表示されるか確認 - わざとエラーを起こして、500ページが表示されるか確認
テストはとても大事な作業なので、失敗しても落ち着いて原因を確認しながら進めていきましょう。
まとめ
Flaskでエラーページを自分で整える作業は、見た目を変えるだけではなく、使う人が安心して操作を続けられるように導くための大切な工夫になります。とくに 404 や 500 といった代表的なエラーは、初心者の人にとってはとても分かりにくい状況です。そのため、ただ英語の数字だけが表示される既定の画面では、何が起きたのか理解できず、そのまま不安を感じてページを離れてしまうことも珍しくありません。そこで、開発者がやさしい言葉に置き換えたり、案内リンクを付けたり、落ち着いて行動できるような文章を添えたりするだけで、サイトの印象は大きく変わります。また、エラーページはサイト全体の雰囲気を統一するためにも役に立ちます。普段のページと色やレイアウトを合わせておくことで、アプリの世界観が途切れず、違和感を与えることもありません。こうした小さな工夫の積み重ねが、丁寧に作られたアプリという信頼につながり、再訪率を高める効果も期待できます。
さらに、Flaskのエラーハンドリングは特別な知識がなくても書けるので、初心者でも取り組みやすい点が魅力です。デコレーターを付けて、特定の数字に対応したテンプレートを返すだけで、基本的な構成が完成します。テンプレート側も、ふだんのHTMLと同じように装飾できるため、普段学んできた技術がそのまま活用できます。404 と 500 の二種類を作るだけでも、アプリの使いやすさは大きく向上し、状況を説明する文章を増やせばさらに分かりやすい案内として機能します。また、余裕が出てきたら、不正アクセスや予期しない例外が起こったときのログを整理したり、ユーザー向けと管理者向けでメッセージを切り替えたりと、応用的な工夫も考えられるようになります。
エラーは必ず起きるものであり、完全に防ぐことはできません。しかし、起きたときにどう受け止めてもらうか、どんな案内を示すかをあらかじめ準備しておくことで、問題の影響を最小限に抑えられます。エラーページを通してユーザーを安心させる姿勢は、アプリを継続して使ってもらうためにとても重要な考え方です。こうした考えはFlaskに限らず、他のフレームワークやサービスを扱うときにも活かされます。今回の学びをきっかけに、今後作るアプリでも同じような気づかいを応用してみると、より使いやすく温かいサイトに近づいていきます。
サンプルコードで振り返ろう
下記は今回の学びをまとめた簡単な記述例です。
from flask import Flask, render_template
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
return render_template("404.html"), 404
@app.errorhandler(500)
def internal_server_error(error):
return render_template("500.html"), 500
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ページが見つかりません</title>
</head>
<body>
<h1>404 エラー</h1>
<p>お探しのページは存在しないようです。</p>
<a href="/">トップへ戻る</a>
</body>
</html>
こうしたテンプレートを準備しておけば、アプリ全体の印象がまとまり、利用者にも親切でわかりやすい案内を届けられます。さらに、色やレイアウトを少し工夫するだけで、サイトの雰囲気を大きく変えることもできます。細やかな表現を調整しながら、より使いやすく美しい構成を完成させていきましょう。
生徒
「今日の説明で、エラーページってただの数字じゃなくて、使う人を守るための案内なんだって分かりました。」
先生
「その通りです。どんなアプリでも必ずエラーは起きます。だからこそ、その瞬間にどんな言葉を届けるかがとても大切になります。」
生徒
「思っていたより簡単に書けるのもありがたいです。テンプレートで自由に装飾もできるので、自分のサイトにあった雰囲気にもできますね!」
先生
「そうですね。今回覚えた仕組みはFlaskだけでなく、他の開発にも必ず役に立ちます。ぜひ自分のアプリの色に合わせて、やさしい案内ができるページを作ってみてください。」