カテゴリ: Flask 更新日: 2025/11/27

FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説

FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説
FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説

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

生徒

「FlaskでURLに応じた処理をするにはどうすればいいですか?」

先生

「Flaskでは、@app.route()デコレーターを使って、特定のURLに対する処理を定義できます。」

生徒

「動的なURL、例えばユーザー名やIDを含むURLはどう扱うんですか?」

先生

「URLの一部を変数として扱うことで、動的なURLを実現できます。具体的な方法を見ていきましょう!」

1. Flaskのルーティングとは?

1. Flaskのルーティングとは?
1. Flaskのルーティングとは?

Flaskのルーティングは、特定のURLパスに対して処理を割り当てる仕組みです。これにより、ユーザーがアクセスしたURLに応じて、適切な処理を実行できます。

例えば、以下のように@app.route()デコレーターを使って、ルートURL(/)に対する処理を定義できます。


from flask import Flask

app = Flask(**name**)

@app.route('/')
def home():
return 'ホームページへようこそ!'

2. 動的URLの作り方

2. 動的URLの作り方
2. 動的URLの作り方

動的URLとは、URLの一部が変化するURLのことです。Flaskでは、URLの一部を変数として扱うことで、動的なURLを実現できます。

例えば、ユーザー名を含むURLを定義するには、以下のようにします。


@app.route('/user/<username>')
def show_user_profile(username):
    return f'{username}さんのプロフィールページです。'

このようにすると、/user/太郎/user/花子といったURLにアクセスした際、それぞれのユーザー名に応じたページが表示されます。

3. 変数の型指定

3. 変数の型指定
3. 変数の型指定

Flaskでは、URLの変数に型を指定することもできます。これにより、特定の型の値のみを受け付けるように制限できます。

主な型指定は以下の通りです。

  • string: 文字列(デフォルト)
  • int: 整数
  • float: 浮動小数点数
  • path: スラッシュを含む文字列
  • uuid: UUID文字列

例えば、整数のIDを受け取るURLを定義するには、以下のようにします。


@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f'投稿ID: {post_id}'

4. 複数のルートを同じ関数に割り当てる

4. 複数のルートを同じ関数に割り当てる
4. 複数のルートを同じ関数に割り当てる

同じ処理を複数のURLで行いたい場合、複数の@app.route()デコレーターを使って、同じ関数に割り当てることができます。


@app.route('/about')
@app.route('/info')
def about():
    return 'このサイトについての情報です。'

このようにすると、/about/infoのどちらにアクセスしても、同じ内容が表示されます。

5. URLの末尾のスラッシュの扱い

5. URLの末尾のスラッシュの扱い
5. URLの末尾のスラッシュの扱い

Flaskでは、URLの末尾にスラッシュ(/)を付けるかどうかで挙動が変わります。

  • スラッシュあり(/about/): ディレクトリのように扱われ、スラッシュなしでアクセスするとリダイレクトされます。
  • スラッシュなし(/about): ファイルのように扱われ、スラッシュありでアクセスすると404エラーになります。

一貫性を保つために、URLの設計時にはスラッシュの有無を統一することが推奨されます。

6. URLの逆引き

6. URLの逆引き
6. URLの逆引き

Flaskでは、url_for()関数を使って、関数名からURLを生成できます。これにより、URLをハードコーディングせずに済み、保守性が向上します。


from flask import url_for

@app.route('/login')
def login():
return 'ログインページ'

with app.test\_request\_context():
print(url\_for('login'))

このコードを実行すると、/loginというURLが出力されます。

まとめ

まとめ
まとめ

FlaskのURLルールとルーティングの仕組みは、Webアプリケーションを作るうえで欠かせない重要な要素です。今回の記事では、@app.route()デコレーターの基本から、動的URL・変数の型指定・複数ルートの割り当て・スラッシュの扱い・URL逆引きまで、Flaskのルーティング機能を幅広く学びました。

Webアプリでは「どのURLにアクセスしたときに、どの関数が動くか」が明確に決まっている必要があります。Flaskのルーティングはその対応を簡単に定義でき、シンプルな構文ながら柔軟性が高いのが特徴です。特に、動的URLはユーザー名や投稿IDなどをURLの一部として扱えるため、ユーザーごとのページ表示や記事の詳細ページの生成など、Webアプリの基本的な仕組みを実現するうえで欠かせません。

