5/19に開催された、DjangoCongress JP 2018に参加 & 発表しました。
DjangoCongress JP 2018
場所は、サイボウズ株式会社の東京オフィスでした。
東京オフィス アクセスマップ | サイボウズ株式会社
ここが日本橋か pic.twitter.com/FiTUXSpXn1
— thinkAmi (@thinkAmi) 2018年5月19日
会場の内装が凝っていたり、バーっぽいところがあったり、スカイツリーが見えたりと、素敵な会場でした。
スカイツリー見えてる pic.twitter.com/lBP87h4yCa
— thinkAmi (@thinkAmi) 2018年5月19日
自分の発表、および全体を通してのメモを残します。誤りがありましたらご指摘ください。
目次
- 自分の発表「Django/WSGIミドルウェア入門」
- オープニング
- できる!Djangoでテスト!
- GeoDjangoではじめる地理空間情報
- Building your MVP with Django: Lessons Learned Building and Launching a SaaS
- Djangoにおける認証処理実装パターン
- Django REST framework 実践入門
- LT
- 謝辞
自分の発表「Django/WSGIミドルウェア入門」
スライドです。
また、発表で使用したソースコードは、以下のリポジトリに公開してあります。
https://github.com/thinkAmi/DjangoCongress_JP_2018_talk
なお、プレゼンの対応バージョンは
です。
プレゼン資料は
を元に構成しました。
その結果、主な内容は
となりました。
なお、公式ドキュメントに記載が無いがプレゼン資料に記載したものは
process_view()
の戻り値がrender()
メソッドを持つ場合は、process_template_response()
フックも動作する
の箇所です。
ソースコードを見ると
- https://github.com/django/django/blob/2.0.5/django/core/handlers/base.py#L118 のあたりで、
process_view()
がフックされる - https://github.com/django/django/blob/2.0.5/django/core/handlers/base.py#L144 のあたりで、
render()
あればprocess_template_response()
がフックされる
となっており、また動作も確認していますので、問題ないかと思います。
発表自体は緊張のあまり早口 & カミカミでしたが、聴いてくださっていた方々のツイートを見ると好意的なコメントをいただけていたようです。ありがたいばかりです。
#djangocongress Room2 Django / WSGI のミドルウェアの説明わかりやすいなーー
— Hiroki KIYOHARA (@hirokiky) 2018年5月19日
middlewareの話わかりやすかった
— shimbo (@ta7uw) 2018年5月19日
帰ったらさわってみよう#djangocongress
room2 の Django/WSGI ミドルウェア入門の話、普段自分ではあまり触らない領域だったのでそのへんの知見の話がきけてよかった。 #djangocongress
— Kei IWASAKI (@laugh_k) 2018年5月19日
DjangoのWSGIMiddlewareのTips気になる #djangocongress
— かしゅー (@kashew_nuts) 2018年5月19日
ミドルウェア開発めっちゃ優しく説明してくれているので頭がゆるふわでもわかりやすい #djangocongress
— 小泉ひやかし (@nnsnodnb) 2018年5月19日
Djangoミドルウェアの仕組みよく分かってなかったので助かる #djangocongress
— Hiromasa Kakutani (@xKxAxKx) 2018年5月19日
WSGIミドルウェアの発表、だいぶ分かりやすく説明されていて助かる #djangocongress
— SHIMIZU Taku (@takuan_osho) 2018年5月19日
#djangocongress
— やまだ でんぞう (@denzowill) 2018年5月19日
WSGIの話、すごいわかりやすい
また、発表直後に運営者の方々から
- 初めてなのに発表が上手だった (@hirokikyさん)
- スライドがシンプルにまとまっていてよかった (スタッフの方 *1 )
という旨のフィードバックをいただきました。最低限の仕事は果たせたのかなと感じるとともに、発表に不慣れな自分には今後の励みや指針となりました。ありがとうございました。
また、即座のフィードバックを通じて、DjangoCongressをより良いものにしようというスタッフ間での意識の浸透を感じました。
心残りは、発表終了直後も余裕がなかったせいもあり、@hirokikyさんに「DjangoCongress JPを開催してくださってありがとうございます」と直接お伝えできなかったことです。かわりにこの場にて感謝申し上げます。
ところで、Djangoと自分について振り返ってみると、自分がDjangoを本格的に始めたのは2015年8月くらいだったようです。
Python + Django + Highcharts + Herokuで食べたリンゴの割合をグラフ化してみた - メモ的な思考的な
当時は今よりもさらに日本語の情報が少なく、公式チュートリアルやQiitaのDjango入門、「Two Scoops of Django」本での独学でした。
それから時は流れ、Python + Djangoメインの会社に転職し、仕事で本格的にPythonやDjangoができるようになり、Django入門の著者と一緒に働いています。そして、今回のDjangoCongress JP 2018で発表と、Djangoでの縁がいろいろとつながっています。
そのDjangoのカンファレンスにて、Djangoコミュニティに少しでも何かを返すことができたのであれば何よりです。
というところで、以降は当日のメモです。
オープニング
Chairpersonの@hirokikyさん
資料:DjangoCongress 2018 Opening - Google スライド
PyCon JP 2017の
Why don’t you make a Conference for Django?
からすべてが始まったんだなと感じさせてくれる良いオープニングでした。
また、Code of Conductにもふれられており、とても大切にしているということが伝わってきました。
できる!Djangoでテスト!
tell-kさん
自分のDjangoのテストの書き方で本当にいいのか分からなくて参加しました。
テスト全般〜Djangoのテストまで、いろいろとまとまっていて参考になりました。
特に、
- Python3.4から、unittestにsubTestが追加された
- DjangoのTestCaseクラスには、setupTestDataがある
coverage report -m
で、Missingを見るのが重要
が自分にとっての新しい発見でした。
また、モックのパッチでのハマるポイントについては、過去の自分に教えてあげたい感じでした。
GeoDjangoではじめる地理空間情報
小俣 博司さん
資料:GeoDjangoではじめる地理空間情報 // Speaker Deck
元々地図に興味があったのと、以前Open Street Mapの勉強会に参加したことがあり、Djangoと地図ってどういう関係なんだろうと思い、参加しました。
第38回 #NSEG OpenStreepMapマッピングパーティ in 小諸 に参加してきました - メモ的な思考的な
プレゼンは、地理空間情報に関する細かな内容でした。いろいろな用語が散りばめられ、入門する時のよい資料となりそうでした。
あとは印象に残ったところを自分のTweetから転記しておきます。
- ORMで空間演算
- 空間演算関数をSQLに組み込んでいる
- DjangoとOpen Street Mapを結び付けられる
- WebGISが流行ってきている
- 測地系と座標系
- 座標の表現方法は何種類もある
- Google Mapはメルカトル図法
- 南極と北極を表現せず、割り切っている
- 地図情報、ファイルにもいろいろと種類がある(ベクトルとラスタ等)
- シェープファイルはGIS業界のデファクトスタンダード
- 日本語の文字情報はShift_JISが比較的多い
- GeoJSON、RFC化されてる。RFC7946
- PostGISの情報が多い。慣れなうちはこれを使うと良い
- 最初にためしてみるなら、Leaflet.jsがおすすめ。ただし、Google Mapに感しては、いろいろ複雑
- 古い地図は、地理院地図が良い
- 大正時代など、昔のデータも揃ってる
- Djangoに統合されているため、コンソールにモデルの形式が定義されて表示される
- modelを作るのが楽で良さそう
- GeoJSONSerializerなんてのもある
- デモについて
- リアルタイムで風の流れが見える
- つぶやきの場所が見える
- 地図データ、よく知らないだけでいろいろなものが公開されてる
Building your MVP with Django: Lessons Learned Building and Launching a SaaS
James Van Dyneさん
資料:Building your MVP with Django: Lessons Learned Building and Launching a SaaS // Speaker Deck
MVP(Minimum Viable Product)な書き方が気になったので参加しました。
- ManyToManyFieldを、throughを使うようにする
- クラスベースビューを避ける
- テンプレートでは、(余計な)include()ではなくインラインにする
あたりが印象に残りました。
今まで何でもクラスベースビューにしていましたが、必要に応じて関数ベースビューも、と考える良いきっかけとなりました。
Djangoにおける認証処理実装パターン
Masashi Shibataさん
資料:Django における認証処理実装パターン - c-bata web
認証処理のカスタマイズに興味があったため、参加しました。
発表の詳細は上記ブログに掲載されているため、ここではその中でも印象に残ったものを記載します。
- Djangoの認証機能が表にまとまっていた
- 他の人のライブコーディングを見ると、いつもどんな風に操作しているのか参考になる
- こんなこともできるなど
- カスタムユーザモデルは、プロジェクトの開始直後くらいでやっておくとマイグレーションで苦しまない
- Userモデルのusername、Python3だとunicodeを受け入れてしまう
ASCIIUsernameValidator
を使うと良い
unicodedata.normalize()
で、表現を正規化できる
Django REST framework 実践入門
Masataka Araiさん
資料:Django REST framework 実践入門 - slideship.com
最近Django REST frameworkにさわっていたのですが、まだ雰囲気でしか使っていないので参加しました。
- まずはSerializerをおさえる
- Command-Query分離の原則
- 入力用と出力用のSerializerを分ける
- サードパーティライブラリの紹介が、入門者にとっての道案内になっていて助かった
- 質疑応答の方々がみんな使っているばかりで、どんな点に悩むのかが分かった
LT
全部で5つのLTがありました。どれも楽しめました。
Python Web History
aodagさん
PythonのWebフレームワークの歴史に関するLTでした。
歴史的経緯などが分かりやすくまとまっていました。Werkzeug(2007)のあとにFlask(2010)が登場したというのが収穫でした。
Python out LOUD podcast
ケビンさん
いろいろなpodcastがあり、英語を学ばないとなーと改めて感じました。
Djangoの同人誌を書いた話
akiyokoさん
資料:Django の同人誌書いた話 / Kiso Django at techbookfes4 // Speaker Deck
技術書典4で頒布されたDjangoの同人誌についてのLTでした。
同人誌執筆の裏側が見えました。あと、LT資料の中に自分のTweetが引用されていて嬉しくも恥ずかしい気持ちになりました。
#技術書典 今日の戦利品です pic.twitter.com/7pdMd28OZR
— thinkAmi (@thinkAmi) 2018年4月22日
また、LT後に執筆してくださったことへの感謝を直接お伝えできて良かったです。
Django Girlsとゆかいな仲間たち
Django Girlsの紹介でした。
Django Girls - start your journey with programming
Django Girlsチュートリアルは良いという認識でいましたが、2018年の開催も全国へと展開していて、いろいろと輪が広がっていくのすごいと感じました。
サイボウズ株式会社のコネクト支部より
会場を提供してくださったコネクト支部の紹介と、勉強会会場情報のLTでした。
今回のような素晴らしい会場を無償提供してくださっているとのことでした。
東京会場は会議室っぽくなくて、リラックスした雰囲気で参加できたのでとても良かったです。
謝辞
最後に謝辞です。
まずは日本システム技研(JSL)の方々、プレゼンの素振りをはじめ、いろいろとご協力いただきありがとうございました。
特に、このネタならCfP行けると言ってくれた sin_tanaka、当初の資料が入門用なのに分かりづらいと気づかせてくれた pro_proletariat、 想定問答や題材をもらった moonwalkerpoday にはとても感謝しています。
なお、プレゼン資料や発表で分かりにくいところ・誤りがあれば、それは全部自分の責任です。
また、会場の提供をしてくださったサイボウズ株式会社さま、素敵な場所をありがとうございました。Room2のバーっぽい雰囲気は、登壇初経験のプレッシャーをやわらげてくれ、とてもやりやすくなりました。
最後になりましたが、DjangoCongress JP 2018のスタッフ、発表者、参加者のみなさま、ありがとうございました。楽しい時間を過ごせました!
*1:お名前を聞きそびれ、申し訳ないです...