新人・未経験にこそオススメ Linuxをはじめよう!

新年度となり、新規プロジェクトがはじまったり、所属チームが変わったりと、変化の多い季節ですが、そろそろ皆さん慣れてきたでしょうか。4月から、新入社員として働き始めた方もいらっしゃるかもしれませんね。せっかくの新年度。新人エンジニアや、何か新しいことを始めたい方にオススメなのが、Linuxの学習です。

Linuxは、オープンソースのOS(オペレーティングシステム)であり、そのシェアの大きさから、多くのエンジニアにとって「一番身近な存在となるOS」の一つです。

クライアントパソコンとしては、WindowsやMacを使っている人が多くても、サーバーとしてはLinuxにお世話になっている人がほとんどでしょう。

今回は、そんなLinuxと、どんな距離感で付き合っていけばよいのか?というお話です。そんなに小難しいことを言うつもりはないので、⁠Linuxナンモワカラン」皆さんも気楽に読んでくださいね。

クラウド&Dockerの時代でもLinuxって必要なの?

ここ数年、サーバー構築を専門とするエンジニアでなくとも、AWSをはじめとするパブリッククラウドやDockerなどのコンテナ技術を学ぶ人が多くなりました。それ自体は大変嬉しいことなのですが、SNSなどで、皆さんの様子を見ていると、すこし難しいと感じてしまう人も多いようです。

これは、多くの場合で、AWSや、Dockerが難しいからではなく、サーバーやLinux、ネットワークに関する知識不足が原因です。

そもそも、⁠AWSやDockerとは何か」と言えば、AWSは、⁠サーバーなど一式を貸してくれるレンタルのクラウドプラットフォーム⁠⁠、Dockerは「隔離されたプログラムの実行環境を用意するソフトウェア」です。

そしてどちらも、⁠サーバーを用意するのに便利だからよく使われるもの」なのです。

サーバーとは、⁠server」の名のとおり、何かサービス(service)を提供するものを指します。メールサーバーならメール機能を提供するサーバー、WebサーバーならWebサービスを提供するサーバーです。提供するサービスによって「●●サーバー」と呼ばれます。

つまり、⁠サーバーを立てる」ということは、⁠何かサービスを提供する仕組みを作りたい」と同じ意味なのです。具体的に言うと「このシステムを構築したいから、そのためには、Webサーバーを立てなければならない」⁠社内でメールを運用したいからメールサーバーをたてなければならない」といったように、まず、⁠○○をしたい」という目的があり、そしてそのためにたてられるものです。

なんだ、そんなの当たり前じゃないか、と思われるかもしれませんが、これこそが、あまりサーバーやネットワークに詳しくない人が、AWSやDockerの学習で躓いてしまうポイントなのです。⁠○○をしたいから●●サーバーを立てたい」⁠○○できるような環境を作りたい」といった目的もなく、とりあえず操作方法だけを学ぼうとしても、なんのためにこの設定をするのか、どうしてこの操作をするのかを理解するのは難しいでしょう。

ですから、少なくとも、⁠サーバーとはどういったもので、どのような特徴があって、構築のために何をしなければならないか」という知識は必要です。

また、プロジェクトで必要とされる条件は、一つ一つ違います。

例えば、皆さんの持っているスマートフォンにインストールされたアプリは様々です。人気のゲームを入れている人も居れば、そうでない人も居ます。年齢や性別、会社が同じであっても、お互いに見比べてみると違うことも多いでしょう。同じ人でも、機種変更するたびに、アプリが減ったり増えたりしていきます。

それと同じように、似たようなプロジェクトであっても、⁠これを採用することが多い」という傾向はありますが、プロジェクトによって望まれるサーバー構成は違います。台数も違えば、選択するOSやソフトウェアも違います。また、ソフトウェアをデフォルトのままで使うこともあれば、カスタマイズすることもあります。そして、こうした調整をするためには、Linuxの知識が必須です。

ですから、AWSやDockerを使っていても、自分たちのプロジェクトのためにサーバーを用意するには、必ずLinuxやサーバー用ソフトウェアの知識が必要になるのです。

時々、Linuxでのサーバー管理・運用を古い技術だと極論を述べる人も居ますが、それはあくまで「サーバーやLinuxについて基礎知識がある前提」での話です。技術の進化により、重用される技術に移り変わりはありますが、⁠基礎・基本」はいつの時代も変わらないのです。

ただ、学ぶ順番はどちらでも良いと思います。実際に動くものから入った方が向いている人も居れば、座学から入った方が理解できる人もいるでしょう。AWSやDockerをまずはさわってみて、その後にLinuxを深掘りしても良いですし、Linuxでサーバー構築の基礎を学んでから、クラウドに移行するのも良いです。

