はじめに
データ分析や機械学習の隆盛に伴い、Pythonの人気は近年とても高まっています。それはNumPyやChainerといった便利なPythonライブラリが充実しているという理由がもちろん挙げられますが、Pythonが汎用プログラミング言語であることも人気の後押しになっています。
実際、「収集・分析したデータの二次活用として、Webアプリケーションを作りたい」という声をよく聞くようになりました。Pythonならデータ処理からWeb開発まで一貫して同じ言語で書くことができます。こういった背景からPythonでのWeb開発は、さらに需要が高まってきています。
本連載では、PythonのWebアプリケーションフレームワークの中から「Django」を取り扱います。
Djangoは2005年にオープンソースとして公開された歴史があるフレームワークです。日本語の情報も少なくないのですが、ちょっと古いものが多い印象を受けます。そのためこの連載は「モダンDjango入門」と題して、Djangoの最新バージョン(執筆時点:1.11.6)に合わせた書き方を説明します。さらにDjango REST frameworkを用いたSPA(Single Page Application)の実装方法についても紹介していきます。
またDjangoは、2017年12月に9年ぶりとなるメジャーバージョンアップとしてDjango 2.0のリリースが控えています。執筆時点ではbeta 1がリリースされています。2.0で追加予定の新しい機能や変更点なども、この連載の中でいくつか紹介していこうと思います。
今回の内容
今回は実際にDjangoアプリケーションの開発を進める前に、準備段階として確認しておくべきことを紹介していきます。PythonとDjangoの経験がある方には当たり前のことが多いと思いますが、おさらいだと思って読んでいただければと思います。
まずは、ほかのPython製Webアプリケーションフレームワークと比較しながらDjangoの特徴を見ていきます。次に環境構築について。そして最後に次回への準備として、Djangoプロジェクトを作成するところまでを扱っていきます。
PythonのWebアプリケーションフレームワーク
PythonにはDjango以外にも、軽量なものから、多機能なものまで多くのWebアプリケーションフレームワークが存在しています。
ここでは、HotFrameworksというサイトのPython製フレームワークのランキングページに掲載されているなかから、Djangoのほかに執筆時点での上位4つを紹介します。それぞれの特徴を見ていくことで、Djangoがどういったフレームワークであるかがより把握しやすくなると思います。
Flask
軽量フレームワークでは最も人気があるのがFlaskです。もともとはArmin Ronacherが2010年のエイプリルフールのジョークとして、後述するBottleというフレームワークをもじって開発したものです。
WerkzeugとJinja2をベースに作られていて、シンプルで拡張性が高いことが特徴です。
小規模サイトやプロトタイプなど手軽に何かを作る場合に重宝されています。
Tornado
Tornadoは、FriendFeed(後にFacebookが買収)によって開発されたフレームワーク/非同期通信ライブラリです。
ノンブロッキングI/Oを使用することで、Tornadoは数万のコネクションをオープンにできます。そのため、WebSocketのような長い時間のコネクションを必要とするアプリケーションに適しています。最近ではJupyter Notebookの裏側で使われていることでも知られています。
Node.jsのPython代替としても需要があるようです。
Bottle
Bottleは1つのPythonファイルのみで構成されており、他ライブラリへの依存もありません。とにかくシンプルさが特徴の軽量フレームワークです。
フレームワークの構造を把握しやすいので、学習用の教材としても人気があります。
Pyramid
Pyramidは柔軟性が高く、小規模から大規模まで幅広く対応できるのが特徴です。フルスタックなDjangoとは違い、モデルやテンプレートを扱うために自分で各種ライブラリを組み合わせる必要があります。
フレームワークからの押し付けがないPyramidは、自分で好みのライブラリを選択して使いたいユーザーからの支持が厚いです。