コマンドラインのすすめ | 悪態のプログラマ

悪態のプログラマ

とある職業プログラマの悪態を綴る。
入門書が書かないプログラミングのための知識、会社の研修が教えないシステム開発業界の裏話は、新人プログラマや、これからプログラマを目指す人たちへのメッセージでもある。

@IT の「サーバ管理をコマンドプロンプトでするのはなぜ? 」という記事を読んだ。サーバをリモートで操作する際に、GUI より CUI の方が通信データ量が少ないから、管理者はコマンドプロンプトを使うのだという。

しかし、この答えは本質を突いていない。それどころか、まるで転送量を減らすために仕方なく CUI を使っているかのようではないか(まぁ、中にはそんな人もいるのかもしれないが)。実際には、コンピュータの達人ほど、CUI を好んで使う。それもベテランの懐古主義などではなく、単に、便利だから使うのである。

とっつきやすさと便利さは必ずしも比例しない。GUI しか知らない人は CUI は不便だと思っているようだが、全くそんなことはない。用途にもよるが、むしろ便利であることも多いのだ。そのメリットをまとめれば、

 ・見えないものを操作できる
 ・操作を自動化できる
 ・処理を柔軟に組み合わせることができる

といったところだろう。


見えないものを操作できる


GUI(Graphical User Interface)では、その名の通り、ウインドウやボタン、アイコンなど、目に見えるものをマウス等で操作する。このため、見えないものを操作しようと思うと、とたんに面倒なことになる。邪魔なウインドウをかき分けたり、深いメニュー階層を辿っていったり、フォルダをどんどん開いたり、目を凝らしながらスクロールしたり・・・。とにかく目的のものを見えるようにするために、多くの労力を使わなければならない(※1)。

一方、CUI では、そのような労力は必要ない。プログラム(コマンド)はその名前をタイプするだけで動く。コマンドを「呪文」に例える人もいるが、まさに言いえて妙だ。ディレクトリの奥深くにあるファイルも、名前を指定することでコピーでも削除でも自在にできる(※2)。

つまり、自分でキッチンまで行って急須を探し回らなくても「おい、お茶」と言うだけでお茶が出てくるというわけだ。


操作を自動化できる


CUI では、キーボードからコマンドを打ち込むことで、色々な処理を実行する。このコマンドは文字列なので、テキストファイルに保存することができる。そして、ありがたいことに、そのテキストファイルは、それ自体がコマンドとして実行できる。つまり、打ち込むのが面倒くさいような長いコマンドも、テキストファイルに書いておけば、そのファイル名をタイプするだけで、実行できるわけだ。

更に、テキストファイルの中にコマンドを2以上書いておけば、異なる処理を連続して実行することができる。つまり、

 1. 薬缶で水を沸かす
 2. 急須に茶葉を入れる
 3. 薬缶の湯を急須に入れる
 4. 急須のお茶を湯呑みに入れる

といった一連の仕事が、「おい、お茶」の一言でできるというわけだ。

しかも、単にコマンドを順番に実行するだけではなく、条件分岐や繰り返しなどの制御もできる。「もしポットにお湯があれば、薬缶は使わず、ポットから急須にお湯を入れる」ということもできるのだ。もちろん、「おい、お茶」という一言だけで。

こうしたコマンドを書いたテキストファイルは、バッチファイルとかシェルスクリプトなどと呼ばれる。簡易的なプログラミング言語だと言ってもいいだろう。


処理を柔軟に組み合わせることができる


このように、CUI では、複数の小さなコマンドを組み合わせて大きなコマンドを作ることができる。ひとつひとつのコマンドは GUI アプリケーションのように多機能ではないが、自分の目的に合わせた柔軟な処理を行うことができる。

食堂の給茶機なら、ボタンひとつでお茶が出てくるが、濃さも量もお決まりである。しかし、薬缶や急須を使えば濃さも量も自由自在なのだ。

ここで重要なのは、「標準入出力」という考え方である。標準入出力の「パイプ 」というテクニックを使えば、コマンドの処理結果を、別のコマンドに渡すことができる(※3)。

お茶の例で言えば、薬缶もポットも急須も、上から液体を受け入れて、注ぎ口から次へ渡す。そうやってシンプルな道具を連携してお茶を作る過程は、まさに「パイプ」のイメージである。道具の組み合わせも柔軟で、冷めたお茶を温めたければ、急須の中身を薬缶に移すこともできる。更に、薬缶やポットは、紅茶にもカップラーメンにも湯たんぽにも使える。このように、「小さなコマンド」は多くの場合、汎用的なのだ。


CUI では、ソフトを「使うこと」と「作ること」との境界が非常に曖昧だ。まさにプログラミングの入り口であるといってもいいだろう。プログラミングを目指す人には、是非とも使いこなして欲しいと思う。

クリックお願いします →



※1
GUI の代表である Windows のエクスプローラでは、フォルダをダブルクリックしなくても「アドレス」欄にディレクトリ名を入力することで、深い階層のフォルダもすぐに開くことができる。しかし、これは、「エクスプローラという GUI の一部に、アドレス欄という CUI が付いている」と解釈すべきだろう。

※2
もちろん、「名前を知っている」ということが前提である。その点が初心者にとってのハードルではあるのだが、実際にやってみると、それほど高いハードルではないはずだ。

※3
データファイルを作らずに、データファイルの中身を受け渡す仕組みとでも言ったらいいだろうか。「標準」の名に恥じず、テキストデータを扱うコマンドのほとんどがサポートしているので、コマンド同士の柔軟な組み合わせが可能だ。



■関連記事
ファイラのすすめ
キーボードを使おう その1 ~ ホームポジション ~
キーボードを使おう その2 ~ ショートカットキー ~
キーボードを使おう その3 ~ 鉄鼠 ~



■関連リンク
コマンドで操るWindows XP - CUIのアドバンテージを堪能しよう(MYCOM PC WEB)
再入門 体で覚えるLinuxの基本(ITpro)
Windowsユーザーへ贈るUnixへの架け橋 - Cygwinを使いこなそう(MYCOM PC WEB)
次世代WindowsシェルMSH(コード名:Monad)を試す(@IT)



WindowsXP/2000コマンドプロンプトポケットリファレンス
天野 司
技術評論社 (2003/02)
売り上げランキング: 78,382
おすすめ度の平均: 5
5 良書です。
5 内容は充実


Cygwin環境構築ガイド
Cygwin環境構築ガイド
posted with amazlet on 06.04.23
伊藤 幸夫
秀和システム (2003/12)
売り上げランキング: 241,968
おすすめ度の平均: 5
5 Cygwin環境構築ガイド