go-pipe - 背景
歴史的経緯
パイプの発明
1973年、Douglas McIlroy が UNIX にパイプを導入しました。これは「一つのことをうまくやる」という UNIX 哲学の核心となる機能です。
# パイプの誕生により可能になった
cat file | grep pattern | sort | uniq
シェルの進化
パイプの導入により、小さなプログラムを組み合わせて複雑な処理を行う「UNIX 哲学」が確立されました。
コンピュータサイエンス的な意味
パイプの内部構造
パイプはカーネル内の循環バッファです:
[プロセス1] --write--> [カーネルバッファ] --read--> [プロセス2]
ファイルディスクリプタ
| FD | 説明 |
|---|---|
| 0 | 標準入力(stdin) |
| 1 | 標準出力(stdout) |
| 2 | 標準エラー(stderr) |
リダイレクトの仕組み
// dup2 でファイルディスクリプタを複製
syscall.Dup2(pipeRead, 0) // stdin をパイプに
syscall.Dup2(pipeWrite, 1) // stdout をパイプに
実践での活用
- ログ処理パイプライン
- データ変換
- フィルタリング処理