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
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
560
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
120
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.5k
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
120
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
1
5.8k
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
390
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
130
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.3k
効率的な開発手段として VRTを活用する
ishkawa
0
140
NPOでのDevinの活用
codeforeveryone
0
840
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
880
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
2
830
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Six Lessons from altMBA
skipperchong
28
3.9k
Agile that works and the tools we love
rasmusluckow
329
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Being A Developer After 40
akosma
90
590k
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に関する質問があるならば、誰かしら答えてくれま す。
ご清聴ありがとうございました