PyCon JP 2024

To see our schedule with full functionality, like timezone conversion and personal scheduling, please enable JavaScript and go here.
10:30
10:30
45min
Keynote Relay
20F Track2
10:30
30min
Day1 Keynote

James Powell, aka “dontusethiscode” or “dutc,” leads the training and consulting firm, Don't Use This Code. Since 2014, he has offered expert services in software development, scientific computing, and data engineering. A prolific speaker at over 80 conferences worldwide, James is known for his signature suit and tie. He is also the Chairman of NumFOCUS and a lead organizer of NYC Python, actively supporting open source communities.

20F Track1
11:30
11:30
30min
5年分のツケを一気に払った話
soogie

コンピュータに詳しいメンバーが便利な業務システムを作ってくれたけど、そのメンバーがいなくなった後で困る、というのはよくある話です。とはいえ、書いてくれたコードを理解することができれば、そのシステムを維持していくことはなんとか可能です。

私の部署でも5年前、コンピュータに詳しいメンバーがパソコンサーバーを組み立て、Ubuntuをインストールしてそのマシン上にPythonで便利な業務システムを作ってくれました。そのメンバーが抜けた後も、残されたメンバーでドキュメントを整備したり、テストを書いたりしてなんとか維持運用してきました。でも動かなくなってしまうと業務上困るので、OSやPythonのバージョンはそのままにしていました。いわばツケを5年にわたって溜め続けている状態でした。

そんな中、気がつけばUbuntuもPythonもサポート期間が終了してしまい、パソコン本体の保守期間も切れたため、システムを別マシンに移行することが決まりました。
このトークでは5年分の環境変化に一気に対応するために生じた様々な問題(詳細欄参照)を解決するための苦労話を通じて、みなさんが同じ轍をふまないための教訓をお伝えしたいです。

Practices for Development with Python
4F Track4
11:30
30min
Crafting Your Own Numpy: Do More in C++ and Make It Python
An-Chi Liu

Numpy is a powerful tool for scientific computing, but large-scale simulations need more. The high-performance computing calls for a custom array library that can be customized in C++ and interact with Python. A great way to do it is to use Pybind11. Just like Numpy, we allow arrays to use various data types while providing a single array type in Python. In C++, we use template generic programming for array code of specific data types. This talk shares the approaches to overcome the "dtype" challenge, so we can leverage the C++ typing information at compile-time for high performance and seamless Python integration.

I created libraries or services
4F Track3
11:40
11:40
15min
Django Ninjaで高速なAPI開発を実現する: 実践ガイドとベストプラクティス
加藤雅也

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

Web Applications
20F Track1
11:40
15min
Robot FrameworkとNVDAスクリーンリーダーによるアクセシビリティのテスト自動化
Takuya Nishimoto

このミニトークでは、スクリーンリーダーNVDAとRobot Frameworkを用いたシステムテストの自動化について紹介します。主に日本語Windows環境で検証し、独自のテストの組み込み、アクセシビリティサポーテッド(AS)情報への活用を検討します。

スクリーンリーダーは視覚障害者にとって重要なツールであり、ウェブアクセシビリティを確保するためには、これらのツールが適切に動作することが重要です。NVDA は Python で開発されており WAI-ARIA: Authoring Practices Guide に基づいたブラウザテストも Robot Framework で自動化されています。

参加者は、このミニトークを通じて、日本語環境でのスクリーンリーダーテストの重要性とその基本的な実践方法について理解を深めることができます。

DevOps, Testing, Documentation, Packaging
20F Track2
13:00
13:00
30min
Crimes with the Python syntax
Tushar Sadhwani

Over the past few years digging into Python's runtime and language features, I've often run into some weird, obscure parts of the language. Very weird and obscure parts.

Such as imports being hackable enough to directly import JSON files. Or being able to change the syntax of the language, at runtime.

And I'd note them down. All the weird, esoteric, not-to-be-named features of the language. And eventually, I'd find some way to abuse that feature. Do something heinous. Write code that would make any code reviewer question my sanity. Committing crimes, with the Python syntax.

This talk is an explainer of all these features, and why you should never use them. Unless, of course, you need to.

Practices for Development with Python
4F Track4
13:00
30min
FireDucksのすすめ
Yoshiyuki Ohno

日本発のデータフレームライブラリFireDucksを紹介します.探索的データ分析や機械学習の前処理などに使われるデータフレームライブラリとしては,老舗のpandasが有名ですが,最近はpolars, modin,そしてFireDucksなど新たなライブラリが登場しています.本トークでは,データフレームライブラリの最新動向を紹介し,FireDucksの開発者である発表者が,FireDucksの紹介を行います.

FireDucksの特徴は,pandasとAPI互換で高速であることで,それを実現しているのがFireDucksに搭載された実行時コンパイラです.例えば,長年使われてきたpandasには様々な高速化ノウハウがありますが,FireDucksはそのようなノウハウを自動適用することで,速度を意識して書かれてないプログラムを高速化します.本トークでは,このようなFireDucksで行われている工夫を紹介し,FireDucksの速さの秘訣をデモを交えて紹介します.また,熟練者向けに,FireDucksでの実行時間プロファイルなどを用いた性能チューニング方法も紹介します.

本トークを聞けば,pandasを使い始めたばかりの人から熟練者まで,きっとFireDucksを使ってみたくなるでしょう.

※ FireDucksはpip install fireducksでインストール可能です.

Data Science, AI
20F Track2
13:00
30min
Fun with microcontrollers: Building a digital sundial using Python
Scott Irwin

Using Python to program physical devices is both possible and fun.

Let’s explore what you can accomplish with just a bit of Python, a microcontroller, and a small display by using them to build a digital sundial that you can carry in your pocket.

IoT, Hardware, and Networking
4F Track3
13:00
30min
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門
fujine

