技術的にも体力的にもよわよわだけどPyCon APAC 2023行ってきたレポ ~Day1~

## はじめに
2023年10月26日(木)～10月29日(日)までの4日間PyCon APACのイベントがあったのですが、その4日間のうち27日(金)～29日(日)までの3日間参加してきたのでレポートを投稿します。
３日間全ての参加レポートを記載すると非常に長くなってしまいそうだったのでDay1、Day2、余力があればスプリントも投稿予定です。今回はDay1です。

## PyCon APACとは
PyCon APACについての説明が公式HPに記載されていたので引用します。
>PyCon APACは、プログラミング言語  **「Python」を中心としたボランティアによる非営利の年次カンファレンス** です。このカンファレンスの目的は、 **Pythonプログラミング言語とその周辺技術を探求し、議論・実践できる場を提供すること** です。運営チームは、 **アジア太平洋地域における国または地域が主体** となり、現在では、シンガポール、マレーシア、インドネシア、フィリピン、タイ、韓国、香港、ベトナム、日本、台湾、インド、バングラデシュが毎年交代して開催され、 **2023年は日本のメンバーが主体** となり運営します。そして、日本での開催は2013年以来の10年ぶりとなります。

日程は2023年10月27日(金)～28日(土)で、前日の26日にチュートリアル。29日にスプリントというイベントがありました。
今年は10年ぶりのPyCon APAC日本開催＆PyLadies Tokyoの運営スタッフの片寄里奈さんがPyCon APAC 2023の座長をされていたことと、PyLadiesとしてもポスターセッションやスプリントでワークショップを行う予定だったので参加してきました！
![1000010190.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423172/045540c2-9c23-fb53-06ee-a2f4bd8915ea.jpeg)


https://2023-apac.pycon.jp/

## 参加したセッション
時間は公式HPから持ってきたもので、正確には違うかもしれないですがざっくりこんな感じだったんだなと思っていただければと思います。

### Day1
| 時間 | タイトル | スピーカー |
|:-:|:-:|:-:|
|10:00~   |  オープニング | PyCon APAC staff  |
| ~11:20  |  Keynote: Why University Teachers Wrote a Python Textbook?  | Hajime Kita  |
|  11:40 ~ 12:10 | Introduction to Structural Pattern Matching  |  Takanori Suzuki |
|  12:20 ~ 13:40 | Lunch  | -  |
| 13:40 ~ 13:55  | Pythonはどのようにデータベースと繋がるのか  | Shintaro Matsudo  |
| 14:05 ~ 14:20  | 型チェックを強化するPython 3.11の新機能Data Class Transforms（PEP 681）  | Ryuji Tsutsui  |
| 14:50 ~ 15:30  | Break(ポスターセッション)  | -  |

## 印象に残ったセッション(Day1)
### 基調講演:Why University Teachers Wrote a Python Textbook? (Hajime Kita)
Pythonの非常にわかりやすい教科書が無料で公開されているという情報がX（旧Twitter）で2020年頃前後に盛り上がっていたらしいのですが、その教科書を作成された喜多先生の講演でした。
私はPythonの学習をし始めたのが2021年の秋頃だったのですが、実際に2021年の版の教科書を読みつつ学習していてお世話になっていたので今回の基調講演をとても楽しみにしていました。
教科書を作るきっかけとして、どうやって学生の自主学習を支援するかを考えた結果、教科書を喜多先生自身で作ることにしたこと、2018年に授業を開始してから授業計画を試行錯誤していた流れを受講者数と単位を取ることができた人数のデータを交えつつ詳細に話されていました。
また、教科書を作るうえでプログラミングの経験が無い人にも理解できる内容にするポイントも話されていました。

現在は、2019年、2021年版の累計のダウンロード者数が100万回を超えているそうです。
そして2023年版の教科書も最近公開されたばかりだそうです！
以下2023年版資料リンクです！

http://hdl.handle.net/2433/285599

#### 印象に残った点
印象に残った点はたくさんあるのですが、
個人的に、プログラミング経験者は ```x = x + 1``` のxを変数として扱って考えることができるが、プログラミング未経験者は ```x = x + 1``` を数学の問題と捉えて解こうとしてしまうという話を聞いて、実際に解こうとまではしなかったですが躓いたなと思い出しました。
また、書いたコードを動かした際にエラーが出るた時の学生のリアクションは
「エラーメッセージを読みたくない」「学習をやめてしまう」の２つだそうです。
学習し始めた際にエラーの対応が苦痛だったな（今も苦手ですが）とまた思い返しました。
でもエラーの対応は重要なので、あえて教科書の中にエラーを起こしてデバッグを行う流れを記載することで、エラー対応への忌避感を軽減させたとのことでした。
このエラー対応については、実際に教科書を読んでいて、ほかの参考書では実際にエラーを起こして対応する流れを記載しているものは当時読んだこと無かったので珍しいなと思いつつすごくありがたいなと思った記憶があります。
今回の背景と意図を聞いて、喜多先生が学習者のためを思って教科書を作られていたことを知ることができて良かったです。
これからPythonを勉強したい方はもちろんのこと、プログラミング教育に携わる方にも学びのある基調講演だったと思います。
今回聞くことができて良かったです。


### Introduction to Structural Pattern Matching (Takanori Suzuki)
基調講演の後は鈴木たかのりさんの構造的パターンマッチング入門を聴きました。
パターンマッチングはPython3.10の新機能で、公式のPEPのドキュメントからなぜ構造的パターンマッチングが追加されたのかという説明から、どのように使うのかを飲食店の注文ページの裏側のようなコードを複数の活用方法の例としてそれぞれのパターンを実装されて話されていました。

