Django Sprint #1 環境構築 (Windows向け)

この記事はWindowsユーザー向けです。Mac OSの方は[Django Sprint #1 環境構築](https://qiita.com/tmgauss/private/7e07b572dc6913475f86)へ。
## 目次
1. [開発に必要なもの](#開発に必要なもの)
2. [Git & GitHub](#git--github)
3. [Docker](#docker)

## 開発に必要なもの
実際にコード（スクリプト）を書く上で必要になるのは

- エディタ
- コマンドプロンプト (or Powershell)
- ブラウザ

の3つ（またはそれに類するもの）です。順にこれらがどのようなものなのか見ていきましょう。

#### エディタ
実際にコード（スクリプト）を書く場所です。大きく分けて

- 他の言語でも使える汎用的なもの
- 各言語専用のもの（統合開発環境；IDE）

の2種類があります。前者としてはVSCodeやAtom、後者としてはPyCharmなどがあります。

ここではPyCharmをおすすめします。具体的な理由はここでは割愛しますが、Pythonに特化している分、非常に楽になります。

（参照記事）
[『最強のPython統合開発環境PyCharm』](https://qiita.com/yamionp/items/f88d50da8d6b548fc44c)
[『最強のPython開発環境 PyCharmのすゝめ』](https://qiita.com/pashango2/items/de342abc10722ed7a569)

東京大学及び大学院の学生（その他学生も）ならPyCharm Professionalが無料で使えます。

1. [JetBrainsのアカウント発行とライセンス取得](https://blog.jetbrains.com/jp/2019/08/22/2105)
2. [PyCharm Professionalをダウンロード](https://www.jetbrains.com/ja-jp/pycharm/download/#section=mac)

#### コマンドプロンプト (or Powershell)
WindowsではコマンドプロンプトまたはPowershellを通じて、命令を入力すれば、それをコンピュータが実行します。

これ以降使用するのはコマンドプロンプトでもPowershellでも構いません。また、Gitをすでに導入済みの場合はGit Bashを利用しても構いません。

Mac OSではターミナル、Windowsではコマンドプロンプト (or Powershell)と呼ばれ、命令の書式が異なります。これ以降では特に断りのない限り、Powershellでの実行を想定しています。もしターミナルとコマンドプロンプトの対応を見たい方は

- [『ターミナルvsコマンドプロンプト 主要13コマンド早見表』](https://qiita.com/eagle-ar/items/0fd016b5dc70b4e5fdd0)

を参照しつつ、Googleで各自調べてください。

また、ターミナルの使い方を学びたい方は

- [Progate | Command Line 基礎編](https://prog-8.com/lessons/commandline/study/1)

をおすすめしておきます。

なお、多くのエディタ上でターミナル環境を開けるので、各自調べてみると良いと思います。

#### ブラウザ
実際にどのように機能するか確かめてみるところです。例えば、Google Chrome、Firefox、Operaなどがあります。Google Chrome、もしくはFirefoxを利用してください。**Microsoft Edgeでは正常にアクセスできません。**


## Git & GitHub
Gitとはバージョン管理の手法のひとつで、チーム開発でよく使われています。例えば、チームのメンバーで同じファイルを編集してしまった場合、通常のクラウド（Googleドライブなど）ではどちらかを採用し、どちらかを棄却しなければなりません。しかし、Git（とその関連サービス）を使えば、その問題にうまく対処することができます。
Gitについて詳しく知りたい人、学びたい人は、

- [『サル先生のGit入門』](https://backlog.com/ja/git-tutorial/)
- [Wikipedia | Git](https://ja.wikipedia.org/wiki/Git)
- [Progate | Git](https://prog-8.com/languages/git)

を参照してください。

そのGitを利用して、コードをクラウド上で管理するサービスがよく用いられます。代表的にはGitHub、GitLab、Bitbucketなどがあります。ほとんどのプログラマーがGitHubアカウントを持っていると言っても過言ではありません。

本チュートリアルはGit及びGitHubを採用しますが、好きなものをチームで決めれば良いです。

#### Gitのインストール
以下のリンクからダウンロードしてください。

- [git-scm.com](https://git-scm.com/)

#### GitHubでのアカウント作成
GitHubで各自アカウントを作成してください。

- [GitHub](https://github.co.jp/)


## Docker

#### 仮想環境
仮想環境とは実際のハードウェア、デバイスの環境とは別に仮想的に作られた開発環境を意味します。簡単に言うと「パソコンの中に仮想パソコンを起動する」イメージです。

仮想環境を使うメリットには次のようなものがあります。

- デバイスやOS、インストールされた言語などに依存しない環境構築
- デバイスやOS、インストールされた言語などをチーム内で共通化することが容易
- 慣れると環境構築がラク

しかし、以下のようなデメリットもあります。

- 一から書くと面倒。構築にかなりの時間がかかることも。
- 重い。容量を圧迫する。

このような議論を踏まえた上で、本チュートリアルではDockerという仮想環境構築サービスを使用したいと思います。

#### Dockerとは？
Dockerとは仮想環境をコンテナのようなもので実現するサービスです。Dockerについて初めて学びたい人は下の環境構築を終えた上で

- [米国データサイエンティストのブログ ｜ Docker超入門（全7回）](https://datawokagaku.com/whatisdocker/)

を一通りやってみることをおすすめします。また、```dockerfile``` ```docker-compose``` ```docker image``` などにいまいちピンときていない方は

- [『【図解】Dockerの全体像を理解する -前編-』](https://qiita.com/etaroid/items/b1024c7d200a75b992fc)
- [『【図解】Dockerの全体像を理解する -中編-』](https://qiita.com/etaroid/items/88ec3a0e2d80d7cdf87a)
- [『【図解】Dockerの全体像を理解する -後編-』](https://qiita.com/etaroid/items/40106f13d47bfcbc2572)

この記事を参照してください。

### Docker環境構築
まず、[設定]→[システム]→[バージョン情報]と開き、Windowsの仕様>エディションで、自分のWindowsのエディションを確認してください。

#### Windows 10 Home の場合
ほとんどの人がこれに該当すると思いますが、このエディションの場合Dockerは利用できません。ただし、Docker Toolboxというものを代わりに利用します。これ以降しばしばDockerとDocker Toolboxでは違いが現れます。[Django Sprint #3 ユーザーモデルのカスタマイズ](https://qiita.com/tmgauss/private/b8edaf0da8cb8c22b1b5)以降で解決できない問題が出てきた場合はその違いが原因である可能性も考えてください。その違いが原因である場合はDockerを使っている人(例えばMacを利用する友人)に聞いても解決しないことがあります。
Docker Toolboxの導入方法は、
- [『windows 10 home で docker を導入するメモ』](https://qiita.com/idani/items/fb7681d79eeb48c05144)

を参考に行ってください。ただし、記事が少し古い関係でダウンロードのセクションは相違があるようなので、[GitHub | docker / toolbox](https://github.com/docker/toolbox/releases)の```DockerToolbox-19.03.1.exe```をダウンロードしてください。

#### Windows 10 Proffesional / Enterprise の場合
Macの人たちと同じく、Dockerを利用できます。基本的には
- [【初心者】Docker for Windowsをインストールする方法](https://lab.sonicmoov.com/development/install-docker-windows/)
を参考にして導入してください。

1. [このページ](https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v#enable-the-hyper-v-role-through-settings)を参考にしてHyper-Vを有効化
2. [Docker Hub](https://hub.docker.com/) でアカウント作成
3. [Docker Desktop](https://www.docker.com/products/docker-desktop) をインストール

## 参照
### 次の記事
#### Windows 10 Home の場合
[Django Sprint #2 新規プロジェクトのスタート (Docker Toolbox向け)](https://qiita.com/Chrg/private/4c008ca01bc5341408d7)
#### Windows 10 Proffesional / Enterprise の場合
[Django Sprint #2 新規プロジェクトのスタート](https://qiita.com/tmgauss/private/96c74381b52da4679d19)

### 前の記事
[Django Sprint #0 イントロダクション](https://qiita.com/tmgauss/private/a0dbc8b90fd5c95732af)