名著「レガシーコード改善ガイド」では、「テストがないコードはレガシーコード」と言われています。テストが無い(もしくは手動テストが大半を占める)アプリケーションは改修を重ねるたびにリリースが長期化し、いずれメンテナンス不可能なレガシーコードと成り果ててしまいます。

どのような分野・規模のアプリケーションであっても、テストは不可欠です。更に、アプリケーションを構築・改修して素早くリリースするためには、「高速かつ何度でもテストを実行できる仕組み」が非常に重要となってきます。

本セッションでは、Pythonの代表的なテストフレームワークであるpytestを用いた実践的なテスト方法を紹介します。シンプルなテストケースだけでなく、DBやネットワーク、ファイル入出力、時刻、OS情報など、複雑な依存関係にあるコードのテスト方法を解説していきます。また、テスト駆動開発(TDD)に基づくテストファーストな開発手法にも触れていきます。

DevOps, Testing, Documentation, Packaging
20F Track1
13:50
13:50
30min
AI-powered Automatic Replies in Customer Support: Precision-Focused Approach at Mercari
Prashant Anand

Have you ever had a frustrating experience with a customer support chatbot? Issues like misunderstandings, irrelevant responses, and endless loops without reaching a human agent are common. So why do we use AI for sending automatic replies to customer inquiries at Mercari? Does it benefit customers? How do we ensure a positive experience?

Along with answering these questions, in this talk, we will look at the design of our highly precise system using machine learning for automatic replies. We will focus on Python content in sections about introduction to transformers, fine-tuning pre-trained transformer models on Japanese text, and the design and training of our ML model. Lastly, we'll discuss our A/B testing methodology and the impact on business metrics from using automatic replies.

Data Science, AI
4F Track4
13:50
30min
Extracting Structured Data from LLMs with LangChain and Pydantic
Kalyan Prasad

This talk dives into the exciting realm of enriching your Large Language Model (LLM) interactions with structured data extraction. We'll explore how LangChain, in conjunction with Pydantic, empowers you to retrieve not just plain text from LLMs but also reusable Python objects like lists, dictionaries, and even pandas DataFrames.

Data Science, AI
4F Track3
13:50
30min
Pythonによるネットワーク分析の基礎とコミュニティサクセスへの応用
Higuchi Kokoro

ネットワーク分析は、人のコミュニケーション、画像、交通網など、様々な領域で見られる相互関係を解釈するために広く用いられる手法です。その自由度の高さと利用用途の広さから、とっかかりづらいと感じることも多いですが、非常に強力なツールです。

本セッションでは、グラフ理論の基礎から始まり、Pythonを用いたネットワークグラフの作成と操作方法、統計的指標を用いたネットワークの理解まで、基礎的な内容をすべてカバーします。

さらに、発表者の所属企業のプロダクト「Commune」における実践的なコミュニティサクセスのためのネットワーク分析の活用事例を紹介します。最後に、ご参加いただいてる皆様がネットワーク分析できるように、一般的なアクセスデータをネットワーク分析の入力データとして変換する方法についても解説します。

このセッションを通じて、ネットワーク分析の基礎から応用事例、データ収集方法までを広く紹介し、自身のプロジェクトに即座に適用できる知識と技術を提供します。

Data Science, AI
20F Track2
13:50
30min
実践structlog
Takayuki Shimizukawa

クラウド時代のログ出力では、JSONによる構造化ログや呼び出し元のコンテキストを含めた出力が必要とされます。このトークではstructlogを使い、実際のWebアプリケーション開発でDjango、Celery、Sentryのコンテキストを繋いでログ出力する例を紹介します。

DevOps, Testing, Documentation, Packaging
20F Track1
14:40
14:40
30min
An overview of the optimisation pipeline in CPython 3.13 and onwards
Jules Poon

CPython 3.13 introduces a new experimental optimization pipeline that cumulates into a JIT. This talk gives an overview of the components of the optimization pipeline as of CPython 3.13 and plans for future versions of CPython.

The talk will focus on the Trace Optimizer and briefly cover experiments the speaker is personally involved in before the final version currently in CPython 3.13 implemented by Ken Jin.

You don’t have to be a compiler or CPython expert to attend – this talk aims to be accessible and self-contained so hopefully, everybody can gain something from it.

Features and Development of Python Itself
4F Track4
14:40
30min
MLOpsの「あるある」な課題の解決と、そのためのライブラリgokart
池嶋大樹

LLMを含め、機械学習技術は快適なアプリケーションを作成する上で、もはや欠かせない存在ではないでしょうか?一方で、「運用」という側面に目を向けると、機械学習はモデルの更新や入出力の変更など、普段のアプリケーション運用とは一味違った問題が出てきますよね。

例えば、以下のような課題があがってくるかと思います。
- 実験した機械学習モデルの再現性がない
- モデルのバージョニングがごちゃごちゃになり、どの設定で作ったものかわからない
- バッチ実行のたびに重複した処理を繰り返して非効率的
- 似たような関数がプロダクトごとに重複して作られてしまう
- 開発者によって書き方がばらつき、他メンバーが読みにくい

こうした問題の解決には、「処理結果をキャッシュして、同じ処理は再実行しない」や「モデルとコードとを1:1で対応させる」といった戦略が効果的だと考えられます。これらの課題解決の知見を元に、エムスリーでは、MLOpsのためのライブラリ「gokart」を開発し活用してきました。

この発表では、MLOpsの「あるある」な課題とそれへの対処法に関して、今まで培ってきた知見と実際の実装を紹介していきます。ぜひお楽しみに!

Practices for Development with Python
20F Track2
14:40
30min
ORM と向き合う
hoto17296

このセッションでは、ORM という概念にどのような難しさがあるか、我々は ORM に何を期待するのか、Python においてはどのような選択肢があるのかについて考えていきたいと思います。このセッションでは「正解」を提示することはできないと思いますが、みなさんが "なんとなく使っている" (かもしれない) ORM について、少しでも深く理解するためのきっかけを与えることができれば幸いです。

