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.3k
チュートリアルの次へ・初心者向け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
Java ジェネリクス入門 2024
nagise
0
600
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
1k
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.5k
Vaporモードを大規模サービスに最速導入して学びを共有する
kazukishimamoto
4
4.3k
PLoP 2024: The evolution of the microservice architecture pattern language
cer
PRO
0
1.6k
のびしろを広げる巻き込まれ力:偶然を活かすキャリアの作り方/oso2024
takahashiikki
1
400
外部システム連携先が10を超えるシステムでのアーキテクチャ設計・実装事例
kiwasaki
1
220
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
240
[PyCon Korea 2024 Keynote] 커뮤니티와 파이썬, 그리고 우리
beomi
0
110
AWS IaCの注目アップデート 2024年10月版
konokenj
3
3k
カスタムしながら理解するGraphQL Connection
yanagii
1
1.2k
hotwire_or_react
harunatsujita
8
3.9k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
13
1.9k
Optimizing for Happiness
mojombo
376
69k
Code Review Best Practice
trishagee
64
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
32
1.8k
Ruby is Unlike a Banana
tanoku
96
11k
GraphQLとの向き合い方2022年版
quramy
43
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Measuring & Analyzing Core Web Vitals
bluesmoon
1
39
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に関する質問があるならば、誰かしら答えてくれま す。
ご清聴ありがとうございました