テクノロジー

2022年8月4日

Linuxとは

ゴール

  • OSとは、Linuxとはなにかを理解する
  • なぜLinuxを学ぶのかを理解する

OSとはなにか

コンピュータでは、ブラウザや表計算ソフトなどのさまざまなアプリケーションをユーザが任意にインストールして利用することができます。このようなアプリケーションはソフトウェアと呼ばれます。
また、ソフトウェアを利用する際は、マウスやキーボードを使って操作を入力したり、ディスプレイ・プリンター等からの出力を介して結果を受け取ったりします。このような入出力機器はハードウェアと呼ばれます。
しかしながら、コンピュータは上に挙げた要素だけでは今あなたが利用しているようには動作できません。

例えば、Webブラウザなどの個々のソフトウェアは、ハードウェアから入力された操作を命令に変換して受け取る機能は有していません。また、処理結果をディスプレイなどの出力機器に表示したり、プリンタに直接命令を送ることもできません。
加えて、ソフトウェアが処理を行うには、CPUやメモリなどの動作リソース(資源)を必要とします。しかし、個々のソフトウェア同士が連携してリソースを互いに融通しあうような機能は持っていません。

つまり、コンピュータが動作するには、個々のソフトウェアやハードウェアの間に入って仲介し、取りまとめて管理する役割が必要です。
この役割をこなすのが、オペレーティング・システム(OS) と呼ばれるソフトウェアなのです。

Image from Gyazo

代表的なOSとその比較

それでは、OSにはどのようなものがあるのか見てみましょう。
代表的なOSを取り上げて比較してみます。
   

名称 Windows macOS Linux
成り立ち Microsoft社提供。パーソナルコンピュータつまり個人用途のコンピュータに搭載されているOSでは、最もシェアが高い。比例して、対応ソフトウェアも数多く流通している。 Apple社提供。Mac各種に標準搭載されている。かつてAT&T社で開発され広まった、UNIXと呼ばれるOSをベースに作られた。直感的で柔軟な操作体系を備えている。 macOS同様、UNIXと呼ばれるOSから派生して作られた。営利/非営利に関わらず自由に入手・修正や頒布ができる「フリーかつオープンソースなソフトウェア」開発の盛り上がりとともに発展し広まった。
サーバコンピュータ用のOSとしてトップのシェアを持つ他、パーソナルコンピュータやスマートフォンなど幅広いデバイスにおいて利用されている。
有償/無償 有償 -
(OS単体での販売は基本的になし)
種類により様々(後述)

補足として、macOSとLinuxとの関係について説明しておきます。
上表のとおり、この二つはともにUNIXというOSをルーツに持っています。
UNIXというOSは、1960年代に米AT&T社で開発されました。その後、そのクオリティの高さに加えて当初無料で提供されていたことや、比較的安価なコンピュータでも動作することなどが要因となって広まりながら、いくつかの組織がUNIXをベースとしたOSを独自に開発するようになりました。これが俗にUnix系と呼ばれるOSたちであり、macOS, Linuxはともにこの流れの中で開発されたものです。

このような経緯から、基本的な仕組みから使用できるコマンドに至るまで、とても似通ったものとなっています。
もちろん、両者は似て非なるOSであるためさまざまな違いはあるものの、一方に慣れていればもう一方もある程度は違和感なく使うことができるものとなっています(ただし、個人差はあるでしょう)。

なぜLinux(Unix系OS)を学ぶのか

Webアプリケーションとは、アプリケーションが動作しているサーバが、ネットワークを介して受け取った命令をきっかけに動作するものです。
Webアプリケーション開発においては、完成したアプリケーションをインターネットに公開する際に、サーバにアプリケーションを配置する作業が必要になります。
加えて、トラブル対応やメンテナンス等の保守・運用もしなくてはなりません。つまり、Webアプリケーション開発において、サーバコンピュータの操作ができることは必須要件なのです。
そして、上表でも触れた通り、サーバ用OSで最大のシェアを誇るのはLinuxです。

また、サーバのみならず、自分のPCで開発に取り組む際も、Linux(Unix系OS)を使って進めることが強く推奨されます。
Unix系OSは、動作が軽量かつ細部に手が届く操作系統(CLI=コマンドラインインターフェース)を備えていることなどから、開発者間でスタンダードとして定着しているからです。
加えて、別の章で登場するソースコード管理ツール「Git」が、CLIからの利用を基本としていることも理由の一つです。

