それでも私は Contextに値を詰めたい

Room 1 19:00 - 19:05

Goの context.Context は主にキャンセルやタイムアウトの伝播のために使われる仕組みですが、Value にメタデータをもたせる機能も備えているのは周知のとおりです。 Goでは一連の処理完了後に Context のValueに含まれる情報を用いて実行結果ログ、リクエストログを出力する実装パターンがあります。 が、設計パターンや利用ライブラリによっては上手く Context に値を含められないシーンも存在します。 この発表では、現場でよく詰まる次のような場面でどのように Context に値を含められるかをメリット・デメリットと合わせて紹介し明日のPRに活かせるTipsをまとめます。 - Context 非対応なAPIシグネチャをもつライブラリを利用しているとき - コアロジックの中から Context に値を渡して呼び出し元に値を返したいとき # 聞くと得られること - Context Valueの設計をチームで議論する際の判断軸 - 非対応ライブラリでもリクエストID等を持ち回す実装ヒント