PyCon JP 2025

【招待講演】PEP 750 の共同著者 青野高大 氏による Python3.14の新機能の紹介
get_annotations で型を取得できるようになった。ランタイム上で取りやすくなった
過去は get_type_hint を取得していた
ユニットテストの CLU にカラーリングが実装
PEP750 Template String
f"" じゃなくて t"" が出る。
Template オブジェクトが返却される。文字列じゃない。
Template が帰ってくることで、検証を挟むことが可能。
構造化ログ
logger なら文字列を出して、他の場合は、 json を出力するなど、複数選択可能。

フロントエンドエンジニアが Python エンジニアになって見えた世界!
構文エラーは Type Hints, mypy で防ぐことが可能
Protocol を使うと方安全に実装できる。 mypy で検知可能
f-string を使うと、変数の後に = を入れると値と出力可能
TypeScript は数字の計算が Python に劣ることがある。
2進法で表現できない
メモ

ReactPyを使ってreact likeにUIをPythonで実装する
Streamlit, Dash Gradio, Panel などでビジュアライゼーションを構築することがある。
ReactPy はバックエンドのツールを指定してインストールする
豊富なエコシステム(Numpyなど)を使うことが可能
通常の React で構築する流れと似たような形になっているっぽい。
コンポーネントはデコレーターを使って宣言する
強みとしては、バックエンドを指定して連携することが可能
状態管理をサーバーサイドで行うことができる。サーバーの負荷が上がるとも言える

複雑化したリポジトリをなんとかした話、pipenvからuvによるモノレポ構成への移行
pyenv から asdf に移行
TS を使っていることもあり
uv にはワークスペース機能がある。モノレポに向いている

Pythonだけでつながるあなたのアイディア、フロントエンドもPythonで
Streamlit は簡単にデプロイできる仕組みが存在する
Flet
サーバーレス(静的Webサイト)も可能
OpenCV で作成?
デスクトップアプリ作成可能
WebAssenmbly
ブラウザで動く、コンパイルする。 JS経由で読み込む
Pyodide
CPython を WebAssembly に移植したもの
ブラウザで Python を動かせる
Flet(静的webサイト)
ビルドすると、HTML,JS が生成され、その中で Pyodide が読み込まれる
ホットリロード機能付き
Netrify で web build したものをホストすることが可能
py2wasm
こういった動きもある。これからのこと
制限
JS を通さないといけないこと(カメラ)
Pyodide 対応していないライブラリは動かない
Flet と Pyodide の連携がユニークな点
Python は zip ファイルになる。
Python を動かす JS が Pyodied を経由して Python を動かしている
クライアントに情報が渡るため、 API KEY を渡すとかはやめた方がいい
だけど、クライアントと生成APIが直接やりとりできるのはメリット

mypyの10年、pyrightの5年、tyの挑戦 - 型チェッカー進化論
Python の型の誕生より、 mypy の方が古い
typeshed ライブラリの型情報をまとめている
mypy を vscode に入れると遅いため、 pyright(Pylance)が登場
ダックタイピングProtocol
モノレポ構成で速度が気になるため ty が登場
アルファ版のため、動作が安定していない
88% が型チェックを常に、頻繁に利用している
mypy が一強状態
大きいファイルだと、mypy がかなり遅い。pyright はそこそこ。ty最強。
エラー時の出力についても ty が見やすい
カラーリング、ガイドコード付き。
型の推論能力について
現在のtyは全然動かない。誤検知が多い
mypy は PEP に忠実。ライブラリの追加ができる。(django など)
pyright は型推論協力。 Any, None に厳しい。
現時点では mypy メインがおすすめ。
並行して、即時フィードバックが欲しいので、 pyright も併用する。

【Day 1 Keynote】 Sebastián Ramírez 氏 Behind the scenes of FastAPI and friends for developers and builders
常に問題を解決するところから、注力する。
そこから、イノベーションが発生するのではないか。
プロダクトを開発するヒント
- 必要なものを構築する
- 問題を見つける
- きっとそれはすでに解決するルールがある。だけど完璧ではない。
- ビルディングブロックで解決できないか
- 問題を見つける
- 存在するものよりも良いものであること
- ユーザーの観点からみましょう。UI/UX
- 開発者の体験も良いこと。
- 複数のものに対して、同じ名前を書かないようにしない
- ドキュメントの中で、 Emoji や Tips など区切って見やすくなるように
- 早すぎる抽象化は危険
90% 以上の Issue はユーザーのエラー
ポジティブなフィードバックを残しておく
FastAPI Cloud
自分にとって、使いやすいか、自分がどう思うのか考える。
提供するなら、使う人に感想を聞く。

標準ライブラリのlogging、レゴブロックのように組合せてロギングできることを理解しよう!
logging モジュール
logging を定義しただけだと見れない。
出力するなら、 Logger を取得する。
ロガーのレベルについて
ロガーを設定する側は、レベルは NOTSET
NOTSET なら、親(ルートロガー, spam, spam.ham)のレベルが決まる
ルートロガーは WARNING レベル
propagate 属性:これが True ならルートロガーに伝播される
ログには print ではなく logging を使う
色付きロギングなら Rich

Webアプリケーションにおけるパスルーティングアルゴリズムの解剖
TODO: スライドが見つかれば・・
ルーティングを処理するには
ルーティング設定したものを、線形探索 + 正規表現だったり、 Trie Tree マッチング
正規表現のエンジン
DFA, VM があり、 Python では VM
コンパイルして、バイトコードでステップに変換。
Trie Tree
文字を分割し、木構造で検索できるようなイメージ
Trie Tree は早いが、弱点がある
/foo/$param/bar
/
の時に、 /foo/hoge でアクセスした時に失敗する
バックトラックしないため。
バックトラックしないことを意識してパスの設計をする必要がある。

Streamlit は社内ツールだけじゃない!PoCの速さで実現する"商用品質"の分析SaaSアーキテクチャ
Streamlit にはキャッシュ機能を持っている
session_state ユーザーやタブごとにキャッシュ
cache_data 全ユーザーが使えるキャッシュ
キーがかぶることがある。関数で分ける。
直接使えないように、 linter で制限することが可能
認証も可能。 Decorator で対応
各処理にエラー処理を書かないといけなくなる。忘れる可能性があるため、Decorator
認証にも Decorator。 main 関数ごとにその Decorator を利用することで、タブが分かれても認証を維持することが可能
型による堅牢性と UI テストで品質の担保
LLM による恩恵も受けるため、型での制御を実施する
Result 型と AnyError 型
Rust に影響されている。

育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
Pandas DataFrame を引数レスポンスに型指定していても、
何を指定しているのか分からない。
Pydantic を使って、データの整合性を保証する。ドキュメントとしての役割もしてくれる
イミュータブルの設定を実施することが可能
dataclass だと型ヒントを提供するのみ
pands data frame については、 pandera を使う。
これで、 Schema を綺麗に定義することが可能。
リポジトリパターン
データストアへのアクセスを抽象化
抽象基底クラスが ABC これがインターフェースの役割