【なぜ?】開発者がLinuxを使うべき理由10選

校長
校長
Cover Image for 【なぜ?】開発者がLinuxを使うべき理由10選

はじめに

どうも、私立YouTube高専校長です。

あなたは、プログラムを開発するときに、環境構築に悩まされた経験はないでしょうか。 現在は、様々な便利な開発ツールが無料で公開されており、うまく使いこなすことが出来れば、劇的に生産性や学習効率を向上させる事が出来ます。

しかし、いざ何かの開発を始めようと思っても、環境構築する時点で、戸惑ってしまうと、それ自体はあまり楽しい作業ではないので、モチベーションが大きく低下してしまいます。

しかし実は、開発環境の構築のしやすさは、使うOSに、大きく依存します。またOSが変わると、環境構築のしやすさだけでなく、使える開発ツールや自由度や利便性など、あらゆる面で違いがでてきます。

したがって、どのOSで開発するかというのは、あなたがいかにストレスなく開発に集中できるかということに大きな影響を与えます。このような、いかにストレスなく開発に集中できるかという考えかたは、開発者体験(Developler Experience)と呼ばれており、これを向上させることは、ストレスの軽減や生産性を改善する上で、非常に重要な観点になります。

しかし、プログラミング初心者は特に、このことに気が付きにくいので、実際には、たまたま手元にあるマシンのOSによって、使うOSを決めている人も多いです。

そこで本日は、これまでに私が実際に、Windows、macOS、Linux(具体的に言うと、UbuntuとCentOS)で開発してきた経験から、開発者がLinuxを使うべき理由10選をご紹介したいと思います。

これからあなたが何を開発するにしても、Linuxに早いうちから慣れておくに越したことはありません。 よっぽどの、技術革新か大災害かによって、Linuxの開発者コミュニティが崩壊でもしない限り、数十年単位で、Linuxが他の何かに置き換わることはないでしょう。 もし、今プログラミングを勉強中で、まだ、Linuxをあまり触ったことがなかったら、是非この動画を見て、一度Linuxを使ってみてください。二度と、他のOSには戻れなくなるでしょう。

また今回ご紹介する情報以外にも、こういった有益なコンピュータ関連の技術情報を発信しているので、 そういった動画を見逃したくない方は、今のうちにチャンネル登録しておいて貰えればと思います。

それでは、本編どうぞ

Linuxを使うべき理由10選

まずは、本日ご紹介する開発者がLinuxを使うべき理由10選をざっとご紹介します。 1つめが~~

標題だけでは分からないと思うので、背景を交えながら、それぞれ解説していきたいと思います。

1. OSSである

それでは、まず第一の理由は、Linuxがオープンソースソフトウェアであるという点です。 Linuxは、ソースコードが完全に公開されています。これにより、誰でも自由にコードを閲覧、修正することができます。 その利点は次の通りです。

  1. 価格: まず、商用利用においても無料で使用可能であるということ。開発者はコストを気にせずに、何台でもLinuxを使用することができます。WindowsやmacOSを使うときも、購入時はあまり意識しませんが、マシンの料金に、OSの料金が含まれています。ちなみに、今のあなたのマシンが、Linuxでないとしても、十中八九そのマシンにもLinuxをインストールして使用することが出来ます。少し難しいですが、デュアルブートも可能です。

  2. 透明性: 次に透明性です。Linuxはオープンソースのため、システムの動作原理やセキュリティに関する情報が公になっています。これにより、開発者はシステムの信頼性や安全性を検証することができます。一方で、WindowsやmacOSは、詳細な仕様についてはブラックボックスとなっているので、何か問題があったときや、何かを検証する必要があるときに、詳細な調査は不可能です。

このように、オープンソースであるため、無料で利用でき、透明性も担保されているという点から、Linuxは開発者にとって魅力的な選択肢になります。 この魅力は、一民間企業が主体となって開発している​WindowsやmacOSでは絶対に真似できない、大きな利点になります。​

また、オープンソースであることにより、さらなる副次的な利点があります。 続いて、それらの副次的な利点について、詳しく述べていきたいと思います。

2. 開発者コミュニティが活発

