一生モノのLinuxスキルを身に付けよう!

プログラミング学習において、PythonかJavaかPHPか、などという多少の違いはあれど、ほとんどの方がいちばん最初に学ぶのは、プログラミング言語でしょう。そして、さらにプログラミング学習を進めていくと、プログラミング言語を知っているだけでは、ソフトウェア開発ができないことに気づくと思います。ソフトウェア開発において、プログラミング言語は身につけておくべきものの一つでしかなく、他にも身につけるべきスキルがいくつかあるのです。そのうちの代表格が、Linuxのスキルです。

Linuxは、OS(Operating System)の一つです。代表的なOSとしては、パソコンであればWindowsやmacOS、スマートフォンであればiOSやAndroidなどがあります。

なぜLinuxを学ぶ必要があるのか?

なぜLinuxを学ぶ必要があるのでしょうか? その理由は、主に次の3つです。

  • サーバーに使われていることが多いから
  • コマンドでの操作が必要だから
  • OSについて知ることができるから

サーバーに使われていることが多いから

家庭用のパソコンのOSとしては、ほとんどの場合、WindowsやmacOSが使われていますが、企業が持つサーバー用コンピュータのOSとしては、Linuxが圧倒的なトップシェアになっています。

プログラミング言語で開発したソフトウェアは、サーバーに配置することで初めて、ユーザーが利用できるようになります図1⁠。ソフトウェアエンジニアであれば、Linuxが搭載されているサーバーを日常的に操作することになりますから、Linuxについてもよく知っておく必要があります。Windowsのパソコンを活用するには、WindowsというOSについて知っていなければいけないのと同じで、Linuxのサーバーを運用するには、LinuxというOSについて知っておく必要があるのです。

図1 サーバーに配置することで、ユーザーがソフトウェアを利用できるようになる
図1

コマンドでの操作が必要だから

家庭用のパソコンは、マウスで操作するのが基本ですが、Linuxのサーバーは「コマンド」と呼ばれる文字列で操作するのが基本です。ファイルの新規作成はtouchコマンド、ファイルの削除はrmコマンド、という感じで、実現したい操作に対応したコマンドを入力することで、コンピュータの操作を行います。例えば、ファイルの新規作成であれば、

$ touch newfile

というコマンドを実行しますし、ファイルの削除であれば、

$ rm newfile

というコマンドを実行します。

そのため、Linuxのサーバーを操作する上では、Linuxのコマンドについてあらかじめ知っておく必要があります。これは、Windowsのパソコンを使うために、ドラッグ&ドロップなどのマウス操作を覚える必要があるのと同じです。また、コマンドによる操作は、自動化のしやすさや、再利用性に優れるなどのメリットから、macOSなどのLinuxの環境以外でも使用されることが多いため、Linux以外の環境での開発にも役立ちます。

OSについて知ることができるから

Linuxを学ぶと、OSについても知ることができます。OSは、コンピュータを動作させる土台です。スマホやパソコンなどのコンピュータでは、Google Chromeのようなブラウザアプリや、LINEのようなチャットアプリなど、様々なアプリケーションが動いていますが、これらのアプリケーションはすべて、OSを土台として動作しています図2⁠。

図2 OSはアプリケーションの土台
図2

ソフトウェアエンジニアの仕事は、アプリケーションを開発することですから、アプリケーションの土台となっているOSについて知っておいた方が、より良い仕事ができるのは間違いありません。Linuxについて学ぶことは、OSの機能について学ぶということでもあるのです。

Linux学習のポイント

このように、Linuxは重要度の高い知識なので、適切な学習でしっかりと身につける必要があります。では、どのようにLinuxを学べば良いのでしょうか?私は、Linuxの学習を効率的にすすめるには、次の3つのことが重要だと考えています。

  • コマンドの背景知識も学ぶ
  • Linuxの概念や思想を理解する
  • 長期記憶に残す

コマンドの背景知識も学ぶ

Linuxの学習というと、たくさんのコマンドの暗記を想像する方も多いかも知れません。ですが現代では、単純にコマンドの機能を知るだけなら、Google検索やChatGPTのようなAIを使うことで、簡単に調べることができます。ですので、本当に役に立つ知識にするためには、単なるコマンドの暗記にとどまらず、その背景知識まで深く理解することがとても重要です。

