見出し画像

PEP 723に感動!PyCon JP 2024で得たトキメキの技術たち

MIERUNEの山﨑です。
去年に引き続き、今年もPythonの日本最大のカンファレンスであるPyCon JP 2024に参加してきました。

PyCon APAC 2023やPyCon JP 2022の参加に続き、最新のPython技術やコミュニティの動向を直接学ぶ貴重な機会となりました。
過去のPyConについても参加レポートを作成しているので、よければ読んでみてください。

ちなみにMIERUNEでは、QGISのプラグイン開発やWebのバックエンド開発にPythonを利用しています。MIERUNEとして、どのようにPythonをより良く活用し、高品質な成果物を作成できるか模索しながら参加してきました。

(なお、MIERUNEの他のメンバーですが、同じ時間に東京ゲームショウに出展してました。MIERUNEではゲームも作ることができます!)


気になったセッション

2日間で多くのセッションがあったのですが、山﨑的にグッときた発表を3つ紹介したいと思います。

タイムテーブル

お気に入りセッション1:「Django Ninjaで高速なAPI開発を実現する: 実践ガイドとベストプラクティス」

登壇者:加藤雅也さん

Django Ninjaは、Djangoフレームワーク上でFastAPIのような高速で直感的なAPI開発を可能にするライブラリです。このトークでは、Django Ninjaの基本的な使い方から実際のプロジェクトでの活用方法までを網羅し、DjangoとDjango Ninjaを組み合わせた効率的なAPI開発手法を紹介します。 具体的には、基本的なAPIエンドポイントの作成、認証と認可の設定、スキーマバリデーションの実装、そしてパフォーマンス最適化のためのベストプラクティスについて詳しく解説します。 また、Django Ninjaを実際のプロジェクトで使用する際に直面する可能性のある課題とその解決方法についても取り上げます。このトークは、Djangoを使用した経験がある開発者や、より高速なAPI開発を目指しているエンジニアに向けたものとなります。

Django Ninjaで高速なAPI開発を実現する: 実践ガイドとベストプラクティス | PyCon JP 2024

スライド資料:

感想

MIERUNEではバックエンドのフレームワークとしてFastAPIを採用することが多いです(言語としてPython使うなら・・ってことが前提ですが)。これは、軽量で柔軟な設計が可能であることや、Swaggerなどの自動生成ドキュメントが標準でサポートされている・・などが理由に挙げられます。

MIERUNEでは、元々Django REST framework を使用していましたが、上述した理由によりFastAPIに移行したわけです。

今回のセッションを聞いて初めて知ったDjango Ninjaですが、FastAPIと”ほぼ”似たような書き方かつ、Pydanticを使用したデータバリデーション機能や自動生成ドキュメント機能がサポートされているとのことで、個人的には非常に魅力的に思いました。

認証やORM、マイグレーションについては、Djangoのエコシステムが活用できるDjango Ninjaの方がFastAPIより楽てきるのでは・・?と思いました。ここら辺は、個人開発で色々いじって試してみたいところです。

お気に入りセッション2:「PEP 723(Inline script metadata)が拓く世界。Pythonスクリプトに必要な仮想環境をツールにおまかせできるんです!」

登壇者:nikkieさん

皆さんは「PEP 723 – Inline script metadata」(応募時 Status: Final)をご存知ですか? 私の中ではこれはかなりインパクトの大きいPEPです。 Pythonでスクリプトを書くときの世界がガラッと変わる内容なんです!

Pythonでプロジェクトを開発するとき、仮想環境を使いますよね。 開発者が作って有効にすることもあれば、それをPoetryやHatchなどのツールに任せることもあると思います。 Pythonスクリプトの開発でも同様に仮想環境を使います。 PEP 723が劇的なのは、Pythonスクリプトの動作に必要な依存パッケージを、ツール側で自動で仮想環境にインストールしてスクリプトを動かしてくれるんです! 開発者はスクリプトのための仮想環境の操作から解放されるんですよ!!

