PyCon mini 東海 2025
2025/11/08 の 参加ログです。
公式: PyCon mini 東海 2025
Connpass: PyCon mini 東海 2025 - connpass
posfie(有志):
shimizukawa.icon blog https://freia.jp/taka/blog/2025/11/pycontokai2025/index.html
朝
7:39 東海道新幹線 東京駅発。
自由席、3人掛けの通路側を確保
しまった3分待って次のに乗ればコンセントが確保できたな..
XREAL One で広いディスプレイ!だけど3DoF/6DoFどちらのモードでも画面が流れていってしまう..
9:16 名古屋着
9:30 住よしできしめんを頂く
9:40 東山線 名古屋 発
新幹線出口から東山線乗り場までがまだちょっと迷う
9:50 東山線 栄 着
10:00 会場着
10:30 ~ 11:20
キーノート https://tokai.pycon.jp/2025/#session-keynote
村橋 究理基 さん
https://scrapbox.io/files/690e9e504d91d1b411121c17.png
「タイトルが固い」w
shimizukawa.icon 語り口が軽快で面白い
shimizukawa.icon 開始15分、Rubyの話を経てやっとPythonの話w
RaspberryPiでコマ撮りした写真をタイムラプス動画にしてYouTubeに上げている
https://www.youtube.com/watch?v=Mjd5fyQaQ0w
プログラミング
https://scrapbox.io/files/690ea8c82a3dd0404a9f1e37.png
質疑応答
Q. (はむかず) Pythonはみんな独学?
A. 公式には各学科でPythonを教えていることにはなっていない。解析にはmatplotlibなどが必要で独学で学んでいるし、教員も教えている。
Q. それならば学校でPythonを教えようということにはならないんでしょうか?
A. Ruby振興に松江市がお金を出しているという大人の事情もあるが、C/C++は基本的に教えていることもあり、Pythonは独学でも学べる程度の基礎力はある。なので、Pythonは独学できる。
11:35 ~
PyScriptとOpenCVを使ってWebで画像処理AI
https://tokai.pycon.jp/2025/#session-talk-1
高橋 かずひと さん
https://scrapbox.io/files/690ead92f1323d9e7950f06a.png
PyScript とは
Hello World
Tic Tac Toe
Folium geographical data 地図表示
AI画像処理
ライブラリ
NumPy, OpenCV, Pillow, TensorFlow, PyTorch, ONNX Runtime あたりが使えると嬉しい
NumPy, OpenCV, Pillow が使える
TensorFlowやPyTorchの代わりに OpenCV DNNを使う
PyScriptでメディアデバイスが扱える
shimizukawa.icon Webカメラにアクセス!なるほどー
shimizukawa.iconインストールせずにけっこう色々できるんだなあ
デモ: YOLO
推論自体はそんなに遅くないけどCanvas反映が遅い
create_proxy を使うと速いけどメモリリークがあったので今回は避けた
今回のスライドは全てGitHub Pagesで動作してます
質疑応答
Q: (@aodag) Python処理系でWASM対応からWASI対応にTierが上がってきているけど、PyOdide以外の処理系(Rust)のPyScriptもありますが、そちらはどうですか?
A. わかんないです
S. SPy(静的型付けPython)の話があった。他は分からない。
Q. (@nikkie) GitHub Pagesで動かせるの良いですよね。PyOdideを直接使っていてそれで良いじゃん!と思ってるんですが、PyScriptの推しポイントを教えてください
A. Pythonそのままのソースコードをアップロードできるのが良いよね、という主張が公式でされてます
A. PyOdideのラッパーとして「使いやすくしている」のが推しポイントだと思います
Q. さっそくPyScriptでカウントダウンタイマーを作ってみたんですが、Pythonを使ってもらいたい人にいちいちPythonインストールしてもらうのが面倒なので、ブラウザで使ってもらうのに気をつけるべきことがあれば教えてください
A. ダークITにならないこと(会社に黙ってやらないこと)
A. 公式では、教育用途に適してますということを言ってます
Q. (@terapyon) OpenCV DNN も学習済みモデルを取り込める、という理解で合ってますか?
A. 合ってます。他のTensorFlow等で作ったモデルを持ってきてそのまま使えます
A. OpenCV DNN は開発中で最新のモデルが使えないなどの制限があります
12:05 ~ 12:30
個人ではじめるマルチAIエージェント入門 〜LangChain × LangGraphでアイデアを形にするステップ〜
https://tokai.pycon.jp/2025/#session-talk-2
@komo_fr さん
https://scrapbox.io/files/690eb3a83fab03fb0bfa0097.png
きっかけ
児童文学サークル出身だったこともあり、文学を小学校低学年向けに変換するAIエージェントを作った
Agent実装
https://scrapbox.io/files/690eb47f9f6ee3c0c4a159ea.png
shimizukawa.icon マルチエージェントのお手本っぽいチャート。おもしろい
LangChain を使って作成
先日 1.0 がリリースされた
楽に開発できるようにする
JSONを扱うと補完も使えず手間が多かった
Pydanticでデータ構造を定義
structured output を利用
LangGraph を導入
エージェントのワークフローをグラフ構造で定義
各エージェントが扱うデータをステートとして渡せる
graph.get_graph.draw_mermaid_png() で Mermaidで出力される!
shimizukawa.icon便利ぃ~
LangSmithの導入
LangChain開発元が提供するサービス
実行ログをLangSmith上のWebダッシュボードで評価管理できる
LangGraphの実行結果を人間が評価してコンソールinputで評価値を入れてLangSmithへ
shimizukawa.icon便利いい!!
エージェントの質を上げる
一般的にその作品で言及される名言、印象的なフレーズを TavilySearchAPIRetriever でWeb上から取得して取り込む
取得したフレーズを原文から正確な文言で取り出すため sentence-transformer でコサイン類似度でベクトル検索
文体模倣エージェントを追加し、同じ作者の別作品の文体を模倣させて、趣を取り戻す
質疑応答
Q. 一番苦労した課題は?
A. 一番苦労したのは(書いて無くて)文体
Q. LLMモデルによって変わったりしますか?
A. 変わると思いますが、今回はそこまで比較できていない
A. ChatGPT-4.1, 4.5, 5 で比較したら、4.5が良かった。5だと短文になりすぎてしまった
Q. (@takanory) めっちゃ面白かった。最後の文体模倣エージェントのステップですが、文体固定なんですか?
A. 最初の方で模倣する文章を入力させてます
A. 文章がないと模倣できないので、同じ作者さんの子供向け文章があれば良いけれど、他の作者の文体を使うのは避けたかった。一般的な子供向け文体のようなものがあればそういうのでも良いかもしれない
12:30 - 13:50
ランチタイム!
今回はお弁当が2種類!
尾張御膳(おわりごぜん)と十二単(じゅうにひとえ)
https://scrapbox.io/files/690ec229e659f99a99029d40.png
十二単の方
https://scrapbox.io/files/690ec2a552d6ae8e6ca3765c.png
尾張御膳の方(2つめ食べた)
https://scrapbox.io/files/690ecaffdabb6555487079e9.png
https://scrapbox.io/files/690ecb3c98ea1a07c7f79d04.png
スクリーン前にコミュニケーションエリアが用意されていて、初めて会った人同士で話しやすい環境作りがされてました
13:50 -14:15
Pythonでやってはいけないやってみるべきこと
https://tokai.pycon.jp/2025/#session-talk-3
@aodag
https://scrapbox.io/files/690ed3a1d3e7a87c4bcd1989.png
「昼ご飯の後のまったりとした時間」に「技術の話をしますよ」
安全で窮屈
mypy, ruff, pyright, ...
「Pythonってダイナミックな言語なはずなのに静的型チェックとかなんなんだよ!」
冒険的プログラミング
悪いことをしよう
shimizukawa.icon 語り口が超おもしろいw
「違う自分になってみよう」
code:py
cat.__class__ = Dog
cat.greet() # => わん
「いくらやっても、Pythonの手のひらから出られない、Pythonの手のひらってどこだよ」
shimizukawa.iconヘビだからねw
まとめ
やってみるべきこと
ふとした疑問を試してみる
さらに疑問を投げかける
黒魔術との境に気をつける
黒魔術に気付く
やってはいけないこと
やってみたことを武勇伝のように伝える
質疑応答
Q. 率直にお伺いしますが、仕事でやらかしちゃった事ってありますか?
A. 存分に.... あ、具体的に聞きたいですか? 本番のOracleのセッションをロックしたことがあります
Q. 素敵なマジックの紹介ありがとうございました。仕様上ゆるされているから出来ていると思いますが、これは仕様でも禁止されたほうがいいと思いますか?
A. けっこう難しい話なんですが、__class__ の差し替えは出来なくて良いと思います
Q.(@shimizukawa) __class__ の差し替えができなくなると「古いclassを参照していたpickleのロード」で困りませんか?
A. まあそうなんですが、まあそうですね。そうなんだけど、それってZopeの話でしょ?Zopeの人たちはなんとかすると思うので良いと思います。
Q. (@terapyon) Pythonの仕様が変わって出来なくなる黒魔術もあると思いますが(True = Falseの代入とか)、いま禁止して欲しいそういったことはありますか?
A. 今日話した範囲は「あえてやろうとしなければ出てこない」黒魔術だと思うので、禁止しなくてもよいかなと思います
14:20 - 14:45
APIのテストデータを自動生成できるSchemathesisの紹介
https://introduction-to-schemathesis.ryu22e.dev/#/
@ryu22e さん
https://scrapbox.io/files/690ed3c63dc6293cc85cd20d.png
スライド: https://introduction-to-schemathesis.ryu22e.dev/
shimizukawa.iconおっ Schemathesis だ
「API実装を直したけど、まだコケる.. こんなデータでAPIエッジケースを見つけて来て正直ムカつきます」
shimizukawa.icon ww
https://scrapbox.io/files/690ed52193d3a1a81a414140.png
エラーがある場合に2回目のテストは速い
Schemathesisはテストデータをキャッシュしていて、次のテストでエラーになりそうなケースを優先的にテストしている
このため、GitHub Actionsでもこの動作を活かしたい場合は、 .hypothesis ディレクトリをキャッシュしておくと良い
ところでなぜ .schemathesis ではなく .hypothesis なのか?
HypothesisはSchemathesisが内部で使っているライブラリ
HypothesisはProperty-Based Testingに則ったテストライブラリ
Djangoの場合
DRF + drf-spectacular でテストできるようになる
drf-spectacular の問題(?)で、認証が必要なのに200が返るというOpenAPIドキュメントになっているのが原因で失敗してしまった
人間がテストを書かなくて良いのでは?
そんなことはなかった
Schemathesisのテストは、どんなテストが行われるのか分からないしコントロールできない
テストコードから仕様を読み取れなくなる
使いどころ
エッジケースを見つける
仕様と実装の乖離を見つける
質疑応答
Q. エラーになったらキャッシュして次のテストで優先的にテストするという話があったが、修正で別の所を壊してしまった場合、前の成功したテストは再実行される?
A. ちょっと分からない
Q. (@Yuichiro Tachibana (whitphx)) どういう入力値を提案していた?
A. よく分からない。a, b 以外の長いへんなデータを渡していて、それがどう作用しているのかよく分からない
Q. テストパターンで大量にテストケースを回したい場合は良いなと思うけど、境界値のテストがちゃんと入ってるかの指定はできる?
A. できます。パラメータに最大値最小値などを指定してカスタマイズできます。
A. HypothesisでできることはSchemathesisでもできます
Q. (@aodag) OpenAPIドキュメントからのテストということで、単体テスト相当だろうと思いますが、更新してから参照するような結合テスト的なことはできますか?
A. 複数のAPIを対象にする場合はSchemathesisだと難しいんじゃないかと思います
aodag: そうなると、pytest.fixture であらかじめ用意したデータを投入しておいてテストとかはできる?
A. できます。pytestの仕組みでデータ投入しておけます
14:55 - 15:20
稼働中のバッチアプリケーションを依存性逆転の法則でモダナイズ - 型安全と堅牢なテストによるリプレイス戦略
https://tokai.pycon.jp/2025/#session-talk-5
fujidomoe さん
https://scrapbox.io/files/690edc1ed493b5d8e6066fd2.png
エンジニアでない方が書いたPythonコード
ビジネスの根幹ではあるけど本番で動かすには安全ではないコード
shimizukawa.icon というニュアンスのことを言われていた
shimizukawa.icon dfが登場したら研究職と思え
テストコードなし、試行錯誤相当、Jupyter Notebookから始まったコードがほとんどそのまま本番バッチで動いている
アンチパターン1
kwargs で引数を処理している
見通しが悪い
アンチパターン2
グローバル関数の乱立
対策1
Pydanticの導入による、型安全、パラメータの明示
dataclass では型チェックが行われない
対策2
リポジトリパターンの導入
DIP の導入
collection.abc を使ってメソッドの実装を強制
インフラレイヤーが実装詳細ではなくインターフェースだけを把握すればよい
Makefile への統一
環境構築手順をREADMEからMakefileへ
make docker/setup で完結
テストも
make docker/test
質疑応答
Q. (nibu) レイヤー構造化したことで逆に認知負荷が高まることもあると思いますが、どうでしたか?
A. 混乱は、無かった。それ以前がノールールだったので、特に混乱はなかったです。
Q. (@aodag) READMEが秘伝のたれになると言うけどMakefileも秘伝のたれになるのでは
A. READMEは文章なので気付きづらいですが、Makefileは劣化が気付きやすい
Q. (@aodag) レイヤー構造にみんな沿ってくれますか?あるいはどうやって強制していきますか?
A. もらうときは構造に沿って無くてもよいけど、そのまま本番に持っていくことは防いでいます
エンジニアが、水際で防いでいます
15:35 - 16:00
型でつなぐFastAPI × フロントエンド活用術
https://tokai.pycon.jp/2025/#session-talk-6
Koki Miura 三浦 耕生 さん
https://scrapbox.io/files/690ee4d962fcdc1b29c7a136.png
鯱.py 運営
Webフレームワーク比較
FastAPI
DRF
Flask
redoc
Swagger-uiよりもうちょっとドキュメントっぽい出力
Hey API
OpenAPIドキュメントからTypeScript対応のAPIクライアントを生成してくれる
FastAPIの公式で紹介されている
FastAPI Operation ID 便利
APIのエンドポイント
Open API上ではドキュメントのURL hash になる
まとめ
軽量、高速、柔軟なファイル構成
型ヒントによる堅牢なAPI設計、OpenAPIドキュメント自動生成
質疑応答
Q. (@terapyon) Hey API知らなかったので勉強になりました。genというファイルは何者?
A. genファイルはHey APIのアウトプットで、それを参照してクライアント生成したりします
Q. 本番で使っても大丈夫なもの?
A. 大丈夫です
16:05 - 16:30
Pythonで構築する人口移動ナレッジグラフ: GraphRagを用いた意味的地域検索への応用
https://tokai.pycon.jp/2025/#session-talk-7
丹野良介 tanno さん
https://scrapbox.io/files/690eec46e659f99a9903b624.png
スライド: https://speakerdeck.com/negi111111/pythondegou-zhu-suruquan-guo-shi-ting-cun-naretuzigurahu-graphragwoyong-itayi-wei-de-di-yu-jian-suo-henoying-yong
SSDSE Standardized Statistical Data Set for Education
教育用標準データセット
欠損値がなくデータが膨大で解説PDFもあり至れり尽くせり
Pandas みんなまだ使ってる?
Vive Coding にまかせて使われることはあるけど、直接書くことは無くなってしまった
データ把握しようとおもったら、Google Spreadsheet 一択
Gemini 内蔵なので自然言語で質問もできる
テーブルデータから知識グラフの構造へ
NetworkX で扱える構造に変換
これもVive Codingで一発で作ってもらった
知識グラフとは
https://scrapbox.io/files/690ef6abe424c6086fe9d395.png
RAGとは、GraphRAGとは
GraphRAG用データに変換
ナレッジグラフを動かすには、そこそこお金がかかるので注意
質疑応答
Q. (@terapyon) GraphRAGデータベースというのはMicrosoftのもの?
A. RAGをGraph構造に拡張したのはMicrosoftです。GraphRAGは、なんだろうな..データベースじゃないし
Q. ファイル群を作ってそれをクエリできるようにしている?
A. そんな感じです
shimizukawa.icon ( Vector Databaseに入れてる訳ではない..?よく分からないな)
Q. (@terapyon) 市と市のつながりは作った?
A. 名古屋から三重に移動したデータというのがあるので、それを使ったけれど、今回はデータの関係のみ(重みなしということかな?)
休憩
テラスからの眺め
https://scrapbox.io/files/690ef6c949b64884c324c17e.png
https://scrapbox.io/files/690ef6d3e37cda5edf0d63f4.png
去年作りかけだったビルが完成している!!
まだ完成ではないらしい
16:50
LT
@attakei さん
oEmbedPyを使って、ドキュメントに◯◯◯を埋め込もう
https://scrapbox.io/files/690ef82b590f3b2bdde3ad47.png
oEmbedPy ?
https://pypi.org/project/oEmbedPy/
https://oembed.com/
民主的なフォーマット
メジャーどころが対応している
https://scrapbox.io/files/690ef824d6d85de7404e0913.png
shimizukawa.icon おーすごい
他にPyPIに3つくらいoEmbedのPythonクライアントが公開されてるけど、全部メンテされてない
自分で使いたかったら、自分で盆栽しましょう
みその (miso taku)さん
巡回セールスマン問題を数理最適化で解いてハシゴ酒の最短ルートを見つける(MIP, Google Maps API)
https://scrapbox.io/files/690ef93874d75bfd59528a26.png
巡回セールスマン問題とは
組み合わせが膨大で簡単には解けない
数理最適化を解くMIP
最短距離でハシゴ酒
Streamlitで作成した
行ってきた
https://scrapbox.io/files/690ef97072e11ea6647a240a.png
3件でおなかいっぱい
shimizukawa.iconウケるww
まとめ
ハシゴ酒に巡回セールスマン問題は必要ない
@takanory
🐱絵文字をドキュメントにいれよう
https://scrapbox.io/files/690efa1599628b19bb0706f1.png
スライド: https://slides.takanory.net/slides/20251108tokai/#/
https://scrapbox.io/files/690efb8d9f5f1e98113e49a9.png
17:10 -
クロージング
https://scrapbox.io/files/690efbb3c1502167dc02d43b.png
https://scrapbox.io/files/690efbb92fb7fdd2b479c82c.png
「座長からのあいさつ」を全部しゃべっちゃったw
プレゼント企画
https://scrapbox.io/files/690eff359f6ee3c0c4a31a5e.png
https://scrapbox.io/files/690eff3cc800d9536e1295b6.png