Slide 1

Slide 1 text

チュートリアルの次へ 初心者向けDjangoの歩き方

Slide 2

Slide 2 text

お前、誰よ ● 株式会社フンザ 酒徳千尋 ● 自己紹介 ○ Django歴 11年 ■ Django 0.96のあたりから触っています。 ○ 普段はチケットキャンプのサーバーサイドのエンジニアをしています。 ○ 最近は中途面接、新卒・インターン面接等の仕事も多い。

Slide 3

Slide 3 text

よく聞かれる質問 ● 初心者向けにおすすめの本はありますか? ● 初心者向けに参考になるオープンソース・プロジェクトはありますか?

Slide 4

Slide 4 text

Djangoの良くないところ ● 公式ドキュメントの構成が悪い。 ● 公式ドキュメントの日本語訳が中途半端。

Slide 5

Slide 5 text

Djangoのよさ 1. メンテナンスしやすいアプリケーションを作る知見が多い。 2. ユニットテストが書きやすい。 3. 優れたURLルーティング機構。 4. 優れたテンプレートエンジン。 5. 優れたヴァリデーション機構。

Slide 6

Slide 6 text

メンテナンスしやすいアプリケーション ● https://docs.djangoproject.com/en/1.11/misc/design-philosophies/ ● Loose coupling ○ モジュールは疎結合。 ○ (例) django.template は Jinja2 でも置き換え可能。 ○ 再利用可能なモジュールを作るノウハウが容易に見つかる。 ● Tight cohesion ○ モジュールはそれ自体に必要なものが凝縮されている。 ○ (例)django.template や django.db は他のモジュールやサードパーティーライブラリに依存しな い。 ○ バージョンアップ地獄や予測不可能なエンバグに苦しめられることが少ない。

Slide 7

Slide 7 text

おすすめの オンラインチュートリアル

Slide 8

Slide 8 text

Django Girls チュートリアル ● https://tutorial.djangogirls.org/en/ ● おすすめ度:★★★★★ ● Djangoチュートリアルの定番。公式のチュートリアルよりこちらを先にやるべき。 ● おすすめポイント ○ スクリーンショットが豊富で公式チュートリアルより完成品のイメージがわきやすい。 ○ macOSの場合とか、Linuxの場合とかのコマンド例が豊富で最初のところでハマりにくい。 ○ django.formsの解説が含まれている。

Slide 9

Slide 9 text

Mozilla Django Tutorial ● https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Tutorial_l ocal_library_website ● おすすめ度:★★★★☆ ● Mozillaが公開しているDjangoを使ったWebアプリケーション作成のチュートリア ル。 ● おすすめポイント ○ Djangoの機能をフル活用してアプリケーションを作るという構成になっているので、このチュートリ アルだけである程度 Djangoの機能を網羅できる。 ○ 各トピックごとに公式ドキュメントやその他のサイトへのリンクが含まれているので、気になった機能 をさらに突っ込んで調べてみるということの出発点としてもよい。

Slide 10

Slide 10 text

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を使ったデプロイ方法まで公開している。

Slide 11

Slide 11 text

pyenvが必要かどうかフローチャート ● http://qiita.com/shibukawa/items/0daab479a2fd2cb8a0e7 ● おすすめ度:★★★★★ ● 呼吸するようにvenvを使えないと素人と見られます。 ● おすすめポイント ○ pyenvを全否定するのではなく、必要かどうかということにフォーカスを当てているので、 venv/virtualenvだけでとりあえず十分ということがわかるはず。 ○ この記事を読んだら、 virtualenvwrapper も入れましょう。

Slide 12

Slide 12 text

必読のDjango公式ドキュメント

Slide 13

Slide 13 text

Forms ● https://docs.djangoproject.com/en/1.11/topics/forms/ ● おすすめ度:★★★★★ ● おすすめポイント ○ django.formsはDjangoの最も優れたコンポーネントの一つなので、このページだけは目を通してお きましょう。

Slide 14

Slide 14 text

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アプリ ケーションのどちらかしかないと言って過言ではありません。

Slide 15

Slide 15 text

おすすめの書籍

Slide 16

Slide 16 text

【洋書】Two Scoops of Django ● おすすめ度:★★☆☆☆ ● 洋書を含めたDjango本の代表格としてよく目にする 本。 ● おすすめポイント ○ ベストプラクティスに関してしっかり書いてある。 ○ Django REST Frameworkといった他の書籍で扱っていない トピックに触れている。 ● おすすめしないポイント ○ 長い。 ○ サンプルコードの公開の仕方がいまいち。

Slide 17

Slide 17 text

【洋書】High Performance Django ● おすすめ度:★★☆☆☆ ● パフォーマンスのよいDjangoアプリケーションを開発す るにはどうするべきか?ということに焦点をあてた本で す。 ● おすすめポイント ○ DjangoのORMのパフォーマンス面でのベストプラクティスに関 しては一読の価値がある。 ○ Varnishやnginxと組み合わせた運用方法など、この書籍にしか ないトピックもある。 ● おすすめしないポイント ○ 初心者向けではない。

Slide 18

Slide 18 text

