Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
電話に出る Python のログの話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
shinnosuke
August 21, 2026
Technology
550
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
電話に出る Python のログの話
PyCon JP 2026 1日目のLTで発表した資料になります。
https://2026.pycon.jp/ja
shinnosuke
August 21, 2026
More Decks by shinnosuke
See All by shinnosuke
「解くべき問題」を見つけたい
shinnosuke_kishida
0
110
広告データの集計基盤で使用するDB
shinnosuke_kishida
0
67
Go製のマイグレーションツールの git-schemalex の紹介と運用方法
shinnosuke_kishida
1
1.3k
TiDB の SQL Parser を使用して CSV ファイルの不備を検知する仕組み
shinnosuke_kishida
0
210
システムと組織の課題克服を目指すリアーキテクチャとユーザ移行
shinnosuke_kishida
2
1.2k
go get で考慮している ファイルシステムの挙動について
shinnosuke_kishida
4
1.5k
「プログラマー脳」を読んで感覚的な部分が言語化された
shinnosuke_kishida
2
1.5k
広告代理店向けSaaSの開発をしている新卒3年目のこれまでのお話
shinnosuke_kishida
0
250
Ebitengineのイベントで発表するのでEbitengineを初めて触ってみた
shinnosuke_kishida
0
3.1k
Other Decks in Technology
See All in Technology
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
200
Coil3を内部実装から読み解く~キャッシュ戦略とAVIF画像の描画〜/nikkei-tech-talk50
nikkei_engineer_recruiting
0
180
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
630
プラットフォームを「作る」、 チームに「入り込む」
sansantech
PRO
0
400
Account Factory for Terraformによる 標準化されたアカウント発行の自動化
pensuke628
0
120
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
500
Azure Copilot Resiliency Agentをいろいろ試してみる
tomokusaba
0
140
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
460
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
120
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
340
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
1
620
形式手法を使って仕様をコーディングしよう
mikanichinose
0
150
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Statistics for Hackers
jakevdp
799
230k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
A Soul's Torment
seathinner
8
3.7k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.3k
A designer walks into a library…
pauljervisheath
211
25k
Making the Leap to Tech Lead
cromwellryan
135
10k
Skip the Path - Find Your Career Trail
mkilby
1
240
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Designing for humans not robots
tammielis
254
26k
The Limits of Empathy - UXLibs8
cassininazir
1
690
Transcript
電話に出る Python のログの話 〜 Webアプリとはなんか違う 〜 2026/08/21 PyCon JP 2026
@広島国際会議場 株式会社IVRy / 岸⽥慎之介
⾃⼰紹介 岸⽥ 慎之介 Software Engineer 2021年: 広告代理店向けの業務⽀援SaaSを開発している会社に 新卒として⼊社、バックエンドの開発に従事 2025年8⽉: IVRyに⼊社し、AI対話周りの機能開発に従事
趣味はボルダリング(オフィスに壁あります) 2
プロダクト 対話型⾳声AIであらゆる電話対応を効率化 「アイブリー」 3
⾳声による認識と、Push(電話番号で分岐を選択)の併⽤が可能 カスタマーが発話して直接認識する形式と、ガイダンスに従い電話番号を押す形式の両⽅で⾃動応答を⾏うことが 可能です。 ⾳声から意図を認識して回答を返すパターン はじめての 予約です #1 AIが⽤件をヒアリング ⾏き⽅を 知りたい
#2 SMSで地図を送信 とにかく ⼈を出して #3 担当者に電話転送 ケース1 ケース2 ケース3 電話番号を押して分岐を選択するパターン IVR ⾳声認識 4
アイブリーのユースケース‧イメージ エンドユーザーから受電をすると、内容に応じて適切に振り分け、⾃動化を実現します。 ケース1 ルールに沿って 対応できる 「⾏き⽅を知りたい」 完全AI対応 ケース2 「遅刻しそうです」 ケース3
「予約したい」 オペレーター (AI) ユーザーの発話 を⾳声認識し、 適切に振り分け • FAQ対応 • SMS送信 要件をAIで 聞いて管理する 初⼿AI対応後 担当者に連絡 • 取次 • フォーム⼊⼒ アフターワークも AIが対応 ⾳声対話AIで • 対応完結できる 予約、購⼊ • 履歴Salesforceへ の⾃動連携 オペレーター 対応 ⼈が対応すべきもの • 複雑な対応 • クレーム • 上記以外 発話認識 ケース4 「とにかく⼈を出して」 SFA/CRM データウェアハウス システム連携 5
6
7
この辺り 8
電話はWebアプリと様相がちがう 明⽇で空いてますか? リクエスト 何名様ですか? 2名で18時から レスポンス 席⽤意できるので確保します Webアプリ (HTTP) 電話
(WebSocket) リクエスト/レスポンス の組が1つ 電話を受電してから終了までが1つのやり取り ⼤半がステートレス ステートフル ラリー毎に状態が変わる 9
1通話を1本として扱う WebSocket 接続時に structlog の bind_contextvars で 通話 ID をセット、以降の全通話ターンで継承
ローカル開発向けにログをファイルに出⼒する仕組みも⽤意 LLMによるデバッグや⾃作ツールなどに利⽤ file_handler = logging.FileHandler("tmp/app.log") file_handler.setFormatter(logging.Formatter("%(message)s")) logging.getLogger().addHandler(file_handler) ファイル出⼒の実装 10
別チームで通話ログを参照 通話ログ データ基盤 ダッシュボード ユーザ参照 担当領域 アプリケーションとして正常でも構造を壊すと⼤変な影響がでる 参照されるログは直接 structlog ではなく、クラスのメソッド経由で出⼒
logging.getLogger 経由のログなので structlog と ⼆重管理(課題) 11
ルールを整備 ログ周りの実装は、structlog を使う⽅針 logging.getLogger を AI/⼈間 が使う可能性は ゼロ ではない [tool.ruff]
lint.flake8-tidy-imports.banned-api."logging.getLogger".msg = "structlog.stdlib.get_logger() を使用してください (正当な用途は # noqa: TID251 で明示) " pyproject.toml に Ruff の設定を追加 12
通話の中⾝を出さず分析 各通話ターンの⽂字起こしを⾒て分析できない(個⼈情報) 通話ターンの状態を定義し 「何を喋ったか」 ではなく 「どの状態を通ったか」 を⾒る 初期状態 聞き取り中 確認中
完了 状態を Enum で定義し、遷移を ”決定性有限オートマトン” として表現 13
まとめ • Webアプリと電話アプリではログの取り扱いが違う • structlog などを使って通話遷移を追えるように • 参照されるログは変えない • 「何を喋ったか」ではなく「どの状態を通ったか」を⾒る
より詳しい話を聞きたい⽅はお声がけを! 14