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
Web API をデバックするときに必要なたったひとつのこと
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tomokazu Kiyohara
May 16, 2015
Technology
450
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Web API をデバックするときに必要なたったひとつのこと
Web API 開発の観点からみたロギングのコツについて。
kanazawa.rb meetup 33 発表資料。
Tomokazu Kiyohara
May 16, 2015
More Decks by Tomokazu Kiyohara
See All by Tomokazu Kiyohara
AI Agent に GitHub の鍵を渡しっぱなしにしない
kiyohara
0
49
1Password 認証を MCP の起動単位にする
kiyohara
0
43
読めるかな?ちょっとレアなRubyの記法
kiyohara
0
110
Lightning Talk イベント運営を いいがにやりたい
kiyohara
0
160
首負担皆無!ゼログラビティ プログラミングスタイル
kiyohara
0
450
北陸で Ruby なお仕事に携わるための3つの戦略
kiyohara
1
1.8k
Algolia in CAMPFIRE
kiyohara
0
4.2k
地方エンジニアの日常 - 業務からコミュニティ活動まで
kiyohara
0
360
Web to macOS native app
kiyohara
0
470
Other Decks in Technology
See All in Technology
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
450
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
190
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
730
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
6.6k
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
610
[General] 개발자로 해외 기업에서 일하기
skydoves
1
250
Deep Data Security 機能解説
oracle4engineer
PRO
3
990
Devin プロモコードの受け取りと適用(2026.10.27)
kinopeee
1
810
Consistency for mere mortals - A gentle guide to consistency
ufried
0
110
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
1
690
スマートロックを支えるFlutter × ネイティブ連携の実践 / Flutter and Native Integration in Practice: Powering Smart Locks
bitkey
PRO
0
140
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
160
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
580
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
390
Building AI with AI
inesmontani
PRO
1
1.4k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
560
Six Lessons from altMBA
skipperchong
29
4.6k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Docker and Python
trallard
47
4.2k
What's in a price? How to price your products and services
michaelherold
247
13k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Side Projects
sachag
456
43k
Transcript
Web API Λσόοά͢Δͱ͖ʹඞཁͳ ͨͬͨͻͱͭͷ͜ͱ 2015/05/16 - Kanazawa.rb meetup 33
͔͍͜͠ϩΪϯά ͨ͑͜
͔͍͜͠ϩΪϯά ͨ͑͜
Web API ͷಛ • ଟͷߏཁૉ • ϩʔυόϥϯα, ϦόʔεϓϩΫγ, Ξϓέʔγϣϯαʔόʔ, DB
... • ϓϩηε, εϨου … • ଟͷฒྻॲཧ • ෳΫϥΠΞϯτ, ଟॏ API ίʔϧ …
client A client B RP RP App Server App Server
DB DB Process α ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ Process β ɾ ɾ ɾ ɾ ɾ ɾ LB client A ͔Βͷ API ίʔϧ x ͷ ॲཧύεΛಛఆͯ͠ ͦΕͧΕͷ log Λ grep ͯ͠…
ͦΜͳඋͰେৎ͔ʁ
–T.K, 2013 “։ൃڥͦΜͳෳࡶ͡Όͳ͍ɻෳ Terminal ։͍ͯ log Λ tail ͓͚ͯ͠ेɻ”
–T.K, 2014 “։ൃڥෳࡶͩͬͨ”
–T.K, 2015 “ຊͷόάӡ༻ڥʹͦ͜જΉ”
͔͜͠͞ͷछ • ϩΪϯάશൠ • ͍Ζ͍Ζ͋Δɻ͓͓͍ɻ • ͓άάΓ͍ͩ͘͞ɻ • Web API
ʹߜΔͱ • ूͱࣝผ
ूͱࣝผ
ूͱࣝผ
ϩάͷू • ͢Ͱʹ༷ʑͳΞϓϩʔν͕͋Δ • ݹ͘ syslog • ΠϚυΩ fluentd
ूͱࣝผ
ϩάͷࣝผ • API Call Λࣝผ͢Δ • ߏཁૉԣஅͰࣝผ • αʔόϓϩηεΛ·͍ͨͰࣝผͰ͖Δ͜ͱ͕େࣄ •
API Call ຖʹࣝผ • ΫϥΠΞϯτຖͰͳ͘ Call ຖͰ͋Δ͜ͱ͕େࣄ
Ͳ͏ͬͯʁ • ࣝผࢠΛൃߦͯ͠ߏཁૉؒͰൖ • ͩΕ͕ൃߦʁ • Ͳ͏ͬͯൖʁ
ͩΕ͕ൃߦʁ
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ LB APIΫϥΠΞϯτʹ ͬͱ͍ۙߏཁૉ ೖΕ͍͢ͷ͜ͷล
Ͳ͏ͬͯൖʁ
ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ client
A client B RP RP App Server App Server DB DB ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ ᶅ ࣝผࢠ͖ Ͱ logging ᶆ ࣝผࢠ͖ ͰIPC(call) ᶇ ࣝผࢠ͖ Ͱ logging ᶈ ࣝผࢠ͖ ͰIPC(call) ᶉ ࣝผࢠ͖ Ͱ logging ᶊ ࣝผࢠ͖ ͰIPC(call) ᶋ ࣝผࢠ͖ Ͱ logging ᶌ ࣝผࢠ͖ ͰIPC(res) ᶎ ࣝผࢠ͖ ͰIPC(res) ᶍ ࣝผࢠ͖ Ͱ logging ᶏ ࣝผࢠ͖ Ͱ logging ᶐ ࣝผࢠ͖ ͰIPC(res) ᶑ ࣝผࢠ͖ Ͱ logging ᶒ API Response
γϯϓϧͳ
ԡ͑͞Δ͖ϙΠϯτ͕ ͏ͻͱͭ
Ͳ͏ͬͯʁ • ࣝผࢠΛൃߦͯ͠ߏཁૉؒͰൖ • ͩΕ͕ൃߦʁ • Ͳ͏ͬͯൖʁ
Ͳ͏ͬͯʁ • ࣝผࢠΛൃߦͯ͠ߏཁૉؒͰൖ • ͩΕ͕ൃߦʁ • Ͳ͏ͬͯൃߦʁ • Ͳ͏ͬͯൖʁ New!
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ
ϩάͷࣝผ • API Call Λࣝผ͢Δ • ߏཁૉԣஅͰࣝผ • αʔόϓϩηεΛ·͍ͨͰࣝผͰ͖Δ͜ͱ͕େࣄ •
API Call ຖʹࣝผ • ΫϥΠΞϯτຖͰͳ͘ Call ຖͰ͋Δ͜ͱ͕େࣄ
ϩάͷࣝผ • API Call Λࣝผ͢Δ • ߏཁૉԣஅͰࣝผ • αʔόϓϩηεΛ·͍ͨͰࣝผͰ͖Δ͜ͱ͕େࣄ •
API Call ຖʹࣝผ • ΫϥΠΞϯτຖͰͳ͘ Call ຖͰ͋Δ͜ͱ͕େࣄ Ұҙੑ (Uniqueness)
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ
client A client B RP RP App Server App Server
DB DB ɾ ɾ ɾ LB ᶃ API Call ᶄ ࣝผࢠൃߦ LB ᶃ' API Call ᶄ' ࣝผࢠൃߦ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ɾ ࣝผࢠൃߦ αʔόʔ × The ϘτϧωοΫ
ࢄܕϢχʔΫIDੜ
ࢄܕ࠾൪ख๏ • ࢄͨ͠࠾൪ڥͦΕͧΕͰཱࣗతʹ࠾൪Մೳ Ͱ͋Δ͜ͱ • ࠾൪݁Ռ͕ઈରʹিಥ͠ͳ͍͜ͱ
ࢄܕ࠾൪ख๏ • ࢄͨ͠࠾൪ڥͦΕͧΕͰཱࣗతʹ࠾൪Մೳ Ͱ͋Δ͜ͱ • ࠾൪݁Ռ͕ઈରʹিಥ͠ͳ͍͜ͱ
ࢄܕ࠾൪ख๏ • ࢄͨ͠࠾൪ڥͦΕͧΕͰཱࣗతʹ࠾൪Մೳ Ͱ͋Δ͜ͱ • ࠾൪݁Ռͷিಥ͕֬ӡ༻͞ΕΔγεςϜʹ͓͍ͯ ेʹ֬Ͱ͋Δ͜ͱ
ࢄܕ࠾൪ख๏ • େ͖ͳܻͷϥϯμϜจࣈྻ • UUID
ࢄܕ࠾൪ख๏ • ԋࢉίετ • Snowflake • Twitter ͷ Tweet ID
ੜख๏ • িಥ্͕֬Δ • Twitter ʹͱͬͯे֬
·ͱΊ • Web API ʹ͓͚Δ͔͍͜͠ϩΪϯά • ऩूͱࣝผΛ࣮ݱ͢Δ • ࣝผࢠʹࢄܕϢχʔΫIDੜख๏Λ͍ͪΔ
Thank you Tomokazu Kiyohara http://github.com/kiyohara http://facebook.com/tomokazu.kiyohara