第二の理由は、Linuxは世界中の開発者や利用者から支持を受けており、コミュニティが活発であるという点です。 世の中には、様々なオープンソースがありますが、これほどコミュニティが活発で、継続的にメンテナンスされているオープンソースは非常に稀です。 その利点は次の通りです。

  1. 継続的なアップデート: まずは、継続的なアップデートです。コミュニティのメンバーは、新機能や改善点を提案し、実装することができます。これにより、Linuxは継続的に進化し、ユーザーのニーズに応えられるOSとなっています。また、Linuxのアップデートやセキュリティパッチはコミュニティによって継続的に提供されています。

  2. コミュニティからのサポート: 次に、コミュニティからのサポートです。あなたがもし環境構築時に、問題や不具合に遭遇したとすると、ログメッセージを検索すれば、高確率で同じような不具合に遭遇した人の対処法を見つけることができます。また、見つからなかったとしても、Stak Overflowのような質問サイトで、経験豊富な他のユーザーや開発者からアドバイスを受けることができます。このことで、問題解決が迅速かつ効率的に行うことが出来ます。

  3. 学習リソース: また、チュートリアル、ドキュメント、サンプルコード、書籍など、学習に役立つリソースが豊富に揃っています。これにより、開発者はLinuxや関連技術の学習をスムーズに進めることができます。

  4. 迅速な脆弱性対応: さらに、コミュニティが活発なので、セキュリティ上の問題が発見された際に迅速な対応が期待できます。Linuxのコミュニティの中には、セキュリティや半導体の専門的な知識を持ったエンジニアも多数参加しており、強固なセキュリティが保たれます。Linuxは世界中のスーパーエンジニアが貢献しているオープンソースで、そのセキュリティは世界最高水準と言えます。

このように、コミュニティが活発であることで、開発者は問題解決や学習、新機能の提案やセキュリティ向上に関して恩恵を受けることができるという点からも、Linuxは開発者にとって魅力的な選択肢になります。 もう一つオープンソースであることによる、副次的な利点があるので、それについてご紹介します。

3. カスタマイズ性が高い

第三の理由は、Linuxはカスタマイズ性が高く、自分の好みに合わせて理想の環境を構築できるという点です。 Linuxはオープンソースであるため、自由にカスタマイズするためのサードパーティ製のアプリも多岐にわたります。 いくつかその例を上げたいと思います。

  1. ディストリビューション: まずは、ディストリビューションです。Linuxは正確には、OSというよりも、OSの一部であるカーネルの名前であり、Linux単体では、システムとして成立しません。 したがって、Linuxを使うためには、必要なミドルウェアやアプリケーションがワンパッケージになったものをインストールして、使用します。それが、ディストリビューションと呼ばれるものです。 世の中には、様々なディストリビューションが存在し、それぞれが独自の特徴や目的を持っています。一般的には、開発では、Ubuntuを使用している方が最も多いように見受けられます。私は、デスクトップではUbuntu、ラズパイでは、Raspberry Pi OSを使用しています。いずれも、Debian系なので、非常に似ています。サーバーで良く使用される、RedHat系のディストリビューションとは、使用するコマンドが少し違ったりします。その辺は、自分の要求や好みに合わせて好きなディストリビューションを選ぶことができます。

  2. デスクトップ環境: また、デスクトップ環境はそれぞれのディストリビューションに依存して、変わります。好みがあれば、自分で変えることも出来ます。例えば、GNOMEやKDE、XFCEなどの様々なデスクトップ環境が選択できます。また、ウィンドウマネージャも多様で、例えば、i3やOpenbox、Awesomeなどがあります。これらの選択肢により、ユーザーは自分に合ったデスクトップ環境やウィンドウマネージャをカスタマイズできます。個人的には、あまりデスクトップ環境にこだわりがないので、そのまま使っています。もし、利便性の高い、素晴らしいデスクトップ環境があれば、是非コメントで教えてください。

  3. システム設定: Linuxでは、システムの設定を柔軟に変更することができます。これにより、システムのパフォーマンスやセキュリティ、省電力設定などを最適化できます。WindowsやmacOSに比べて、設定の自由度が高く、より細やかな設定が可能です。ただし、設定によっては、システムのパフォーマンスが落ちる可能性もあるので、意味を理解したうえで、設定をする事を推奨します。特に、root権限が必要な設定は、慎重に行ってください。

  4. カーネルのカスタマイズ: Linuxカーネルはオープンソースであり、そのソースコードが公開されています。したがって、開発者はカーネルのソースコードを変更して、自分でビルドすれば、特定のハードウェアやアプリケーションに最適化させたり、新しい機能を追加したりすることができます。実際に、ドライバーをいじって、ハードウェアの制限を超えた使用をする人もいます。学習目的には良いですが、カーネルを変更すると、最悪マシンが文鎮化するので、変更するときは、十分にお気を付けください。