動的URLでは、/user/<username> のような記法を使うことで、URL中の文字列を自動で引数に受け取ることができます。また、intfloat といった型指定ができるため、特定形式のURLにのみマッチさせることも可能です。例えば、投稿IDには整数しか許可したくない場合などに活躍します。

さらに、複数ルートの定義は、異なるURLから同じ処理へ誘導したいときに便利です。@app.route() を複数書くだけで簡単に対応できるため、サイトのURL設計を柔軟に整えることができます。

URLの末尾のスラッシュの扱いについても重要なポイントです。スラッシュの有無によって挙動が異なるため、ページの設計時には統一性を持たせることが求められます。迷った場合は「ディレクトリ的に使うURLはスラッシュあり」「ファイル的に扱うURLはスラッシュなし」という考え方で揃えるとわかりやすくなります。

また、重要な機能としてurl_for()逆引きがあります。関数名からURLを生成できるため、テンプレート内やPythonコードでリンクを作る際のミスを防ぎ、保守性を高めることができます。URLが後から変更されても関数名が同じであれば動作するため、大規模アプリでは特に重宝されます。

Flaskのルーティングは理解するととても強力で、アプリ開発における自由度の高さと柔軟性を実感できます。今回学んだ基礎を押さえることで、今後より複雑なアプリケーション構築やAPI実装へ進むための土台ができます。

■ 応用的なルーティングサンプルコード


from flask import Flask, url_for

app = Flask(__name__)

# 基本のルート
@app.route('/')
def home():
    return 'トップページです'

# 動的URL(文字列)
@app.route('/user/<username>')
def profile(username):
    return f'{username}さんのプロフィールです'

# 動的URL(整数ID)
@app.route('/article/<int:article_id>')
def article(article_id):
    return f'記事ID: {article_id}'

# 複数URLに対応
@app.route('/help')
@app.route('/support')
def help_page():
    return 'サポートページです'

# URLの逆引き
@app.route('/link')
def link():
    login_url = url_for('login_page')
    return f'ログインページはこちら → {login_url}'

@app.route('/login')
def login_page():
    return 'ログイン画面です'

このサンプルコードでは、基本的なルート定義から動的URL・複数ルート・型指定・逆引きまで、一連の機能を実際のコードとして確認できます。特にurl_for()を活用したリンク生成は、テンプレート内でも頻繁に使われるため、早い段階で慣れておきたいポイントです。

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

生徒:「FlaskのURLルールって、思っていたより幅広くて驚きました!」

先生:「ルーティングはアプリの入り口ですから、とても大事なんですよ。」

生徒:「動的URLで変数を受け取れるのは便利ですね。ユーザーページや投稿ページに使えそうです!」

先生:「その通りです。型指定を使えば、URLが意図しない値で動かないように制御もできます。」

生徒:「複数のURLに同じ処理を割り当てられるのも便利ですね。リダイレクトを使わずに対応できるんですね。」

先生:「そうですね。サイトのURL設計を柔軟にしたいときに役立ちます。」

生徒:url_for() の逆引きも気に入りました!URLを直接書かなくていいのはすごく便利です。」

先生:「テンプレートでも多用するので、覚えておくと開発がとても楽になりますよ。」

生徒:「もっとルーティングの応用を学んで、自分のアプリに取り入れてみます!」

先生:「ぜひ挑戦してください。ルーティングが理解できればFlaskアプリはもっと自由に作れますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Flaskのルーティングとは何ですか?初心者向けに解説してください

Flaskのルーティングとは、ユーザーがアクセスするURLと、それに対応する処理を関連づける仕組みです。@app.route()を使って、どのURLにアクセスしたときにどの関数を実行するかを定義できます。
カテゴリの一覧へ
新着記事
New1
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
New2
Flask
FlaskでリダイレクトやURL生成を行う方法!便利な関数の使い方を解説
New3
Flask
FlaskでPOSTリクエストを受け取る方法!初心者でもわかるJSONデータの受け取り方
New4
Flask
Flask‑Mailの使い方!アプリからメールを送信する基本方法を解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.6
Java&Spring記事人気No6
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説