最終的に同じ知識が身につけば良いのです。

そもそもサーバーって何なの?いつものパソコンとは違うの?

サーバーとは、どんなもの?パソコンとどう違うの?と問われた時に、意外にきちんと答えられる人は少ないかもしれません。仕事でよく使っていても、⁠なんとなく仕事を始めたらそこにあって、なんとなく操作方法を知って、なんとなく使っているもの」というくらいの認識でサーバーと付き合っているエンジニアも多いでしょう。

それでも良いのですが、ちゃんと知っておくと、新技術が出てきた時にも理解しやすくなるので、整理しておきましょう。

まず、⁠サーバー」は、⁠何かサービスを提供するもの」と先に書いたとおり、サービスを提供する役割のパソコンです。他のパソコンがアクセスして来たら、応答するのが仕事です。Webサーバーなら、ウェブページのファイルを置いておき、他のパソコンが「それを見たい!」とアクセスしてきたら、ファイルを渡してあげる仕事をしています。メールサーバーなら、メールを送ったり、渡したりしています。平たく言うと、皆でネットワークごしに共同で使うパソコンがサーバーです。

図

そして、サーバーは、普段、皆さんがクライアントパソコンとして使っているWindowsや、Macのパソコンと大きな違いはありません。

そういうと、⁠そんなはずはない!サーバーは特殊ななにかすごいものだ!」と思われるかもしれませんが、それは幻想です。⁠サーバー」は、あくまで「何を提供する」という役割の意味しかないので、特別なものではありません。どんなパソコンであっても、⁠何かを提供する=他のパソコンがアクセスしてくる」という役割であれば、それはサーバーと呼ばれます。マシンや、ソフトウェアは、皆さんがいつも使っているクライアント(デスクトップ、サーバーから提供される側)と大差ないのです。

例えば、⁠サーバー用マシン」というと、無骨な見かけの大きなマシンを想像する人も居ますが、それはあくまで、⁠サーバーとして使うのに向いているマシン」というだけであって、それを普段使うパソコンにしても良いのです。ちょっと音がうるさくて、机の下で邪魔になりますが、個人の好みです! 逆に、普段使っているパソコンを、サーバーにすることもできます。ソフトウェアに「●●サーバー用ソフトウェア」が存在するので、それを入れたらサーバーになります。

Linuxはサーバー用なの?黒い画面は必須なの?

このような定義なので、サーバーによく使われているLinuxも、⁠サーバー専用OS」というわけではありません。

あくまで、⁠サーバーとして使う時に、使いやすいサーバー用が存在する」というだけです。デスクトップ版と呼ばれるクライアント用に調整されたOSもありますし、そもそもサーバー用OSであっても、クライアントとして使っても構わないのです。

ただ、⁠サーバー用」と謳われている場合は、サーバーとして使われることを前提としているので、クライアントとしては使い勝手が良くないです。

特に、皆さんが心配なのは、いわゆる「黒い画面」でしょう。

映画やドラマなどで、ハッカーが何かしているシーンでは、必ずといって良いほど、黒い画面が表示され、ハッカーも何かをパチャパチャと打ち込んでは唸っています。職場でも、サーバーをいじっている先輩の画面をのぞき込むと、似たような黒い画面になっているかもしれませんね。

この黒い画面は、⁠CLI(Command Line InterFace⁠⁠」と呼ばれるもので、皆さんに馴染みのある、マウスやタッチでの画面操作が登場する前は、皆このような画面で操作していました。

普段、皆さんがソフトウェアを起動する時には、アイコンをクリックやタップして起動しますが、CLIでは、ソフトウェアを起動する命令を文章で打ち込んで起動します。他の操作も同じで、フォルダを開くときにも、サーバーの電源を落とす時にも、すべて文章で命令をします。これをコマンドと言います。

コマンドでの操作は、マウスでの操作に比べると、あまり直感的ではないと感じる人が多いため、取っつきにくいのは事実です。ただ、実際はcdcpなどの短いコマンドに続いて、対象のディレクトリ名(フォルダ名のこと)を打ち込むだけなので、知ってしまえばそんなに難しくありません。

例えば、ディレクトリ(フォルダ)を新規作成するコマンドは、mkdirです。make directoryの略なのですが、⁠nyanko」というディレクトリを新規作成するならmkdir nyankoと打つだけです。意外と簡単でしょう?

面倒ではあるのですが、面倒なだけだとも言えます。

また、サーバーの特性上、⁠Linuxでは一般に)CLIが望まれますが、最近ではマウスでグラフィカルに操作できるGUI(Graphical User Interface)を導入している現場もあります。その場合は、ある程度の操作をGUIで行えます。

