なぜLinuxがエンジニアから好かれるのか?現役エンジニアが個人的感覚で語ってみる

linux_tux_picture Linux

皆さんのPCはなんのOSで動いていますか?

OSの好みは人それぞれなので、一概にどれがベストとは言い切れないですし、用途に応じて適材適所に使っている、という人もいると思います。大抵の人は最初に手にするPCのOSにWindowsが載っているので、使い慣れたWindowsが一番好きだという方も多いでしょう。Apple製品が好きな人はMac(OS X)が好きだという方が多いでしょう。

しかし、私ころころてっくは、Linuxが好きです。

一応私のことを説明しておくと、本業は組み込みのプログラマで、趣味の時間にも組み込み、Web、Android等のプログラミングを愛するエンジニアです。Linuxが好きで、普段使いのノートパソコンはUbuntuが単独インストールしており、仮想マシン・WSL含めると自宅のPC4台には全てLinuxがインストールされております。

もう一回言っちゃおう。Linuxが好きだ。

この記事は、エンジニアかその周辺の職業に就いている人で、Linux OSに関心があるけど、何が良いのかよく分からない、という人を対象に、私がLinuxを好きな理由を説明します。

巷でよく言われる「Linuxのメリット」は何か足りない

ネットで「Linux メリット」などで検索すると、こんな感じの情報がヒットしてきます

  • 無料で使える
  • 軽快に動作する
  • カスタマイズが自由

これらは正しい情報です。正しいんですが、何というか、少し足りない。本質を外してはいないんだけど、捉えきってもいないというか。少なくとも個人使用のPCに載せるOSのメリットとしてはそう感じます。

無料で使える?

まず、無料で使えるという点。

確かにLinuxはOS自体無料ですけど、市場に出回ってるPCって99%は初期状態でWindowsかMacが載ってて、OSが空の状態で売られているPCってほとんど見たことないです。だから、Linux PCを手に入れたいと思っても、WindowsかMacが載ったPCを一度購入して、そこにLinuxを載せ替える作業が必要になります。結局一回WindowsかMacを買わないと行けないんだから、LinuxのOSが無料でも実際OSに支払う金はタダにはならないという事実があるわけです。と言うか、OS載せ替えの手間をコストと見るなら、むしろWindowsやMacより割高とも言えますよ。

動作が軽い?

次に、軽快に動作すると言う点。

巷でLinuxが軽快に動作すると書かれている時の文脈って、Windowsとの比較があると思うんですが、この点においては端的に言ってWindowsが自爆してるだけだと思うんですよね。別にLinuxが特段高速に動作するようになっているわけじゃない。

Windows10のシステム要件がこんな感じです。

CPUメモリストレージ
1GHz以上2GB以上32GB以上の空き
Windows10のシステム要件(抜粋)

しかしWindows10をこのスペックのマシンで動かすと、これで要件通りとか言ってんの詐欺じゃん?ってレベルでもっさり感を堪能できます。Windowsって、10にアップグレードされて以降、求めるマシンスペックの上昇が年々キツくなっていると感じます。2020年現在、メモリ4コア・8GB・SSD 256GBくらいが、実質ストレスなく使用できる最低スペックになってるんじゃないかなと。

実際2017年くらいに、CPU 2コア、メモリ8GBのマシンを暫く開発用に使ってたんですが、裏で勝手に動くサービス(Windows標準のウィルス検査系のやつとか、ファイル新規作成時に勝手に検索用インデックス貼るやつとか)が活発に動き出すと、使っているソフトの動作が軒並み耳の遠いおじいちゃんみたいになってました。

「ほ…?…ん?なんじゃ…?おーーーう、上書き保存かのう…ちょっとそこに座って待っておれ…」

少し前まで開発用の屈強な戦士だったのに…。(多分)不要なサービスが裏で勝手に沢山起動しているんだけど、何が何の役割を果たしているかあんまり情報が無いので迂闊に無効化出来ない。あとコルタナみたいに明確に使わないって分かるやつも、非表示にするのは簡単だけど、無効化、あるいは削除するのは結構面倒っていうパターンもあります。

この点Linuxでも見慣れないサービスが裏で沢山動いているんですけど、デフォルトで入ってるサービスが動き出すと何か突然動作が遅くなる!みたいな症状を感じたことはない。というか、Linuxに限らず、MacやAndroid、iOSとかも含めて、それが普通だと思うんだけどな…

というわけで、Linuxの動作が軽快というのはあくまでWindowsの比較という側面が強いです。Windowsだって元々はメモリ2GBのマシンでも問題なく動いていた時代はあった訳で、それを阻害する要因(一つじゃないと思う)がなければ、まあまあ動いてくれると思うんですよね。なので動作速度に関しては、単にWindowsの減点がでかすぎるだけです。

