PyCon APAC 2023に参加しました

10/26(金) - 27(土)に都内で開催されたPyCon APAC 2023カンファレンスに参加してきました。
Twitterで見かけた「ブログを書くまでがカンファレンス」というワードに後押しされて、参加した感想を書き残そうと思い書いています。

PyCon APACとは

日本では年に1回PyCon JPが開催されているようですが、今年はPyCon APACとしての開催。PyCon APACは毎年各国持ち回りでやっているようで、日本での開催は10年ぶりらしい。
私はPyCon JP含め初めての参加でした。
カンファレンス自体は2日開催ですが、私は2日目に予定があったので1日のみの参加でした。

「Where did you come from?」のアンケートのボード。いわゆるアジア太平洋地域に限らず、幅広い地域からの参加者がいたようです

参加のきっかけ

会社の人が多く参加する&登壇する人もいることを知り、参加してみることにしました。
前職ではPython以外にもJSやFlutterを書いたりしていましたが、今年から働いている今の会社ではほぼPythonだけをゴリゴリ書くようになったため、Pythonの知識を深めたいという思いもありました。

聞いたトーク

Keynote: Why University Teachers Wrote a Python Textbook?

京大でのPythonの授業を持ち、教科書を作っているKita先生のトーク
トークは英語でしたが、別の部屋で日本語の同時通訳付きでの配信を見ることができました。
プログラミング経験のない学生にプログラミングを教える苦労を聞きながら、自分も「変数とは」「ループとは」「関数とは」と基礎的な概念を理解するところから始めたなあ、と昔を思い出しました。

Introduction to Structural Pattern Matching

Python3.10で追加されたCやJavaでいうswitch文の拡張のような機能、Structural Pattern Matchingの紹介でした。
数値や文字列等の単純な比較だけでなく、辞書やオブジェクトのマッチングや型に応じたマッチング(isinstanceを使わなくていい)など、柔軟な条件で処理を分岐することができるようです。

スライド: slides.takanory.net

型チェックを強化するPython 3.11の新機能Data Class Transforms(PEP 681)

dataclassをベースにしたライブラリの型チェックを強化する機能の紹介でした。
一般の開発者目線では、これを直接使うというよりも、各ライブラリや型チェッカーがこの仕様に対応することで、より型チェックできる範囲が広がってロバストなコードになる、という類の機能のようです。発表時点では、対応している型チェッカーはPyrightだけらしい。
こういった自分で直接使わなさそうな機能は、新機能のまとめ記事に載っていても読み飛ばしてしまいがちなので、勉強になりました。

スライド: pyconapac2023-pep681-slide.ryu22e.dev

Pythonでのパッケージング:エコシステムの理解と現場での活用

Pythonのパッケージ管理が複雑になる理由と、対応策の紹介がありました。機械学習系のライブラリのバージョン管理はハマりがちですね……。
発表の中でRyeというRust製のパッケージ管理ツールが紹介されていましたが、この日のLTでもこのRyeの紹介のトークがありました。PyenvのようなPython自体のバージョン管理と、venvのような仮想環境の管理の両方ができるツールらしいですが、流行り始めているのでしょうか。

speakerdeck.com

Django ORM道場:クエリの基本を押さえ,より良い型を身に付けよう

DjangoのORMがどんなクエリを発行するか理解して使おう、という内容のトークでした。予期せぬクエリを発行しないよう、ログでSQLを見るクセをつけたいと思いました。

www.slideshare.net

ModuleNotFoundErrorの傾向と対策:仕組みから学ぶImport

PythonがImportを解決する仕組みを紐解いた上で、ModuleNotFoundErrorの対策を紹介するトークでした。
ModuleNotFoundErrorに限らず、typoなどのしょうもない実装ミスに気づかずエラー解析でハマることはよくあるので、よく遭遇するエラーの原因を改めてまとめておくのはよさそう。

speakerdeck.com

発表テーマの傾向について

先月行われたDjango Congress 2023にも参加してきたのですが、それと比較すると、DjangoCongressは(当然ですが)Web開発に関する内容がほとんどであるのに対し、PyConは以下のようなテーマがありました。

特に後半2つのようなテーマの発表が多いのは、他の言語でのカンファレンスにはない特徴かもしれません。

LINEヤフーさんのスポンサーブースにて「Pythonを何に使っているか」を問うアンケート(ボードにシールを貼って回答するもの)を見かけたんですが、私が見た時点で「Web開発」「機械学習・データ分析」と並んで「業務効率化」も同数程度の回答があったのが印象的でした。 Pythonを使った開発をしているわけではないが業務効率化のためにPython使っている、という人も多く、かつPyConに参加するほどPythonに興味を持っている人が多くいることを知りました。
私もこの手のカンファレンスはほとんど参加したことがなかったですが、メインで使っている言語以外の言語のカンファレンスに行くのも楽しそうかもな、と思いました。

会場での過ごし方

トークの時間以外はスポンサーブースを回ったり、ポスターセッションを見て回ったりしました。 お昼の時間には、私と同じく今年入社した3人で集まってランチをしました。個人でアプリの開発をしている話や、勉強会を主催している話を身近な人から聞けてよい刺激になりました。(受けた刺激を何かに昇華できるかはまた別のお話……)

感想

オンラインの勉強会だと聞き流してしまうような、少し興味の幅から外れたような発表も聞く気になるのがオフラインのカンファレンスのいいところだなと思います。
興味があったけど時間が被って聞けなかったセッションもあるので、アーカイブで聞いてみたいと思います。

心残りなのは、2日目のパーティーに参加できなかったことです(冒頭に書いた通り、今回は1日目のみの参加でした。)
イベント中は、会社の人やスポンサーブースの担当者の方と話すことはできましたが、なかなか社外の人と話す機会を持てず。
せっかく多くのPythonユーザーと交流できる機会なので、参加するならパーティーまで出ればよかったなあ、とパーティー参加者のTwitterの様子を見ながら思いました。
あと、チュートリアルやスプリントといったカンファレンス以外のイベントも面白そう。

おわりに

トークを聞きながら書いていた雑メモを見返したり、公開されている資料を見たりしながら内容を改めて咀嚼し直すことで、聞いた内容の理解を深めることができました。「ブログを書くまでがカンファレンス」と言いたくなる気持ちがわかりました。
記事にするならもっと写真を撮っておけば良かった。