見出し画像

個人の経験を振り返って思う、なぜLinuxは敷居が高いと言われるのか?

こんにちは。すうちです。

今回は原点に立ち返り!?ひさびさ技術寄りの話(Linux関連)です。

--
※タイトル画像:stanさん


はじめに

Linuxとは

Linux(リナックス、他の読みは#「Linux」の読み方で後述)とは、狭義にはUnix系オペレーティングシステムカーネルであるLinuxカーネルを指し、広義にはそれをカーネルとして周辺を整備したシステム全体のことをいう(GNU/Linuxも参照)。

wikipediaから引用

毎日Linuxを触ってますか?の質問には、エンジニアでもない限り、ほとんどの方はNoと答えると思います(ちなみに、私も毎日は触っておりません…笑)。

ただ、毎日Linuxを使ってますか?の質問には、(その意識はなくても…)答えはYesの方も多いかもしれません。

というのも、Androidスマホの中核部分はLinuxが動いているからです。

Linuxは、WindowsやMacOSと並ぶOSのひとつで、アプリとハードウェアをつなぐメモリやデバイス管理をしたり、今では欠かせないネットワーク機能も備えているので、携帯電話など組込み機器でも広く使われています。


Linuxとのつながり…

はじめて仕事でLinuxに触れたのは、もう15年くらい前??当時携帯開発に関わっていて、ちょうどガラケーからスマホ(Android)への移行時期でした。

といっても、担当部分の知識のみだったので深く勉強しようと自宅の古いPCにLinux(Ubuntu)を入れたものの、実際さわってみると分からないことだらけで一度挫折しました。

しかし、ITの仕事を続ける中(私の場合は)Linuxの知識はいつも少なからず必要だったので、つながりは薄いながら保った状態でした。

今でこそ基本的なことはだいぶ分かるようになりましたが、知らないことも多く、私自身はLinuxエキスパートのレベルに全然達してません…汗

あのコマンドなんだっけ?とググることもあり、今も日々学んでいるのが現状です。。。

以降、Linuxを始めた頃や一度挫折した時に感じた個人の感想です。


なぜLinuxは敷居が高いと言われるのか?

黒いコマンド画面の威圧感

Linuxといえば、CUI(Character User Interface)でのコマンド操作が基本。GUI(Graphical User Interface)で設定や操作も用意されてますが、細かい設定はコマンド操作が欠かせないと思います。

最初の頃は画面を前にして「えっと、それで私に何をしろと…」と、その威圧感にふるえたことを思い出します。。。

たとえば、以下のコマンドがあります。

cd: ディレトリ移動
pwd:   今いるディレクトリ(パス)の表示
ls: ディレクトリ下のファイルなど一覧表示
cat: 指定したファイルの中身を表示
rm: ファイルやディレクトリの削除
cp: ファイルコピー
mv: ファイル移動、リネーム

実際は他にコマンドやオプション指定もあって、できることは無数にありますが、まずはこの辺を地道に覚えてやりたいことができるまでがハードル高かったです。

当時先輩がコマンドを連発して画面にテキストが表示されるのを目にして「先輩スゲー」と思った時もありましたが、いま思えば前述のcdコマンドtabキー単にディレクトリを移動してただけでした(分かってしまえばですけど…笑)。


独特のお作法、暗黙のルール

唐突ですが、ここでクイズです。

Q1:これらは何?
/ . ..  

スラッシュ、ドット、ドッドドットと答えた方。正解です。ただ、Linuxでは特別な意味があります。

/ ルートディレクトリ(一番上の階層)
. カレントディレクトリ
.. 親ディレクトリ

Linuxにログインすると、/(ルート)homeユーザディレクトリがカレントディレクトリになり、/にはOSの設定に関わるディレクトリが配置されています。

たとえば、cd /cd ..と打つとルート一つ上の階層へ移動できます。


Q2:以下の違いは? 
/directory1/directory2
./directory1/directory2

勘が鋭い方には説明不要と思いますが、前者はルートにあるディレクトリ。後者は現在位置にあるディレクトリを指します。

イメージを書くと以下です。

/(ルート)
├─directory1
│ └─directory2

└─home
 └─note_user ★今いるディレクトリ
   └─directory1
    └─directory2

最初この辺をちゃんと理解しておらず指定したフォルダに移動できないとか、実行したはずのファイルがないと言われて(単なる指定ミス)、パニックになったことを思い出します…汗

この辺は、当たり前すぎて誰も教えてくれなかったり、本にも常識として書いてなかったように思います。


環境依存の問題(デバッグの難易度)

問題発生すると当時もネットで検索してましたが、Linuxはオープンソースで自由にカスタマイズできるので、環境依存の問題も多い気がします。

仮に見える現象は同じでも原因は別だったりするので、検索でヒットした解決策が必ずしも正解にあてはまらないのです。

最初の頃はその辺の見極めができないまま解決策を試して別の問題が発生したり、やりたいことができす苦労しました。

この辺はある程度知識がたまると選別できたりしますが、特に初心者には難易度が高く思えます。

あと基本中の基本としてLinuxはアクセス権が明確で、ルートユーザと一般ユーザはできることが違います。たとえばネットの情報で、

[username@hostname ~]$ 
[root@hostname ~]#

上記があいまいに書かれてて(当時私が読み落として)沼にはまったことも結構ありました。


OSの進化とレガシーの混在

主にLinuxはUbuntu(様々な機能やソフトウェアを固めた配布物)を使ってますが、最近はOSのバージョンアップや進化も激しく感じます。

Ubuntu18.04は既にサポート終了。現在は20.0422.04がリリースされています。

サポートが終了するとセキュリティ対策やバグ修正もされなくなるので、バージョンアップが必要ですが、それにより新しい追加機能や逆にサポート外(非推奨)となる機能もあったりします。

サポート外でも一応使えるので、そうなると新旧の機能(設定)が混在することになります。ただ(クラウドでない)企業のローカルサーバは開発事情ですぐ新しい機能に移行できない場合もあります。

細かい話では、今はsnapというパッケージ管理もあったり。ネットワークはnetplanになってますが、設定を移行するか個人的に悩む時もあります(使っている機能や設定が混在すると問題が複雑になるので基本は移行すべき…)。


最後に

今回書いた経緯ですが、最近時間に追われ技術を深く勉強することが減り、noteもインプットしたことのアウトプットより、いま書けることを投稿してました。

noteは本やIT技術など勉強したことを投稿されたり、自分の創作作品を定期的に投稿されている方も見かけます。

その裏の見えない所では投稿以外にかけた時間も多くあるはずで、私の場合「最近深く勉強とか時間をかけてやることができてないな…」と気づきました。

加えて、Linuxで知識不足を実感することもあって再び基本から勉強しなおそうと思い(これまでの自戒の念もこめて?)投稿してみました。

これからLinuxを学ぼうとされている方など、何か少しでも参考になれば幸いです。

最後まで読んで頂き、ありがとうございました。

いいなと思ったら応援しよう!