PC用のOSといえばWindows。実際に、NetMarketShare.comの2013年6月の調査によれば、Windows系が90%以上を占める。その次に続くのが、Mac OS Xで約7%ほどである。ここで紹介するのは、そのいずれでもないOS - UNIXである。ますは、UNIXについて、その歴史などを紹介しよう。

1969年生まれのOS - UNIX

UNIXは、40年以上も前の1969年、AT&Tのベル研究所で誕生した。開発に関わったのは、ケン・トンプソン、デニス・リッチー、ブライアン・カーニハンらである。当初は、アセンブラで書かれていたが、1973年にC言語に書き直された(ちなみに、C言語の開発はデニス・リッチーが中心となって行われた)。C言語となったことで移植性が向上し、さまざまなコンピュータ上で動作するようになる。こうして、商用からオープンソースまで、さまざまな系統のUNIXが生まれた。

「UNIX」は厳密にいえば、The Open Groupという標準化団体の仕様を満たしたOSにのみ使われる。それ以外については、「Unix」や「UNIX系(ライク)」といった言葉も使われるが、本稿ではLinuxなども含め、比較的ゆるく捉えることとしたい。ちなみにMac OS XもベースをUNIXとしており、10.5以降はUNIXの基準を満たす。

図1 Mac OS Xのターミナル。UNIXの代表的なコマンドlsが動く

「UNIXはゲームを動かすために作られた」という説もある。もちろん、まちがいではなく、Space Travelというゲームの移植も行われた。しかし、それ以上に重要なのは、本来、開発が行われていたMulticsへのアンチテーゼであったことだろう。Multicsは、最新の技術を取り込んだ先駆的なOSであった(開発にはMITやGEも加わった)。しかし、あまりにも巨大になり、商用化はされたものの決して成功したとはいえなかった。ベル研究所はいち早く、このプロジェクトから離脱し、独自OS開発を行う。それがUNIXである(当初は「Unics」という名前であった)。その名前にも注目したい。Multi(多重)に対しUni(単一)、つまり現実的な成果としてシンプルなOSを目標としていたことがうかがわれる。そして、1980年代、TCP/IP機能を搭載したことで、インターネットの普及にも大きく寄与した。

こうして誕生したUNIXであるが、現在ではさまざまなディストリビューションが存在する。PCでも動作するものも多い。しかし、40年も前に作られたOSを使う意味なんてあるのか?といった声が聞こえてきそうだ。これは筆者の例で申し訳ないのであるが、FreeBSD 4上での組み版ソフトである(図2)。1年くらい前に、このソフトで作成した本を出している(もちろん、今でも動作する)。

図2 FreeBSD 4上の組み版ソフト(EWB、TeXがベース)

UNIXの特徴をさらにあげると、テキストが基本となっている。これは、設定ファイルなどがテキストファイルであることで人間が読め、修正が可能となる。さらにデータストリームもテキスト化することで、フィルタリングが可能となる。つまり、テキストを扱うには、非常に便利なのである。これは、今後の連載の中で紹介していきたい。 また、Linuxと呼ばれる多くのディストリビューションも存在する。現在でも開発が行われており、Ubuntuなどはユーザーも多い(図3)。

図3 Linuxの代表的なディストリビューションのひとつ:Ubuntu

こちらは、最新のウィンドウマネージャを利用し、まさにGUIを達成している。一般的なツールやソフトも多数提供されており、デスクトップ環境としてもかなり使い勝手が向上している。そして、スマートフォンのOSであるAndroidは、このLinuxのカーネルをベースにしている。UNIXではないが、まったく無関係でもない。

Windowsと同時に使えるCygwin

そこで、普段はWindowsだけど、たまにはUNIXも使ってみたい、といったユーザーも増えてきた。その実現方法は、いくつかあるだろう。

・HDDに複数のOSをインストールし、起動時に選択
・仮想環境を使う
・光学ドライブから起動する(ライブCD)

Cygwinは、Windows上で直接UNIXのバイナリを動作させるものだ。仮想環境の1つともいえるが、一般的な仮想マシンでは仮想HDDを作成しそこに別環境としてOSをインストールする。Cygwinでは、そのままWindowsがインストールされた領域を利用する。つまり、Windowsと混在状態になる。実際に、Cygwinを起動しているのが、図4である。

図4 Cygwinの実行例

ここで起動しているのは、ターミナル(端末)である。他のWindowsアプリのように動作する。