Web Applications
20F Track1
14:40
30min
Unlocking the Power of Python's Collections Module
Italo Carvalho Vianelli Ribeiro

Are you looking to take your Python skills to the next level? Join us for an exciting deep dive into the collections module, a powerful part of Python’s standard library that offers specialized data structures beyond the usual lists and dictionaries. We’ll explore using collections to write cleaner, more efficient, and more readable code. From namedtuple to defaultdict, you’ll learn about different data structures and see practical examples of how they can simplify your coding tasks. Whether you're just starting out or looking to optimize your projects, this session will give you the tools you need to make your Python programs more robust and elegant.

Practices for Development with Python
4F Track3
15:50
15:50
30min
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を覗くクイックツアーへご案内します。
ちょっとしたスクリプトがすっごく書きやすくなりますよ〜

Features and Development of Python Itself
20F Track1
15:50
30min
Unlocking the Parallel Universe: Subinterpreters and Free-Threading in Python 3.13
Anthony Shaw

Python 3.12 introduced a new parallel execution model called "sub interpreters" that uses a per-interpreter GIL to unlock a new way of writing parallel code that's faster than multiprocessing. Python 3.13 introduces another new parallel execution model called "free-threading" (previously called no-gil) that replaces that optionally removes the GIL so that threads can truly be parallel. Does free-threading make sub interpreters redundant? We'll answer that question in this talk.

Features and Development of Python Itself
4F Track4
15:50
30min
低コストで実現する社内文書RAG機能を搭載したAIチャットボット開発
Takanobu Nozawa

昨今における大規模言語モデル(Large Language Models, LLM)の技術進化は目まぐるしいものがあります。そのようなLLMの活用先の一つに、RAG(Retrieval-Augmented Generation)という技術があります。
RAGとは、LLMによるテキスト生成に外部情報の検索を組み合わせることで、回答精度を向上させる技術です。
本トークでは、AIチャットボットの要件・要求定義といった導入プロセスから、Slack AppとLangChainを用いた開発方法、RAGに必要な文書のベクトル化など、社内文書に基づく回答を行うことのできるRAG機能を搭載したAIチャットボットを、Pythonを用いて低コストで実現した取り組み全般についてご紹介します。

Data Science, AI
20F Track2
15:50
30min
名前空間について考える(unittest の patchを正しく使うために)
Akira Nonaka

unittestで使われるpatchを正しくつかうために必要な、名前空間の概念について理解を深めます

Practices for Development with Python
4F Track3
16:40
16:40
15min
Pydantic x Database API:Turu-pyの開発
yassun7010

データ分析基盤を開発しているチームで Snowflake を安全に利用するために、 Turu-py というライブラリを開発した話をします。

I created libraries or services
20F Track1
16:40
15min
Python Powered "Cyber Security" - Tools, Techniques, Exploitation and Automation
Nirmal Dahal

In this talk, I'll emphasize Python's pivotal role in addressing cybersecurity challenges, highlighting its versatility and impact. Also, I'll share how I automated Python skills to safeguard the bank corporate site from potential backdoor attacks.

Moreover, I will delve into Python's significance across various cybersecurity domains, including OSINT, Penetration Testing, Vulnerability Assessment, Incident Response, Digital Forensics, SIEM/SOAR, Malware Analysis, Behavioral Analysis, and will showcase a few Python tools and libraries that are handy for conducting these tasks, such as Nmap, SQLmap, Impacket, Scapy, Legion, and essential libraries like Requests, BeautifulSoup4, re, JSON, etc.

DevOps, Testing, Documentation, Packaging
4F Track3
16:40
15min
PythonのHTTPクライアントツール徹底比較
佐藤樹

Pythonエコシステムにおいて、HTTPクライアントは非常に重要な役割を果たしています。特にWeb APIを使用したデータのやり取りや取得においては、適切なライブラリ選択が開発速度やアプリケーションのパフォーマンスに大きく影響します。本トークでは、Pythonの代表的なHTTPクライアントであるrequests、httpxなどのライブラリを徹底的に比較し、それぞれの特徴、利点、欠点を詳しく解説します。また、使用例を交えて、どのような場面でどのツールを選ぶべきかについて検討した結果を発表いたします。このセッションを通じて、自身のプロジェクトに最適なHTTPクライアントを選定するための知識と洞察を得ることができます。

Web Applications
20F Track2
16:40
15min
The Sense of Style: A Talk On Coding Aesthetics
Shiva Bhusal

Coding aesthetics, in this context, refers to how code is written. It is essential that programmers also pay attention to the aesthetics and not just the functionality the code aims to achieve. There are several ways to make Python code aesthetically pleasing, such as code refactoring, using static code analysis tools like PyLint to check compliance with PEP8 guidelines, and applying syntactic sugar. The talk mainly covers the importance of style in coding and the available tools and techniques for Python programmers that help maintain coding aesthetics.

Practices for Development with Python
4F Track4
17:00
17:00
15min
Building Accessible Web Experiences with Python
Khushboo Verma

This session explores how Python empowers web development accessibility. We'll discuss using Python libraries like Selenium and PyTest to automate accessibility testing, enabling early detection of issues. Additionally, we'll delve into how Python's data analysis capabilities (NumPy, Pandas) aid accessibility research, allowing analysis of testing data and user behavior to improve evaluation methods. By making websites accessible, we create an inclusive and enjoyable web experience for everyone.

Web Applications
4F Track3
17:00
15min
FastAPIのasync defとdefの使い分け
佐々木 峻

FastAPIはPythonでREST APIを実装するときに使用するライブラリです。リクエスト・レスポンスのバリデーションや認証など様々な機能を備えており、便利なライブラリなので広く使われています。

そのFastAPIですが、パスオペレーションを定義するときに、async をつけることができます。昨今ChatGPTライクなストリームのようにChat表示できるアプリで使用されることもありますが、このasyncにはどのような効果があるのか、どのように使うのかは実は曖昧な人が多いのではないでしょうか。

