Webアプリケーションフレームワークの作り方 in Python

こんにちは、芝田 将 ( @c_bata_ ) です。

この資料はPyCon JP 2016で行った 「基礎から学ぶWebアプリケーションフレームワークの作り方」 の書き起こし資料です。 誤字等があれば、Issue or PRをお待ちしております。

このエントリーをはてなブックマークに追加

はじめに

DjangoやFlaskを使ったWeb開発に慣れてきた頃、より高度な問題に対処できるよういくつかのWebフレームワークの実装を読み始めました。 最初はどこから手をつけて読んでいけばいいかも分かりませんでしたが、時間をかけながらも手当たり次第にBottleやDjangoの実装を読み進めることで次第にそれらの全体像が見えるようになってきました。 その後さらに理解を深めるために Kobin というフレームワークを作り始めたのですが、フレームワークをデザインする中で、各種フレームワークの設計方針の違いに気づくようになりました。 またフレームワークを利用しているだけでは気づくことのできなかった多くのHTTPに関する知識を得ることができました。 最近ではGo言語などPython以外の言語を書くことも多くなってきましたが、ここで得た多くの知識が役に立っています。 とはいえ筆者のように知識が浅いまま、最初から数千行〜数十万行のコードベースを読み進めるのは非常に大変です。

この資料では200行に満たないシンプルなWebフレームワークの作り方をボトムアップで解説します。 小さなフレームワークを1から作ってみることは、全体像を把握するのに有効なやり方です。 ここで解説する内容を抑えておけば、Bottleの実装を読むことにはそれほど苦労しないでしょう。 またFlaskやDjangoを読むときにも全体像を把握しながら読み進められれば、どこから手をつければいいかも想像がつきます。

対象読者

この資料では、実際にPythonでWebアプリケーションのフレームワークを作っていきます。 そのため既にWeb開発の経験があり、基本的なHTTPの知識があると理解がしやすいかと思います。 もし読み進めていく中で難しいと感じた場合は、これらの知識をもう少し復習してみるといいかもしれません。 どうしてもわからない場合はGithubの方にIssueをたてていただけると、そのあたりの補足説明を増やせるかもしれません。 お気軽に連絡ください。

Indices and tables