Webフレームワークの選び方
2024/09/25
プログラミングWebフレームワークとは
Webフレームワークは、Webアプリケーションの開発に必要な機能をまとめて提供し、より簡単で安全に開発できるように設計されたライブラリである。
提供される機能には以下のようなものがある。
機能 | 説明 |
リクエスト処理 | あるURLにきたリクエストをどの処理に渡すかを決める。URLルーティングやディスパッチャなど。 |
データベース管理 | 各種RDBMSとの接続や、データベースの定義や操作を行う。スキーマ定義やマイグレーションの実施など。 |
ORM | RDBMSで定義したスキーマとプログラミング言語のクラスをマッピングし、直接SQLを書かずにデータベースの操作が可能にする。 |
認証機構 | 指定したユーザとパスワードによる認証や権限の付与。 |
フォームバリデーション | リクエストの検証を行い、データを正規化する。 |
テンプレートエンジン | テンプレートを使用して画面を描画する。条件分岐などの細かな表示制御が可能。 |
国際化や地域化 | 言語や地域に応じて表示を制御する。 |
開発用サーバー | 開発用にホットリロードに対応したWebサーバを起動する。 |
CLIコマンド実行 | CLIでアプリの状態を対話環境で確認したり、コマンドを実行したりできる。 |
セキュリティ | XSSやSQLインジェクションなどに対してあらかじめ対策されていたり、簡単に設定できたりする。 |
Webフレームワークを使用せずにWebアプリケーションを開発しようとすると、開発工数が膨大になる上、脆弱性を含むリスクが高くなる。
Webフレームワークの選び方
Webフレームワークは安全なアプリケーションを簡単に開発するために導入される。そのため、現在広く使われていて頻繁に更新されていること、公式ドキュメントが整備されていて使いやすいことが重要である。
さらに、Web開発のフレームワークは、便利な機能が一通り揃った「フルスタック型」と、必要最低限の機能のみを提供する「軽量型」の2種類に分けられる。
Pythonでは、「フルスタック型」としてはDjangoが、「軽量型」としてはFastAPIが有名である。DjangoとFastAPIでは目的や得意とするケースが異なっており、以下にそれぞれがカバーしている機能を示す。
機能 | Django | FastAPI |
リクエスト処理 | ◯ | ◯ |
データベース処理 | ◯ | ✕ |
ORM | ◯ | ✕ |
認証機構 | ◯ | ✕ |
フォームバリデーション | ◯ | ◯ |
テンプレートエンジン | ◯ | ✕ |
国際化や地域化 | ◯ | ✕ |
開発用サーバー | ◯ | ◯ |
CLIコマンド実行 | ◯ | ✕ |
このように、Djangoは広く機能をカバーしているのに対して、FastAPIはカバーしている機能が少ない。これをみると、FastAPIはあまり使えないのではないかという印象を受けるかもしれないが、カバーしていない機能についても他のライブラリを利用して補完することができる。そのため、アプリケーションによってはFastAPIを利用してシンプルに開発したほうが良い場合もある。
とはいえ、開発を進めていく中で次第に要件が肥大化していき、足りない機能を他のライブラリで補完して対応する必要がある場合、ライブラリの選定やライブラリ間の調整にコストがかかってくるため、最初からDjangoを選択したほうが良い場合も多い。