キーワード

「grep」は何の略? コマンドラインツールの意外な名前の由来 –おつまみとしてのソースコード第16皿

ユニークで面白い、意外なアイデアが詰め込まれているソースコードの世界をおつまみ感覚で紹介するのが、情シスのじかんの「おつまみとしてのソースコード」です!週末も近づき、ちょっと一息つきたくなる木曜日の夕方にお届けしていきます。

ls、cd、cp……私たち情シスが毎日キーボードで打ち込む、短いコマンドの数々。あまりにも当たり前に使いすぎて、その意味を深く考える機会は少ないですよね。

lsは「list」、cdは「change directory」、cpは「copy」。ここまではまだ想像がつきます。しかし、例えばログ解析に欠かせないgrepやawkといったコマンドは、いったい何の略なのでしょうか。改めて問われても、答えられない方も多いと思います。

おつまみとしてのソースコード第十六回は「コマンドラインツールの名前の由来」。私たちが普段当たり前に使っているコマンドラインツールの、意外な名前の由来を紹介していきます!この記事を読むことで、いつも使っているコマンドへの理解が深まり、愛着が沸くかもしれません。

エンジニア仲間とのアイスブレイクや、一人でまったりする時間のお供に、ぜひご覧ください!

         

Unix哲学のもと発展したツール「コマンドラインツール」とは?

本題に入る前に、私たちが当たり前に使っている「コマンドラインツール」とは何かについて簡単に説明しましょう。

コマンドラインツールとは、グラフィカルな画面(GUI)ではなく、コマンドラインインターフェース(CUI)で命令(コマンド)を与えて実行するプログラムのことです。

コマンドラインツールの多くは、1970年代にベル研究所で生まれたUnixと共に発展しました。その背景には「Unix哲学」と呼ばれる、シンプルで強力な設計思想があります。

Unix哲学(一部抜粋)

・一つのことをうまくやれ(Do one thing and do it well)
・ツールは協調して動くように作れ(Make tools work well together)

この哲学のもと、一つの巨大な万能プログラムを作るのではなく、ファイルを一覧表示する(ls)、テキストを検索する(grep)といった単一の機能に特化した小さなツールが数多く生み出されました。

そして、それらの出力をパイプ(|)で繋ぎ合わせることで、小さなツールを組み合わせて複雑なタスクをこなす、という文化が花開いたのです。grepやawkも、そのようなUnix哲学から生まれた、強力なツールの一つです。

テキスト処理の代表的なツール「grep・sed・awk」の名前の由来

テキストデータを処理するために使われるコマンドラインツールといえば、「grep」「sed」「awk」が代表的ですよね。実はこの3つのコマンドラインツールには、それぞれ異なる名前の由来があるのです。それぞれの由来を紹介していきます。

grep:エディタのコマンドが由来

情シス業務でも強力な武器の一つ、grep。この名前は、何かの単語の略には見えません。それもそのはず、この名前はエディタUnixの標準的なテキストエディタ「ed」のコマンドに由来しています。

grepはedの3つのコマンドから構成されています。
g:Global(ファイル全体)
re:Regular Expression(正規表現)
p:Print(表示)

つまり、grepはテキストエディタedにおいて、「ファイル全体から、正規表現に一致する行を探し、それを表示せよ」という3つの操作を行うためのコマンドをつなげたものだったのです。

これは、grepの生みの親であるケン・トンプソンが、仲間のエンジニアから、テキストファイルから特定のパターンを抜き出すツールが欲しいと頼まれ、edエディタのこのg/re/p機能を切り出して、単体のコマンドとして提供したのが始まりでした。私たちが使っているgrepは、それ自体がファイル全体から、正規表現で検索して表示させるという命令文だったのです。

sed:非対話的な編集に特化したコマンドラインツール

sedは、テキストを行単位で読み込み、編集して出力するコマンドラインツールです。主にテキストの置換や行の削除といった編集を行うために利用されます。

sedの名前の由来は、ずばりStream EDitorです。Stream EDitorとは、Unixの標準エディタedの編集機能を、対話的な操作なしで、データの流れ(ストリーム)に対して1行ずつ実行するために作られたツールのことです。つまり、ファイル全体を開かずに、流れてくるデータを1行ずつ処理して、結果を返すという機能こそがsedの本質であることがわかります。

awk:伝説の開発者が生んだプログラミング言語

awkはテキストの加工・集計に欠かせない万能なコマンドラインツールです。

