初心者エンジニア必読、LinuxとはどのようなOSなのか?
みなさんは、「Linux(リナックス)」というOS(オペレーティングシステム)をご存知でしょうか。
「Windows」や「iOS」という名前を聞くことはあっても、Linuxは知らない人が多いかもしれません。
ところが、Linuxはみなさんが気付かないところで意外な機器に活用されており、コンピューターや電子機器などを開発するエンジニアにとっては必須と言っても過言ではないくらいに重要なOSなのです。
Linuxには、Windowsのような一般的なOSにはない、エンジニア好みの有益な特徴が数多くあります。
ここでは、情報システムや電子機器の開発に携わる初学者エンジニアに向けてLinuxを解説します。
Contents [hide]
“俺のOS”が世界最大のソフト開発プロジェクトに発展
OSはコンピューターを動作させる際、最も基本的な動作を決めているソフトウェアです。
ブラウザやワープロソフトといったアプリケーションソフトと、CPUやメモリーなどのハードウェアの間をつなぎ、アプリケーションに書かれた機能や処理手順を実行する役割を担っています。
Linuxは、ヘルシンキ大学で計算機科学を学んでいたLinus Torvalds(リーナス・トーバルズ)氏が開発し、1991年に一般公開。
米国AT&T社のベル研究所が開発した先駆的なOSである「Unix(ユニック)」の流れを汲むOSを参考にして開発したため、“Linusが作ったUnixのようなOS”という意味で、Linuxと名付けられました。
つまり、元々は一学生が個人的に作ったOSだったのです。
この時点で、最初から商品としての開発が進められたWindowsなどとは生い立ちが全く違うことが分かります。
その“俺のOS”が、いまでは世界最大のソフト開発プロジェクトに発展しているのですから世の中分からないものです。
さて、現在のLinuxは、一般的に2つの言葉の意味で用いられています。
1つはLinus氏が開発した「Linuxカーネル」、もう1つは「Linux系OS」という意味です。
カーネルとは、OSに組み込む機能を実現するための最も基本的な処理を行う中核部分のことを指します。
Linuxカーネルは、不必要な機能を削ぎ落した極めてシンプルな構造となるように開発されており、小容量で安定、高速動作が可能といった特徴を持っています。
ただし、Linuxカーネルだけでは、アプリケーションを動かすOSとして利用できません。
使用できる状態にするためには、さまざまな付帯ソフトが必要で、具体例を挙げると以下のようなものがあります。
デバイス・ドライバ | 半導体などハードや周辺機器を制御する役割のソフト |
シェル | ユーザー・インタフェース |
コンパイラ | 言語で書かれたプログラムをハードで実行可能な記述に変換 |
アプリケーション | 具体的な機能や処理を実行 |
コマンド | コピーや削除などOSの基本的な操作や管理を規定 |
ユーティリティ | 使い勝手や性能を向上させる小さなソフト |
デーモン | 起動と同時にバックグラウンドで動き出すソフト |
これらの付帯ソフトは、OSの用途や盛り込みたい特徴に合わせて搭載するので、同じLinuxカーネルを利用しても搭載する付帯ソフトの違いによって、Linux系の派生版OSが出来上がります。
こうしたLinux系OSのことを、「Linuxディストリビューション」と呼んでいます。
誰もが無料で使え、改良・機能拡張できるLinuxカーネル
Windowsのような商用OSの多くは開発者の権利を守るため、利用や複製、再配布、改変など、取り扱い方について一定の制限が加えられます。
しかし、Linuxカーネルは元々商用目的で作られたわけではありません。
そのため、開発者のLinus氏はLinuxをオープンソースとして公開しています。
これが世界中で利用されている最大の要因と言えるでしょう。
オープンソースとは、プログラマがプログラミング言語で記述した内容(ソースコード)を、そのまま公開するソフトのことです。
コンピューター内で計算を実行しているCPUは、オブジェクトコードと呼ばれる“0”と“1”の羅列で記述されたプログラムで動いています。
単なる数字の羅列なので、人間が見てもどのような処理が行われるのか全く理解できません。
これに対し、Linuxカーネルは、内部の計算式や処理手順が分かる状態のまま公開されています。
このため、第三者がLinuxカーネルのソースコードを基に、チューニングや改良、機能拡張することができるのです。
さらに、Linuxカーネルは、誰もが無償で利用できるロイヤリティフリーなOSとして公開されており、商用目的で利用することも可能です。
このような背景もLinuxが世界中のさまざまなエンジニアに利用されるようになった一因だと言えるでしょう。
Linuxはエンジニアに好都合な特徴をいくつも持っている
Windowsのような商用OSには、ユーザーの利便性を高めるさまざまな機能が搭載されています。
アプリケーションの互換性や安定動作の保証、万全のセキュリティ対策、アップデートなどの機能は、専門知識に乏しいユーザーが安心してパソコンやスマホを使う上で重要な要素です。
ただし、搭載される機能や提供されるサービスは、開発元企業のマーケティング戦略なども加味されます。
そのため、容量の増大、処理速度の低下を招く余分な機能は、特定の応用に特化した電子機器の開発者や他社との違いを生み出したいエンジニアにとって扱いにくいものでもあります。
Linuxは機能が規格化された商用OSではなく、違いを生み出すOSを作るためのベースとしても魅力的です。
その他、OSとして機能させるための付加ソフトやアプリケーションソフトの多くが無償で提供されているので、最小限の費用と期間で高度なOSを開発できる点。
また、開発したOSに何らかの不具合が残っていても、ソースコードが世界中の多くのエンジニアの目にさらされているため、修正点が見つかりやすく、迅速に改良が進むという利点もあります。
Linuxの応用はさまざまな分野に拡大
尖った機能や性能を持つ情報システムを生み出すのに向くLinuxは、既にさまざまな用途で利用されています。
例えば、サーバー用や科学計算用のコンピューターは、Linuxが多用されている典型的な分野です。
これらの用途では、ソフトに特定の用途に合わせたギリギリのチューニングを施して、ハードが持つ潜在能力を引き出すことが求められます。
こうした要求にオープンソースであるLinuxの特徴が合致しているのです。
さらに、世界中から集めたビッグデータを処理するデータセンターでは、無数のサーバーを運用します。
ロイヤリティフリーであるLinuxを活用することで、劇的なコスト削減が可能になります。
さらに、デジタル化した多様なメディアを表示する現在のテレビや、走るコンピューターとなった自動車、データを扱って精密な計測・制御を行う産業機器や医療機器などでもLinuxが広く利用されています。
こうした特殊な用途でも、機能をカスタマイズし、内部を徹底チューニングできるLinuxの特徴が生きるからです。
その他にも、一般消費者に最も身近な応用としてスマートフォンがあります。
Googleの「Android」は、Linuxカーネルをコアにして開発されたOSです。
ちなみに、Androidも、いくつかの利用制限は加えられていますが、Linux系OSの一種としてオープンソースとして公開されています。
開発の始点は、まずディストリビューションの選択から
エンジニアが応用に適したLinuxの活用を考える際、まずは既存のLinuxディストリビューションの利用を考えることが早道です。
2019年現在、何千種もの特徴あるディストリビューションが提供されていますが、比較的広く利用されている「RedHat系」「Debian系」「Slackware系」の3系統を紹介します。
RedHat(レッドハット)系の代表例
RedHat(レッドハット)系の代表例は、米国のソフトウエアベンダーであるRedHat社が開発した、有償のディストリビューション「Red Hat Enterprise Linux(RHEL)」です。
ライセンス料金は無料ですが、アップデート、サポート、訴訟からの保護といった関連サービスを受ける際に料金を支払うサブスクリプション契約を結んで利用します。
有料であるため、利用する際には、きっちりとした技術支援が期待できます。
業務用アプリケーションを動かすコンピューターで多く利用されています。
ただし、同じくRedHat系でありながら、無償で利用できるディストリビューションもあります。
「CentOS(セントオーエス)」や「Fedora(フェドラ)」といったものがその代表で、サーバー用OSとして広く利用されています。
Debian(デビアン)系の代表例
Debian(デビアン)系の代表例は、ボランティアが中心となって開発が進められている「Debian GNU/Linux」です。
フリーソフトだけでOSが構成されており、完全無償であることや、あらゆる情報をオープンにすることなど、Linuxの理念を徹底して守っている点が特徴です。
その他、Androidを搭載した携帯情報端末との互換性もある「Ubuntu(ウブントゥ)」や「Linux mint(リナックス・ミント)」、組み込みシステム用の超小型PCとして有名な「Raspberry Pi(ラズベリーパイ)」のOS「Raspbian(ラズビアン)」も良く知られたDebian系ディストリビューションです。
Slackware(スラックウェア)系の代表例
Slackware(スラックウェア)系は、OSとしての完成度と安定性が、配布時の状態で既に高い点が特徴です。
セキュリティに関する検証も行われた後に配布され、脆弱性が少ない安心して使える点も利点です。
動作が高速であるとする評価も受けています。
ただし、ベースの完成度が高い分、改良や機能追加に際しての技術的ハードルが高いようです。
「openSUSE(オープン・スーゼ)」「Plamo Linux(プラモリナックス)」「Puppy Linux(パピーリナックス)」などが有名です。
今後、高度な仕事をこなすロボットやモノのインターネット(IoT)など、コンピューターの応用分野はますます広がることでしょう。
それらの新たな技術を実現するための手段として、Linuxにますますの期待が高まっています。
WindowsやiOSと違い、始めはとっつきにくいと感じるかもしれませんが、ITの現場で働くエンジニアであれば学んでおいて損はないでしょう。