Webアプリケーションフレームワークは、開発者が信頼性が高く、スケーラブルでメンテナンス性の高いWebアプリケーションを構築する手助けをしてくれるライブラリです。
Webフレームワークには開発者たちが20年間、動的なWebアプリケーションを構築してきたノウハウが詰まっています。一般的なHTTPの操作やメンテナンス性の高いコード構造を簡単に再利用できるように作られています。
フレームワーク自体が機能を提供している場合もありますし、拡張することによってWebアプリケーションを動作させるのに必要な機能を備えていく物もあります。一般的な機能とは以下の様なものです。
すべてのフレームワークが、上記の機能のすべてを備えてるわけではありません。フレームワークは、単純な用途に的を絞って提供されているものもあれば、複雑な機能を全て備えているものもあります。「電池付属(batteries-included)」のアプローチで、すべての機能を提供しているフレームワークがある一方で、フレームワーク自体はシンプルに保ち、特定の機能は拡張機能として提供されているものもあります。
例えば、DjangoというWebアプリケーションフレームワークには関係データベースのCRUD操作を抽象化するためのORM(Object-Relational Mapping)を提供しています。ただし、DjangoのORMではMongoDBのようなNOSQLデータベースをそのまま使うことはできません。
一方、FlaskやPyramidというフレームワークでは外部のPythonライブラリを利用することで、比較的簡単にNOSQLデータベースを利用することができます。
最小限の機能と拡張性を持つフレームワークから、すべての機能が密に結合されたフレームワークが存在します。
* "What is a web framework?" - Jeff Knuppによる記事ではWebフレームワークに関する詳しい説明と、Webサーバとの関係について触れています。
有名なPython Webフレームワークを選んで(DjangoかFlaskがお勧めです)、使ってみましょう。これから始めるのであれば、いろいろなフレームワークをいっぺんに理解しようとするよりも、ひとつのフレームワークを学ぶほうが効果的です。
フレームワークのページにある資料のリンクからチュートリアルを探して、やってみましょう。
選択したフレームワークで構築されたオープンソースのアプリケーションを探し、参加したり、自分のアプリケーションで再利用してみましょう。
最初にシンプルなアプリケーションを作成し、deploymentの章を読み公開してみましょう。