このように、高いカスタマイズ性を持っており、自分の好みに合わせて理想の環境を構築できるという点からも、Linuxは開発者にとって魅力的な選択肢になります。

ここまでにご紹介した、3つの理由、オープンソースであること、活発な開発者コミュニティ、高いカスタマイズ性は、開発者がLinuxを使用する、非常に大きな理由となります。 Linuxにはまだまだ、開発者にとって魅力的な要素があるので、そちらもご紹介したいと思います。是非、続きもご覧ください。

4. 開発環境の構築が容易

第四の理由は、Linuxは開発環境の構築が容易であるという点です。 Linuxでは、多くの開発ツール、(エディタ、統合開発環境、コンパイラ、インタプリタ、デバッガ、バージョン管理ツール、ビルドツール、テストフレームワーク)が使用できます。

さらにこれらは、ディストリビューションに付属のパッケージ管理ソフト(Debian系だとapt、RedHat系だとyum)を使用することで、コマンド1つで容易にインストールできます。しかも、ある程度動作保証のあるソフトウェアをインストールしてくれるので、大概すぐに動かせます。さらに、パッケージ同士の依存性も解決して、依存パッケージも自動でインストールしてくれます。しかし、残念ながら、それでも、環境の違いによって、すぐに動かない時もあります。その時は、先ほどお話ししましたように、コミュニティの力を借りれば、容易に解決できる事が多いです。

また、オープンソースの開発ツールは、Linuxで動かすことが前提となっていることが少なくないです。そういった場合、Linuxで動いている開発ツールが、WindowsやmacOSでも動くとは限りません。

そのうえ、Windowsの場合は、個別にホームページからインストーラーをダウンロードしてマウスでポチポチして、インストールする必要があるので、数が多くなると、特に面倒です。 また、ブラックボックスが多いので、うまく動かなかった場合の解決が困難な時もあります。

このように、トラブルが解決しやすく、環境構築が容易にできるという点からも、Linuxは開発者にとって魅力的な選択肢になります。

5. Dockerが自由に使える

第五の理由は、LinuxはDockerが自由に使えるという点です。今や、開発環境を構築するときに、コンテナを使わない理由は、ほとんどないと思われます。

まずは、コンテナを利用することによるメリットをご紹介したいと思います。 コンテナを使用すると、プロジェクトごとに開発環境を隔離して、作ることが出来ます。 これがどういう利点があるかと言うと、例えば、あなたのあるプロジェクトでは、Python3.8を使っているとします。一方、他のプロジェクトでは、Python3.7を使っているとします。そのような場合、pyenvのようなパッケージを使って、Pythonのバージョンを切り替えることも可能ですが、管理が複雑になります。間違える可能性もあります。

しかし、Dockerのようなコンテナ技術を使うと、このような開発環境をファイルシステムレベルで分離して管理する事が出来るので、絶対に混同することがなくなります。また、複数人でマシンを共用している場合には、他のユーザーに影響を与える可能性もなくなります。

さらに、Dockerで作った開発環境は、Dockerfileなり、イメージを共有すれば、何度でも同じ環境を簡単に再現できるので、OSをアップデートした場合や、マシンを買い替えた場合や、他のマシンでも開発したい場合に、環境構築にかかる時間を大幅に短縮することが出来ます。

そして、Linuxはコンテナ技術との親和性が高く、開発環境の構築や管理が効率的に行えます。

