プログラミング学習において、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 サーバーに配置することで、ユーザーがソフトウェアを利用できるようになる
コマンドでの操作が必要だから
家庭用のパソコンは、マウスで操作するのが基本ですが、Linuxのサーバーは「コマンド」と呼ばれる文字列で操作するのが基本です。ファイルの新規作成はtouch
コマンド、ファイルの削除はrm
コマンド、という感じで、実現したい操作に対応したコマンドを入力することで、コンピュータの操作を行います。例えば、ファイルの新規作成であれば、
$ touch newfile
というコマンドを実行しますし、ファイルの削除であれば、
$ rm newfile
というコマンドを実行します。
そのため、Linuxのサーバーを操作する上では、Linuxのコマンドについてあらかじめ知っておく必要があります。これは、Windowsのパソコンを使うために、ドラッグ&ドロップなどのマウス操作を覚える必要があるのと同じです。また、コマンドによる操作は、自動化のしやすさや、再利用性に優れるなどのメリットから、macOSなどのLinuxの環境以外でも使用されることが多いため、Linux以外の環境での開発にも役立ちます。
OSについて知ることができるから
Linuxを学ぶと、OSについても知ることができます。OSは、コンピュータを動作させる土台です。スマホやパソコンなどのコンピュータでは、Google Chromeのようなブラウザアプリや、LINEのようなチャットアプリなど、様々なアプリケーションが動いていますが、これらのアプリケーションはすべて、OSを土台として動作しています(図2 ) 。
図2 OSはアプリケーションの土台
ソフトウェアエンジニアの仕事は、アプリケーションを開発することですから、アプリケーションの土台となっている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環境での生産性を高めることができるはずです。
そして、記憶に焼き付けて忘れないために、さまざまな工夫を凝らしました。
コマンドやオプションの「由来」をできる限り解説
「暗記がいらなくなるレベル」の理解を目指した、とことん丁寧な解説
「200問」の演習問題で記憶にこびりつく
なお本書は、オンライン学習プラットフォームUdemyでベストセラーになった、私のLinuxの講座の内容をもとに、あらためて構成と執筆を行った書籍です。もとの講座の良さはそのままに、よりわかりやすく、身につけやすくなるように、内容の追加や解説の改善を行いました。
せっかく長く使える知識なら、なんとなく学んだだけの、付け焼刃の知識にしておくのではなく、長期記憶に焼き付けて一生モノのスキルを手に入れませんか?