私はPEP 723を部分的にサポートしたpipx(`pipx run`)を愛用しています。 その中で見えてきた使いこなしtipsと合わせて、皆さんをPEP 723を覗くクイックツアーへご案内します。 ちょっとしたスクリプトがすっごく書きやすくなりますよ〜

PEP 723(Inline script metadata)が拓く世界。Pythonスクリプトに必要な仮想環境をツールにおまかせできるんです! | PyCon JP 2024

スライド資料:

感想

個人的には、聞いてて一番面白かったセッションです。nikkieさんの熱量を感じられて最高でした・・。PEP723の開発者に「天才!ありがとう〜!」と何回も言っていたのが面白かったです。

それにしてもPEP723は良いですね・・・。

1つのファイルに依存ライブラリ等の情報を記載し、処理コードも一緒に書けちゃうのは、お気軽自動処理スクリプトの作成と配布が劇的にやりやすくなるな〜、と思いました。

お気に入りセッション3:「WEBアプリケーションにおけるAWS Lambdaを用いた大規模な非同期処理の実践」

登壇者:Masataka Okuderaさん

WEBアプリケーションでは、大量のメール配信や画像生成など、実行時間がかかる処理は非同期で実行するのが一般的です。弊社のあるDjangoプロジェクトでは、非同期処理にCeleryを使用していましたが、性能面の課題を解決するために、一部をAWS Lambdaに移行しました。Lambdaの実装にもPythonを使用しています。本番稼働中のWEBアプリケーションでLambdaを使って大量の非同期処理を処理するには、様々な知見が必要でした。SQS、S3、DynamoDBといった他のAWSサービスと連携する必要もありました。また、PythonでLambda関数を実装する際には、amazon-sqs-python-extended-client-libやpowertools-lambda-pythonなどのライブラリを使用することで、ビジネスロジックに関係のない処理はライブラリに任せて生産性を高めることができます。本セッションでは、移行プロジェクトで得られたこれらの知見を共有します。具体的なメール配信処理の事例を基に話しますが、Lambdaを用いた非同期処理を検討している方にとっても参考になる内容です。

WEBアプリケーションにおけるAWS Lambdaを用いた大規模な非同期処理の実践 | PyCon JP 2024

スライド資料:

感想

PyCon2024の参加申し込みはconnpassを利用したのですが、そのconnpassの裏側のお話です。

LambdaとSQSを使用してメールの一斉送信をするような場面において、確実に1通だけメールを送信するための手法について詳しく知ることができました。

MIERUNEでもWeb開発の際はAWSのサービスを使用することが多いです。そのため、このような実務的なテクニックを知ることができて非常に参考となりました。感謝!

セッション以外の話

PyConではセッションだけでなく、PartyLunch Break、Coffee Breakなども楽しいな体験です。今回も楽しかった!

Coffee Breakで提供されるお菓子。疲れたらここでまったり。

Partyでは、Pythonが好きな人や興味がある人と楽しくおしゃべりすることができて、非常に有意義な時間を過ごすことができました。

Pythonを普段から利用している人だけでなく、今後Pythonを使ってみたくて参加した人、転職したらPython使用する機会が減ったものの、やっぱり個人的には使っていきたいので参加した人・・・などなど、色々な人とおしゃべりできました。

色んな人と思いを共有できたことで、私のPython欲がグングンあがりました。

また、今年もクラフトビールが提供され、美味しく飲むことができました。PyConで飲むビールはめちゃくちゃ美味しい!

Partyの様子。Python好きな人たちと机を囲んでワイワイ。

おわりに

今年のPyCon JP 2024では、多くの新しい技術と出会うことができました。

これからもPythonを活用し、より良いソリューションを提供していきたいと思っています。来年のPyCon JP(広島開催らしい!)では、さらに成長した姿で参加したいと思っています。


いいなと思ったら応援しよう!