みんなのPython勉強会 #72 実践Django Masashi Shibata
株式会社 CyberAgent AI Lab Masashi SHIBATA c-bata c_bata_ ! " • CyberAgent Developer Experts (Python) • go-prompt, kube-prompt作者 • Optunaコミッター, Kubeflow/Katibレビュアー • Django, Gunicornコントリビューター • 著書:実践Django Pythonによる本格Web アプリケーション開発 (翔泳社) • 訳書:エキスパートPythonプログラミング 改訂2版 / 改訂3版 (KADOKAWA)
エキスパートPythonプログラミング 改訂 3版については、 @shimizukawa さんが このあと話すのでお楽しみに!
• タイトル:実践Django Pythonによる本格Webアプリケーション開発 • 出版社/発売日:翔泳社 2021/07/19より発売 • 主な対象読者 • Pythonがある程度書けて、簡単なWebアプリケーションの開発経験がある(言語やフ レームワークを問わない) • 他の本で解説されていないような踏み込んだ内容も比較的多く、類書に比べるとすこ し難しめの本になっています。 • 対象バージョン:Django 3.2 LTS, Python 3.9 実践Django
発売日から2週間半で増刷決定しました🙏 お買い上げくださった方ありがとうございます…!
今日話すこと 実践Djangoの構成や各章のこだわりポイントを紹介しつつ、 本書の読者に向けて、「これからどういう勉強の仕方・知識の積み 上げ方をしてほしいか」を自身の経験も交えつつお話します。
本書の構成と各章の読み方 こだわりポイント
1章がチュートリアルで、それ以降の章はトピック別の内容を扱っています。 • 2章 モデル定義とクエリ操作 • 3章 ビュー • 4章 テンプレートエンジン • 5章 フォーム • 6章 テスト • 7章 認証・認可 • 8章 Web API開発 (Django REST Framework) 本書の構成
本書の顔とも言える章 • 学生時代の自分が最も効率的にDjangoを 習得できるように設計 • ユニットテストの書き方および考え方を 一緒に解説する • 途中で飽きないボリューム • 本質的に重要じゃないところは楽をする (Bootstrap5の利用) 1章 チュートリアル
学生時代の自分が独学で最も苦労した内容が このDBまわりの勉強でした。 • Django公式ドキュメントでは詳しく扱われ ない • 独学もなかなか難しいトピックを多く扱う • Djangoユーザー以外にも広くおすすめした い内容を詰め込んでいます 2章 モデル定義とクエリ操作
ビューの基本とリクエストオブジェクト /レスポンスオブジェクトについて解説 • ビューは役割と呼び出しの流れを抑え ておきましょう • 2章とかに比べるとそれほど難しい内 容はありません • フレームワークをただ使うだけだと理 解が難しい機能があるので、そのあた りはHTTP/1.1の基礎知識とともに詳 しく解説を入れています。 3章 ビュー
正直、そこまで解説することがありません... • テンプレート上で複雑なロジックを持たせ ると、テストが難しくなるなど、一般的に あまり推奨されないことを覚えておいてく ださい • テンプレートタグやテンプレートフィル ターはライブラリ開発者などでなければ、 それほど出番はないと思います 4章 テンプレートエンジン
バリデーションや正規化、HTMLの生成 など多くの役割を持ったコンポーネント • ModelFormという簡単なフォームを作 るときにとても便利な機能を中心に解 説しています。 • リッチな画面を作ろうとするとJSを使 うことも近年は多いため、あまり複雑 な機能はあえて解説していません。 5章 フォーム
独学が難しいテスト戦略やテクニック について解説しています。 • どういうテストを書くべきかというの はなかなか説明が難しいのですが、筆 者の考え方をまとめました。 • どういうテストを書くべきではないか というのも知っておくべきで、いくつ かのアンチパターンを紹介しています • Django開発者に限らず読んでほしい 章となっています。 6章 テスト
Djangoにおいて最も複雑なトピックの1つ • 他の多くのフレームワークと違い、 Djangoにはユーザーモデルがフレーム ワーク側で定義されています • ユーザーモデルに乗っかる形で管理画面 を始めとする便利な機能が実装されてい るため、カスタマイズはやや大変です • 類書で解説されていないような注意点も 多く扱っているので、読者全員ぜひ読ん でほしい内容となっています。 7章 認証・認可
Djangoとあわせてよく利用されるDjango REST Frameworkの解説の章 • 公式ドキュメントのクオリティが高く、 正直あまり解説する余地がありません • 1章 チュートリアルで作成したアプリ ケーションにWeb APIを実装 • ページネーションやJWT、スロットリン グなど、公式ドキュメントでは十分に解 説されていないトピックを補足的に扱っ ています 8章 Web API開発
• 2-8章のどこにも該当しなかったトピッ クを扱いました • 気になるトピックがあれば辞書的に読ん でみてください 9章 ケース別レシピ集
• Djangoの開発経験が浅い方は1章からはじめてみてください • すでに利用経験がある方は、勉強したいトピックを選んで取り組んで みてください。 • 特に「2章 モデル定義とクエリ操作」や「6章 テスト」、「7章 認証 認可」には、Django中級者も含めて読者全員に読んでほしい内容が 多くつまっています。 本書の読み方まとめ
本書の読者やプロのWeb開発者となるために 勉強中の方に大事にしてほしいこと
独学だと勉強が難しいところはいっぱいある。 • ユニットテストをどうかけばいいのかがよくわからない • ユニットテストの書き方について調べると、出てきた例があまりにも簡単。結果が 自明すぎてテストを書く嬉しさも分からない。 • RDBのインデックスをどこに貼るべきか分からない。 • Djangoのドキュメントを見ても db_index オプションを指定するとインデックスが 貼れるということまでしか分からずどこにどう貼るべきか分からない。 学生時代に初めて開発のアルバイトで苦労したこと
自分もまだ(ギリギリ)20代中盤で今後のキャリアの選択肢もまだまだ広 いので、10年後や20年後に向けて知識を積み上げていきたい。 • 自分自身、学生時代はDjangoの開発アルバイト • → 就職してからはGoで動画の配信プロトコル/サーバー等を実装 • → 現在は研究チームに異動して、機械学習関連のOSS開発   (& 社内向けのシステムをDjangoで書いたり) • 表面的な理解で終わらせるのはもったいない 知識の積み上げることの重要性
どれもよく大事だよねと言われているかもしれませんが、Web開発について勉強 していると覚えることが多くて見落としがちな気がしています。 1. 言語やフレームワークに依存しない部分まで掘り下げる 例: ORMの使い方だけでなくSQLやインデックスチューニングを勉強する。Webフレー ムワークを実装してみる、コードを読んでみる。本書の解説でもセキュリティ周り の話などは「Djangoの実装はこうなっています」と一部紹介しています。 2. OSSのコードを読む、開発に参加する Web開発をやる上で、コードから学べることが本当に多い(と自分は思っています)。 業務で開発しているコードだけでなく、多くのプロジェクトのコードを読み開発に参加 してみる。 自分が意識してきたこと
• 今日紹介した各章の読み方を参考にぜひ読んでみてください! • 本書の中で紹介したコードはそのまま業務のシステム開発に使って もらって大丈夫です。 • 本書が対象としているレベル感の方はぜひ、知識が積み上がるような 勉強の仕方を意識して取り組んでみてください。 まとめ
THANK YOU ご静聴ありがとうございました

実践Djangoの読み方 - みんなのPython勉強会 #72