【パイプアンドフィルタ】
パイプ&フィルタ とは?
最終更新:
💡 データを流れ作業で加工する「工場の製造ライン」
データを処理する部品(フィルタ)を、出力を次の入力へ渡す接続(パイプ)でつなぐ設計パターン。処理を分けて組み合わせられるが、接続するデータの形式や処理順序をそろえる必要がある。
📌 このページのポイント
- フィルタは入力データを受け取り、加工した結果を出力する
- パイプで前の出力を次の入力につなぎ、段階的に処理する
- 部品を個別にテスト・再利用しやすくするが、形式と順序は設計する
- 並列化・エラー処理・再試行時の重複は、別途考慮する
フィルタは何をするの?
一つの役割に分けた処理を担当するよ。たとえばログからERRORを含む行を抽出する、行を並べ替える、同じ行の件数を数える、といった部品をつなげる。不要なものを除く処理だけがフィルタではないんだ。
部品なら自由に順番を変えられる?
入力と出力の形式が合い、順序を変えても目的に合う結果になるか確認するよ。たとえばuniq -cは隣り合う同じ行を数えるので、離れた同じ行もまとめたいなら先にsortする。部品が独立していても、順序が無関係とは限らないんだ。
全部同時に動かせば速くなる?
前の結果が必要な同じデータの処理順序は守るよ。異なるデータを別の段階で処理したり、遅い段階の実行数を増やしたりできる場合はある。ただし、処理の性質や状態の持ち方に左右され、分割しただけで並列化や高速化が保証されるわけではないんだ。
どんな処理に応用できるの?
取り出す・整える・保存するというETLや、ログ処理などを段階に分ける設計に使えるよ。途中で失敗したときの扱いも必要だね。再試行で同じデータが届いても重複して保存しないようにするなど、処理全体の動作も確認するんだ。
まとめ:ざっくりこれだけ覚えればOK!
「パイプ&フィルタ」って出てきたら「小さな処理を、データの受け渡しでつなぐ設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Pipe and Filter」 = データの通り道と処理する部品
💬 Pipeはデータを渡す接続、Filterはデータを加工する部品を表すよ。ここでのFilterは不要なデータを取り除くだけでなく、変換や集計などを担当することもあるんだ。