OSのカスタマイズって、そんなに需要あるの?

最後に、Linuxのメリットとしてよく上がるのは、カスタマイズが簡単という点です。

私はエンジニアなので、こんな事言うの気が引けるんですが…PCのカスタマイズってそんなにしたい人いるんでしょうか?

いや、知ってますよ。私は開発者なので、この界隈にはそういう作業に異常な執念を持つ方々がおられることは。ただ、開発者の中でも、そういう人って多数派では無い気がするんですけどね。カスタマイズってなんなんでしょう。ターミナルにお気に入りのエイリアスを登録するとか、デスクトップやターミナルの見た目を変えるとか、はたまたLinuxディストリビューションを自作するとかでしょうか?

カスタマイズっていうのは、既存の機能を自分の好みに合わせて調整する、って意味だと思うんですけど、例えば自作でツールを作って面倒な作業を自動化するなんていうのは、カスタマイズの意味合いからは少し外れますよね。あるいは、ワープロソフトが必要だと思って、オフィスソフトをインストールするのも、明らかに調整の域を超えてるので、カスタマイズではないですよね。

そういう意味では、私はOSカスタマイズってほぼやりません。与えられている環境で大体満足出来るか、満足出来なかったらソフトを追加インストールするので、OSの機能を調整するまでには至らない事が殆どだからです(もちろん追加でインストールしたソフトの設定調整は頻繁にやります)。自分の周りでも、ディープにやってる人はあまり見たことないです。

(※組み込み機器にインストールする時の機能最適化の調整とかは別の話で、あくまでPCの話です)

それでもLinuxが好き

ここまで言うと、アンチLinuxの人間のように思われそうなんですけど、そんなことはないです!私がLinuxを好きなのは、次のような理由があるからです。

開発環境を手軽に整備できる

LinuxとWindowsの大きな差の一つに、Linuxではapt, yumといったパッケージ管理ツールが使用出来ることがあります。パッケージ管理ツールは手軽に開発環境を構築する強力なツールです。一度使い出すと、もうWindowsには戻れないような魅力があります。

例えば、コマンドプロンプト又はターミナル操作中、Pythonのスクリプトを実行しようとして、「あ、Pythonインストールされてない」と気がついた時に、Windowsであれば次のような手順を踏むと思うんです。

  1. ブラウザを起動する
  2. Pythonの公式Homepageに行く
  3. Python3のインストーラをダウンロードする
  4. ダウンロードフォルダへ移動する
  5. インストーラを実行
  6. インストール設定を(普通は)とりあえずデフォルトでOKカチカチ押す

その他、ソフトによっては、ダウンロード後解凍することが必要だったり、実行ファイルにPathを通す事が必要だったりすることもあります。あと、地味に公式Homepageが見つかりにくくて、フィッシング詐欺とか、広告用の偽の「ダウンロード」ボタンに気をつけながらダウンロードする必要があるとか、そういう違う意味での面倒なこともあります。概して、ソフトのダウンロード・インストールに関して、Windowsは放任すぎるのです。

これが、Linuxであれば次のコマンド一つで環境が整います。

  1. sudo apt install -y python3

開発中ではターミナルでの作業が結構なウェイトを占めますが、コマンド一つで環境を追加変更が出来るので、作業を中断されることがなく流れるような円滑さで開発を続けられます。

更に、コマンド一つで環境が整うことから、環境整備用のコマンドを複数書き連ねて一つのShell Scriptにしておき、それを一気に実行するということも出来ます。例えばPythonの他にRubyのインストール用コマンドも記載するなど。複数人で作業する時に同じ環境を構築する為、Shell Scriptを共有しておけば、環境構築作業が自動化できます。Windowsで同じ事をやろうと思ったら非常に難しいです。

コンピュータで何かを作りたい、クリエイティブな作業をしたい、コンピュータを勉強したい、と思った時に、環境をさっと作り出せるLinuxはとても頼もしい味方です。

安いPCをとことん使い潰せる

上の「動作が軽い?」の所で書いた通り、Windowsの自滅によって低スペックPCではLinux一択という選択肢になっているので、安いPCを買ってLinuxを入れてとことん使い潰すという事ができます。

私は通勤中電車のイスに座れたら時等に作業をしていますが、こういう使い方をすると、毎日持ち運ぶ関係上、機器へのダメージが蓄積されていき、PCの寿命が早まります。私は中古で買った1.5万円くらいのLet’s noteを使用しているので、最悪故障しても1年くらい動いてくれたら元は取れます。また、Linuxを載せて動かしているので、こんな価格帯のPCでも快適に動いています。これが、Windowsでも同じくらい軽快に動くスペックのPCとなると中古でも2倍〜4倍くらいはします。そうなると、故障時のダメージも大きく、あんまり外にガンガン持ち出そうという気がしなくなり、結局スキマ時間の活用ができなくなってしまいます。