Windows上の、Windows Subsystem for Linuxでも、Dockerを使用できますが、Docker Desktopの使用が推奨されており、これは、250名以上の企業では有料ライセンスとなります。また、友人やネットの評判によると、WSLだと、DockerがLinuxと同じDockerfileではうまくいかず、情報も不足しているので、少々苦戦するようです。

このように、Dockerをなんの気兼ねもなく自由に使えるという点からも、Linuxは開発者にとって魅力的な選択肢になります。

6. 常駐サーバーとして使える

第六の理由は、LinxuはPCとしてだけでなく、サーバーを立てて、電源をつけっぱなしにすれば、常駐サーバーとしても使えるという点です。 Linuxは非常に安定したOSであり、長期間稼働させることができます。これは、常駐サーバーにおいて重要な要素であり、ダウンタイムや再起動が最小限に抑えられます。私が5年程前に購入した、MacBook Proは、たまに再起動しないと、めちゃくちゃ熱くなってしまうので、再起動せざるを得ない時があります。

プログラミング初心者の方は、サーバーなんて立てて、何に使うんだと思われるかもしれませんが、例えば、次のような使用例が考えられます。

まず1つ目が、SSHサーバーです。これを使うと、手元のマシン(OSは問わない)から、Linuxマシンのシェルにアクセスできるようになります。そうすると、複数人で一つのマシンを共用できるようになったり、手元ではWindowsやmacOSを使っていても、sshでアクセスして、Linuxで開発するというようなことが可能になります。また、セキュリティに気を払う必要がありますが、外出先からアクセスすることも可能になります。

次が、VNCサーバーです。sshだけだと、デスクトップ環境が使えないので、不便な時があります。そういった場合は、VNCサーバーを立てておくと、ネット経由で、デスクトップ環境にアクセスできるようになります。ネット経由なので、HDMIケーブルのような、邪魔な有線ケーブルを接続する必要もありません。この場合も、セキュリティに気を払う必要がありますが、外出先からアクセスすることも可能になります。

他にも、GitHubやGitLabを使用する代わりに、LinuxマシンにGitサーバーを立てて、リモートレポジトリとして、使用する事も可能です。こうすると、ソースコードが社内から出ないので、セキュリティリスクを減らすことが出来ます。また、通信がLAN内で解決するので、インターネット経由のGitHubやGitLabに比べて高速です。GitLabが、Dockerイメージを公式で配布しているので、意外に簡単にできます。

また、Webサーバーを立てれば、社内のみからアクセスできるホームページやwikiを立てる事も可能です。

NASサーバーを立てれば、ネットワーク内でのファイル共有も可能です。 ネットワーク経由でアクセスできるので、PCだけでなく、スマフォやタブレットからもアクセスできるようになります。 どれも、実際に私が行っているもので、開発の生産性や組織の生産性をぐっと引き上げます。

そして、Linuxマシンを常駐サーバーとして使うことによる、無視できない副次的な利点は、このような使い方をすると、Linuxサーバーの運用をついでに勉強できるという点があります。

このように、LinuxマシンをPCとしてだけではなく常駐サーバーとしても使えるという点からも、Linuxは開発者にとって魅力的な選択肢になります。

7. 強力なCLI(シェル)

第七の理由は、Linxuは、CLI(シェル)が極めて強力という点です。

デスクトップPCは、日常生活で使う時には、通常マウスを使って、GUIで操作するものですが、開発者が使うようなツールを使うときや、込み入った設定をしたい場合は、GUIが提供されていない場合が多いです。 一方で、LinuxのCLIであるシェルを使うと、操作しているユーザーに権限があることなら、大概なんでもできます。

macOSはBSD系OSのDarwinというOSをベースに開発されているため、Linuxではないもののシェルは使えるので、使い物になるのですが、Windowsのコマンドプロンプトは、見た目は似ていますが、開発用途ではまったく使い物にならないといってよいでしょう。

したがって、Windowsでシェルが使いたくなった時は、cygwinや仮想環境やWSLを使うことになります。cygwinや仮想環境は遅すぎるので、個人的にはWSLが好みですが、ネイティブLinuxほどの、安定性はありません。

このように、シェルをなんの気兼ねもなく使えるという点からも、Linuxは開発者にとって魅力的な選択肢になります。

8. 本番環境がLinux

