JSConf JP

Promiseの向こう側へコンテキストを届ける ― proposal-async-context

LTTrack BJapanese

Webアプリにおけるログの追跡ID付与やユーザーセッション管理、さらには近年のLLM組み込みに伴う推論ステップの可視化まで、非同期処理の奥深くへ「コンテキスト情報」を伝播させるニーズは急増しています。

しかしJavaScriptでは、Promise や setTimeout などの非同期境界を挟むたびに呼び出し元の文脈が途切れてしまいます。これまでの標準的な回避策であった「すべての関数に引数を引き回すバケツリレー」は、ボイラープレートを増やし、コードの保守性を著しく低下させる要因でした。

この課題を言語レベルでスマートに解決するのが、TC39 Stage 2 の proposal-async-context です。

本セッションでは、AsyncContext.Variable や AsyncContext.Snapshot の仕組みを基礎から分かりやすく解説します。いちいち引数を回さなくても自動でコンテキストが繋がる仕組みと、分散トレーシングやAIログ管理といった実務での具体活用例、そしてこれからのJS/TS開発におけるアーキテクチャ設計の変化をお伝えします。

本セッションで得られる知見

  • 非同期処理における文脈損失の根本原因と、従来の回避策が抱えていた限界
  • proposal-async-context のコア概念と動作メカニズム
  • 実務に応用できる活用パターン
  • 提案の最新ステータスと、今後のJS/TS開発体験に与える影響