PCをガンガン外に持ち出して使っていると、時々ファイルシステムの不整合とか、ソフト的な意味での故障で修復不能になったりすることがあります。そういう場合は、OSを再インストールするとLinuxでもWindowsでも直せる訳ですが、Linuxの場合は、再インストールする時に今使っているのとは違うディストリビューションを試してみる、などという転んでもタダでは起きない再起方法があるのもいい所です。

ちなみにLinuxのいい所はMacのいい所ともかぶる所がありますが、安いマシンを使い潰せるというメリットはMacにはないです。Macは中古であろうと値段が高いので、故障した時の心理的ダメージが大きいからです。

ターミナル(CUI)の入出力IFとしての汎用性

たまにLinuxターミナルの黒い画面が嫌いな人がいます。でも、私はあれが好きなんです。

ターミナルって、本当に汎用的です。ディレクトリ構成表示やファイル検索、ファイル内検索にも使えるし、プログラムの途中経過を表示することもできるし、データベースの中身を余さず表示することもできます。改造するとJPG画像を表示したり、Webブラウザとして使ったりすることもできます。

ターミナル(CUI)と対比されるのは、グラフィカルなアプリケーション(GUI)です。WindowsはGUIをOSの中心に据えることで大衆からの大きな支持を得ましたが、その反面CUI(Windowsではコマンドプロンプト)の強化を怠ってきました。何年経っても、何度ソフトアップデートがあってもコマンドプロンプトは一向に使いやすくならないし、その後継であるPowerShellもいまいちパッとしない使い心地です。そもそも、デフォルトで使用できるコマンドの数がLinuxに比べて圧倒的に少ない。Microsoft的には、WindowsはGUIで操作するもの、という前提でやっているからそれでいいのでしょう。

CUIインターフェースが汎用的であることの恩恵として、一つのコマンドの使用法を習熟すると、別のコマンドの使用においてもある程度勘と経験が効くようになるという事があります。分かりやすい例で言うと、コマンドを実行した時に補助的な情報を表示する–helpというオプションがあります。以下のように使います。

[crayon-6148ecece59df242792673/]

この–helpというオプションは大体どのコマンドでも使用できて、わざわざネットで情報を探さなくてもコマンド使用法を知りたい時に使用できます。

また、データベースのソフトとしてMySQLやPostgreSQL、SQLite3等がありますが、CUIで使用する限りそれらの違いをそれほど意識する必要はありません。多少各ソフトに方言はありますが、基本的に同じようなSQL文を入力することでやりたいことが実現できます。他方データベース操作用のGUIであるphpMyAdminや、SQLitemanなどというソフトがありますが、これらの使用感はCUI版の非にならないくらい異なります。

CUI経由でコンピュータに奥行きを感じられる

最後に少し抽象的な話をすると、GUIって、あえて漫画と小説に例えると、漫画寄りの存在だと思うんです。もう一方のCUIは小説寄りな存在です。漫画は絵がある分とっかかりやすいし、わかりやすい。一方、小説は文字しか無いんだけど、その分人間の想像力を掻き立てて、世界の奥行きや広がりを認識できるんです。

GUIを見て操作している時、自分の前にいるのはそのグラフィカルなWindow、そのソフトが全て、そのソフトありき、という感覚になります。例えばphpMyAdminを見て操作している時、私が操作しているのはphpMyAdminの画面の特定のボタン、画面ごしの特定テーブル。このボタンを押すとこのソフトの先で何かが起こるかもしれないが、それは壁一枚隔てた向こう側の世界の話なんだ、という感覚になります。しかし、ターミナルからMySQLのCUIクライアントを起動してデータベースを操作している時、自分の目の前には、データそのものがあり、このデータを煮るも焼くも私の自由、私の責任でこのデータたちを導いてやらねば…という感覚を覚えます。それは結局、文字のみを媒介にしてコンピュータを操作する事で、その文字の行間、入力から出力の間に、OSが何かをしている、それを自分の手で操っているというリアルな質感を得られる為です。少し大げさに書きましたが、コンピュータやソフトウェアの奥行きや広がりを感じるというのはそういうことです。

CUIを通じてOSを自在に手懐ける感覚を身につけられる。それにより、コンピュータそのものに対する抽象的な理解と親和感を得られる、これはLinuxならではのメリットだと思います。

コメント

タイトルとURLをコピーしました