Django未経験者に送るDjango入門ロードマップ

# これはなんのエントリですか?
<a href="https://www.djangoproject.com/">Django</a>に入門したくて躊躇している人を後押しするためのエントリ.
**Djangoそのものの詳細な解説はしません. Django入門者向けの学習ロードマップです.**
ご了承下さい.

## 1. 開発環境とpython仮想環境
まずは開発する土台を整えましょう.

### Pycharm(IDE)
あまりpython触った事がない, という人は<a href="https://www.jetbrains.com/pycharm/">Pycharm</a>が超おすすめ.
Community Editionは無料かつ十分な性能.

### Visual Studio Code(エディタ)
<a href="https://code.visualstudio.com/">Visual Studio Code</a>
プログラマ向け定番のエディタ. 
<a href="https://www.jetbrains.com/pycharm/">Pycharm</a>と比べて、.py/.html/.css/.jsファイルをどれも透過的に扱えるのが魅力.  
ただし, パッケージのインストールやビルド設定を自分で色々と用意する必要があるので, Djangoに少し慣れてきた段階で乗り換えるのが良いかも. 
<a href="https://qiita.com/nossey/items/6c1d900ef724f13ee193">こちら</a>にVisual Studio Codeを使った開発環境構築のエントリを追記しました.

### pythonの仮想環境設定
アプリケーションごとにインストールされているpythonパッケージを分離するために必要となります.
<a href="https://virtualenv.pypa.io/en/stable/">virtualenv</a>を使うのが普通だったようですが, 最近では<a href="http://pipenv-ja.readthedocs.io/ja/translate-ja/">pipenv</a>に移行しつつあるよう?です.

## 2. Webチュートリアル
まずは無料かつ手頃に学べるWebのチュートリアルから始めましょう :)

## 2.1. Django公式チュートリアル
何はともあれ, まずは<a href="https://docs.djangoproject.com/ja/2.0/intro/">公式チュートリアル</a>をオススメします.
polls(投票)アプリを通じて, 「へー, こんな構造で動いてんのね」というのを実感して頂ければ良いかと思います.
とっかかりとしては量も少なめなので, 是非ここからスタートしてください.

## 2.2. Django Girls(Web開発ガチ初心者向け)
ほんっとーにWebアプリガチ初心者向けの人には<a href="https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/">Django Girls</a>もオススメです.

「Webはどうやって動いているのか?」
「コマンドラインを使ってみよう!」という初歩的な部分から解説されており, ほんっとーにWeb初心者の人はDjango公式チュートリアルよりもこちらの方が易しくて読みやすいかも知れません.
Django公式チュートリアルが一通りこなせる方はDjangoGirlsまでやる必要はあまりないかと思いますが, 参考までに.

## 3. html/cssやpythonそのものの知識が不足していると思ったら
Djangoを触るうちに, 「...htmlとかpythonが全然分かってなかったな」となったら, 少し寄り道するのも手です.

### ドットインストール
<a href="https://dotinstall.com/">ドットインストール</a>
@nossey 一番推しのプログラミング入門サイト. 動画付きなので, 自分も一緒に動作確認出来る安心感がすごい.
入門と名をうってますが, プログラミング経験者でも, 未経験の言語/フレームワークを勉強したいと思った方はお世話になるでしょう.

### 留意事項
**「DjangoでWebアプリ作る」のが目標**なので, html/cssやpythonそのものにあまりのめりこむ必要も無いかと思います.
必要になったら必要な分だけ調べれば良いかと.

## 4. 書籍でDjangoを体系的に学ぶ
チュートリアルからさらに進もうとした時に, 日本語書籍が皆無なのがDjangoで困る部分ですね(汗)
なので, 最初に体系的な知識を得ようとするなら, まずはこの書籍を**超**おすすめします.

