Django Sprint #1 環境構築


- [Django Sprint #0 イントロダクション](https://qiita.com/tmgauss/private/a0dbc8b90fd5c95732af)
- [Django Sprint #1 環境構築](https://qiita.com/tmgauss/private/7e07b572dc6913475f86)
- [Django Sprint #2 新規プロジェクトのスタート](https://qiita.com/tmgauss/private/96c74381b52da4679d19)
- [Django Sprint #3 ユーザーモデルのカスタマイズ](https://qiita.com/tmgauss/private/b8edaf0da8cb8c22b1b5)
- [Django Sprint #4 トップページの作成](https://qiita.com/tmgauss/private/889793b2d7c6c89d6863)
- [Django Sprint #5 汎用ビューとCRUD 前編](https://qiita.com/tmgauss/private/0664cb98ca95e9737091)
- [Django Sprint #6 汎用ビューとCRUD 後編](https://qiita.com/tmgauss/private/96613b26dc0eea28d3c6)


## 目次
1. 開発に必要なもの
2. Git & GitHub
3. Docker

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

- エディタ
- ターミナル（コマンドプロンプト）
- ブラウザ

の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)

#### ターミナル（コマンドプロンプト）
ターミナル（コマンドプロンプト）を通じて、命令を入力し、それをコンピュータが実行します。

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

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

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

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

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

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

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

#### ブラウザ
実際にどのように機能するか確かめてみるところです。例えば、Google Chrome、Microsoft edge、Safari、Firefox、Operaなどがあります。好きなものを使っていただいて構いません。


## 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のインストール
Mac OS / Windows ともに以下のリンクからダウンロードしてください。

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

**tips**: もし上手くいかない場合は、パスが通っていない場合があります。

```terminal
$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
```


#### 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の場合は[別記事](https://qiita.com/Chrg/private/e3a221966c7efa455e68)を参照してください。）
1. [Docker Hub](https://hub.docker.com/) でアカウント作成
2. [Docker Desktop](https://www.docker.com/products/docker-desktop) をインストール
3. ターミナル上で Docker でログイン

```terminal
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:
```


## 参照

- [Django Sprint #0 イントロダクション](https://qiita.com/tmgauss/private/a0dbc8b90fd5c95732af)
- [Django Sprint #1 環境構築](https://qiita.com/tmgauss/private/7e07b572dc6913475f86)
- [Django Sprint #2 新規プロジェクトのスタート](https://qiita.com/tmgauss/private/96c74381b52da4679d19)
- [Django Sprint #3 ユーザーモデルのカスタマイズ](https://qiita.com/tmgauss/private/b8edaf0da8cb8c22b1b5)
- [Django Sprint #4 トップページの作成](https://qiita.com/tmgauss/private/889793b2d7c6c89d6863)
- [Django Sprint #5 汎用ビューとCRUD 前編](https://qiita.com/tmgauss/private/0664cb98ca95e9737091)
- [Django Sprint #6 汎用ビューとCRUD 後編](https://qiita.com/tmgauss/private/96613b26dc0eea28d3c6)
- [Django Sprint Appendix Docker関連](https://qiita.com/tmgauss/private/bf3545d17c7271ed4fcb)
- [Django Sprint Appendix 各種実装まとめ](https://qiita.com/tmgauss/private/f92044b346825b812121)
- [Django Sprint Appendix モデルとデータベース](https://qiita.com/tmgauss/private/5e882e71100b798209d8)
- [Django+PostgreSQLのアプリケーションをAWSのElastic Beanstalkにデプロイする (UTokyo Project Sprint 用)](https://qiita.com/Chrg/private/d0c6fa829040613d1bb6)
- [Django+MySQLのアプリケーションをAWSのElastic Beanstalkにデプロイする (UTokyo Project Sprint 用)](https://qiita.com/yulingo-ringo/private/5c2be0a31636c33565f1)