フィルタ (ソフトウェア)

フィルタ（）は、データストリームを処理するコンピュータプログラムである。

概要 
UNIXなどのオペレーティングシステムでは、各種フィルタプログラムが備わっている。Windowsでもシェルに組み込みの簡単なフィルタがあり、それらはMS-DOSに存在したフィルタコマンド群の改良版である。

DOSの例 
UNIXなどと同様、フィルタは一般に標準入力からデータを取り出し、標準出力に主な結果を書き出す。何らかのデバイスやファイルからデータを取り出すには、入力オペレータ ("<") を使う。同様に、出力を何らかのファイルやデバイスに行うには、出力オペレータ (">") を使う。既存のファイルに出力を追加する形で行うには、アペンドオペレータ (">>") を使う。

フィルタはパイプの要素として使われる。パイプオペレータ ("|") を使ってコマンドを繋ぐことで、左側のコマンドの標準出力が右側のコマンドの標準入力に接続される。初期のDOSでの処理では、findとsortというフィルタプログラムが使われることが多かった。

例:
 find "キーワード" < 入力ファイル名 > 出力ファイル名
 sort "キーワード" < 入力ファイル名 > 出力ファイル名
 find /v "キーワード" < 入力ファイル名 | sort > 出力ファイル名

このようなフィルタがバッチファイル（*.bat、*.cmd など）で使われる。

Windowsの例 
Windowsでは、さらに様々なフィルタがある。一部はフリーウェアやシェアウェアであり、商用プログラムも存在する。これらの多くはUNIXのフィルタの機能を真似たものである。一部のフィルタプログラムはグラフィカルユーザインタフェース (GUI) を持ち、特定のデータ処理やデータマイニングのためにカスタマイズされたフィルタをユーザーが設計できるようになっている。

UNIXの例 
古典的なフィルタとしてgrepがある。これは指定された文字列を含むテキスト行を単純な形式で出力するコマンドである。次のような使用例がある:
  cut -d : -f 1 /etc/passwd | grep foo

この例では、cutコマンドで passwdファイルの第一フィールド（ユーザー名）を取り出し、それをgrepコマンドに渡す。grepコマンドはユーザー名に "foo" という文字列が含まれるものだけを出力する。つまり、全体として"foo"という文字列がユーザー名に含まれる全ユーザー名をリストアップしていることになる。

sedで同じことをする例を次に示す。
  sed -e 's/\([^:]*\):.*/\1/' /etc/passwd | grep foo

AWKで同じことをする例を次に示す。
  awk -F: '{print $1}' /etc/passwd | grep foo

Perlで同じことをする例を次に示す。
  perl -ne '@F = split(/:/); print shift(@F), "\n";' /etc/passwd | grep foo

UNIXの主なフィルタプログラム 
UNIXの主なフィルタプログラムを以下に列挙する。なお、PerlやAWKやsedは高機能フィルタとしても使えるプログラミング言語である。

その他

ひよこフィルター 
ブラウザ上に表示される苦手な文言を「ぴよぴよ＋ひよこの絵文字」に変換するフィルターであり、ブラウザで動作する拡張機能。
神奈川県横浜市にあるアプリ開発ベンチャー企業の「bondavi」が2022年8月25日より無償公開している。

脚注 

注釈

出典

オペレーティングシステムの仕組み
UNIX
文書作成ソフト