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
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
390
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
1k
Go コードベースの構成と AI コンテキスト定義
andpad
0
160
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
440
AtCoder Conference 2025
shindannin
0
920
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
220
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
Patterns of Patterns
denyspoltorak
0
430
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
340
CSC307 Lecture 04
javiergs
PRO
0
630
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
The Limits of Empathy - UXLibs8
cassininazir
1
200
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Building Adaptive Systems
keathley
44
2.9k
Speed Design
sergeychernyshev
33
1.5k
How to make the Groovebox
asonas
2
1.9k
Paper Plane
katiecoart
PRO
0
45k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
KATA
mclloyd
PRO
33
15k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
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に関する質問があるならば、誰かしら答えてくれま す。
ご清聴ありがとうございました