いくつかのコードをサンプルにasyncを使う場合、使わない場合に分けて負荷試験などを見ながら違いについて発表します。

Practices for Development with Python
20F Track1
17:00
15min
MLOps in Mercari Group’s Trust and Safety ML Team
Calvin Janitra Halim, Ayato Toyokuni

In the Mercari Group’s Trust and Safety ML Team, we provide solutions to ensure the safety of the users. Examples of the solutions we provide include anti-money laundering countermeasures, credit card fraud detection, and many others. Some of these solutions are powered by machine learning models. In order to be as reactive as possible to emerging frauds, it is important to streamline the model improvement and deployment processes. In this talk, we will explain our platform and automation, and how each element helps us rapidly deploy new countermeasures. We will cover all MLOps steps: experimentation, training/deployment, evaluation, and metric monitoring. We hope our talk benefits those integrating DevOps into their ML solutions or building ML platforms, especially with GCP’s Vertex AI.

DevOps, Testing, Documentation, Packaging
4F Track4
17:00
15min
MicroPythonとRaspberry Pi Pico Wで始めるマイクロコントローラー上でのワイヤレス通信
中村草介

RaspberryPi PicoシリーズはLinuxが動作するRaspberry Piとは違い二つのCortex-M0+ プロセッサと264kbのSRAMと限られたリソースを搭載したRP2040というマイクロコントローラーを使った小さな基板のコンピューターです。
このようなマイクロコントローラーにMicroPythonインストールすることで限られたリソース下でもいつものPython感覚でプログラミングをすることができます。

さらに2022年6月に発表されたRaspberryPi Pico Wと呼ばれる機種はWifiとBLE機能が追加されたことで例えばREST APIを呼び取得したデータを基板に接続したディスプレイに表示する、逆に基板に接続したセンサーの値をREST APIに送信するなど応用範囲が広がりました。

発売当初はWifiのみのサポートでBLEは利用できなかったのですが2023年6月からC SDKでのBLEのサポートが始まりその後2023年10月リリースの v1.21.0からMicroPythonでもBLEのサポートが始まっています。

Raspberry Pi Pico W自体も発売当初は手に入りづらかったものですが、今は秋葉原など店頭でも手軽に買えるようになっています
応用範囲も広がり、気軽に買うこともできるようになったのでさらに開発も簡単にできることを伝えようと思い立ちました。

今回のトークでは短い時間ですが基板上のLED、RP2040に内蔵された温度センサーとWifiやBLEでの通信をMicroPythonを使って組み合わせることでマイクロコントローラーでも使い慣れたPythonを使って簡単に開発ができることを紹介しようと考えています。
(通信を主な話題にしたいため、外部のセンサーやディスプレイなどの扱い方については今回は触れないでおこうと考えています)

IoT, Hardware, and Networking
20F Track2
10:20
10:20
30min
Pythonで 日本語処理 入門 〜フリガナプログラムを作ろう〜
Takanori Suzuki

Pythonでは日本語や英語など、自然言語処理のためのライブラリが豊富に提供されています。このトークでは「日本語の文章に対してフリガナを振る」というプログラムの作成を通じて、Pythonで自然言語処理ライブラリJanomeとSudachiPyを使用した、日本語を処理する方法について解説します。

はじめに自然言語処理とはどういうものか、今回主に使用する形態素解析について概要を説明します。またゴールとする「フリガナを振るプログラム」ではどういう動作をしてほしいかについて最初に説明します。

前半はJanomeを使用してフリガナを振るプログラムを作成していきます。Janomeを使用した形態素解析のやり方、読みの取得、フリガナを振るプログラム作成を行います。その後辞書の改善によるフリガナの改善を行います。

後半はライブラリとしてSudachiPyを使用します。最初にJanomeとSudachiPyの違いに触れ、SudachiPyで書き直す理由について説明します。SudachiPyを使用した形態素解析のやり方、読みの取得、フリガナを振るプログラムを作成します。フリガナの処理をより洗練させ、ユーザー辞書でのフリガナの改善まで行います。また、小学校で学んだ漢字のリストを作成し、小学校で学んだ漢字にはフリガナを振らない処理を作成します。

Data Science, AI
4F Track3
10:20
30min
Re:PandasAI:生成AIがデータ分析業務にもたらすパラダイムシフト【増補改訂版】
Ryosuke TANNO

生成AIがデータ分析業務にもたらすパラダイムシフトとして「複雑な分析関連コードを書く代わりに、自然言語による対話的なデータ分析」を本セッションを通じて体験してみませんか?

本セッションでは、生成AIを利用したデータ分析の効率化と自動化に焦点を当て、特に、自然言語によるデータ分析機能を提供するPandasAIというライブラリの可能性を紹介します。実世界のデータ分析課題にPandasAIをどのように適用できるか、そのベストプラクティスを共有し、データ処理、クリーニング、可視化、および特徴量生成のプロセスを簡略化する方法を提示します。

Data Science, AI
20F Track2
10:20
30min
Streamlining Testing in a Large Python Codebase
Jimmy Lai

Maintaining code quality in a growing codebase is challenging. We faced issues like increased test suite execution time, slow test startups, and coverage reporting overhead. By leveraging open-source tools, we significantly enhanced testing efficiency. We utilized pytest-xdist for parallel test execution, reducing test times and accelerating development. Optimizing test startup with Docker and Kubernetes for CI, and pytest-hot-reloading for local development, improved productivity. Customizing coverage tools to target updated files minimized overhead. This resulted in an 8000-case increase in test volume, 85% test coverage, and CI tests completing in under 15 minutes.

DevOps, Testing, Documentation, Packaging
4F Track4
10:20
30min
【招待講演】PythonのUTF-8化
稲田 直哉

2010年台にUTF-8の利用率は大幅に成長しました。
インターネット上のテキストは多くがUTF-8ですし、PythonのソースコードもUTF-8が標準です。
VSCode等の開発者向けテキストエディタはもちろん、今ではWindowsのメモ帳もUTF-8が標準です。
常にUTF-8を使う事で、文字化け等の問題も減り、プログラミングの初学者が文字エンコーディングを気にする必要もなくなりました。

