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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
フィンテック養成勉強会#68
finengine
0
180
DBについての基礎説明(MySQL編) - コロプラ 2026年度 新卒研修
colopl
0
150
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
1
230
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
220
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
180
LLM Content Moderationを支える評価・改善ループの実践
suikabar
1
240
小規模OSSモデルは サイバーセキュリティ業務に どこまで使えるか
bbrbbq
0
100
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
2
350
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
130
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
130
CloudWatch Logsのコスト最適化:どこまでAIに任せてどこから人間が承認すべきか
yama3133
0
140
会社紹介資料 / Sansan Company Profile
sansan33
PRO
31
430k
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Google's AI Overviews - The New Search
badams
0
1.6k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Mobile First: as difficult as doing things right
swwweet
225
10k
Chasing Engaging Ingredients in Design
codingconduct
0
370
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
330
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
A designer walks into a library…
pauljervisheath
211
25k
Practical Orchestrator
shlominoach
192
12k
The agentic SEO stack - context over prompts
schlessera
0
970
Designing for humans not robots
tammielis
254
26k
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