Pipeline (software) とは

ソフトウェア工学では、パイプラインは、各要素の出力が次の要素の入力になるように配置された一連の処理要素(プロセス、スレッド、コルーチン、関数など)で構成されます。その名前は物理的なパイプラインに類似しています。通常、連続した要素の間にある量のバッファリングが提供されます。これらのパイプラインで流れる情報は、しばしばレコード、バイトまたはビットのストリームであり、パイプラインの要素はフィルタと呼ばれることがあります。これは、パイプとフィルターの設計パターンとも呼ばれます。要素をパイプラインに接続することは、関数の構成に似ています。
狭義に言えば、パイプラインは線形と一方向ですが、より一般的なフローに適用されることもあります。例えば、主に一方向性のパイプラインは、レクサーハックのように、リターンチャネルまたはバックチャネルとして知られている、またはパイプラインが完全に双方向性である、別の方向の通信を有することがあります。一方向ツリーと有向非循環グラフトポロジを持つフローは、(リニア)パイプラインと同様に動作します。サイクルがないとシンプルになるため、「パイプライン」と呼ばれることがあります。