以上のことから、Webアプリケーション開発においてLinux(Unix系OS)の知識・技能は必須となっています。

Linuxの「ディストリビューション」とその比較

Linuxは、WindowsやmacOSのように、ある一つの企業や組織が提供しているものではなく、いくつかの種類があります。

ディストリビューションとはなにか

そもそも、OSはいくつかのソフトウェアが組み合わさってできています。
中核部分を成すのはメモリ管理やデバイス管理を担当するカーネルと呼ばれるものですが、これ単体ではOSとしての機能を果たすことはできません。
例えば、ユーザからの入力を受け付けるユーザインターフェースや、OSをPCにインストールするインストーラなどの部品が集まって初めてOSが機能します。
ただし、これらを一つずつ組み込んでOSとして使えるようにするには、専門知識と労力が必要とされます。

そこで、こういったソフトウェアをあらかじめまとめて、ひとつの製品としたものが「Linux OS」として提供されています。このようにパッケージ化されたものをディストリビューションといいます。

※ちなみに、「Linux」という語は、狭義ではLinuxカーネルのみを指す言葉です。Linuxカーネルを備えたOSそのものは、厳密には「Linux OS」と呼ばれます。広義では「Linux」だけでOSそのものを指すとされているので、普段から厳密に呼び分ける必要はありませんが、知っておくと良いでしょう

ディストリビューションの比較

ディストリビューションには、大まかにRed Hat系・Debian系の2系統が存在します。
さらに、それぞれの系統において、目的や組織などによって複数のディストリビューションが作られています。
成り立ちもさまざまです。企業が開発し有償で提供しているものや、コミュニティによって開発され無償で提供されているもの、個人で開発されているものもあります。また、コミュニティに企業がスポンサーとしてついていることもあります。

ここでは主なものをピックアップし、公式ドキュメントとともに紹介します。
暗記する必要はありませんが、将来の学習のための事前知識として一読しておくと良いでしょう。

Red Hat(レッドハット)系:

  • Fedora(フェドラ)
    • かつて米レッドハット社が提供していた無償のディストリビューション「Red Hat Linux」の後継版。レッドハット社の支援を受けたFedora Projectによって開発されている。
  • Red Hat Enterprise Linux
    • Fedoraでの成果を取り込みつつ、企業システム向けに安定性を高めたディストリビューション。有償だが、レッドハット社のサポートを受けることができる。
  • CentOS(セントオーエス)
    • Red Hat Enterprise Linuxの公開ソースコードを元に作られたRHEL(リール)クローンOSのうち、もっとも知名度が高いディストリビューション。RHELとの互換性が高く、アップデートにも追随しているため、有償サポートを必要としないユーザからの支持を得ている。
  • Amazon Linux
    • クラウドサービスAmazon Web Service(AWS)が提供する、RHEL系のディストリビューション。AWSを利用してサーバを立てる時などにはこのディストリビューションが標準となっており、AWSで利用できる各種ツールがあらかじめインストールされていたり、Amazonによるサポートが受けられたりする。

Debian(デビアン)系:

  • Debian/GNU Linux(デビアン/グヌー リナックス)
    • フリーソフトウェアのみを採用する無償ディストリビューションを開発するコミュニティ「Debian Project」によって作られた。
  • Ubuntu(ウブントゥ)
    • Debian/GNU Linuxをベースに作られた。Ubuntu Foundationというコミュニティが中心になって開発されている。従来は蔑ろにされがちだった初心者にも配慮し、使いやすさを重視していることなどから、近年で最も高いシェアを誇る。
  • Raspbian(ラズビアン)
    • 教育目的に開発された小型コンピュータRaspberry Pi(ラズベリーパイ。日本でも「ラズパイ」という通称で親しまれている)向けのOS。Debianをベースに作られており、Raspberry Piを動作させるためのプログラムが組み込まれている。

最後に、ディストリビューションごとのシェアをご紹介します。
Image from Gyazo

出典: w3tech.com

まとめ

  • 主なOSにはWindows, macOS, Linuxが存在する。
  • Webアプリケーション開発において、Linux(UNIX系OS)への習熟は必須である。

この記事の続きは、こちらの「1週間の無料お試しを開始する」から学習できます!

DIVE INTO CODEのことをもっと知ってみませんか?