図

ですから、そんなに不安がることはないのです。CLIでポチポチコマンドを入力して学んでも良いですし、まずはGUIで慣れてから、コマンドを覚えていくのも手です。

「覚えて」と書きましたが、暗記する必要だってありません。実際の本番サーバーで、すべてを暗記で操作するのは危険ですから、大概は手順のメモを見ながら操作します。求められるのは、暗記力ではなく、⁠適切な操作方法を書き出せること」と、⁠正確に操作できること」なのですから、しっかりと理解することが肝要です。

ディストリビューションと学習環境

そろそろ「よし、じゃあ、Linuxをちょっと勉強してみよう!」という気分になってきた頃ではないでしょうか。

最後に、学習方法についてまとめておきましょう。

まず、学習をしたい時に問題になるのは、以下の2点でしょう。

  1. ディストリビューションは何を選ぶのか
  2. 学習環境をどう用意するか

ディストリビューション(distribution)とは、簡単に言うと、Linuxの種類です。

ここまで簡単に「Linux」とだけ説明してきましたが、実はLinuxには種類が色々あります。

皆さんに馴染みがあるのは、Red Hat社(レッドハット社)が有償販売しているRed Hat Enterprise Linux(RHEL)と、Debian(デビアン)をもとにCanonical社(カノニカル社)が開発を主導するUbuntu(ウブントゥ)でしょう。どちらも開発の現場でよく使われています。

図

RHELとUbuntuは、どちらもLinuxではあるものの、思想が大きく違います。ただ、コマンドは、おおよそ同じなので、片方を理解できれば、もう一方も理解は早いです。

ディストリビューションは、どれが優れているという性質のものではなく、それぞれの得意不得意やプロジェクトの性質に応じて、選ぶべきものなので、最初の一歩にどのディストリビューションを選択するかは、⁠自社で使っているもの」「プロジェクトで使っているもの」を選ぶと良いでしょう。これからエンジニアになる駆け出しさんなどは、⁠周りに使っている人が居るもの」「情報を入手しやすいもの」を選ぶのも良策です。

Ubuntuは無償ですが、RHELは有償です。RHELを学びたい時は、互換OSのAlmaLinux(アルマリナックス)やRocky Linux(ロッキーリナックス)を選択すると良いでしょう[1]

学習環境は、何か古いWindowsパソコンを入手して、上書きとしてLinuxをインストールしてしまうのが速いですが、それはちょっと面倒だと思われる方もいらっしゃるでしょう。

その場合は、VirtualBox(バーチャルボックス)やVMware(ブイエムウェア)などの仮想化ソフトウェアを使用したり、WSL2(Windows用のLinux OS実行環境)を使うのも良いでしょう。また、Dockerなどのコンテナや、AWSなどのパブリッククラウド、VPSのレンタルサーバーを利用する方法もあります。

ただ、仮想化ソフトウェアやVPSのレンタルサーバー以外の方法は、実際のLinuxとは異なる部分も多いので、しっかり学習したいのであれば、中古パソコンか、仮想化ソフト、VPSのレンタルサーバーがおすすめです。

特に、Webサーバーの公開など、実際に通信もしてみたいのであれば、中古パソコンか仮想化ソフトで慣れてから、VPSを借りると、より実践的に学習できるでしょう。

気楽にLinuxをはじめよう

勉強というと、嫌になってしまったり、なかなか重い腰があがらないということになりがちです。特に、⁠仕事のために」と考えるとやる気もでないかもしれません。

しかし、実際にやってみると、そんなにツマラナイものではありません。特に、Linuxの学習は、単純なコマンドを入力するだけで、すぐにファイルが作れたり、フォルダ(ディレクトリ)が作れたりと、成果が目に見えるので、なかなか面白いのではないかと思います。

最初のうちは、よくわからないかもしれませんが、それでもいいじゃありませんか。

本番で使うとなると、セキュリティなど色々考えねばなりませんが、学習というのは、極めてパーソナルなものです。失敗しても、誰にも迷惑をかけるわけでもないですし、飽きたらちょっとお休みしたっていいのです。気楽にはじめて、ちょっと触ってみて、⁠なんとなくこんなものか」と感じるのも、立派な勉強です。

Linuxに興味がある人だけでなく、AWSやDockerの学習で躓いている人も、ちょっとはじめてみてください。きっと楽しいはずです。

図

おすすめ記事

記事・ニュース一覧