一方で、いまだにPythonはデフォルトでUTF-8を使わないケースが存在します。
初学者が、テキストファイルを作成してPythonで読もうとするだけで、 UnicodeDecodeError に遭遇してしまうのです。

この状況を解決するため、私は PEP 686 を提案しました。このPEPはPython 3.15で実装される予定です。
この講演では、 Python 3への移行からPEP 686までの、PythonのデフォルトUTF-8化に向けた取り組みを紹介します。

20F Track1
11:10
11:10
30min
Cloudflare Workers in Pythonでサーバーレスアプリケーションを作ろう
Ryuji Tsutsui

Cloudflare Workers(https://developers.cloudflare.com/workers/)はサーバーレス アプリケーションをデプロイできるプラットフォームです。
対応言語はJavaScript、TypeScript、Rustでしたが、今年4月、ここにPythonが加わりました(https://blog.cloudflare.com/python-workers)。
このトークでは、Cloudflare WorkersでPythonを使用する方法と、内部の仕組みについて説明します。

なお、Cloudflare WorkersのPythonサポートはプロポーザル提出時点でオープンベータ版です。正式版では仕様が異なる場合があることをご注意ください。

Web Applications
20F Track1
11:10
30min
Pythonの数学機能を学ぼう!その仕組みも学ぼう!
curekoshimizu

+やーといった四則演算はもちろんのこと、mathライブラリといった計算に関するロジックはPythonの中で最も使う機能と言っても過言ではありません。
我々はそのライブラリをPythonの機能として使うだけなのですが、これらの機能は裏では一体何をしているのだろうかということが気になります。
普段気にしない、そうした数学的な機能について理解することで、普段使っているPythonに更に愛着がもてるよう発表していきます。

Features and Development of Python Itself
4F Track3
11:10
30min
Unlocking Python's Core Magic
Wei Lee

Discover the hidden gems of Python that can significantly improve your coding skills. While fundamental concepts such as dunder methods, decorators, and iterable protocols are well-known to most Python developers, not everyone knows how to apply them. In this presentation, you will learn how these features work and see their application in real-world open-source projects.

Features and Development of Python Itself
4F Track4
11:10
30min
データフレームライブラリ徹底比較
桂川大輝

データフレームとは、データサイエンスや機械学習、データエンジニアリング、ウェブ開発等、さまざまな分野で広く使用されてる表形式のデータ構造です。Pythonにおいては、長年にわたってpandasがデータフレームの機能を提供するライブラリのデファクトスタンダードとして位置づけられてきました。近年では、性能向上や特定の場面への適応を目的として、データフレームの機能を提供する新たなライブラリも公開されています。この時、プロジェクトに最適なライブラリを選択するために、これらの違いの多角的な理解が重要な課題となります。本発表では、2024年9月時点での情報に基づき、データフレームの機能を提供する主要なライブラリ(pandas、Polars、PySpark、Dask、Modin、FireDucks等)を様々な観点から比較します。これにより、参加者が自身のプロジェクトに最適なライブラリを選択するための知識と洞察を得ることを目指します。

Others
20F Track2
12:40
12:40
30min
Pythonを活用したLLMによる構造的データ生成の手法と実践
柴内一宏

大規模言語モデル(LLM)の進化は目覚ましく、その応用範囲は広がっています。しかし、LLMの出力を利用したアプリケーションの構築において、その出力のデータ内容やスキーマの制御が求められます。本セッションでは、Pythonを中間コードとして用いて、構造的データを効率的に生成する手法を紹介します。この手法は直接出力よりも反復的なデータや計算を含むデータ等により効力を発揮します。また、生成過程における、Pythonコードの安全な実行環境としてWebAssemblyを利用した方法も提案します。最後に、これらによって構築されたLLMアプリケーションのアーキテクチャと、実践的デモを実演します。

Data Science, AI
4F Track3
12:40
30min
Sleuthing in Cython: Wrapping and Debugging Legacy C Libraries for Python
Maryanne Wachter

Cython, an optimizing static compiler for Python, provides an accessible way to expose legacy C/C++ programs to Python users with minimal background knowledge. However, once initial setup is complete, debugging issues in both the build and runtime can be challenging. The underlying C library might obscure problems in memory management, and the lack of "training wheels" compared to Python can result in system errors, like segfaults or obscure error codes that are difficult to debug. This session explores the tools and workflows essential for working with Cython, identifying common errors, and presenting lessons learned from wrapping a geometric triangulation C library for using with Python via Cython.

Practices for Development with Python
4F Track4
12:40
30min
「巨人の肩の上」で自作ライブラリを作る技術
石原祥太郎

本発表では、特定の目的に向けて既存技術を調査し、自作のPythonライブラリを実装・評価する一連の流れを紹介します。具体的な事例として、講演者が実際の業務で自作した「ニュース記事のテキストから時間表現を抽出し、省略を補完し正確な日付を特定する」ライブラリを取り上げます。手順は①要件の確認②既存ライブラリ・文献の調査③方針の策定④実装・性能評価・改善ーーから成ります。それぞれ、何をどう考えて実行したかを説明し、得られた教訓を共有します。Pythonの偉大なるエコシステムの中で、自分自身がやりたいこと・やるべきことを見定め、開発を進めていく一例として、皆さまの参考になればと考えています。

Practices for Development with Python
20F Track2
12:40
30min
実例から学ぶ型ヒントの活用手法
Rei Suyama

近年のPythonは型ヒントの強化が活発で、メジャーアップデートのたびに便利な機能が追加されています。
さらに型ヒントを活用するライブラリやツールも多く登場し、コミュニティからの絶大な人気を集めています。

プログラミング言語における「型付け」の活用方法として真っ先に思い浮かぶものは、静的解析により型の不整合を検出し、バグや実行時エラーを減らすことでしょう。
しかし、Pythonのエコシステムでは、従来の枠にとらわれない多種多様なアイディアで型ヒントが活用されています。
具体的な活用例としては次のようなものがあります。

  • FastAPI
    • APIドキュメントの自動生成
    • Dependency Injection
  • Pydantic
    • データバリデーション
  • SQLAlchemy 2.0
    • データベース内のデータ型の決定や制約の付与

本セッションでは、これらのライブラリがそのアイディアをどのように実装しているかについて紹介します。

Pythonの型ヒントはまだまだ多くの可能性を秘めていると思います。
本セッションを通じて、普段の開発で型ヒントをより便利に活用し、新たなアイディアを自身の手で具体化していきましょう。

Practices for Development with Python
20F Track1
13:30
13:30
30min
Playing games in the browser with WASM
Neeraj Pandey, Manoj Pandey

Learn about the convergence of PyGame in Python and WebAssembly. In this talk, explore how we can turn Python based games into web sensations. Understand the essential of game development with PyGame, from animation to interaction and how PygBag bridges these creations to the web with WebAssembly.

We will see how this transition from desktop to browser works, ensuring the games are accessible and performant on every device. Let's play video games in the browser with high efficiency in the browser!

Movie, Music, Games, Illustrations
4F Track4
13:30
30min
Rustを活用したPythonライブラリの開発
Shota Kokado

Python以外の言語で実装された機能(モジュール、クラス、関数)をPythonのライブラリとして使用することが可能です。
有名なものでは Numpy / Pandas は高速化のために主にC言語をベースに実装されています。

最近ではC/C++以外にもRust言語の活用が注目されています。
本セッションでは、Rust を利用してPythonライブラリを開発する利点や手順などを解説します。
また実際にRustが使用されているライブラリの実例を紹介します。

DevOps, Testing, Documentation, Packaging
20F Track2
13:30
30min
SQLModel入門 〜クエリと型〜
Mizuki Sato

ここ数年PythonのWeb開発において目立つ存在になっているFastAPIについて、FastAPI開発者が提供するサンプルのリポジトリでは、データ操作のためのパッケージとしてSQLModelというORMが使われています。

クラス定義はPydantic、クエリはSQLAlchemyをベースとしているSQLModelは直感的で使いやすいですが、それゆえに使い方のノウハウが少ないように思えます。

このトークでは、SQLModelの基本的な使い方を話しながらPydantic/SQLAlchemyとの違いにも触れていきます。

構成

  • SQLモデルでのモデルクラスの書き方

  • クエリの書き方

  • 静的解析ツールの設定方法

  • alembicを使ったデータベースのスキーマの変更管理

  • FastAPIのアプリ内での使い方

対象者

  • Djangoなど別のORMを使ったことがあるが、SQLModelには馴染みのない方

話さないこと

  • SQLの基本的な構文(SELCT, INSERT, JOINなど)
  • 素のPythonでの型ヒントの基本的な構文
  • 複数DBに接続する場合など応用的な使い方
Web Applications
20F Track1
13:30
30min
データサイエンスのフルサイクル開発を実現する機械学習パイプライン
Cristian Kamiya

プロダクト開発に従事するデータサイエンティストは、データパイプラインの構築、実験、PoC、プロダクト実装など、幅広い業務を担当することが多いです。このフルサイクル開発は重要ですが、同時にデータサイエンティストがロジック開発やデータ分析にも集中できる環境が求められます。本トークでは、弊社の広告配信チームがどのようにしてデータサイエンティストがフルサイクル開発を行いながらも、専門業務に集中できる環境を整えたかを紹介します。具体的には、Luigi、SageMaker、Prefectといったワークフローエンジンを活用し、フルサイクルデータサイエンティストにとって効率的な機械学習基盤を開発した過程と、そこで得られた知見を共有します。

Data Science, AI
4F Track3
14:20
14:20
30min
PythonとOpenCVで楽しむ物体検出!
Lina Katayose

概要

このトークでは、一般的に使われるPythonとOpenCVライブラリを使用して、PCのウェブカメラから物体(主に人の顔)を検出し、どのような結果が得られるかを見ていきます。物体検出のためにカスケード分類器を使用し、すでに顔の検出ができているデータセットを使用してカメラから物体を検出しながら、Pythonコードの例を示し、カメラ映像から物体を検出したときの楽しさをお話しします。
また、専門用語が多くあるため、その説明を含めながらこれからPythonを始める方に向けて導入しやすい内容でトークをします。
PythonとOpenCVライブラリを使用して、PCのウェブカメラから物体(主に人の顔)を検出するだけでなく、条件分岐を取り入れて、顔や人を認識した場合にどのようなアクションが取られるかについてもお話しします。簡単な例として、顔が検出されたときに「顔検出」という検出結果を表示する方法を示します。
さらに、ビデオや静止画の使用方法、およびリアルタイムでの方法についても、説明します。

コンテンツ

  • はじめに
  • これをやりたいと思った理由
  • OpenCVについて
  • カスケード分類器とは
  • 物体検出
  • ビデオと静止画からの検出
  • リアルタイム検出
  • 条件分岐を試してみた
  • その他の実用例
  • 最後に

聴講者が得られるもの

  • Pythonでのカメラデバイスの使用方法
  • 物体検出の方法
  • 顔検出の基本
  • IoTの基礎
  • OpenCVライブラリの使い方
  • カスケード分類器とは
  • アノテーションとは
IoT, Hardware, and Networking
4F Track3
14:20
30min
Pythonによるイベントソーシングへの挑戦と現状に対する考察
Masanobu Naruse

本トークではイベントソーシングの概念や利点をお話するのと同時に、Pythonにおけるイベントソーシングに挑戦した結果を共有します。

私は普段、JVM でイベントソーシングをベースとしたマイクロサービス群の開発に取り組んでいます。
イベントソーシングはシステム上の出来事をイベントとして永続化することでシステムを構築する手法です。
システムをイベントでとらえることは多くの利点をもたらします。

ひとつ分かりやすい例を挙げるとすれば、システムの全ての状態変化を時間を追って追跡することが可能となることが挙げられます。
たとえば、何らかの問題が発生した場合には、発生したイベントのシーケンスをたどることで問題の原因を容易に特定できます。
ちょうどGitのログをたどるのと同じイメージです。
これはシステムの運用を確実に楽にします。

その他にもイベントデータはシステム間の連携を疎結合にしますし、永続化されたイベントデータを利用して、あとからBIツールと連携するといった芸当も可能です。

本トークではそのように便利なイベントソーシングの基本原理やメリットなどをお話しし、またイベントソーシングを実践する上で諸問題への回答となる各種機能について網羅して解説します。
また、それらの前提を共有した上で、現時点で Python における実装に挑戦した結果を紹介し、実践にむけて越えなくてはいけないハードル=「Python で現状実現できてないこと」について探ります。

Practices for Development with Python
20F Track2
14:20
30min
The Wheelhouse of Horrors
Laszlo Kiss Kollar

You might be surprised to learn that, besides naming and cache invalidation problems, building a binary wheel for a Python extension is one of the hardest problems in computer science. Or more precisely, building that binary wheel correctly. Lucky for us, a few amazing community-led projects hide all that complexity from us, so we can instead focus on shipping and using Python code.

This talk will showcase some notable examples of how things can go wrong, while also helping users and maintainers recognise these typical error scenarios. We will learn how to avoid these issues and what users can do when they encounter such issues when using a library.

Practices for Development with Python
4F Track4
14:20
30min
実践Dash - 手を抜きながら本気で作るデータ可視化Webアプリの基本と応用
Shinichi Nakagawa(@shinyorke)

概要

ビッグデータ分析の為のデータ可視化アプリケーションをDashで実装した際の知見とノウハウを紹介します.

Pandasのデータを元にシンプルなグラフで可視化する方法は勿論の事, 業務で使う際に検討・実装すべきことである,

  • 本番環境(クラウド)へのデプロイと公開
  • Dashアプリケーションの認証認可
  • 動的URLを用いたマルチページアプリケーションの実装

以上の実践的なノウハウについても実装を元に紹介します.

社内でのデータ利活用, プロトタイプ・PoC目的でのWebアプリケーション構築・運用でのノウハウが欲しい方におすすめします.

技術スタック(簡易版)

  • Dash
  • Pandas
  • Google Cloud(Cloud Run, Cloud Build, Artifact Registory)

本トークで話すこと

  • Dashでアプリケーションを構築する際の基本
  • Dashアプリケーションのデプロイおよびクラウドでの公開方法
  • Dashアプリケーションでの認証認可
  • マルチページ化他, 実践的な実装ノウハウ
  • 実際のData可視化事例

本トークで話さないこと

  • データ可視化の基本(Matplotlib, Seaborn, etc...)
  • データ分析の基本(Pandas, Numpy, etc...)
  • DevOpsおよびCI/CD
Web Applications
20F Track1
15:30
15:30
30min
Pythonで3Dモデリングをしてみよう: CadQuery Basic
Hiroshi Sano

3DCADは3Dデータを作る上で、様々な業界やモノづくりをする上で利用されている強力なソフトウェアです。個人でも3Dプリンタを活用することで試作から製品まで作成できます。3DCADはGUIで操作するソフトウェアが市場でも多数存在しますが、プログラミングをすることで3Dデータを作成することも可能です。本トークではPythonから触ることができる。プログラマブル3DCADのCadQyeryを概要から簡単なモデリングを行うためのデモを交えて紹介します。

Movie, Music, Games, Illustrations
4F Track3
15:30
30min
Pythonと相互運用可能な静的型付け言語Erg
Shunsuke Shibayama

本発表では、静的型付けプログラミング言語Ergを紹介します。この言語の最大の特徴は、完全な静的型付けを達成したままPythonとの相互運用性を持つことで、TypeScriptのPython版のような言語であるといえます。

本発表では、Ergがどのような言語機能を持っているのか、ErgがどのようにしてPythonとの相互運用性を達成しているのか、そして現状どの程度のことができるのかを紹介します。

そして、Ergに興味はあるけれどPythonから今すぐ乗り換えるのは難しい・やっぱりPythonを書くのが好きという人のために、Erg型検査器をベースにして開発されたPython用型チェッカー/Language Serverであるpylyzerの紹介も行います。

I created libraries or services
20F Track2
15:30
30min
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 Applications
20F Track1
15:30
30min
Why Knowing Cython Helps in Understanding Python: A Deep Dive into Cython & PVM
Abhik Sarkar

This talk explores the intersection of Python and Cython, emphasizing how understanding Cython can deepen one's knowledge of the Python Virtual Machine (PVM) and Python's performance characteristics.

Features and Development of Python Itself
4F Track4
16:20
16:20
30min
DjangoとFastAPIによる実践認証技術
大島和輝

本発表では、Pythonの主要なWebフレームワークであるDjangoとFastAPIを使用しての認証技術に焦点を当てており、それぞれの認証技術の仕組みや開発時のベストプラクティスについて解説します。

本発表ではSPA + WebAPI構成でのバックエンドのRESTful APIにおける認証技術の概要、種類、そしてその実装方法について詳細に解説します。メールアドレスとパスワードによる一般的なログイン認証について重点的に説明し、OAuthなどについては扱いません。

発表の前半では、認証の基本概念と仕組みについて説明します。
認証の基本的な知識であるステートレスとステートフル認証の違いとそのメリット・デメリットについてもお話しします。
特に、ステートレス認証のトークン管理の実際の手法や、セキュリティ上の考慮事項についても深堀りします。

次に、DjangoとFastAPIそれぞれのフレームワークでの認証部分の実装方法を具体的なコード例とともに紹介します。
Djangoでは、トークンベースの認証、JWT(JSON Web Token)を利用した仕組みや実装についても触れ、デフォルトの認証機構との違いについてもお話しします。
また、django-ninjaやdjango-restframeworkなどのプラグインを使用した際のそれぞれの認証の内部仕組みや違いについても詳述します。一方、FastAPIでは、JWTを用いた認証の実装方法を中心に説明します。

最後に、これらの技術を組み合わせたシステム設計のベストプラクティスと、現場での実際の適用例についてもお話しします。

Web Applications
20F Track1
16:20
30min
Getting Started with Open Source Contributions
Stefanie Molin

The open source community is all about giving back and learning from one another. No matter how small, every contribution is valuable. And everyone can contribute something with a little bit of help. The hardest part is finding something to work on that fits your interests and skills.

In this talk, I will provide five ways that I used to get started contributing to different open source projects. I also share some guidance on selecting projects to contribute to and how to set yourself up for success. Get ready to start your open source journey!

Community and Education
4F Track4
16:20
30min
Pythonで3次元CGを作りたい人のためのPyVista入門
Tetsuo Koyama

著者はPyVista というPython3次元コンピュータグラフィックスライブラリのメンテナをしています。今回はPythonの中級者向けにPyVistaでCGを作る方法を紹介します。

まずは基本的な3次元コンピュータグラフィックスを作る方法を説明します。使用方法はMatplotlibと似ているため、Pythonの中級者であれば簡単に使いこなせるでしょう。

  1. 3D空間にオブジェクトを配置する「モデリング」の方法を紹介します。(5分)
  2. オブジェクトの質感を表現する「テクスチャ」と「マテリアル」の方法を紹介します。(5分)
  3. 3D空間に光を配置してオブジェクトを照らす「ライティング」の方法を紹介します。(5分)
  4. Minecraftの洞窟をPyVistaで作成する方法を紹介します。パラメータを変えるだけで、様々な洞窟を作ることができます。(5分)
  5. JupyterとStreamlitを使用して3次元コンピュータグラフィックスをインタラクティブに可視化をする方法を紹介します。(5分)

PyVistaは3次元空間上のデータ分析にも使えるため、物理シミュレーションや機械学習の可視化にも使えます。PyVistaでデータ分析をする際の使用方法の例を説明します。
使用方法はPandasを意識して設計されているため、Pythonの中級者であれば簡単に使いこなせるでしょう。さらに、3次元コンピュータグラフィックスをStreamlitを使用してインタラクティブに行う方法を紹介します。
さらに、PyVistaはJupyterやStreamlitさらにSphinxでも容易に使用することが可能です。Pythonのエコシステムを使用することで分析結果の可視化に3次元コンピュータグラフィックスを活用することが期待できます。

最後に、PyVistaの応用事例を紹介します。

I created libraries or services
20F Track2
16:20
30min
プロダクションでのPython非同期ユースケース - Trio/Trio-Utilを中心に
Junya Fukuda

Pythonの非同期を利用されていますか?おそらく、市場での多くのユースケースはIOを多用するWebでの活用で、FastAPIやDjangoでasyncioを利用されている方も多いのではないでしょうか。今回のトークでは、asyncioと同時期にリリースされ「structured concurrency」という概念に強く影響を受けた Python非同期のサードパーティライブラリ「Trio」について、asyncioとの比較を交えお話しします。

asyncio以外のpython非同期って何?anyioってとは?なぜTrioを選択したのか、にお答えします。世界的に見ても稀有なTrioをプロダクションで利用している事例を中心に、実際のコードを交えTrioとasyncioの比較をしながら、ユースケースをご紹介します。

IoT, Hardware, and Networking
4F Track3
17:00
17:00
15min
pytest プラグインを開発して DRY に自動テストを書こう
Atsushi Inutsuka

業務で pytest を使って自動テストを書いていて「あれ、conftest.py で書いているこの処理、他の tests ディレクリの conftest.py でも書いた気がするな...」と感じたことはないでしょうか?
自動テストを実装する上では、例えばデータベースにテーブルを作る、データベースに接続するセッションを用意するなど、テスト実行のために必要な前処理が色々と発生します。こういった処理は conftest.py に書くことが多いですが、サービスやプロダクトが増えて tests ディレクトリが分散してくると、色々な tests ディレクトリ内で同じような conftest.py が書かれて DRY 原則に反した状態になり、テストコードの保守性の低下を招く要因になります。

pytest を使っていると何かしらのサードパーティのプラグインを使うことが多いと思いますが、上記の課題はプラグインを自作することで解決することができます。

このセッションでは、私が所属する会社のプロダクトの開発において抱えていた課題と、その課題を解決するために実際に開発した社内向けの pytest プラグインの実装を紹介します。自作の pytest プラグインを開発してより快適にテストを実装できるようになりましょう!

DevOps, Testing, Documentation, Packaging
4F Track3
17:30
17:30
30min
Day2 Keynote

1990年代半ばからPythonを使い始めた、古参のPythonユーザです。使い始めたときには30年近くにわたっての長い付き合いになるとは思っていませんでしたが、最初に目にしたときから「このプログラミング言語は使える」と感じて、情報交換のための日本語によるメーリングリストを開設したり、ドキュメント翻訳翻訳プロジェクトをはじめたりしました。また、この当時のPythonは日本語環境のWindowsではまともに使えなかったので、日本語パッチ版の開発などを行っていました。
元々の仕事はC/C++が主でそれほどPythonは使っていませんでしたが、 Pythonの比率は徐々に上がっていき、今ではほぼPython専業な状態になってきました。

I am a veteran Python user who started using Python in the mid-1990s. I never imagined back then that it would become a nearly 30-year relationship. However, from the moment I first encountered it, I felt that “this programming language is useful.” I created a Japanese mailing list for information exchange and started a documentation translation project. Additionally, during that time, Python did not work properly on Japanese Windows environments, so I developed a Japanese pa

20F Track1