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
shinnosuke
August 21, 2026
Technology
570
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
120
広告データの集計基盤で使用するDB
shinnosuke_kishida
0
71
Go製のマイグレーションツールの git-schemalex の紹介と運用方法
shinnosuke_kishida
1
1.4k
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
freeeにおけるSoftware Factory
freee
PRO
0
210
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
650
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
420
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
300
導入から定着へ ~コーディングエージェントを日常業務に組み込む実践知~
yukisakai1225
0
140
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
930
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
220
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
140
「エーアイ」をバズワードにしないために RPA 導入経験と Kiro 上での Claude モデル利用経験から
kazzpapa3
0
110
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
210
Refining Active Record
shugo
0
180
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
220
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
530
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Technical Leadership for Architectural Decision Making
baasie
3
600
From π to Pie charts
rasagy
1
400
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
A designer walks into a library…
pauljervisheath
211
25k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
610
Exploring anti-patterns in Rails
aemeredith
4
540
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
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