第八の理由は、開発対象にも依存しますが、Web開発においては、本番環境がLinuxであることが多いという点です。

Windows、macOS、Linuxは、遠目で見れば、似ていますが、中身は全く別の物です。一方で動くソフトが、他方で動くとは限りません。特に、下回りのプログラムの場合、OSが違えば、まったく互換性がないこともありえます。 したがって、本番環境がLinuxの場合は、開発の時点でLinuxを使用することにより、デプロイ時のトラブルを減らせます。

開発対象にも依存しますが、このように本番環境を見越してデプロイが容易になるという点からも、Linuxは開発者にとって魅力的な選択肢になります。

9. 作業の自動化が容易

第九の理由は、Linuxは作業を自動化するための、開発ツールやデバッグツールを作りやすいという点です。 Linuxはシェルスクリプトやcronなどの作業自動化ツールが充実しており、定期的なタスクやバッチ処理が容易に実行できます。

例えば、ソフトウェア開発をしていると、時々、何か同じ作業を繰り返していて、自動化できるような作業に遭遇するも気がありま。 そんな時は、その処理を、スクリプトにしてしまえば、以降は、そのスクリプトを実行するだけで、自動で処理できます。

例えば、定期的にストレージのバックアップだったり、一時ファイルの削除だったりを行いたい場合は、cronというソフトウェアを使用することで、自動的にスクリプトを走らせることができます。

この様に、自分で開発ツールやデバッグツールを作りやすいという点からも、Linuxは開発者にとって魅力的な選択肢になります。

10. ハードウェアの拡張性

最後の理由は、Linuxは、ドライバが充実しており、様々なハードウェアに対応しているという点です。 したがって、例えば最新のGPUを使用したかったり、スペックを上げるために、ストレージを増設したり、メモリを増設したりが容易にできます。 Windowsはともかく、macOSというか、Apple製品はハードウェアの拡張性が極端に低いです。

この様に、ハードウェアの拡張性が富んでいるという点からも、Linuxは開発者にとって魅力的な選択肢になります。

まとめ

以上で、非常に長くなりましたが、Linuxを使うべき理由10選の説明が終わりました。

冒頭でも、お話しましたが、これからあなたが何を開発するにしても、Linuxに早いうちから慣れておくに越したことはありません。 よっぽどの、技術革新か大災害かによって、Linuxの開発者コミュニティが崩壊でもしない限り、数十年単位で、Linuxが置き換わることはないと思われるので、是非一度Linuxを使ってみてください。二度と、他のOSには戻れないでしょう。

しかし、今回は、Linuxを劇推ししましたが、WindowsやmacOSが有利な場面ももちろんあります。

Linuxを使いこなせるようになることも重要ですが、もっと重要なのは、その時々に、正しい開発環境を自分で選び、それを構築できるようになることです。 そのためには、開発対象に応じて、どのような開発ツールでどのようなデバッグをする必要があるのか、開発にとりかかる前に見極められるようになる必要があります。

そのためには、多くの経験や学習が必要になるので、そんなことできないと不安になるかもしれません。

しかし、安心してください。私のチャンネルでは、適切な開発環境を選択できるようになるために必要な、コンピュータ関連の知識を原理から分かりやすく解説しています。 この動画を見ているあなたは、適切な開発環境を選択できるようになるかと、不安になる必要はまったくありません。

なぜかというと、こんなLinuxを使うべき理由を説明しているだけの動画を、15分も聞ける、あなたはポテンシャルの塊だからです。 自信を持って好奇心のままに勉強してください。自信を無くして、投げ出してしまう人が殆どです。 5年後には、天地の差が開いています。

もし、まだなにか分からない事があったら、ぜひコメントで教えてください。

自分もまだまだ知らないことはあるので、一緒に勉強していきましょう。 私が高専・東大・スタートアップ・日系大手メーカー・外資ハイテク企業と、、、人生の大半をコンピュータに投下して、学んできた全てをこのチャンネルにぶつけるので、私の動画を見ることによって、他では得られないコンピュータの原理的な考え方が身に付きます。

絶対にできます!一緒に頑張りましょう!

本日の動画の内容は以上になります。ここまでご視聴ありがとうございました。