😊

Djangoの学習ロードマップ

2021/04/28に公開1

ビフォーDjango(Djangoに至るまで)

Webアプリケーションを初めて学ぶという場合は、
Djangoをはじめとしたwebアプリケーションを学習する前にいわゆる「予備知識」あるいは「前提知識」を身につける必要がある。
また、Python未経験の方であれば、Django学習のスタート、地点に立つためにPythonの読み書きが一通りできるレベルのスキルが必要になる。

学習ロードマップ
Webアプリケーションフレームワーク、及びPythonの基礎を取得するために必要と思われる「Web技術」「データベース」「インフラ」「Python」の知識やスキル。

学習方針

・書籍を読む
・オンラインチュートリアルを読む(非公式のものも含む)
・ブログ記事を読む
・プログラミングしながら学べる学習サービスで学ぶ
・動画学習サービスで学ぶ
・勉強会に参加する

・若い人ほど、ブログで学習をする
・若い人ほど、プログラミング学習サービスで学習する。

経験がある人は二次情報を見ない(一次情報を当たる)という傾向がある。
効率から言えば、一次情報に当たる方が良いのでしょうが、経験が浅い人からすると最初は何がわからないかもわからない状態なので、「〇〇とは」系の簡単なブログ記事で全体像や雰囲気をざっくりとつかむところから入るのが良い。

アフター Django

難しいポイントの第1、2位は
「全体像」と「デプロイ」

最近リニューアルした 新バージョンの Django Girls チュートリアルのデプロイ では PythonAnywhere というよりシンプルな環境を使うように改良されているので、つまづくことはだいぶ少なくなっていると思います *6。一度諦めていた方もぜひ再チャレンジを。

ハマりどころは以下のポイント
・「全体像」「デプロイ」「ビュー」「ユニットテスト」「静的ファイル」
ビューやユニットテストについては、Djangoが用意してくれているクラスを継承して簡単に書ける反面、何をオーバーライドして使えば良いかがブラックボックスになっていてわかりづらいという点がハマりどころになっているのではないかと想像する。
この辺りは現時点ではまとまった良い情報がほとんどなく「ソースコードを読めばわかる」的な側面もある。

そのほか、上の度数分布表を、見ると経験が「1〜3年」のグループでは「フォーム」「静的ファイル」「ユニットファイル」が多くなっていて本格的に使い始めている感じがするなどDjangoの経験年数によってハマりどころが変化しているところや、セットで利用されていることが多いからでしょうか。
フォームとテンプレートのハマり度に相関があったのは非常に興味深かったです。

学習ロードマップ
以上のアンケートと私の経験を踏まえて、Djangoについては、このような学習ロードマップを提案してみる

Django

(最低限の基礎知識)
[全体像]
・アーキテクチャ
・用語
・プロジェクト構成
[サンプルコードを使って理解]
・プロジェクトの作成
・マイグレーション
・runsever
・管理画面
・アプリケーション追加

(プロレベルの基礎知識)
[コンポーネントの仕組み]
・モデル設計
・汎用ビューの活用
・適切なバリデーション
・テンプレート
[ユーザー周りの機能理解]
・ユーザーモデル
・セッション
・認証周りの機能
・ソーシャル連携認証
[テスト]
・ユニットテスト、デバッグ
[Djangoパッケージ挿入]
[静的ファイル・メディアファイル]
・各種設定
・ファイルアップロード
[Rest APIの基礎知識]
・REST API

(プロレベルの応用知識)
[機能拡張]
・自作テンプレート・フィルタ
・自作ミドルウェア
[設計・ベストプラクティス]
・パーミッション
・アプリケーション分割
・ファットモデル・ビュー対策
[デプロイ]
・ローカルと本番環境の区分け
・Herokuへのデプロイ
・VPS・クラウドへのデプロイ
[セキュリティ]
・各種セキュリティ対策
[高速化]
キャッシュ
[REST framework]
・フロントエンドFWとの連携
・Vue.js AngularJSなど

学習方針
真っ先に全体像を把握するところから始める。

フルスタックであるDjangoがカバーしている範囲を見極めることや、機能単位で分離している構成要素(コンポーネント)同士のつながりを把握することが重要であると考えるから。

全体像を把握した後は、簡単なDjangoのプロジェクトのサンプルを作成lして動かすのが良い。
Djangoには、プロジェクトの雛形を作るためのコマンド(startproject)や簡易的なwebサーバを実行するコマンド(sunserver)があらかじめ用意されている
ため、導入部分をチュートリアル形式で学ぶというスタイルとの相性が良い。

そして、「Djangoはチュートリアルで十分」という意見も多く出るくらい、Djangoは非常にチュートリアルが充実している。

Django Girls チュートリアル(超初心者向け)
Django 公式チュートリアル
Python Django入門 (1500いいねされている有名 Qiita 記事)
DjangoBrothers チュートリアル(新しめの実践的なチュートリアル)

などが挙げられる。
その中でも「Django公式チュートリアル」から入る初学者の方が多いと思うが、少し注意が必要。
というもの公式チュートリアルには図が一切なく。、全体像が把握しづらい。あと、大事なところをしれっとすっ飛ばしたり、リンクで逃げて説明していなかったり少し不親切なところも散見される。従って初学者・初級者向けには少しわかりずらいかもしてない

ちなみにDjango公式チュートリアルは完全に日本語翻訳がされているが、リンクをたどった先がほとんど英語のままになっていることも多い。(ドキュメント全体の3~4割しか翻訳されていない)
(特に詳細レベルの内容について翻訳されていないものが多い)

おすすめは、「Django Girlsチュートリアル」
インターネットの仕組みやコマンドライン使い方からHTMLやCSSなど基礎的な話についてもカバー。
また、デプロイ方法やそれに付随するGitの習得についても網羅されている。

次のレベルとなるプロレベルの基礎知識としては、各コンポーネントの詳細な使い方、Djangoで特に充実しているユーザー周りの機能について把握しておく必要がある。
本格的に仕事で使う場合にはユニットテストの書き方についても理解しておく必要がある。
「Djangoパッケージ」は開発効率を格段に向上させるので、積極的に導入したいところ。
また、個人的にハマりポイントが多いと感じている「静的ファイル・メディアファイル」についても必要になるケースが多いため、正しい知識をインプットしておく。

Discussion

waddy_uwaddy_u

トピック名修正の検討をお願いします!
dhango->django