DjangoCongress JP 2018 に参加 & 発表しました #djangocongress

5/19に開催された、DjangoCongress JP 2018に参加 & 発表しました。
DjangoCongress JP 2018

場所は、サイボウズ株式会社の東京オフィスでした。
東京オフィス アクセスマップ | サイボウズ株式会社

 
会場の内装が凝っていたり、バーっぽいところがあったり、スカイツリーが見えたりと、素敵な会場でした。

 
自分の発表、および全体を通してのメモを残します。誤りがありましたらご指摘ください。

 
目次

自分の発表「Django/WSGIミドルウェア入門」

スライドです。

また、発表で使用したソースコードは、以下のリポジトリに公開してあります。
https://github.com/thinkAmi/DjangoCongress_JP_2018_talk

なお、プレゼンの対応バージョンは

です。

 
プレゼン資料は

を元に構成しました。

 
その結果、主な内容は

となりました。

 
なお、公式ドキュメントに記載が無いがプレゼン資料に記載したものは

  • process_view() の戻り値が render() メソッドを持つ場合は、 process_template_response() フックも動作する

の箇所です。

ソースコードを見ると

となっており、また動作も確認していますので、問題ないかと思います。

 
発表自体は緊張のあまり早口 & カミカミでしたが、聴いてくださっていた方々のツイートを見ると好意的なコメントをいただけていたようです。ありがたいばかりです。

 
また、発表直後に運営者の方々から

  • 初めてなのに発表が上手だった (@hirokikyさん)
  • スライドがシンプルにまとまっていてよかった (スタッフの方 *1 )

という旨のフィードバックをいただきました。最低限の仕事は果たせたのかなと感じるとともに、発表に不慣れな自分には今後の励みや指針となりました。ありがとうございました。

また、即座のフィードバックを通じて、DjangoCongressをより良いものにしようというスタッフ間での意識の浸透を感じました。

心残りは、発表終了直後も余裕がなかったせいもあり、@hirokikyさんに「DjangoCongress JPを開催してくださってありがとうございます」と直接お伝えできなかったことです。かわりにこの場にて感謝申し上げます。

 
ところで、Djangoと自分について振り返ってみると、自分がDjangoを本格的に始めたのは2015年8月くらいだったようです。
Python + Django + Highcharts + Herokuで食べたリンゴの割合をグラフ化してみた - メモ的な思考的な

当時は今よりもさらに日本語の情報が少なく、公式チュートリアルやQiitaのDjango入門、「Two Scoops of Django」本での独学でした。

それから時は流れ、Python + Djangoメインの会社に転職し、仕事で本格的にPythonDjangoができるようになり、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のテストの書き方で本当にいいのか分からなくて参加しました。

テスト全般〜Djangoのテストまで、いろいろとまとまっていて参考になりました。

特に、

が自分にとっての新しい発見でした。

また、モックのパッチでのハマるポイントについては、過去の自分に教えてあげたい感じでした。

 

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を分ける
  • サードパーティライブラリの紹介が、入門者にとっての道案内になっていて助かった
    • drf-writable-nested
    • djangorestframework-camel-case
    • drf-nested-routers
    • django-silk
    • django-js-reverse
  • 質疑応答の方々がみんな使っているばかりで、どんな点に悩むのかが分かった

 

LT

全部で5つのLTがありました。どれも楽しめました。

Python Web History

aodagさん

PythonのWebフレームワークの歴史に関するLTでした。

歴史的経緯などが分かりやすくまとまっていました。Werkzeug(2007)のあとにFlask(2010)が登場したというのが収穫でした。

 

Python out LOUD podcast

ケビンさん

Pythonpodcastに関するLTでした。

いろいろなpodcastがあり、英語を学ばないとなーと改めて感じました。

 

Djangoの同人誌を書いた話

akiyokoさん

資料:Django の同人誌書いた話

 / Kiso Django at techbookfes4 // Speaker Deck

技術書典4で頒布されたDjangoの同人誌についてのLTでした。

同人誌執筆の裏側が見えました。あと、LT資料の中に自分のTweetが引用されていて嬉しくも恥ずかしい気持ちになりました。

また、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:お名前を聞きそびれ、申し訳ないです...