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
それでも私はContextに値を詰めたい | Go Conference 2025 / go ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yoichiro Shimizu
September 28, 2025
Technology
2.4k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
それでも私はContextに値を詰めたい | Go Conference 2025 / go conference 2025 fill context
2025/09/28 Go Conference 2025で発表したLT資料です。
https://gocon.jp/2025/talks/958590/
Yoichiro Shimizu
September 28, 2025
More Decks by Yoichiro Shimizu
See All by Yoichiro Shimizu
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
3k
GoのWebプロダクトに途中参加するときのキャッチアップ #layerxgo / How to catch up Go web product
budougumi0617
6
1.1k
今日から始めるGo / Starting Go from Today
budougumi0617
3
2.3k
BASE BANKチームの技術選定と歴史 / how to decide technology selection for startup
budougumi0617
1
5k
New Relicを使った Observabilityの実現方法と活用例 / gocon 2022 spring after talk
budougumi0617
0
3.7k
testingパッケージを使った Webアプリケーションテスト 単体テストからE2Eテストまで / gocon2022spring
budougumi0617
6
4.2k
Go WebアプリケーションでNew Relic APMをフル活用するためのOSS 3選 / introduce oss for newrelic
budougumi0617
3
3.7k
ゆるふわ分散トレースはじめました / start casual distributed trace
budougumi0617
0
1.8k
PHPでつくるインタプリタ入門 / introduction interpreter by PHP
budougumi0617
0
3.7k
Other Decks in Technology
See All in Technology
おい、エージェントを使って終わらせろ
nwiizo
0
260
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
2
1.6k
AI de Idea
kawaguti
PRO
2
110
SREは、MCPとAutopilotをこう使え!
kazumax55
2
810
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
110
負債のメタファと2026年 / Debt Metaphor in Agentic Engineering Age 202609 Edition
twada
PRO
6
2.7k
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
AI に書かせたその API、 “信頼” できますか?
nagix
0
110
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.3k
人間はどの意思決定を手放せるのか
kawasima
14
6.9k
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
0
2.6k
iOSDC Japan 2026 day1 TrackC 10:50
feedtailor
1
160
Featured
See All Featured
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
The Pragmatic Product Professional
lauravandoore
37
7.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Typedesign – Prime Four
hannesfritz
42
3.2k
Building the Perfect Custom Keyboard
takai
2
870
Navigating Team Friction
lara
192
16k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Designing for humans not robots
tammielis
254
26k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
Designing for Timeless Needs
cassininazir
1
480
Transcript
© LayerX Inc. それでも私はContextに値を詰めたい 2025/09/28 Go Conference 2025 @budougumi0617 /
LayerX
主にWebサービスにおける リクエストコンテキストの話をします
📝おさらい
© LayerX Inc. 4 出⼒はどうなる?
© LayerX Inc. 5 • それはそう ⼦(呼び出し先)のWithValueは親(呼び出し元)から⾒えない
Webサーバあるある
© LayerX Inc. 7 • 会社IDやユーザーIDをリクエストのログに付与しておきたい Webサーバあるある
© LayerX Inc. 8 よくあるパターン: 認証ミドルウェア‧リクエストログミドルウェア
🤔困るとき
© LayerX Inc. 10 • GoでクレジットカードやETCカードを作ってます! 突然ですがお仕事紹介
© LayerX Inc. 11 • ⾃社の認証情報が⼊っていないリクエストを処理する • クレジットカードで決済があったとき ◦ 💳
外部決済システム → 🧾決済リクエスト → ⾃社サーバ • 利⽤料のお⽀払い(⼝座振替情報) ◦ 🏦 外部⾦融機関 → 💰⼊⾦リクエスト → ⾃社サーバ(消込) そうなるとこう
© LayerX Inc. 12 ビジネスロジックの中で会社を特定しかない
© LayerX Inc. 13 • それはそう 再掲: ⼦のWithValueは親から⾒えない
© LayerX Inc. 14 これがやりたい
© LayerX Inc. 15 • デコレータパターンで伝播する • contextオブジェクトにポインタ構造体を詰める 親のcontextにデータを詰める(渡す)アイデア
© LayerX Inc. 16 • Setterを追加したハコを親から渡しておく デコレータパターンで伝播する
© LayerX Inc. 17 デコレータパターンで伝播する
© LayerX Inc. 18 デコレータパターンで伝播する
© LayerX Inc. 19 デコレータパターンで伝播する デコレータ🐭 「http.ResponseWriter (を満たす実装)です!」 コンパイラ🤖 「よし通れ!」
例: func(w http.ResponseWriter, r *http.Request)の場合
© LayerX Inc. 20 👍 Pros • そんなに悪いことしていない(はず) • フレームワーク越しでも使える
👎 Cons • IFがインターフェースじゃないと難しい • contextに直接詰められているわけではない ◦ http.ResponseWriterなどをビジネスロジックまで 引き回すことはあまりない(?) デコレータパターンで伝播する
© LayerX Inc. 21 • 親が参照しているオブジェクトのフィールドを⼦で編集する contextオブジェクトに構造体ポインタ(アドレス)を詰める
© LayerX Inc. 22 contextオブジェクトにポインタ構造体を詰める
© LayerX Inc. 23 contextオブジェクトにポインタ構造体を詰める ポインタの先にある構造体フィールドは⼦から編集できる
© LayerX Inc. 24 👍 Pros • メソッドシグネチャに影響せず、透過的に使える 👎 Cons
• 多⽤すると無法地帯になる ◦ 親からするとどのタイミングで詰め込まれたのかわからない • ⾮同期処理が絡むならMutexなどの検討が必要 contextオブジェクトにポインタ構造体を詰める
© LayerX Inc. 25 親コンテキストにどうしても情報を詰めたいとき • デコレータパターンで伝播する • contextオブジェクトにポインタ構造体を詰める ⚠
⽤法⽤量を守って正しくお使いください(親に渡すのは最終⼿段!) まとめ