目次
1. 1 UNIXはアセンブリ言語からC言語へ
1. 2 SystemVとBSD版UNIX
1. 3 UNIXは商用化へ
1. 4 UNIXはCLIを採用
2. 1 LinuxはUNIX互換OS
2. 2 Linuxはオープンソースソフトウェア
2. 3 Linuxは世界中のエンジニアが開発者
パソコンのOSといえば、一般的に「Windows」と「Mac OS」の2つを挙げる人が多いと思います。さらにエンジニアやPCに詳しい人であれば、その次に「UNIX」や「Linux」が思い浮かぶのではないでしょうか。
しかし名前を知ってはいても、とっさにUNIXとLinuxの違いを説明できる人は意外に少ないと思います。今回は、そのUNIXとLinuxの違いと関係性について簡単にご紹介したいと思います。
1. まず、UNIXとは?
UNIX(ユニックス)とは、アメリカ最大手の電話会社であるAT&T社が1968年に開発したOS、およびその流れをくむOSの総称です。
(なお同社は電話を発明したグラハム・ベルが設立した、ベル電話会社が前身です)
1.1 UNIXはアセンブリ言語からC言語へ
AT&T社における開発当初のUNIXは、アセンブリ言語で書かれていました。
アセンブリ言語と聞いてもピンと来ない方も多いと思いますが、IPA主催の基本情報技術者試験の午後試験で、選択言語のひとつとなっているCALSⅡがアセンブリ言語だと言えばイメージしやすいでしょう。アセンブリ言語は、コンピュータが理解できる機械語(0と1のみ)よりは人間が理解しやすくなったとはいえ、CPU毎に記述方法が異なるなど、当時はまだまだ敷居の高いものでした。
社内でUNIXが広まるにつれ、保守のしやすさや移行の利便性を求めて、もっと人間がわかりやすい言語で書き直そうという思いからデニス・リッチーによってC言語が開発されました。その後、UNIXはアセンブリ言語からC言語で書換えられ、ソースコード付きの状態で大学や研究機関に向けて公開されたことから、利用者がさらに広まっていきました。
1.2 SystemVとBSD版UNIX
UNIXが広まる中、カリフォルニア大学のバークレー校では、より優れた機能(ネットワーク機能や、現在のUNIXエディタviなど)を盛り込んだ、バークレー校のUNIX(Berkeley Software Distribution)=BSD版UNIXが開発され、評判となっていました。
BSD版UNIXは大きな反響をよび、派生元のAT&T社のUNIX=System Vと並んで、UNIXの2大柱として、UNIXの歴史に大きな影響を与えました。現在、BSD版UNIXで有名なものにはFreeBSDなどがあります。
1.3 UNIXは商用化へ
UNIXは、世界的に広まるにつれ商用化される流れとなり、UNIXを利用するためのライセンス管理が始まりました。
「UNIX」の商標権は現在、「The Open Group」という団体が保有しており、同団体から共通仕様「Single UNIX Specification」を満たしていると認証されたOSだけが「UNIX」と正式に名乗ることができる仕組みです。現在の商用UNIXは、ほとんどAT&T社のSystemVが元になっています。
1.4 UNIXはCLIを採用
UNIXは、WindowsやMac OSなどの「GUI(Graphical User Interface)」に主眼を置いたOSとは異なり、「CUI(Character User Interface)」を採用しています。
GUIとはファイル操作がグラフィカルに表現されているインターフェースのことで、アイコンをマウスでドラッグするとファイルが移動されるなど、直観的な操作が可能になっています。
例えばファイルのコピーをしたい場合は、マウスを右クリックして「コピー」を選択し、任意の場所で「貼り付け」を選択します。
それに対してCUIは、命令コマンドを文字で打ち込むことで、ファイル操作やアプリケーションの起動を行います。Windowsのアクセサリ(Win10では管理ツール)にあるコマンドプロンプトは、WindowsをCUIで操作するためのツールです。
図は、Windowsのコマンドプロンプトのものです。同じ「Download」というフォルダ内に、「aaa.txt」を「bbb.txt」という名前でコピーしています。その際、マウスではなく「copy」というコマンドを打ち込むことでファイルを操作しています。
コマンドプロンプトはWindowsの前身(厳密には違いますが)でCUIのOSである「MS-DOS」のソフトをWindows上で動作させるために用意され、かつてはDOS窓と呼ばれてもいました。
なお逆にUNIX上で動くGUI操作を可能とするツールも存在しており、「X-Windows System」という名称でリリースされています。
2. では、Linuxとは?
Linux(リナックス、リーナックス、ライナックスとも)の開発は1991年、ヘルシンキ大学で当時大学院生だったLinus Torvalds(リーナス・トーバルズ)によって行われました。大学で教育用UNIXとして使われていたMINIXを、より良いものに作り替えようとしたのが始まりと言われています。
2.1 LinuxはUNIX互換OS
正式にTOGから認証を受けたUNIX以外に、UNIX風の仕様や操作感を持つ(=互換性の高い)OSが、実は多数存在しています。それが「UNIX系OS(UNIX-like OS)」であり、そのUNIX系OSのうち最も有力な存在が「Linux」なのです。
LinuxはUNIXと同じであると思われがちですが、LinuxはUNIXとは別物であり、ソースコードも全く別物です。しかし、UNIXの標準規格であるPOSIXを満たしていることから、UNIX互換OSと言われています。
2.2 Linuxはオープンソースソフトウェア
UNIXとの大きな違いは、Linuxはオープンソースソフトウェアとして広く公開・配布されており、GPLというライセンス体系に基づいて誰でも自由に入手・改変・再配布が可能な点です。UNIXは商用化によってライセンス管理が必要でしたが、Linuxはフリー、つまり誰でも無料で使用することができるのです。
◆注釈:一部のLinuxディストリビューション(Linuxカーネルとドライバ、いくつかのアプリケーションをパッケージングしたもの)には、有料で配布されているものもあります。 企業向けに開発された「Red Hat Enterprise Linux」などはサポートなどが充実している代わりにこれまで有償のみの提供でしたが、2016年3月31日から開発者向けに、無償サブスクリプション「Red Hat Enterprise Linux Developer Suite」の提供を開始しました。
2.3 Linuxは世界中のエンジニアが開発者
Linuxは現在に至るまで20年以上にわたって成長を続けてきただけでなく、オープンソースであるがゆえ、今後も世界中のエンジニア達がLinuxの開発者として改良を行い、日々ブラッシュアップを続けていくOSとも言えます。
さらにLinuxはネットワークやセキュリティの分野で優れており、非常に安定しているという特徴があります。そのためスパコンからメインフレーム、サーバ、PC、果ては組み込み系までの幅広いハードウェア用に使用されており、特にスパコン、メインフレーム、サーバにおいては最も使用率の高いOSとなっています。
3. シェルスクリプトはプログラミングの学習にも
UNIXやLinuxには、OSの核となる部分(カーネル)が存在し、そのカーネルに処理を伝える役割としてシェルが存在します。
シェルスクリプトという言葉を一度は聞いたことがあると思いますが、シェルに命令を伝えるためのコマンドを列挙したものをシェルスクリプトと言います。シェルスクリプトは単純にコマンドを並べるだけではなく、プログラミングの知識として必要な「条件分岐」や「繰り返し」を用いて記述することも可能です。
作業でよく使うコマンドであれば、シェルスクリプトとしてコマンドを記述して保存しておくことで、毎回入力する手間もなくなって作業効率が上がるだけでなく、スペルミスもなくなります。他のプログラミング言語に比べると比較的簡単なため、まず最初に学ぶプログラミング言語としても最適です。プログラミングに限らず、UNIX/LinuxのOSの知識やコマンドの習得は、エンジニアとして仕事をしていく上での必須スキルとも言えるでしょう。
4. まとめ
いかがでしたでしょうか。UNIXとLinuxの操作感が似ているけど違うOSである背景には、こんな経緯がありました。コスト面でも安定性でも優れているLinuxの利用場面は、今後も増えていくと考えられます。CUIで個人利用には敬遠されがちなUNIX系OSですが、Linuxにも無償のGUIパッケージがあります。
また専用マシンを準備するのが難しいという場合には、「Cygwin」、「VirtualBox」というWinsows上で動くUNIX系OSの環境を再現する無料のソフトウェアパッケージもあります。
これを機会に、ぜひ貴方もLinuxで遊んでみてはいかがでしょうか。
関連記事:
Windowsで出来るUNIX系コマンド練習-Cygwin導入編
関連記事:
仮想化ソフトVirtualBoxのダウンロードとインストール手順を解説
関連記事:
ゼロから始めるUNIX基本のコマンド集