例えば、あるコマンドを学ぶ上では、いつ使えるのか?類似のコマンドとの使い分けは?使用上の注意点は?といった、⁠そもそも」の話をセットで理解する必要があります。こういった「そもそも」の話こそが、簡単にコマンドを検索できる現代においては重要です。

Linuxの概念や思想を理解する

Linuxの学習で知るべきことは、コマンドだけではありません。Linuxの学習において、本当に重要なのは、Linuxについて深く理解することで、ソフトウェア開発における重要概念を学ぶことができる、ということにあります。例えば、パーミッションについて学べば、フールプルーフという設計における重要概念を知ることができますし、標準入出力について学べば、コンポーネントの依存についての理解が深まり、変更しやすいソフトウェアを設計する上で役立つでしょう。また、Linuxカーネルについて学ぶことで、抽象化という、ソフトウェアにおける、極めて重要な概念についても学ぶことができます。

Linuxを学ぶことで、ソフトウェア開発の重要な概念を学ぶことができ、その結果エンジニアとして大きく成長できるのです。コマンドの暗記に終始してしまう学習が、いかにもったいないかがわかるでしょう。

長期記憶に残す

Linuxコマンドは「超高コスパ」の知識です。Linuxコマンドは、ソフトウェア開発を行う上で、ほぼ毎日使用するだけでなく、この業界では珍しく、一度学んでしまえばとても長い間使える知識です。ソフトウェア開発業界は、ドッグイヤー(dog year)と呼ばれるほど変化の激しい業界ですが、Linuxコマンドの中には、40年以上前から使われているコマンドもあります。このことからも、Linuxコマンドの知識の、とんでもない寿命の長さがわかるのではないでしょうか。

そして、毎日使う上に、今後も長く使える知識ならば、長期記憶に焼き付けてしまうのがおすすめです。数年後には、使えなくなる知識であれば、付け焼き刃の知識でも良いかも知れませんが、今後数十年役立つ知識ならば、しっかりと記憶に残して、一生モノのスキルにしてしまった方が良いでしょう。

Linuxは一生モノのスキルだから

繰り返しますが、Linuxは一生モノのスキルです。一生モノのスキルだからこそ、

「Linuxの知識を、長期記憶に焼き付けて忘れないようにする」

そんな本を作りたくて、⁠ゼロからわかる Linuxコマンド200本ノック―基礎知識と頻出コマンドを無理なく記憶に焼きつけよう!』という本を執筆しました。

本書では、覚えてしまったほうが効率がいい、実務における最頻出コマンドと、コマンド操作に関連する重要事項だけを集中的に学んでいきます。本書で紹介する厳選された内容を、しっかりと長期記憶に残すことで、Linux環境での生産性を高めることができるはずです。

そして、記憶に焼き付けて忘れないために、さまざまな工夫を凝らしました。

  1. コマンドやオプションの「由来」をできる限り解説
  2. 「暗記がいらなくなるレベル」の理解を目指した、とことん丁寧な解説
  3. 「200問」の演習問題で記憶にこびりつく

なお本書は、オンライン学習プラットフォームUdemyでベストセラーになった、私のLinuxの講座の内容をもとに、あらためて構成と執筆を行った書籍です。もとの講座の良さはそのままに、よりわかりやすく、身につけやすくなるように、内容の追加や解説の改善を行いました。

せっかく長く使える知識なら、なんとなく学んだだけの、付け焼刃の知識にしておくのではなく、長期記憶に焼き付けて一生モノのスキルを手に入れませんか?

ひらまつしょうたろう

教育活動をメインに行うソフトウェアエンジニア。京都大学農学部卒業。元塾講師のエンジニアとして,「本質・唯一・効率」をキーワードにプログラミング教育を行う。オンライン学習サービスUdemyの講座に「もう絶対に忘れないLinuxコマンド」などがあり,ベストセラー多数。
Blog https://hiramatsuu.com/
Twitter @hiramatsuu