Webフレームワークの選び方

2024/09/25

プログラミング

Webフレームワークとは

Webフレームワークは、Webアプリケーションの開発に必要な機能をまとめて提供し、より簡単で安全に開発できるように設計されたライブラリである。

提供される機能には以下のようなものがある。

機能説明
リクエスト処理あるURLにきたリクエストをどの処理に渡すかを決める。URLルーティングやディスパッチャなど。
データベース管理各種RDBMSとの接続や、データベースの定義や操作を行う。スキーマ定義やマイグレーションの実施など。
ORMRDBMSで定義したスキーマとプログラミング言語のクラスをマッピングし、直接SQLを書かずにデータベースの操作が可能にする。
認証機構指定したユーザとパスワードによる認証や権限の付与。
フォームバリデーションリクエストの検証を行い、データを正規化する。
テンプレートエンジンテンプレートを使用して画面を描画する。条件分岐などの細かな表示制御が可能。
国際化や地域化言語や地域に応じて表示を制御する。
開発用サーバー開発用にホットリロードに対応したWebサーバを起動する。
CLIコマンド実行CLIでアプリの状態を対話環境で確認したり、コマンドを実行したりできる。
セキュリティXSSやSQLインジェクションなどに対してあらかじめ対策されていたり、簡単に設定できたりする。

Webフレームワークを使用せずにWebアプリケーションを開発しようとすると、開発工数が膨大になる上、脆弱性を含むリスクが高くなる。

Webフレームワークの選び方

Webフレームワークは安全なアプリケーションを簡単に開発するために導入される。そのため、現在広く使われていて頻繁に更新されていること、公式ドキュメントが整備されていて使いやすいことが重要である。

さらに、Web開発のフレームワークは、便利な機能が一通り揃った「フルスタック型」と、必要最低限の機能のみを提供する「軽量型」の2種類に分けられる。

Pythonでは、「フルスタック型」としてはDjangoが、「軽量型」としてはFastAPIが有名である。DjangoとFastAPIでは目的や得意とするケースが異なっており、以下にそれぞれがカバーしている機能を示す。

機能DjangoFastAPI
リクエスト処理
データベース処理
ORM
認証機構
フォームバリデーション
テンプレートエンジン
国際化や地域化
開発用サーバー
CLIコマンド実行

このように、Djangoは広く機能をカバーしているのに対して、FastAPIはカバーしている機能が少ない。これをみると、FastAPIはあまり使えないのではないかという印象を受けるかもしれないが、カバーしていない機能についても他のライブラリを利用して補完することができる。そのため、アプリケーションによってはFastAPIを利用してシンプルに開発したほうが良い場合もある。

とはいえ、開発を進めていく中で次第に要件が肥大化していき、足りない機能を他のライブラリで補完して対応する必要がある場合、ライブラリの選定やライブラリ間の調整にコストがかかってくるため、最初からDjangoを選択したほうが良い場合も多い。

参考資料


著者画像

ゆうき

2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.