Djangoとは
Djangoの特徴は、公式ドキュメントで次のように紹介されています。
Ridiculously fast.
Djangoは、開発者ができるだけ早くアプリケーションを完成できるように設計されています。
Fully loaded.
Djangoは、Web開発において共通したタスクを扱うための機能を多数含んでいます。たとえば、認証やコンテンツ管理、サイトマップ、RSSフィードなど多くの機能を細かい設定なしにすぐに使うことができます。
Reassuringly secure.
Djangoは、セキュリティをきちんと担保しており、SQLインジェクションやXSS、CSRF、クリックジャックといった多くのよくあるセキュリティ上の間違いから開発者を守ってくれます。たとえばDjangoの認証機能は、ユーザーのアカウントとパスワードを安全に運用するやり方を提供してくれます。
Exceedingly scalable.
世界的に有名なWebサイトでも、大量のトラフィックをさばくため、すばやく柔軟にスケールできるDjangoを使用しています。
Incredibly versatile.
CMSからSNSや科学技術計算プラットフォームまでさまざまな種類のアプリケーションを構築するために、企業や政府機関がDjangoを使っています。
このように開発者はDjangoをインストールするだけで、ほかのライブラリをインストールしたり、その設定に悩むことなく、迅速に開発を進めていくことができます。このフルスタックさこそが、先ほど紹介したほかのフレームワークとは違ったDjangoの大きな魅力となっています。
より詳しくDjangoの特徴を知りたいという方は、公式ドキュメントのDesign philosophiesを一読することをお勧めします。Djangoの設計思想が数多くまとめられています。
環境構築
Pythonのインストール
本連載では執筆時最新であるPython 3.6.3で進めていきます。
$ python3 -V Python 3.6.3
ここではPython自体のインストールについては省略します。もし日本語の解説が必要であれば、python.jpの環境構築ガイドやPython Boot Campのテキストを参照するとよいでしょう。
仮想環境構築
プロジェクトごとに隔離された環境で作業していくために、システムデフォルトのPython環境を使うのではなく仮想環境を作成しましょう。
ここではPython3系標準であるvenvモジュールを使います。venvとはPython2系でデファクトスタンダードとなっていたvirtualenvを標準でサポートしたものと考えてもらって問題ありません。
$ python3 -m venv env $ ls env/
最後の引数には作成する環境の名前を指定します。上記のように実行すると、envというディレクトリが作成されます。
仮想環境が作成できたら、この仮想環境を有効化(activate)します。ただし、LinuxやmacOSと、Windowsでは有効化の方法が異なります。
$ source env/bin/activate (env) $
> env¥Scripts¥activate.bat (env) >
仮想環境を有効化できたら、さっそくDjangoをインストールしてみましょう。
(env) $ pip install django Collecting django Downloading Django-1.11.6-py2.py3-none-any.whl (6.9MB) 100% |████████████████████████████████| 7.0MB 7.8MB/s Collecting pytz (from django) Downloading pytz-2017.2-py2.py3-none-any.whl (484kB) 100% |████████████████████████████████| 491kB 5.2MB/s Installing collected packages: pytz, django Successfully installed django-1.11.6 pytz-2017.2 (env) $ python -m django --version 1.11.6
上記のように、Djangoのバージョン番号が表示されればOKです。本連載では執筆時最新であるDjango 1.11.6で進めていきます。
もし別のプロジェクトの開発などでこの仮想環境から抜けたい場合は、無効化(deactivate)を行います。
(env) $ deactivate $ python3 >>> import django Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'django'