【洋書】Lightweight Django ● おすすめ度:★★☆☆☆ ● Lightweightという名前通りにコンパクトにまとまった書 籍。Backbone.jsやWebSocketを使ったアプリケーション を題材にしているのが特徴です。 ● おすすめポイント ○ SPAやWebSocketといった他にないトピックを扱っている。 ● おすすめしないポイント ○ JavaScriptやTornadoといったDjangoとは無関係なトピックの解説 が多い。

Slide 19

Slide 19 text

【洋書】Test-Drive Development with Python ● おすすめ度:★★★☆☆ ● Djangoでテスト駆動開発を行うということに焦点をあ てた書籍。 ● おすすめポイント ○ Djangoを使うとテスト駆動開発を行いやすいのを実感でき る。 ○ Pythonでのテスト駆動開発のノウハウが豊富。 ● おすすめしないポイント ○ 長い。 ○ テストを書きつつアプリケーション開発を進めるという流れに なっているので、さくさく読めるという感じではないかもしれな い。

Slide 20

Slide 20 text

【和書】開発のプロが教える標準Django完全解説 ● おすすめ度:★☆☆☆☆ ● Django 1.0リリース当時の日本の第一人者たちによっ て書かれた書籍。 ● おすすめポイント ○ Djangoでよく使う一通りの機能をポイントを押さえて解説してい る。 ● おすすめしないポイント ○ 最新のDjangoとは互換性がないコードが多い。

Slide 21

Slide 21 text

【和書】Django×Python ● おすすめ度:★☆☆☆☆ ● おすすめポイント ○ マイクロブログを作るという題材で解説されているので実践的。 ● おすすめしないポイント ○ 最新のDjangoとは互換性がないと思われる。

Slide 22

Slide 22 text

参考になるオープンソースプロジェクト

Slide 23

Slide 23 text

django-wakawaka ● https://github.com/bartTC/django-wakawaka ● おすすめ度:★★★★☆ ● おすすめポイント ○ 非常にコンパクトで、 Djangoアプリケーションの雰囲気をつかみやすい。 ○ includeして別のアプリケーションから使うということを想定しているので、再利用可能なモジュール の例として参考になる。 ○ これをベースに勉強がてら機能を追加してみるといったことにも使いやすい。

Slide 24

Slide 24 text

Mezzanine ● http://mezzanine.jupo.org/ ● おすすめ度:★★★★★ ● Djangoを使ったCMSで最も出来がよいアプリケーションです。 ● おすすめポイント ○ 動作させやすく、かつコードの品質が高いので、「これと同じことをするにはどういうコードを書けば いいのだろう?」ということを調べる手がかりとして最適。 ○ モジュール構成がセンスがよい。

Slide 25

Slide 25 text

Satchmo ● https://bitbucket.org/chris1610/satchmo/src ● おすすめ度:★★☆☆☆ ● Djangoをeコマースアプリケーション。 ● おすすめポイント ○ Djangoを使ったeコマースアプリケーションの事例として参考になる。 ○ モジュール構成がセンスがよい。 ● おすすめしないポイント ○ ちゃんと動くのか不明。

Slide 26

Slide 26 text

モジュール構成のセンスがよいとは? モジュールが何をしているのか当たりをつけやすい。

Slide 27

Slide 27 text

JaikuEngine ● https://github.com/lemonad/jaikuengine ● おすすめ度:★☆☆☆☆ ● GAEで動作するTwitterクローン。 ● おすすめポイント ○ ある程度大きなDjangoアプリケーションになると、どういうコードになるかイメージをつかみやすい。 ■ 奇をてらったコードではなく、グルーコードを許容することが重要。 ● おすすめしないポイント ○ メンテナンスされていないので、現状の GAEやDjangoでは動かないのではないか。

Slide 28

Slide 28 text

モジュール構成がいまいちな例 actorやconfirmが何をしているモジュールなのか推測 できる人は皆無。

Slide 29

Slide 29 text

ビューはグルーコードに徹する ● ビューはデータと出力をつなぐグルー(糊)コード に徹して、難しいことは一切やっていない。 ● 上から下まで読むとどんなデータにどういう風に アクセスしているかちゃんと分かるので、ある意 味メンテナンスしやすい。

Slide 30

Slide 30 text

その他の参考になるオープンソースプロジェクト ● Sentry ○ https://github.com/getsentry/sentry ○ .isort.cfg と Dangerfile が参考になる。 ● Read the Docs ○ https://github.com/rtfd/readthedocs.org ● Transifex ○ https://github.com/transifex/transifex

Slide 31

Slide 31 text

参加すべき勉強会

Slide 32

Slide 32 text

Python mini Hack-a-thon ● https://pyhack.connpass.com/ ● おすすめ度:★★★★★ ● 勉強会というよりは、自分の興味のあることをもくもくとやる会です。 ● おすすめポイント ○ 毎回初参加の方が数名いるので、初めてでも参加しやすい。 ○ Djangoに限らず、Pythonに関する質問があるならば、誰かしら答えてくれま す。

Slide 33

Slide 33 text

ご清聴ありがとうございました