基本情報 平成28年度 秋期 問18:テクノロジ系に関する問題
UN において, あるコマンドの標準出力を, 直接別のコマンドの標準入力につな げる機能はどれか。 ンク イー パックグラウンドジョア
- aオブジェクトコードを生成する代わりに, インタプリタ用の中間コードを生成 する。正答
- bコンパイルを実施するコンピュータとは異なるアーキテクチャをもったコンピ ュータで動作するオプジェクトコードを生成する。 ウ ソースコードを解析して, 実行時の処理効率を高めたオプジェクトコードを生 成する。
- cブレース展開 エ リダイレクト ー| 問19 コンパイラにおける最適化の説明として, 適切がものはどれか。
- dプログラムの実行時に, 呼び出されたサブプログラム名やある時点での変数の 内容を表示するようなオブジェクトコードを生成する。
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a(パイプ) に相当します。
UNIXのパイプは「コマンドAの結果をそのままコマンドBへ流し込む」機能。記号は |(縦棒)。
たとえば `ls | grep txt` なら、`ls`(ファイル一覧)の結果を`grep txt`(txtを含むもの抽出)に直結。
👉 覚え方:パイプ=出力をホースで次のコマンドに流す。
本問は文字化けでラベルが乱れていますが、「標準出力→標準入力直結」=パイプが定義。リダイレクト(>)はファイルに出力する別機能、バックグラウンド(&)は非同期実行、ブレース展開({})は文字列生成。
なぜこれが正解か
UNIX系シェルにおけるパイプ(pipe)は、`コマンドA | コマンドB`形式でコマンドAの標準出力をコマンドBの標準入力へ直接接続する機能。中間ファイルを介さず効率的なデータフロー処理を実現する。本問は文字化けが激しいが、設問の定義「標準出力を別コマンドの標準入力につなげる」はパイプの定義そのもの。
各選択肢の解説
- パイプ(|):正解。プロセス間通信の基本機能。
- リダイレクト(>, <, >>):標準入出力をファイルへ向ける/ファイルから読む。コマンド間直結ではない。
- バックグラウンドジョブ(&):プロセスを背景実行。データフローとは別概念。
- ブレース展開({a,b,c}):シェルでの文字列パターン生成。例:`echo file{1,2,3}.txt`
覚え方・ひっかけ注意
シェル機能の識別:
- パイプ(|):標準出力→標準入力直結
- リダイレクト(>, <, >>, 2>&1):ファイル⇔標準入出力
- コマンド置換($(cmd), ``):コマンド出力を文字列として埋め込み
- ブレース展開({}):パターン文字列生成
- **グロブ(, ?)*:ファイル名パターンマッチング
- ジョブ制御(&, fg, bg):プロセス背景化
試験では「標準出力を別コマンドへ」「直結」がパイプの合図。
理論的背景
UNIXパイプはDouglas McIlroyが1972年にUNIX V3で実装したプロセス間通信(IPC: Inter-Process Communication)の代表機構。「Make each program do one thing well」「Write programs to handle text streams」というUNIX哲学を体現。カーネル内部ではカーネルバッファ(典型64KB)経由でリングバッファ的に動作し、書込側がいっぱいになるとブロック、読込側が空ならブロックする生産者-消費者モデル。
実務での使われ方
パイプ系IPCの種類:
- 無名パイプ(anonymous pipe, |):親子プロセス間限定
- 名前付きパイプ(FIFO, mkfifo):無関係プロセス間でも使用可
- 双方向パイプ(socketpair):Bidirectional
- 共有メモリ(shm):高速、明示的同期必要
- メッセージキュー(msg queue):構造化メッセージ
- ソケット(Unix domain socket):ローカル高性能IPC
パイプライン処理の発展:
- シェルワンライナー:`ls -la | awk '{print $5}' | sort -n | tail -10`
- データパイプライン:Apache Beam・Apache Flink・Kafka Streams
- 関数型合成:Haskellのモナド、Elixirのpipe operator(|>)
試験での位置づけ
OS・シェル分野の頻出テーマ。基本情報ではパイプ・リダイレクトの基本識別、応用情報・組込みシステムスペシャリストではIPC種類比較・プロセス制御・シェルスクリプティング・正規表現まで踏み込む。Linuxシステムコール(pipe(), fork(), dup2(), exec*())の理解も実務必須。
選択肢の発展補足
リダイレクト演算子の詳細:
- >: 標準出力をファイルに上書き
- >>: 標準出力をファイルに追記
- <: ファイルから標準入力
- 2>: 標準エラー出力リダイレクト
- 2>&1: 標準エラーを標準出力にマージ
- &>: 標準出力・エラー両方をファイルへ(bash)
- <<: ヒアドキュメント(インライン入力)
- <<<: ヒアストリング(文字列を標準入力)
WindowsのPowerShellではオブジェクトパイプラインで構造化データを流す(テキスト中心のUNIXとは異なる設計)。Process Substitution(<(cmd))でコマンド出力をファイルとして扱う高度技法もある。コンテナ環境ではSidecarパターンでパイプライン的にログ収集・ヘルスチェック・プロキシを構成する設計が普及。試験対策はパイプ・リダイレクトの基本+シェルスクリプティングの理解で応用情報・組込みシステムスペシャリスト等の上位資格に対応可能。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成28年度 秋期 問18/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。