yield* して Service を得る Service を注入すると、それより下流のスコープで利用可能になる import { Context, Effect } from 'effect'; // Tag を定義する class Logger extends Context.Tag('Logger')< Logger, { log: (message: string) => void; } >() {} // Effect.Effect<void, never, Logger> const program = Effect.gen(function* () { const logger = yield* Logger; logger.log('Hello, World!'); }); // Logger の実装を注入する const runnable = Effect.provideService(program, Logger, { log: (message: string) => { console.log(message); }, }); await Effect.runPromise(runnable); TSKaigi 2026 asa1984 / HERP, Inc. 53 / 77