#### 印象に残った点
私はJavaから学習し始めてswitch,case文をよく目にしていたので、むしろPythonには無かったんだ、そういえば似たような構文見なかったなという驚きがありました。
また、公式のアップデート情報を読んだだけだとふーんで終わっていたのですが、実際にどのように使えるのか、どういうときに便利なのかをコードを交えて教えていただいたことで、こういう時は使えるんだな、実務でも使う機会あるかもとイメージを持つことができて勉強になりました。

構造的パターンマッチングの内容についてもですが、それだけでなく鈴木さんの資料と話しの流れも非常に聞きやすく、Beginnerの私でも理解できるように嚙み砕いて例えを出してくださっていたのもとても勉強になりました。
将来こんなふうに話せるようになりたいなと思いました。

鈴木たかのりさんの発表資料

https://slides.takanory.net/

### 型チェックを強化するPython 3.11の新機能Data Class Transforms（PEP 681）(Ryuji Tsutsui)
Python 3.11の新機能、Data Class Transforms（PEP 681）について解説されていました。
これまではattrs、Pydantic、O/Rマッパーなどのライブラリでの型チェックがうまく動かない問題があったのですが、その問題を解決するデコレーターが登場したということで、そもそもデコレーターとは何なのか、現在の対応状況、対応しているライブラリの紹介を行うという内容でした。

#### 印象に残った点
今回のセッションを聴いて、アップデート情報だけ読んでもどういう需要や問題があって機能が追加されたのかを知ることができない場合があるんだなということを学びました。
PEP 681に対応しているライブラリの紹介の箇所で、現在のPythonのバージョンの最新は3.12で3.11は最新ではないので対応しているライブラリが多いのではと思っていたのですが、まだ対応していなかったり、対応していると記載されていても使ってみたらエラーになるという情報を知ることができたのも良かったです。
今回型チェッカーについて少し知ることができたので他にどのようなライブラリがあるのか興味が出てきました。

使い方として、クラスや関数に渡される変数の型をチェックして処理を変えたいような場合はパターンマッチングの方が良さそうだなと思いましたが、単純にチェックだけしたい場合には型チェッカーというように利用目的によって型の判別方法を分けるのが良いかもと思ったりしました。
また、VSCode＋Pylanceを利用してPyrightを呼び出せるとのことだったので、自分の環境でも実際に型チェックしてエラー内容を表示させてみて、うまく表示できたら実務にも活かせそうだなと思いました。

### Break(ポスターセッション)
PyCon APACの公式HPのタイムテーブルに、Lunchタイムの他に見慣れないBreakタイムがあったのですが（当日までなんの時間だろうと思ってました）、Breakタイムが何なのかというとおやつタイム（小休憩時間）でした。
会場20Fの休憩スペースでおやつとして様々な種類のパンが配布されていまして、私はチョコクロワッサンを食べたのですがおいしかったです。
そのBreakタイムがポスターセッションの時間で、PyLadies Tokyoでは以下画像のようにPyLadies全体とPyLadies Tokyoの紹介と活動内容の紹介を行いました。

![PXL_20231027_052241513.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423172/88ceb670-cfb4-dc6c-0b83-74bcd43fe853.jpeg)

画像はポスターセッション前の人が居ないときを狙って写真を撮ったのですが、Breakタイムになるとポスターを見に来る方で盛況でした。

#### 1日目の所感
1日目はPythonのアップデート情報系を中心に聞きました。
公式ドキュメントをさらっと読みはするものの、ふーんで終わってしまったり、よくわからないまま放置して後でエラー対応の時にもっとちゃんとよく読めばよかったと後悔する日々を送っているので、今回聴くことができて良かったです。
将来的には自力でドキュメントチェックできるようになりたいですし、鈴木さんや筒井さんのようにアップデート情報をもとにして実際にコードを書いて試して、Pythonの新機能情報の内容や検証結果を発表できるようになれたらいいなと思いました。

ポスターセッションが終わったあとはスポンサーブースを周ったり、何となく入った英語のセッションを聴いて全く聴き取れず宇宙猫状態になっていました。
やっぱり英語力大事だなと痛感した１日でしたが、Pythonでできることを新たに知ることができて充実して過ごせました。
また、翌日も10時から参加予定だったので ~~起きられなさそうだったので~~ 気合を入れて近くのホテルを予約していたのですが1日目のクロージングの後は特に予定も無かったので、遠方ではない人は1日目はホテルの予約は必要無いかもと思いました。
２日目に続きます（ ~~近日中に投稿できるようにがんばります~~ 投稿できました！）。

https://qiita.com/yuuun/items/9efa3df357db28218c4b

## 今回参加したセッションのYouTubeリンク集
喜多先生の基調講演

https://www.youtube.com/live/vTrzyHtOeBI?si=8KQOMWwucp5JGU7F&t=3553

鈴木たかのりさんの構造的パターンマッチング入門

https://www.youtube.com/live/CtTjApnqb8c?si=1CXpwiYWVdZj1W_-&t=7621

筒井さんの型チェックを強化するPython 3.11の新機能Data Class Transforms（PEP 681）

https://www.youtube.com/live/RvPjFTwXWTI?si=JMeURjnX1GDfIGHe&t=15426