Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
電話に出る Python のログの話
Search
shinnosuke
August 21, 2026
Technology
81
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
100
広告データの集計基盤で使用するDB
shinnosuke_kishida
0
64
Go製のマイグレーションツールの git-schemalex の紹介と運用方法
shinnosuke_kishida
1
1.3k
TiDB の SQL Parser を使用して CSV ファイルの不備を検知する仕組み
shinnosuke_kishida
0
190
システムと組織の課題克服を目指すリアーキテクチャとユーザ移行
shinnosuke_kishida
2
1.2k
go get で考慮している ファイルシステムの挙動について
shinnosuke_kishida
4
1.5k
「プログラマー脳」を読んで感覚的な部分が言語化された
shinnosuke_kishida
2
1.5k
広告代理店向けSaaSの開発をしている新卒3年目のこれまでのお話
shinnosuke_kishida
0
240
Ebitengineのイベントで発表するのでEbitengineを初めて触ってみた
shinnosuke_kishida
0
3.1k
Other Decks in Technology
See All in Technology
도구에서 동료까지: 10년차 AI 스타트업의 AI 적응기
inureyes
PRO
1
310
老害フォレンジッカーはAI羊の夢を見るか?
tadmaddad
0
360
Sets in Go
ramalho
1
1.2k
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.5k
Android skills に学ぶ
kokiko
0
130
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
200
巨大気象データと戦う ― サロゲートモデル学習を高速化する圧縮技術
gpuunite_official
0
180
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
430
20分でわかるセキュアAPI
nwiizo
2
320
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.4k
20260817_生成AIの動向と中学校・高等学校での活用を考える_v1.00_公開用
doradora09
PRO
0
160
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
260
How GitHub (no longer) Works
holman
316
150k
Everyday Curiosity
cassininazir
0
290
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
How to build a perfect <img>
jonoalderson
1
5.9k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
210
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
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