Fork me on GitHub

Webフレームワーク

Webアプリケーションフレームワークは、開発者が信頼性が高く、スケーラブルでメンテナンス性の高いWebアプリケーションを構築する手助けをしてくれるライブラリです。

なぜWebフレームワークが必要?

Webフレームワークには開発者たちが20年間、動的なWebアプリケーションを構築してきたノウハウが詰まっています。一般的なHTTPの操作やメンテナンス性の高いコード構造を簡単に再利用できるように作られています。

一般的なWebフレームワークの機能

フレームワーク自体が機能を提供している場合もありますし、拡張することによってWebアプリケーションを動作させるのに必要な機能を備えていく物もあります。一般的な機能とは以下の様なものです。

  1. URLのルーティング
  2. HTML、XML、JSONなどのフォーマットを出力するテンプレート
  3. データベースの操作
  4. CSRFなどの脆弱性に対するセキュリティ対策

すべてのフレームワークが、上記の機能のすべてを備えてるわけではありません。フレームワークは、単純な用途に的を絞って提供されているものもあれば、複雑な機能を全て備えているものもあります。「電池付属(batteries-included)」のアプローチで、すべての機能を提供しているフレームワークがある一方で、フレームワーク自体はシンプルに保ち、特定の機能は拡張機能として提供されているものもあります。

例えば、DjangoというWebアプリケーションフレームワークには関係データベースのCRUD操作を抽象化するためのORM(Object-Relational Mapping)を提供しています。ただし、DjangoのORMではMongoDBのようなNOSQLデータベースをそのまま使うことはできません。

一方、FlaskやPyramidというフレームワークでは外部のPythonライブラリを利用することで、比較的簡単にNOSQLデータベースを利用することができます。

最小限の機能と拡張性を持つフレームワークから、すべての機能が密に結合されたフレームワークが存在します。

Webフレームワークに関する一般的な資料

* "What is a web framework?" - Jeff Knuppによる記事ではWebフレームワークに関する詳しい説明と、Webサーバとの関係について触れています。

  • What web frameworks do you use and why are they awesome?では、Webフレームワークに関する議論が行われています。興味深いのは他の言語を利用している開発者が参加し、PythonのWebフレームワークと比較して、彼らが利用しているWebフレームワークの利点や欠点を話していることです。

Webフレームを学ぶためのチェックリスト

有名なPython Webフレームワークを選んで(DjangoFlaskがお勧めです)、使ってみましょう。これから始めるのであれば、いろいろなフレームワークをいっぺんに理解しようとするよりも、ひとつのフレームワークを学ぶほうが効果的です。

フレームワークのページにある資料のリンクからチュートリアルを探して、やってみましょう。

選択したフレームワークで構築されたオープンソースのアプリケーションを探し、参加したり、自分のアプリケーションで再利用してみましょう。

最初にシンプルなアプリケーションを作成し、deploymentの章を読み公開してみましょう。

どのWebフレームワークを学びたいですか?

Djangoについてもっと知りたい

Flaskについてもっと学びたい

Bottleについてもっと知りたい

他のWebフレームワークは?


Interested in a complete Full Stack Python book with detailed tutorials and example code? Sign up here and you'll get an alert email if a book is created. No other emails will be sent other than sign up confirmation.