Claude CodeでPipes and Filtersパターンを設計する:データ変換パイプライン・ミドルウェアチェーン・型安全な処理

はじめに 「データ変換の処理が増えるたびにサービスが肥大化している」——Pipes and Filtersパターンで各変換ステップを独立したFilterにし、Pipeline(パイプ)で組み合わせて再利用可能なデータ変換チェーンを構築する設計をClaude Codeに生成させる。 CLAUDE.mdにPipes and Filters設計ルールを書く ## Pipes and Filters...

By · · 1 min read
Claude CodeでPipes and Filtersパターンを設計する:データ変換パイプライン・ミドルウェアチェーン・型安全な処理

Source: DEV Community

はじめに 「データ変換の処理が増えるたびにサービスが肥大化している」——Pipes and Filtersパターンで各変換ステップを独立したFilterにし、Pipeline(パイプ)で組み合わせて再利用可能なデータ変換チェーンを構築する設計をClaude Codeに生成させる。 CLAUDE.mdにPipes and Filters設計ルールを書く ## Pipes and Filters設計ルール ### Filterの設計 - 各Filterは単一責任(1つの変換だけを行う) - 入力と出力の型を明示(TypeScript Generics) - Filterはステートレス(状態を持たない) - エラーはFilterがスローしてPipelineがキャッチ ### Pipeline構成 - Filterを配列で順番に指定 - 途中でエラーが出たら後続のFilterは実行しない - 非同期FilterとStream Filterを混在可能 ### テスト容易性 - 各Filterは独立してテスト可能(入力→出力の純粋関数) - Pipelineは結合テスト(全Filterの連結) Pipes and Filters実装の生成 Pipes and Filtersパターンを設計してください。 要件: - 型安全なGenericパイプライン - 非同期Filter対応 - エラーハンドリング - 条件付きFilter(スキップ可能) 生成ファイル: src/pipeline/ 生成されるPipes and Filters実装 // src/pipeline/pipeline.ts — 型安全なパイプラインエンジン export type Filter<TIn, TOut> = (input: TIn, context: PipelineContext) => Promise<TOut> | TOut; export interface ConditionalFilter<TIn, TOut> { filter: Filter<TIn, TOut>; when?: (input: TIn, context: PipelineContext) => boolean; } export interface Pipel