プログラミング学習において,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
コマンド,という感じで,実現したい操作に対応したコマンドを入力することで,コンピュータの操作を行います。例えば,ファイルの新規作成であれば,
というコマンドを実行しますし,ファイルの削除であれば,
というコマンドを実行します。
そのため,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の講座の内容をもとに,あらためて構成と執筆を行った書籍です。もとの講座の良さはそのままに,よりわかりやすく,身につけやすくなるように,内容の追加や解説の改善を行いました。
せっかく長く使える知識なら,なんとなく学んだだけの,付け焼刃の知識にしておくのではなく,長期記憶に焼き付けて一生モノのスキルを手に入れませんか?