### Django for Beginners(洋書)
<a href="https://www.amazon.com/Django-Beginners-Learn-web-development/dp/1980377898/ref=sr_1_1?ie=UTF8&qid=1526727560&sr=8-1&keywords=django+for+beginners">Django for Begginers</a>

2018.5現在の最新バージョンである2.xをカバーしている本.
色々探してみても, バージョンが1.xの情報が多くて辟易させられること多かったのですが, この本なら安心です.
洋書ですが, 体系的かつ非常によくまとまっています. 
個人的な印象として, 難解な英語は無かったです.

polls(投票)アプリのチュートリアルではカバーしていないユーザ認証や, bootstrapで見た目を整えるための説明もあるので, 「おお, 結構良いの出来んじゃん」というモチベーションアップにも繋がります.
「とりあえず動くものを!」って言う人は, テストコード/メール通知の部分を飛ばしちゃって良いかもしれません.

polls(投票)アプリのチュートリアルが終わった方は, この書籍にチャレンジすることを強く推奨します.

### Two Scoops of Django 1.11: Best Practices for the Django Web Framework(洋書)
<a href="https://www.amazon.co.jp/Two-Scoops-Django-1-11-Practices-ebook/dp/B076D5FKFX/ref=sr_1_1?ie=UTF8&qid=1526753238&sr=8-1&keywords=two+scoops+of+django">Two Scoops of Django 1.11: Best Practices for the Django Web Framework</a>
Djangoのベストプラクティスが詰まった本.
...なんですが, これはDjangoに慣れてきた人向けの踏み込んだ内容なので, 初めのうちは気にしなくていいです.

とはいえ2.0でも役立つ情報が多いので, polls(投票)アプリと「Django for Beginners」を読了したあたりで手を出すのが良いと思います.

## 5. Djangoの参考サイト

「Django情報見つかんねぇ!」というケースも多いので, 2018.5 現在, 私がおすすめする参考サイトを4つ紹介します.

### naritoブログ
<a href="https://narito.ninja/">naritoブログ</a>
貴重な日本語のDjango情報が載ったブログ. 私も, いつもお世話になってます.

### 偏った言語信者の垂れ流し
<a href="https://tokibito.hatenablog.com/">偏った言語信者の垂れ流し</a>
python/Djangoのエントリ多数. githubにDjangoのサンプルコードをあげてくださってるので, 参考になるかと.

### simple is better than complex
<a href="https://simpleisbetterthancomplex.com/">simple is better than complex</a>
「Djangoで〇〇やってみた」系の記事が多数載っているサイト(英語).
入門向けの記事もありますが, Django for Beginnersを学んでいれば十分かと思います.

### Awesome Django(各種パッケージまとめ)
<a href="http://awesome-django.com/">Awesome Django</a>
Djangoで「あれやりたいなー」と思った時に見るサイト.
パッケージが諸々紹介されているので, やりたい事は大抵載っている印象.
最初からのめり込む必要は無いですが, 必要になったらお世話になるかと.

## さいごに
肝要なのは, **一度に色々とやりすぎないこと. 必要になったら徐々に取り組むこと.** 

例えば, 「<a href="http://www.django-rest-framework.org/">REST Framework</a>」は「Ajaxやりたいなー」となってから,「<a href="https://www.npmjs.com/">npm</a>」 「<a href="https://webpack.js.org/">Webpack</a>」や「<a href="https://jp.vuejs.org/index.html">Vue.js</a>」は「複雑になってきたクライアントサイド整備したいなー」となってから, **徐々に**勉強するのが良いかと思います.
一度にあれこれやろうとすると, 挫折の原因ですので...

Djangoは, 確かに日本語情報少なくて英語と向き合う必要があるのですが, だからといって「きっとロクに勉強できないだろうな」というのは杞憂かと思います.
このエントリが「Djangoに興味がある, でも日本語情報があまり出回ってなくて心配...」という方への一助になれば幸いです.

私もまだまだですので, 一緒に頑張りましょう :)