awkの名前の由来はgrep、sedとはだいぶ毛色が異なります。awkは、なんと開発者3名のイニシャルを取ったものなのです。開発者とは、Alfred Aho(アルフレッド・エイホ)、Peter Weinberger(ピーター・ワインバーガー)、Brian Kernighan(ブライアン・カーニハン)の3名です。

彼らはベル研究所のスターエンジニアであり、特にカーニハン氏は、かの有名なプログラミング言語「C言語」の解説書の著者としても知られています。awkの開発には、こうした言語開発の権威たちが関わっていたのです。

技術の変遷が垣間見られるコマンドの紹介

コマンド名の中には、現代では使われなくなった技術の記憶を留めているものもあります。代表的なものとして、tarとpingの名前の由来を紹介します。

tar:磁気テープ時代を語るコマンド

tarは、サーバー上の複数のファイルやディレクトリを一つにまとめる際に使われる、一般的なコマンドです。

このコマンドの名前の由来は、Tape ARchiver(テープアーカイバ)です。

tarが生まれた当初、コンピュータの主要な外部記憶装置は、ハードディスクやSSDではなく磁気テープでした。tarの本来の役割は、複数のファイルをまとめて磁気テープにバックアップすることだったのです。

私たちが今でもよく使う.tar.gzという拡張子は、tarで複数のファイルを1つにまとめ、そのファイルをgz(gzip)で圧縮する、という2段階の処理が行われたことを示しています。磁気テープが主流でなくなった現代でも、tarというコマンドラインツールが、ファイルをまとめるという役割で生き続けている、まさにITの生きた歴史と言えるコマンドです。

ping:音が由来のネットワーク診断ツール

サーバーに接続できない……そんな時、情シスが最初に入力するコマンドがpingです。このシンプルなツールにも、面白い由来があります。

pingの名前の由来は、潜水艦が敵を探すために発する「ピン!」というソナー音のオノマトペです。開発者のマイク・ムース氏は、ネットワークの向こう側にいるホストが生存しているかどうかを調べるこのツールの動作を、潜水艦のソナー音になぞらえました。

しかし、あまりにも使いやすい機能だったため、後に技術者たちの間でPacket InterNet Groper(パケットでインターネットを探るもの)という、ユーモラスな後付けの略語も生まれました。サーバーの生存確認という有名なコマンドラインツールの名前が、技術用語ではなくオノマトペだったというのは、なんとも味わい深い話です。

まとめ

いかがでしたか?普段、何気なく打ち込んでいるコマンドラインツールの名前には、開発者の設計思想や、そのツールが生まれた時代の技術的な背景が込められています。

名前の由来を知ることは、コマンドの本質的な役割を理解することにも繋がります。たまにはコンソールから顔を上げ、普段何気なく使っているコマンドの名前の由来を調べてみるのもよい息抜きになるのではないでしょうか。

著者:羽守ゆき
大学を卒業後、大手IT企業に就職。システム開発、営業を経て、企業のデータ活用を支援するITコンサルタントとして10年超のキャリアを積む。官公庁、金融、メディア、メーカー、小売など携わったプロジェクトは多岐にわたる。現在もITコンサルタントに従事するかたわら、ライターとして活動中。
 
 

特集|仕事で疲れた脳みそをリフレッシュ♬
おつまみとしてのソースコード

木曜日の夕方に仕事で疲れた脳みそをリフレッシュしたいとき、一人でゆっくりしたい夜、ちょっとした空き時間に、気軽に「つまめる」ソースコードの話題をお届けします。

まるで隠れ家バーでマスターが語るウンチクのように、普段は見過ごしがちなコードの奥深さや、思わず「へぇ〜!」と唸るようなユニークなアイデア、クスッと笑える小ネタを、ソースコードの世界を熟知した「情シスのじかん」がご紹介します。

コードを書くのが大好きなエンジニアさんも、ソースコードはちょっと苦手…という情シス部門の方も、この特集を読めば、きっとソースコードの新たな一面を発見できるはず。

業務効率化のヒントになるTipsや、セキュリティ対策に役立つ情報も盛りだくさん。

さあ、あなたも「おつまみとしてのソースコード」で、技術の世界をもっと身近に、もっと楽しく感じてみませんか?

本特集はこちら
 

関連記事Related article

       

情シスのじかん公式InstagramInstagram

       

情シスのじかん公式Instagram

30秒で理解!フォローして『1日1記事』インプットしよう!

掲載特集

close close