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
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
620
技術的負債の正体を知って向き合う / Facing Technical Debt
irof
0
120
CSC305 Lecture 01
javiergs
PRO
1
400
CSC509 Lecture 02
javiergs
PRO
0
410
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.7k
なぜあの開発者はDevRelに伴走し続けるのか / Why Does That Developer Keep Running Alongside DevRel?
nrslib
3
380
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
380
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
360
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
1.1k
Advance Your Career with Open Source
ivargrimstad
0
400
Local Peer-to-Peer APIはどのように使われていくのか?
hal_spidernight
2
460
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
640
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Fireside Chat
paigeccino
40
3.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
How to Think Like a Performance Engineer
csswizardry
27
2k
Writing Fast Ruby
sferik
629
62k
Thoughts on Productivity
jonyablonski
70
4.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
GitHub's CSS Performance
jonrohan
1032
460k
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に関する質問があるならば、誰かしら答えてくれま す。
ご清聴ありがとうございました