Linuxって聞いたことありますか?
エンジニアとして飯を食っている人なら間違いなく聞いたことがあることがあると思います。
そう、こんなやつです。tux君と言います。
ちなみにLinuxは2021.8.26で生誕30周年だそうです。
しかし、僕が未経験からSESとしてエンジニアで働き始めた頃、Linuxって聞いたことはあるけど、果たしてLinuxがどんなもので、何をするものなのか?全くわかりませんでした。
こんなに愛らしいペンギンのキャラクターなのに、僕はこのペンギンに心底苦しめられました。
エンジニアの開発現場へ行くと、このLinuxは必須の知識であり、身につけて置かなければいけない技術の一つです。
以下の記事でもアサインされた現場で、Linuxの開発環境を構築することができずにPMに怒られた経緯があります。
関連記事
参考 落ちこぼれたエンジニア人生から今に至るまで健康ITサービス指向エンジニアブログここで声を大にして言いたいのは、プログラミング言語を学ぶことも大事だけど、必ずLinuxとは何なのか?というのと、Linuxの環境構築は必ず学んでおいて損はない。
エンジニアになりたての当時、アサイン先でSQLの保守改修を行う作業だったのですが、まずはじめにLinuxの仮想環境(テスト環境)を構築しなければいけなかったのですが、調べようにも何を調べれば良いのかわからない、わからないことがわからない、周りに聞ける人もいない、PMに聞くと怒られる、結局自分の力で解決することができず、そんな状況下でドロップアウトした経験があります。
プログラミング言語をいくら勉強しても、その前のコードを書く環境構築をできなければ、入り口にすら入ることができないんです。
そして、現場では誰も教えてくれません(いや、断言はできないですが、Linuxを1から教えてくれる人はいないでしょう)
近年Twitterでもプログラミングを勉強する人が増えてきたことは嬉しいことなのですが、どうかこのブログを見た方、Linuxも勉強していただきたいと切に願います。間違いなく役に立ちます。
この記事ではLinuxがよくわからない人へ向けて、そもそもLinuxって何?を噛み砕いてお話していこうと思います。
Twitter上でもLinuxとは?といったツイートを図解したところ、多くの方が関心を寄せていただきました。
リツイートいただいた多くの方ありがとうございました。
Linuxを簡易的にまとめるとこんな感じ?
— カイリーー@健康ITサービス指向エンジニア (@kyrieee_a) August 9, 2021
夏休みの自由研究がてら。
※マウントお断り#Linux #Linuxディストリビューション pic.twitter.com/mzhyiRkIIy
対象読者
- そもそもLinuxって何?
- Linuxってなんだかよくわからないけど環境作らないけない状況に立たされている
- Linuxをどうやって勉強すれば良いのかわからない
- プログラミング言語の勉強に費やして、仮想環境の構築が苦手
Table of Contents
Linuxとは?
まず、Linuxとは何なのか?
LinuxとはUnixを参考にして開発されたOSである。ただし、同じ人が開発したわけでもない。別物といえば別物である。
ではUnixとは?
Unixとは1969年、AT&T社のベル研究所というところで、ケン・トンプソンさん、デニス・リッチーさんという天才達が開発したアセンブリ言語で開発されたOSである。後にアセンブリ言語→C言語にすべて書き直したそうです。
この記事のあとにもLinuxの詳細を解説しますが、LinuxはUnixを参考にして作られたOSであるため、特に関係性を持っているわけではない。
ちなみにMacOSはUnixベースのOSです。
では本題のLinuxについてご説明します。
以下の図解からごらんください。
明確には”狭義のLinux’, “広義のLinux”など分けて考える必要がありますが、最初にそこをお伝えしてもなんのことか、少なくとも自分は理解ができなかったので、まずはLinuxとはどんなものなのかをわかりやすくお伝えします。
上の図を解説していくと、皆さんPCといってもWindowsやMacがあるのはご存知かとおもいます。
WindowsやMacってOS(オペレーティングシステム)と呼ばれていてPCを動かすためのソフトと思ってもらえるとわかりやすいかと思います。
もっと世間一般的な用語を用いると、プレイステーションがPC、そのプレイステーションを楽しむために必要なものはソフトが必要ですよね?(世代が古くてすいませんが)
要するにゲーム機本体だけでは魂の抜け殻にすぎないのですが、ソフトを入れることで、ゲーム機に魂が吹き込まれ、ようやく遊べるというものです。
WindowsもMacもその役割と同じようなもの、と思ってもらえると良いかと思います。
はい、ここまで話せば、Linuxも同じようにゲームソフトの役割なんだな、と思った方、その通りです。
PCにLinuxをセットで使用することで、Linuxとしての役割を果たすことができます。
ここまでが図で示している③までの流れになります。
ですが、③までのできても、実はLinuxはまだソフトとしての機能が不足しています。
それを補う役割がLinuxディストリビューションです。
LinuxディストリビューションとはLinuxを機能させるために必要なソフトウェアをまとめてパッケージングしたもののことです。
それらを無料(有料のものもあり)で配布してくれているすごい人達がいます。
Linuxの歴史
Linuxは1991年に当時大学生だったフィンランドのLinus Torvalds(リーナス・トーバルズ)さんという方が、もともとUNIXというLinuxの原型となるものを「UNIXの機能だけじゃ色々足らないよ」と自力で開発されたのがLinuxである。
※正確には以下Wikipedia引用を参照ください
残念ながら、カーネルだけでは何もできません。使用できるシステムとするには、シェルやコンパイラ、ライブラリなどが必要です。これらは別個の部分であり、もっと著作権が厳しい(あるいは緩い)かもしれません。Linuxで使用されているツールのほとんどはGNUソフトウェアで、GNUコピーレフトが適用されます。これらのツールはディストリビューションに含まれていませんので、詳細については私(またはGNU)までお問い合せください
https://ja.wikipedia.org/wiki/Linux%E3%81%AE%E6%AD%B4%E5%8F%B2
ちなみにバージョン管理システムでおなじみのGit,GitHubもリーナス・トーバルズさんが開発されてます。
天才とはこういう人のことを言いますね。
なぜLinuxが必要なのか?
では、なぜLinuxが必要なのか?
Webアプリケーションの場合の例をご説明しますが、アプリケーションを稼働させるには、サーバが必要になります。
Webの仕組みの詳細は改めて別の記事で解説したいと思いますが、Webアプリケーションを動かす仕組みとしてクライアントとサーバの仕組みを理解する必要があります。
クライアントはWindowsやMacなどのOSを使ってURLをブラウザに打ち込んでサーバに問い合わせをします。
問い合わせを受けたサーバは内容を受け取ったらブラウザ側に応答を返します。
クライアントとサーバの仕組み図解
サーバにはWebサーバやAPサーバ(アプリケーションサーバ)、DBサーバ(データベースサーバ)などアプリケーションを動かすための様々なファイル(HTML,CSS,JavaScript,PHPなど)やデータが置かれています。
はい。アプリケーションを動かすためにはサーバが必要なのですが、サーバをどこに置くか?となったときに、Linuxの環境の中に置きます。
Windowsサーバーなども使用されることはありますが、シェアはLinuxのほうがWindowsサーバーを上回っています。
Webアプリケーションを動かすためにはサーバが必要、すなわちLinuxの環境上に、必要なサーバやファイルを置かないとアプリケーションを動かすことができません。
もうお分かりかと思いますが、Linuxがなぜ必要か?の答えはアプリケーションを動かすために必要だから、となります。
開発現場では、まず、開発するための環境として、クライアントとサーバの仕組み図解の中でいうと、”クライアントホストOS”上に仮想のLinuxの環境を構築して本番稼働している環境と同じ環境を準備して、開発、テスト、などを行います。
Linuxを学ぶには?
Linuxがどんなものか、ここまでの説明でなんとなーく、わかっていただければ嬉しいです。
ここからは、ではLinuxを学ぶためにはどうすればよいか?
独学で無料のサイトを手当たり次第学んでも良いのですが、過去、僕がLinuxというものがなんなのか?を知らないころを思い出してと言えることは、本や動画学習サイトへ課金して勉強したほうが、圧倒的に習得が早いと思うので、無料のものも含め、僕がオススメするものをまとめてみました。
無料で学べるもの
上記でもLiuxとはなんのか?についてご説明させていただきましたが、それを踏まえまして、以下動画でさらっとLinuxとは何なのかを見てみるとより理解が深まるかと思います。
こちら侍エンジニアさんが提供しているYoutube動画ですが、アニメーションを駆使してLinuxとは?の部分を解説してくれているので、非常にわかりやすい動画となっています。
こちらはド定番のLinux標準教科書です。
参考 Linux標準教科書健康ITサービス指向エンジニアブログ無料でお申し込みしてPDFファイルをダウンロードすることができます。
初心者向けに事細かに内容が記載されているので、非常に親切な教科書となってます。
おすすめの教材です。
ぜひダウンロードしてみてください。
本で学ぶ場合
1日1問、半年以内に習得 シェル・ワンライナー160本ノック (Software Design plusシリーズ)
Amazonで上田 隆一, 山田 泰宏, 田代 勝也, 中村 壮一, 今泉 光之, 上杉 尚史の1日1問、半年以内に習得 シェル・ワンライナー160本ノック (Software Design plusシリーズ)。アマゾンならポイント還元本が多数。上田 隆一, 山田 泰宏, 田代 勝也, 中村 壮一, 今泉 光之, 上杉 尚史作品ほか、お急ぎ便対象商品は当日お届けも可能。また1日1問、半年以内に習得 シェル・ワンライナー160本ノック (Software Design plusシリーズ)もアマゾン配送商品なら通常配送無料。
「1日1問、半年以内に習得 シェル・ワンライナー160本ノックが」オススメです。
Linuxの環境構築の部分からシェルの基本操作、実務で使いそうな応用力を鍛えることができます。
Amazonでのレビューは以下のようになっています。
評価 | 割合 |
---|---|
★★★★★ | 60% |
★★★★ | 17% |
★★★ | 17% |
★★ | 6% |
★ | 0% |
動画で学ぶ場合
はじめてのLinuxサーバー構築運用入門 -Linuxコマンドラインを基礎から学び、自分のウェブサーバまで構築できる
おなじみUdemyのこちらの講座がオススメです。
Linuxとは?といったところから、LAMP(Linux, Apache, MySQL, PHP)環境を構築する講義、コマンド操作が一通り学ぶことができます。
もう絶対に忘れない Linux コマンド【Linux 100本ノック+名前の由来+丁寧な解説で、長期記憶に焼き付けろ!】
読んでわかる通り、Linuxコマンドの100本ノックで記憶に焼き付ける動画です。
Linuxの概要とオススメの教材についてご紹介させていただきました。
これからLinuxを学ぼうと思っている方は参考にしてみてください。
LinuxをMaOSで使用するには?
LinuxをMacOSで使用するためにはMacOSに仮想のPCを構築して、その中にLinuxをインストールしていく、といった作業が必要になります。
簡単に図解すると以下のようなイメージです。
LinuxをMacOSに構築するには以下の手順で作業をしていく必要があります。
- Oracle VM VirtualBoxをMacOSにインストールする
- LinuxディストリービューションであるCentOSを仮想マシンにインストールする
- CentOSに必要なパッケージをUpdateする
上記手順の詳細は次回以降の記事で掲載していきたいと思います。
\無料コンテンツを配布しております/
毎日エンジニアとして勉強をしているのに
- コードが読めるようにならない
- コードを書くなんてもってのほか
- 環境構築ができない(そもそも何をやっているのかわからない)
- 毎日できない自分に嫌気が差す
そんな毎日に悩みを抱えている方
もしかしたら間違った勉強方法をしているかもしれません。
エンジニアとして生きていくための正しい勉強とは
一体何でしょうか?
以下からご確認ください
ぜひご参考ください。