PyCon JP 2022参加レポート（1日目）

[PyCon JP 2022](https://2022.pycon.jp/)に参加してきました。初めて参加した2012年から数えて、11回目の参加です。今日から3日間、イベントの様子をレポートします。この記事は1日目のレポートです。
今回の会場は[TOC有明コンベンションホール](https://www.toc.co.jp/saiji/ariake/access/)。コロナ禍以来、久々に大規模な会場での開催です。

## キーノート
![IMG_0085.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/0a7095be-91e3-5c58-6cda-e32561929d0f.jpeg)
1日目のキーノートは、CPythonの高速化に取り組んでいるMark Shanonnさんがスピーカーでした。

CPython以外のPython処理系での高速化の仕組みについて解説した上で、CPythonではどういうアプローチを取るか、という趣旨のお話でした。
PyPyは聞いたことがあるのですが、全く聞いたことがないものもあって（Unladen Swallow、Pyjon、Sykybisonなど）、処理系だけでもいろんなバリエーションがあることに驚きました。
そして、高速化を施したPython 3.11のリリースはいよいよ来週なんですね。どれだけ速くなるのか楽しみですね！

## 業務改善の面白さ ~毎日更新されるビジュアルコンテンツの差分をわかりやすくするためのプロトタイプを作るまで~
https://2022.pycon.jp/timetable?id=NPMTSH
スピーカーは日本経済新聞社で勤務されているまりーなさん。

文章だけでなく、画像や動画など様々なメディアを駆使してニュースを分かりやすく伝えるサイト「日経ビジュアルデータ」の関係者の業務改善についてのお話でした。
主な関係者は「記者チーム」と「デザイナー・エンジニアチーム」の2つ。
記者チームは取材した内容をスプレッドシートに入力してサイトに反映し、デザイナー・エンジニアチームはシステムの変更する役割。
両者の成果物が合わせて表示される内容が正しいか、変更後の差分を人力で確認するのが大変とのことでした。
確認作業を完全に自動化することはできないが、[reg-suit](https://github.com/reg-viz/reg-suit)というツールで差分を可視化して人間の負担を減らす工夫をしたそうです。
また、記者チームはGitHubアカウントがないので、Slackで差分を見られるようにしたそうです。
自動化システムの構築にPythonを採用。Pythonは初めから便利な機能が揃っているので、やりたいことをスムーズに実現できたとのことです。
最後のメッセージ「チームの働き方をさらに快適にするための種が日々のコミュニケーションの中にあるかも？」も印象に残りました。

## イベント駆動アーキテクチャについて
https://2022.pycon.jp/timetable?id=8SAWQX
スピーカーはMasataka Araiさん。
Django + Celeryなイベント駆動のアーキテクチャのTipsについてのお話でした。
Celeryタスクの処理は短く、責務をシンプルにして、リトライしやすいようにステートレスでアトミックな処理にする。
エラー処理は復帰可能なもののみキャッチしてからリトライ実行、それ以外はキャッチせず投げっぱなし。
何かトラブルがあったときに運用でカバーできるように[django-celery-results](https://django-celery-results.readthedocs.io/en/latest/)で実行結果をDBに保存。
[Flower](https://flower.readthedocs.io/en/latest/)やcelery inspectを使ってタスクの実行状況を監視。
タスク関数の引数変更はデプロイのタイミングによって変更前のタスク関数が呼ばれてエラーになる可能性があるので、はじめから`**kwargs`引数を追加+呼び出しは必ずキーワード引数を使って、どんな引数でもエラーにならないようにする。

などなど、現場の工夫について紹介されていました。

## Python3.11新機能asyncio.TaskGroup()と2022年asyncioの"Hello-ish world"
https://2022.pycon.jp/timetable?id=J7S98E
スピーカーはJunya Fukudaさん。
Python 3.11の新機能`asyncio.TaskGroup()`と`execpt*`構文によって例外処理、キャンセル処理がより分かりやすいコードで表現できるようになったという趣旨のお話でした。
asyncioの例外処理、キャンセル処理はPython 3.10以前では`asyncio.gather`を使って書くものでしたが、同期処理とはかなり書き方が違っていて分かりにくいという問題がありました。`asyncio.TaskGroup()`と`execpt*`構文によって同期処理に近い書き方ができるようになったとのことです。
サンプルコードを見せてもらって、普段asyncioをあまり使わない私から見ても読みやすいコードになったことがよく分かりました。

ちなみに、fukudaさんはgihyoさんの連載『[Python Monthly Topics](https://gihyo.jp/list/group/Python-Monthly-Topics#rt:/article/2022/10/monthly-python-2210)』でも今回のテーマに関して詳しく解説されています。
[Python 3.11の新機能：asyncio.TaskGroupを使った予測可能でより安全な非同期処理 | gihyo.jp](https://gihyo.jp/article/2022/10/monthly-python-2210?summary)

## Fast API と学ぶ WebRTC
https://2022.pycon.jp/timetable?id=JKLGKZ
スピーカーはTakayuki Kawazoeさん。
FastAPIでWebRTCの簡易サーバーを作る方法、WebRTCそのものについての解説に関するお話でした。

WebRTCはリアルタイム通信のためのプロトコルで、非同期処理を書けるFastAPIと相性が良い。
FastAPI自体にWebRTCで通信する機能はないので、[aiortc](https://github.com/aiortc/aiortc)と組み合わせる。

といった話をされていました。
サンプルコードも公開してくれているので、自分で作ってみる際の参考になりそうですね。
https://github.com/zoetaka38/fastapi-aiortc

## GeoDjango ORMと地理空間データの世界
https://2022.pycon.jp/timetable?id=J9XNYA
スピーカーは阿部涼平さん。

阿部さんは位置情報を利用するサービスの開発をされている方で、位置情報を扱うDjangoの標準機能GeoDjangoについて解説されていました。

GeoDjangoを導入すると位置情報を扱う専用のモデルフィールドが使えるようになり、GeoDjango内部では位置情報を扱えるデータベース（PostgreSQL、MySQL、SQLiteなど）に専用の関数を使ったクエリを投げられるようになるとのことです。モデルの`filter`メソッドに渡すパラメータにGeoDjango用のものがあって、それらを使うこと「○○市の緯度経度」とか「○○地域にある市区町村」などを検索できるようになるそうです。
また、国土交通省が公開しているデータを取り込んでサンプルアプリケーションを作る方法についても解説されていました。

## クロージング
1日目のクロージングでは恒例のLT大会がありました。

![IMG_0100.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/0d98aaa2-8af0-b9a4-879d-ce6cb7bb40ac.jpeg)

発表者のPCのバッテリーが切れてスライドが途中で消えてしまうトラブルもありましたが、そんなことがあってもノリで何とかなってしまうのがLTの醍醐味です。

![IMG_0101.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/7099b403-42eb-e3cf-5517-914fa8d82d83.jpeg)

海外からの参加者によるLTもありました。規制が緩和されてきて、本来のPyCon JPらしさが戻ってきた感があります。

![IMG_0102.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/adf5ad9c-ed9c-ba1f-b4b8-c00256e200cc.jpeg)

奇しくも私と同じ時期にPyCon JPに参加し始めた方のLT。思えば私もずいぶん長くPythonコミュニティに関わっているのだなあと感慨深くなりました。

![IMG_0103.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/11fa89e7-892b-bdd4-0db6-d6619a2065a6.jpeg)

自社で[trio-util](https://github.com/groove-x/trio-util)というPythonライブラリを開発されている方のLTでした。
![IMG_0105.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/f100263e-d0ce-3228-37af-2967572c1a85.jpeg)

## その他
スポンサーブースが開設されているのも久々なので、色々廻ってきました。
![IMG_0089.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/e468e906-b979-09cd-d713-21ebebe6b46d.jpeg)

![IMG_0090.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/fc2464b2-5766-be57-d98b-39e51cde76a5.jpeg)

![IMG_0094.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/43aa417d-d577-577e-2d8a-95f0daf85c2d.jpeg)

![IMG_0096.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/60218ac4-5204-0ffc-6587-2da982f3a0a1.jpeg)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Python実戦試験の教科書であるPython実践レシピの本の著者の方々にブークに来ていただきました。　<a href="https://twitter.com/hashtag/pyconjp?src=hash&amp;ref_src=twsrc%5Etfw">#pyconjp</a> <a href="https://t.co/P7FIfaN1AF">pic.twitter.com/P7FIfaN1AF</a></p>&mdash; pythonic-exam (@pythonic_exam) <a href="https://twitter.com/pythonic_exam/status/1580781228680450048?ref_src=twsrc%5Etfw">October 14, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

ランチタイム時のPyCon JP Association公開ミーティングの様子です。
![IMG_0092.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/2a13f6d3-e9c4-5ab2-d9d2-00258f1f2b93.jpeg)

ランチのお弁当はこんな感じでした。
![13402A3C-3DD8-4316-A7B3-399302598247.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/cbaab2cd-874d-fd40-5001-0936f6c393d4.jpeg)

今年のおやつは煎餅でした。
![IMG_0098.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/8ab7655c-bcf1-effa-833c-0f1e876d0cc0.jpeg)

## 【番外編】PyLadies Caravan & Python Boot Campミートアップ 2022
イベント本体とは関係ないのですが、1日目終了後にPyCon JP Associationがサポートしているイベント「PyLadies Caravan」と「Python Boot Camp」の関係者が集まるミートアップに参加してきました。私は「Python Boot Camp」のコアスタッフとして参加しているのですが、普段オンラインでやり取りしている皆さんと久々に会ってきました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/PyConJP?src=hash&amp;ref_src=twsrc%5Etfw">#PyConJP</a> <a href="https://twitter.com/hashtag/PyCamp?src=hash&amp;ref_src=twsrc%5Etfw">#PyCamp</a> わいわい <a href="https://t.co/r6pTRlNazL">pic.twitter.com/r6pTRlNazL</a></p>&mdash; Takayuki Shimizukawa (@shimizukawa) <a href="https://twitter.com/shimizukawa/status/1580885996325195776?ref_src=twsrc%5Etfw">October 14, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

https://www.instagram.com/p/CjsOm1kLwgk/

https://www.instagram.com/p/CjsPePFrrye/

では、また明日！