PyCon JP 2025 Logo
広島国際会議場
JPEN

hkws

Webアプリケーションにおけるパスルーティングアルゴリズムの解剖

ラン日本語
02:50 - 03:2030min
DAY 2
09/27
SAT

Webアプリケーション開発の開発においては、@app.get("/users/{user_id}")のような一文で処理とパスのマッピングを記述しますよね。しかし、その一行の裏側で、フレームワークがどのようにして正しい処理を呼び出しているか、仕組みを考えたことはありますか?

本トークは、普段当たり前の機能として使いがちなパスルーティングの裏側に目を向けます。Python製WebフレームワークであるDjangoとFastAPIを例にとり、そのルーティング機能がどのようなアルゴリズム(単純な正規表現、効率的なTrie木など)によって実現されているかを、図やコードを交えて解説します。さらに実験を通じて、登録するルートの量や深さに応じて、アルゴリズムごとに実行時間がどのように変わるかを比較します。

このトークを通じて、競技プログラミングで学ぶようなアルゴリズムが、実世界のアプリケーション開発という身近な場所で活きている、その面白さを共有します。Webアプリを構成する重要なパーツであるルーティングへの理解を深め、当たり前に使っている機能がどのように実現しているかを探求する楽しさへと繋がることを目指します。


トーク詳細 / Description

以下のアウトラインを想定しています。

  1. はじめに (3分)
  • 自己紹介とこのトークのゴール
  • 対象聴衆(Web開発の次の一歩を踏み出したいBeginnerの方へ)
  1. 身近なフレームワークにおけるルーティング (7分)
  • Django: path() とre_path()
  • FastAPI: Starletteにおけるルーティング実装
  1. ルーティングアルゴリズムの世界へダイブ (12分)
  • アプローチ1:正規表現
    • バックトラッキング
  • アプローチ2:Trie木
    • Trie木と基数木
    • パスを効率的に探索する仕組みのStep by Stepでの解説
  • 計算量の比較
  1. 比較実験:速さと柔軟性のトレードオフ (5分)
  • 実験概要:URLの数やネストの深さがマッチング速度に与える影響
  • 実験結果見る各アプローチの特性
  • 考察:パフォーマンスとパスパラメータ対応などの機能(柔軟性)のバランス
  1. まとめ (3分)

hkws

プロフィール

NTTCom/NTTドコモビジネスという会社で、Webアプリケーションの開発を行っています。