Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
チュートリアルの次へ・初心者向けDjangoの歩き方
Search
Chihiro SAKATOKU
August 22, 2017
Programming
2
4.5k
チュートリアルの次へ・初心者向けDjangoの歩き方
2017/8/22に開催された「第2回PythonのWebスタートアップを詳しく語る会」の発表資料です。
https://iridge.connpass.com/event/63822/
Chihiro SAKATOKU
August 22, 2017
Tweet
Share
Other Decks in Programming
See All in Programming
CSC307 Lecture 04
javiergs
PRO
0
620
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
140
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
6
2k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
これならできる!個人開発のすゝめ
tinykitten
PRO
0
150
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
180
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
3
670
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
610
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
350
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
4.9k
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
770
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
420
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.8k
Discover your Explorer Soul
emna__ayadi
2
1k
AI: The stuff that nobody shows you
jnunemaker
PRO
2
160
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
76
The Curious Case for Waylosing
cassininazir
0
200
How to make the Groovebox
asonas
2
1.9k
Optimizing for Happiness
mojombo
379
70k
WENDY [Excerpt]
tessaabrams
9
35k
Building AI with AI
inesmontani
PRO
1
620
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
1
350
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Transcript
チュートリアルの次へ 初心者向けDjangoの歩き方
お前、誰よ • 株式会社フンザ 酒徳千尋 • 自己紹介 ◦ Django歴 11年 ▪
Django 0.96のあたりから触っています。 ◦ 普段はチケットキャンプのサーバーサイドのエンジニアをしています。 ◦ 最近は中途面接、新卒・インターン面接等の仕事も多い。
よく聞かれる質問 • 初心者向けにおすすめの本はありますか? • 初心者向けに参考になるオープンソース・プロジェクトはありますか?
Djangoの良くないところ • 公式ドキュメントの構成が悪い。 • 公式ドキュメントの日本語訳が中途半端。
Djangoのよさ 1. メンテナンスしやすいアプリケーションを作る知見が多い。 2. ユニットテストが書きやすい。 3. 優れたURLルーティング機構。 4. 優れたテンプレートエンジン。 5.
優れたヴァリデーション機構。
メンテナンスしやすいアプリケーション • https://docs.djangoproject.com/en/1.11/misc/design-philosophies/ • Loose coupling ◦ モジュールは疎結合。 ◦ (例)
django.template は Jinja2 でも置き換え可能。 ◦ 再利用可能なモジュールを作るノウハウが容易に見つかる。 • Tight cohesion ◦ モジュールはそれ自体に必要なものが凝縮されている。 ◦ (例)django.template や django.db は他のモジュールやサードパーティーライブラリに依存しな い。 ◦ バージョンアップ地獄や予測不可能なエンバグに苦しめられることが少ない。
おすすめの オンラインチュートリアル
Django Girls チュートリアル • https://tutorial.djangogirls.org/en/ • おすすめ度:★★★★★ • Djangoチュートリアルの定番。公式のチュートリアルよりこちらを先にやるべき。 •
おすすめポイント ◦ スクリーンショットが豊富で公式チュートリアルより完成品のイメージがわきやすい。 ◦ macOSの場合とか、Linuxの場合とかのコマンド例が豊富で最初のところでハマりにくい。 ◦ django.formsの解説が含まれている。
Mozilla Django Tutorial • https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Tutorial_l ocal_library_website • おすすめ度:★★★★☆ • Mozillaが公開しているDjangoを使ったWebアプリケーション作成のチュートリア
ル。 • おすすめポイント ◦ Djangoの機能をフル活用してアプリケーションを作るという構成になっているので、このチュートリ アルだけである程度 Djangoの機能を網羅できる。 ◦ 各トピックごとに公式ドキュメントやその他のサイトへのリンクが含まれているので、気になった機能 をさらに突っ込んで調べてみるということの出発点としてもよい。
Tasks with Django and Celery • https://realpython.com/blog/python/asynchronous-tasks-with-django-and-celer y/ • おすすめ度:★★★☆☆
• CeleryはDjangoとは独立したライブラリですが、PythonでWebアプリケーションを 開発する上で欠くことができないコンポーネントです。 • おすすめポイント ◦ CeleryとDjangoのチュートリアルとして非常にコンパクトにまとまっている。 ◦ ちゃんと動くサンプルコードが github上に公開されている。 ◦ supervisorを使ったデプロイ方法まで公開している。
pyenvが必要かどうかフローチャート • http://qiita.com/shibukawa/items/0daab479a2fd2cb8a0e7 • おすすめ度:★★★★★ • 呼吸するようにvenvを使えないと素人と見られます。 • おすすめポイント ◦
pyenvを全否定するのではなく、必要かどうかということにフォーカスを当てているので、 venv/virtualenvだけでとりあえず十分ということがわかるはず。 ◦ この記事を読んだら、 virtualenvwrapper も入れましょう。
必読のDjango公式ドキュメント
Forms • https://docs.djangoproject.com/en/1.11/topics/forms/ • おすすめ度:★★★★★ • おすすめポイント ◦ django.formsはDjangoの最も優れたコンポーネントの一つなので、このページだけは目を通してお きましょう。
How to use Django with Gunicorn/uWSGI • https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/gunicorn/ • https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/uwsgi/
• おすすめ度:★★★☆☆ • おすすめポイント ◦ 実際にDjangoアプリケーションを運用するとなったときにどうすべきか?という疑問に対する入り口 となります。 ◦ 現実世界ではGunicornで動いているDjangoアプリケーションとuWSGIで動いているDjangoアプリ ケーションのどちらかしかないと言って過言ではありません。
おすすめの書籍
【洋書】Two Scoops of Django • おすすめ度:★★☆☆☆ • 洋書を含めたDjango本の代表格としてよく目にする 本。 •
おすすめポイント ◦ ベストプラクティスに関してしっかり書いてある。 ◦ Django REST Frameworkといった他の書籍で扱っていない トピックに触れている。 • おすすめしないポイント ◦ 長い。 ◦ サンプルコードの公開の仕方がいまいち。
【洋書】High Performance Django • おすすめ度:★★☆☆☆ • パフォーマンスのよいDjangoアプリケーションを開発す るにはどうするべきか?ということに焦点をあてた本で す。 •
おすすめポイント ◦ DjangoのORMのパフォーマンス面でのベストプラクティスに関 しては一読の価値がある。 ◦ Varnishやnginxと組み合わせた運用方法など、この書籍にしか ないトピックもある。 • おすすめしないポイント ◦ 初心者向けではない。
【洋書】Lightweight Django • おすすめ度:★★☆☆☆ • Lightweightという名前通りにコンパクトにまとまった書 籍。Backbone.jsやWebSocketを使ったアプリケーション を題材にしているのが特徴です。 • おすすめポイント
◦ SPAやWebSocketといった他にないトピックを扱っている。 • おすすめしないポイント ◦ JavaScriptやTornadoといったDjangoとは無関係なトピックの解説 が多い。
【洋書】Test-Drive Development with Python • おすすめ度:★★★☆☆ • Djangoでテスト駆動開発を行うということに焦点をあ てた書籍。 •
おすすめポイント ◦ Djangoを使うとテスト駆動開発を行いやすいのを実感でき る。 ◦ Pythonでのテスト駆動開発のノウハウが豊富。 • おすすめしないポイント ◦ 長い。 ◦ テストを書きつつアプリケーション開発を進めるという流れに なっているので、さくさく読めるという感じではないかもしれな い。
【和書】開発のプロが教える標準Django完全解説 • おすすめ度:★☆☆☆☆ • Django 1.0リリース当時の日本の第一人者たちによっ て書かれた書籍。 • おすすめポイント ◦
Djangoでよく使う一通りの機能をポイントを押さえて解説してい る。 • おすすめしないポイント ◦ 最新のDjangoとは互換性がないコードが多い。
【和書】Django×Python • おすすめ度:★☆☆☆☆ • おすすめポイント ◦ マイクロブログを作るという題材で解説されているので実践的。 • おすすめしないポイント ◦
最新のDjangoとは互換性がないと思われる。
参考になるオープンソースプロジェクト
django-wakawaka • https://github.com/bartTC/django-wakawaka • おすすめ度:★★★★☆ • おすすめポイント ◦ 非常にコンパクトで、 Djangoアプリケーションの雰囲気をつかみやすい。
◦ includeして別のアプリケーションから使うということを想定しているので、再利用可能なモジュール の例として参考になる。 ◦ これをベースに勉強がてら機能を追加してみるといったことにも使いやすい。
Mezzanine • http://mezzanine.jupo.org/ • おすすめ度:★★★★★ • Djangoを使ったCMSで最も出来がよいアプリケーションです。 • おすすめポイント ◦
動作させやすく、かつコードの品質が高いので、「これと同じことをするにはどういうコードを書けば いいのだろう?」ということを調べる手がかりとして最適。 ◦ モジュール構成がセンスがよい。
Satchmo • https://bitbucket.org/chris1610/satchmo/src • おすすめ度:★★☆☆☆ • Djangoをeコマースアプリケーション。 • おすすめポイント ◦
Djangoを使ったeコマースアプリケーションの事例として参考になる。 ◦ モジュール構成がセンスがよい。 • おすすめしないポイント ◦ ちゃんと動くのか不明。
モジュール構成のセンスがよいとは? モジュールが何をしているのか当たりをつけやすい。
JaikuEngine • https://github.com/lemonad/jaikuengine • おすすめ度:★☆☆☆☆ • GAEで動作するTwitterクローン。 • おすすめポイント ◦
ある程度大きなDjangoアプリケーションになると、どういうコードになるかイメージをつかみやすい。 ▪ 奇をてらったコードではなく、グルーコードを許容することが重要。 • おすすめしないポイント ◦ メンテナンスされていないので、現状の GAEやDjangoでは動かないのではないか。
モジュール構成がいまいちな例 actorやconfirmが何をしているモジュールなのか推測 できる人は皆無。
ビューはグルーコードに徹する • ビューはデータと出力をつなぐグルー(糊)コード に徹して、難しいことは一切やっていない。 • 上から下まで読むとどんなデータにどういう風に アクセスしているかちゃんと分かるので、ある意 味メンテナンスしやすい。
その他の参考になるオープンソースプロジェクト • Sentry ◦ https://github.com/getsentry/sentry ◦ .isort.cfg と Dangerfile が参考になる。
• Read the Docs ◦ https://github.com/rtfd/readthedocs.org • Transifex ◦ https://github.com/transifex/transifex
参加すべき勉強会
Python mini Hack-a-thon • https://pyhack.connpass.com/ • おすすめ度:★★★★★ • 勉強会というよりは、自分の興味のあることをもくもくとやる会です。 •
おすすめポイント ◦ 毎回初参加の方が数名いるので、初めてでも参加しやすい。 ◦ Djangoに限らず、Pythonに関する質問があるならば、誰かしら答えてくれま す。
ご清聴ありがとうございました