DjangoでWebアプリを作ってみる。【vol. 01 開発環境構築】

## イントロ

諸事情あり、DjangoでWebアプリを作ってみようと思い立ちました。
surface laptopで開発を試みて見ようかと思います。

そのため開発環境は、

- OS : Windows10
- CPU : i5
- メモリ : 8GB

です。

## 書いてる人はどんな人

 - 2011年から中堅SIerにてシステム開発している。
 - Javaを7年、C#を2年ほど使っている。
 - JavaならSpring Boot、C#はMVC5といったMVCモデルでの開発経験あり。
 - スクリプト言語は、5年前ぐらいにRuby on RailsでRubyを少し触ったぐらい。
 - Pythonは、名前は知っていたぐらい。

## Pythonをインストール

python Japanのサイトにパッケージのダウンロードから手順が記載されているので、
[こちら](https://www.python.jp/install/windows/index.html)を参考に進めます。
手順に従って問題なくインストール完了です。ここまで10分かからなかったぐらいです。

## インストールの確認

[Pythonの実行方法](https://www.python.jp/install/windows/py_launcher.html)に従って、コマンドラインで確認をします。

```
C:\Users\xxx>py
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
```

問題なく最新バージョンのPythonがインストールされているようです。
そのまま対話モードが実行されているので、お決まりのあれをやってみたいと思います。

```
>>> msg = "Hello World!"
>>> print(msg)
Hello World!
```

## Pipenvのインストール

こちらの記事を参考にさせていただきました。

 - [Pipenvを使ったPython開発まとめ](https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a)
 - [Python開発の"常識"として知っておきたい、Pipenv](https://qiita.com/toto1310/items/172220b28e646549f605)

Pythonのインストールも終わったし、IDEを探そうと思ったのですが、
その前に必要なものがあることに気が付きました。

>Pythonで開発するときに，プロジェクト毎のパッケージ管理や仮想環境の構築を簡単に自動で行ってくれるツール
>[Pipenvとは](https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a#pipenv%E3%81%A8%E3%81%AF)

とのこと。

JavaでいえばGradleやMaven、C#でいえば[NuGet](https://docs.microsoft.com/ja-jp/nuget/what-is-nuget)が該当しそうです。
参考にさせていただいた[こちら](https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a#pipenv%E3%81%A8%E3%81%AF)に沿って進めていきます。

※あとで気づきましたが、以下専用のフォルダを切ってそのなかで作業をした方が良さそうです。
後続でDjangoのプロジェクトを作成するのですが、すでに他のフォルダやファイルがある中で作ってしまうと、見通しが悪いです。

コマンドライン上で以下を実行します。

```
pip install pipenv
```

実行完了後に

```
You are using pip version 19.0.3, however version 19.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
```

が出てきました。

「もっと新しいバージョンがあるから更新したらどうだい？」

ということのようです。

 - [Pythonのpipのバージョンを9から10にアップグレードするとpipが使えなくなるので修正した](https://dhonuk.com/python/python-pip-ubuntu.html)
 - [pip install –upgrade pipでpipのバージョンを上げるとImportError: cannot import name mainで動かなくなった話](https://mem-archive.com/2018/10/28/post-996/)

少し確認するとversionを9から10に挙げた時に動かなくなったという話はありますが、
今回は、メジャーバージョンアップではなくマイナーバージョンアップなので、更新をしておきます。

```
python -m pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB)
    100% |████████████████████████████████| 1.4MB 191kB/s
Installing collected packages: pip
  Found existing installation: pip 19.0.3
    Uninstalling pip-19.0.3:
      Successfully uninstalled pip-19.0.3
Successfully installed pip-19.1.1
```

ということでpip-19.1.1になりました。

次に[仮想環境の作成](https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a#%E5%88%9D%E6%9C%9F%E5%8C%96)とのことなので進めます。

```
pipenv --python 3.7.3
Creating a virtualenv for this project…
Pipfile: C:\Users\xxx\Pipfile
Using C:/Users/xxx/AppData/Local/Programs/Python/Python37/python.exe (3.7.3) to create virtualenv…
[==  ] Creating virtual environment...Already using interpreter C:\Users\xxx\AppData\Local\Programs\Python\Python37\python.exe
Using base prefix 'C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python37'
New python executable in C:\Users\xxx\.virtualenvs\xxx-HlZFMEvt\Scripts\python.exe
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter C:/Users/xxx/AppData/Local/Programs/Python/Python37/python.exe

Successfully created virtual environment!
Virtualenv location: C:\Users\xxx\.virtualenvs\xxx-HlZFMEvt
Creating a Pipfile for this project…
```

そもそも仮想環境って？と気になったので[こちら](https://www.python.jp/install/windows/virtualenv.html)で確認をしました。
要するに「異なるバージョンのPythonやDjangoを使い分けたい場合に実行環境を分ける必要がある」ので、
仮想環境として用意する、ということのようです。

[パッケージのインストール](https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a#%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)は、必要に応じて進めればいいと思うのでDjangoのインストールに進みたいと思います。

## Djangoのインストール

こちらの記事を参考にさせていただきました。

 - [Windows10 Python3.7 VSCodeでのDjangoの開発環境を構築する](https://qiita.com/ktr11/items/29548540684b38b1535b#django%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

[Djangoインストール](https://qiita.com/ktr11/items/29548540684b38b1535b#django%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を進めます。

```
pip install django
Collecting django
  Downloading https://files.pythonhosted.org/packages/eb/4b/743d5008fc7432c714d753e1fc7ee56c6a776dc566cc6cfb4136d46cdcbb/Django-2.2.2-py3-none-any.whl (7.4MB)
     |████████████████████████████████| 7.5MB 211kB/s
Collecting sqlparse (from django)
  Downloading https://files.pythonhosted.org/packages/ef/53/900f7d2a54557c6a37886585a91336520e5539e3ae2423ff1102daf4f3a7/sqlparse-0.3.0-py2.py3-none-any.whl
Collecting pytz (from django)
  Downloading https://files.pythonhosted.org/packages/3d/73/fe30c2daaaa0713420d0382b16fbb761409f532c56bdcc514bf7b6262bb6/pytz-2019.1-py2.py3-none-any.whl (510kB)
     |████████████████████████████████| 512kB 211kB/s
Installing collected packages: sqlparse, pytz, django
Successfully installed django-2.2.2 pytz-2019.1 sqlparse-0.3.0
```

django-2.2.2がインストールされました。
そのままプロジェクトの作成をしたいと思います。

```
django-admin startproject firstproject
```

すぐ終わるので、

```
cd firstproject
```

で作成したプロジェクトに移動後に起動をさせます。

```
python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
June 22, 2019 - 14:22:02
Django version 2.2.2, using settings 'firstproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
```

http://127.0.0.1:8000/
で起動しているのでアクセスすると、無事「The install worked successfully! Congratulations!」が表示されました。

<img width="755" alt="django.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280384/98a9cedb-b248-02b4-cff4-9a336b422b8d.jpeg">

次回は、IDEの導入をしてみたいと思います。