Djangoの効率的な学習方法

こんにちは。プラットフォーム事業部のOです。
Djangoは、PythonでWebアプリケーションを開発するときによく使われるフレームワークです。名前は聞いたことがあっても、「何から学べばいいのだろう」と迷う方も多いのではないでしょうか。 本記事では、Djangoの学習方法を紹介します。

この記事は以下のターゲットを対象としています。

★5 Django の開発経験が 3 年以上。
★4 Django の開発経験が 1 年以上。
★3 WEB サイト開発経験あり。これから Django を学習します。
★2 Python 初級者。簡単なプログラムコードが書けます。
★1 プログラミング未経験。 

Djangoとは

Django(ジャンゴ)は、Pythonで作られたWebアプリケーションフレームワークです。
Webアプリを作る際には、さまざまなことを検討する必要がありますが、Djangoはよく使う機能が最初から用意されています。

  • データベースとのやり取り
  • ログイン機能
  • 管理画面
  • セキュリティ対策 など

Djangoを利用するメリット

Djangoを使う大きなメリットは「ぐっと楽に進められることです」ことです。

開発スピードが速い
Djangoには便利な機能が揃っています。有名なのが管理画面(admin)です。 モデルを定義して少し設定するだけで、データの追加・編集・削除ができる画面が自動で作られます。

ORMを利用すればSQLを書かなくていい
DjangoにはORMという仕組みがあり、Pythonのコードだけでデータベースを操作できます。

セキュリティ面も安心
ログイン機能やCSRF対策など、Webアプリでやらかしがちな部分もDjangoは標準で対策が用意されています。

Djangoの全体像

Django学習で大事なのは、まず全体の流れを理解することです。
DjangoはMVT(Model・View・Template)という考え方が採用されています。

  • Model:データベースの設計や操作を担当する
  • View:処理の中心となり、リクエストを受け取ってレスポンスを返す
  • Template:HTMLで画面を作る

公式チュートリアルから学ぶ

Djangoを学び始めるなら、まずは公式チュートリアルを活用するのがおすすめです。以下は、私がチュートリアルを終えた所感になります。

正直な感想
「思ったより情報量が多いな」というものでした。
Pythonに慣れていても、Webフレームワーク特有の考え方や構成に慣れていないと、一度では飲み込みきれない部分がありました。
ただ、Djangoがどういう思想で作られているのか、全体像はつかめた気がします。

やってみてよかったこと
チュートリアルを進める中で、Djangoの構成がなんとなく見えました。
models.py、views.py、templates、urls.pyなど、最初は役割がよく分からなかったファイルも、少しずつつながって理解できるようになりました。

特に、モデルを定義してマイグレーションを流すと、管理画面まで自動で使えるようになる流れから、Djangoの開発スピードの速さを感じられました。

admin が想像以上に便利
実際に触ってみると、かなり強力でした。
「簡単な管理画面ならこれで十分なのでは」と思う場面もあり、業務で使うイメージがしやすかったです。

公式ドキュメントに慣れられた
チュートリアル自体が公式ドキュメントなので、ページ構成や書き方に慣れることができたのはよかったと思います。 今後調べ物をするときも、公式をベースに探せそうだなという感覚を持てました。

少し困った点
「とりあえず書いて進む」感じがありました。
手順通りに進めれば動くのですが、「なぜこの設定が必要なのか」までは、あまり深く説明されない箇所もあります。 動いてはいるけれど、自分で一から書けと言われたら、まだ不安が残る部分もありました。

自分でWebアプリを作ってみる

チュートリアルを終えたら、自分で何か作ってみましょう。
おすすめは、ブログなどの小さなアプリです。
「考えて、調べて、直す」経験がDjango理解を深めてくれます。

まとめ

公式チュートリアルを終えた時点では、

  • Djangoの雰囲気は分かった
  • でも実務でガリガリ書けるわけではない

という状態でした。
ただ、何も分からない状態から入るよりは、業務でコードを読むハードルがかなり下がったと思います。

その後、自分でWebアプリを作ったことで、あいまいだったことも少しずつ分かるようになり、Djangoの理解が深まりました。

上記から、チュートリアル実施し、その後に 自分でWebアプリを作るというが、Djangoの効率的な学習方法ではないかと考えます。