【パイプアンドフィルタ】

パイプ&フィルタ とは?

公開:
💡 データを流れ作業で加工する「工場の製造ライン」
📌 このページのポイント
パイプ&フィルタ:データの流れ作業 Input Filter 1 Extract (抽出) Filter 2 Transform (変換) Filter 3 Load (書き込み) Output raw data filtered transformed loaded Unixの例: cat access.log | grep ERROR | sort | uniq -c 各フィルタは独立 → 単体テスト・再利用・並列実行が容易
パイプ&フィルタ:独立したフィルタをパイプでつなぐデータ処理
ひよこ ひよこ
パイプ&フィルタって、Unixのパイプのこと?
ペンギン先生 ペンギン先生
Unixのパイプが典型例だよ。`ls | grep .txt | wc -l` みたいにコマンドをつなぐやつだね。これをソフトウェア設計全般に広げたアーキテクチャパターンがパイプ&フィルタなんだ。
ひよこ ひよこ
フィルタって何をするものなの?
ペンギン先生 ペンギン先生
データを受け取って変換して出力するコンポーネントのことだよ。「テキストを小文字に変換する」「JSONパースする」「特定の行を抽出する」みたいな単一の処理に責任を持つんだ。
ひよこ ひよこ
フィルタを分けるメリットは何なの?
ペンギン先生 ペンギン先生
各フィルタが独立しているから、単体でテストできるし、別のパイプラインに再利用もできるんだよ。並列に動かすのも簡単だし、新しいフィルタを差し込んだり入れ替えたりも自由なんだ。
ひよこ ひよこ
ETLパイプラインにも使われるって聞いたけど、どう関係するの?
ペンギン先生 ペンギン先生
ETLの「Extract(抽出)→ Transform(変換)→ Load(ロード)」はまさにフィルタとパイプの構成だよ。データベースからデータを取り出すフィルタ、クレンジングするフィルタ、目的地に書き込むフィルタという流れなんだ。
ひよこ ひよこ
デメリットはないの?
ペンギン先生 ペンギン先生
フィルタ間でコンテキストを共有しにくいのが課題だよ。前のフィルタの状態を参照したい場合に設計が複雑になることがあるんだ。それと、フィルタをまたいだエラーハンドリングも工夫が必要だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
パイプ&フィルタ」って出てきたら「データを独立したフィルタで順番に変換するアーキテクチャ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Pipe and Filter」 = パイプとフィルタ
💬 Unix(1970年代)のパイプ演算子「|」から広まったアーキテクチャパターンで、「パターンを使ったソフトウェアアーキテクチャ」(POSA)本で体系化されたんだよ。
← 用語集にもどる