PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（１）【環境構築編】

# 解説記事の構成

|No.|タイトル||
|:--:|:--|:--:|
|1|[PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（１）【環境構築編】](http://qiita.com/carat_yoshizaki/items/f3c79e38b802c7fc8863)|←|
|2|[PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（２）【プロジェクト作成編】] (http://qiita.com/carat_yoshizaki/items/926f702198bdfe8c6bd2)||
|3|[PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（３）【アプリケーション作成・DB設定編】] (http://qiita.com/carat_yoshizaki/items/c9a5299b77b99ff07e4a)||
|4|[PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（４）【ルーティング設定・MTVデザインパターン入門編】](http://qiita.com/carat_yoshizaki/items/fbd235008d7484089270)||
|5|[PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（５）【Django shellでDB操作入門編】](http://qiita.com/carat_yoshizaki/items/8c57144dfd37e005fb17#_reference-8f82e1176420484c2fdd)||
|6|[PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（６）【MTVデザインパターン完成編】](http://qiita.com/carat_yoshizaki/items/f0b4f7d7fa3899f2d424)||



# はじめに


[![logo_horizontal.png](https://qiita-image-store.s3.amazonaws.com/0/130181/be63b003-0dfa-e1c1-9282-ca12b02f00a4.png)](http://www.kikagaku.co.jp/)


この記事は、すでにPythonやRubyといったプログラミング言語に触れたことはあるが、Webアプリケーションは作ったことがない、もしくはDjangoには触れたことがないといった方を対象にしています。

Webアプリケーションと調べると、PHPやRubyがよく出てくるのですが、機械学習など複雑な数学的演算を行う場合にはやはりPythonが優れていると感じます。
以前、Ruby on Railsでアプリケーションを作成し、数学的な計算の部分はR言語で組み込むといったことをしたことがありますが、言語間を繋ぐパイプを構築するにも一手間必要でした。
そういった点で、色々な数学的なトリックを含ませたWebアプリケーションを作成する際にはPythonをオススメします。

ただ、PHPやRubyのWebアプリケーションと比較すると、PythonのWebアプリケーションは参考文献が不足しているように感じます。
PythonでのWebアプリケーション作成を最初から最後まで易しく、そして長くなりすぎない程度で解説していきます。

今回、Webアプリケーションのフレームワークには[Django](https://www.djangoproject.com/)を使用します。
Django以外にもBottleやFlaskなど軽量かつシンプルなフレームワークもあるのですが、Ruby on Railsのように、覚えれば実践的なアプリケーションでも耐えうるWebフレームワークであって欲しいため、Ruby on RailsのPython版（と思っている）のDjangoを選択しました。
Djangoの良さについてはこちらをご覧下さい。
[【5分でわかる】Python、WEBフレームワーク「Django」とは](http://www.sejuku.net/blog/9014)

Djangoを使うことができれば、BottleやFlaskの習得も容易かと思われますが、恐らく逆は難しいかと思います。
初心者に易しいとは、解説が易しいと言うよりも、今後使う上で色々なことが吸収しやすいスタンダードを知るということだと思っていますので、そういう点でDjangoはPythonのWebアプリケーションのフレームワークとしてはうってつけではないでしょうか。

解説の部分はこちら側で極力易しくまとめていきますので、ご安心ください。

#### ご協力お願いします！

こちらの記事が参考になった方は、こちらの記事に『**いいね**』をしていただけると嬉しいです。

## 著者紹介

![02.jpg](https://qiita-image-store.s3.amazonaws.com/0/130181/32a1e616-fe1c-6ffa-fa7f-430138c52b3d.jpeg)

私は[**株式会社キカガク**](http://www.kikagaku.co.jp/)代表取締役の[**吉崎亮介**](http://blog.kikagaku.co.jp/)と申します。
現在は『[**機械学習・人工知能 脱ブラックボックスセミナー**](http://www.kikagaku.co.jp/services/seminar/)』や『[**機械学習のオンライン家庭教師**](http://www.kikagaku.co.jp/services/online-tutor/)』を運営しております。

#### 略歴

|所属|学科・部署|研究内容|賞罰|
|:--|:--|:--|:--|
|舞鶴高専|電子制御工学科|画像処理（AR）を研究||
|舞鶴高専|電気・制御システム工学専攻|ロボット工学・システム制御・最適化を研究|
|京都大学大学院|情報学研究科（[加納研](http://human.sys.i.kyoto-u.ac.jp/)）|製造業に向けた機械学習の応用研究|ADCHEM2016最優秀論文賞、[化学工学会技術賞](http://www2.scej.org/sis/awards/)|
|株式会社SHIFT|社長室|人工知能によるソフトウェアテスト自動化の研究|[CEDEC2016登壇](http://cedec.cesa.or.jp/2016/session/PRD/12366.html)|
|株式会社Carat|取締役兼COO|最適な旅程提案アプリ（自然言語処理・最適化）||
|[株式会社キカガク](http://www.kikagaku.co.jp/)|代表取締役社長|[機械学習・人工知能セミナー](http://www.kikagaku.co.jp/services/seminar/)や[オンライン家庭教師](http://www.kikagaku.co.jp/services/online-tutor/)||

#### 株式会社キカガク

[![logo_horizontal.png](https://qiita-image-store.s3.amazonaws.com/0/130181/be63b003-0dfa-e1c1-9282-ca12b02f00a4.png)](http://www.kikagaku.co.jp/)

機械学習や人工知能の教育サービスを提供

・[**機械学習・人工知能 脱ブラックボックスセミナー**
![slide1-1.png](https://qiita-image-store.s3.amazonaws.com/0/130181/a84befae-a6c3-5666-d334-10b3ae4bb16c.png)](http://www.kikagaku.co.jp/services/seminar/)


・[**機械学習のオンライン家庭教師**
![slide2.png](https://qiita-image-store.s3.amazonaws.com/0/130181/be08a370-ecd3-5317-20f9-2e32bc2abf70.png)](http://www.kikagaku.co.jp/services/online-tutor/)
※ オンライン家庭教師のカリキュラムは[**こちら**](http://www.kikagaku.co.jp/services/online-tutor/curriculum/)


#### フォローお待ちしております

ビジネス目線の機械学習・人工知能の情報やオススメの参考書について発信しています。

代表取締役社長　吉崎 亮介
Twitter：[@yoshizaki_kkgk](https://twitter.com/yoshizaki_kkgk)
Facebook：[@ryosuke.yoshizaki](https://www.facebook.com/ryosuke.yoshizaki)
Blog：[キカガク代表のブログ](http://blog.kikagaku.co.jp/)


# 開発環境

* OS: Mac OS Sierra (10.12)
* Python 3.5.2

Macの環境を前提として話を進めていきます。

Pythonのバージョン確認は以下の通りです。

```bash
$ python3 --version
Python 3.5.2
```

マイナーバージョンによる大きな差は無いと思いますが、少なくともPython3系にしておくようにしてください。

# 仮想環境の構築

Webアプリケーションごとにシステム側の設定があり、ひとつのPCに色々なWebアプリケーションの設定を行うと、他のアプリケーションの設定に影響を受ける場合があります。
そこで、Pythonでは仮想環境(Virtual Environment)を導入し、各アプリケーション毎に独立した設定を持つようにしています。
この辺りは、Ruby on Railsを知っている方であれば、自然な感覚だと思います。

## ディレクトリの作成

まず、今のディレクトリ（Windowsでいうフォルダ）にWebアプリケーション用のフォルダを作成します。

```bash:アプリケーション用のディレクトリを作成後に移動
$ mkdir sample_app
$ cd sample_app
```

このディレクトリ内に ```myvenv``` というvirtualenv（仮想環境）を作成します。

```bash:仮想環境を作成
$ python3 -m venv myvenv
```

このコマンドが通ると、ディレクトリ内に ```myenv``` という名前のディレクトリが作成されていると思います。

```bash:仮想環境が作成されていることの確認
$ ls
myvenv
```

<img width="653" alt="スクリーンショット 2016-11-09 1.58.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/130181/142b8ae2-2f2a-0a5b-772a-02657ebbad0f.png">

このようなディレクトリ構成ができているでしょうか。


ちなみに、このディレクトリ構成を出力するには ```tree``` というコマンドを使用しており、[Homebrew](http://brew.sh/index_ja.html)経由で簡単にインストールすることができます。

```bash:treeのインストール
$ brew install tree
```

treeにより、ディレクトリ内容を表示します。
treeのオプションについては、[Qiita:treeコマンド](http://qiita.com/koshihikari/items/0906cd8e97b931714efe)をご覧下さい。

```bash:treeによりディレクトリ内容を確認
$ tree -L 1 myvenv
myvenv
  ├── bin
  ├── include
  ├── lib
  └── pyvenv.cfg
```


## 仮想環境の設定

仮想環境の設定を始める前に、作成した仮想環境のディレクトリに移動しておきましょう。

```bash:ディレクトリ移動
$ cd myenv
$ ls
bin   include   lib   pyvenv.cfg
```

今回は、[Django Girls](https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/django_installation/)のチュートリアルに合わせて、バージョン1.8を使用することにします。

```bash:Djangoのインストール
$ pip3 install django==1.8
Collecting django==1.8
  Downloading Django-1.8-py2.py3-none-any.whl (6.2MB)
    100% |████████████████████████████████| 6.2MB 111kB/s
Installing collected packages: django
      Successfully uninstalled Django-1.9.1
Successfully installed django-1.8
```

以上で、仮想環境の設定が完了しました。
非常に簡単ですね。

# 次回の解説記事
[PythonのWebアプリケーション（Django）を初心者にもわかりやすく解説（２）【プロジェクト作成編】] (http://qiita.com/carat_yoshizaki/items/926f702198bdfe8c6bd2)

# 参考文献

* [Django](https://www.djangoproject.com/)
* [Django Girls Tutorial](https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/django_installation/)
* [【5分でわかる】Python、WEBフレームワーク「Django」とは](http://www.sejuku.net/blog/9014)
* [Homebrew](http://brew.sh/index_ja.html)
* [Qiita:treeコマンド](http://qiita.com/koshihikari/items/0906cd8e97b931714efe)


# おわりに

機械学習を学ばれる際に、『**独学ではあの難解な数式やプログラミングがやっぱり難しい**』と感じた方は、ぜひ弊社のセミナーもしくはオンライン家庭教師でお待ちしております。

・[**機械学習・人工知能 脱ブラックボックスセミナー**
![slide1-1.png](https://qiita-image-store.s3.amazonaws.com/0/130181/a84befae-a6c3-5666-d334-10b3ae4bb16c.png)](http://www.kikagaku.co.jp/services/seminar/)


・[**機械学習のオンライン家庭教師**
![slide2.png](https://qiita-image-store.s3.amazonaws.com/0/130181/be08a370-ecd3-5317-20f9-2e32bc2abf70.png)](http://www.kikagaku.co.jp/services/online-tutor/)
※ オンライン家庭教師のカリキュラムは[**こちら**](http://www.kikagaku.co.jp/services/online-tutor/curriculum/)


#### フォローお待ちしております

ビジネス目線の機械学習・人工知能の情報やオススメの参考書について発信しています。

代表取締役社長　吉崎 亮介
Twitter：[@yoshizaki_kkgk](https://twitter.com/yoshizaki_kkgk)
Facebook：[@ryosuke.yoshizaki](https://www.facebook.com/ryosuke.yoshizaki)
Blog：[キカガク代表のブログ](http://blog.kikagaku.co.jp/)


最後までお読みいただき、ありがとうございました。