Articles

Should Programmers Learn Linux?

Stop me if you have heard this one: 「プログラマは Linux しか使わない。 PC や Mac は素人向けだ!」

Linux はツールです。 Windows はツールだ。 MacOS もツールです。 それぞれコンピュータを便利にするために必要なOS(オペレーティング・システム)で、それぞれに長所と短所がある。 問題は、他の多くの道具と同じように、これらの人気OSにも部族があることだ。 Windows が DC Comics で macOS が Marvel ならば、Linux は Dark Horse です。

Uh, What Is Linux, Anyway?

では、最初から始めましょう。 (これは私のお気に入りのスタート地点のひとつです。) もしあなたがLinuxを学ぶべきかどうか尋ねているなら、おそらくLinuxが何であるかについて簡単な紹介が必要でしょう。 Windows と macOS は Microsoft と Apple が販売しサポートする個別のオペレーティング システムですが、Linux とは何か(そして何か)、もう少し複雑です。

1991 年にさかのぼり、Linus Torvalds というプログラマーが新しいカーネルをリリースし、彼が Linux と名付けました。 カーネルとは、大雑把に言えば、オペレーティング・システムの中央に位置し、ハードウェアとソフトウェアの間の相互作用を制御するコンピュータ・プログラムのことです。 彼はこれをUnixとMinixと呼ばれる別のUnixライクなオペレーティングシステムをもとに作りました。 見てのとおり、Unix と韻を踏んだ名前がすでに流行っていたので、Torvald のカーネルはまさにそれ自身を名付けたのです。

カーネルはすぐに人気を集め、より多くのプログラマが彼のプロジェクトに貢献しました。

しかし、オープンソースはオープンソースでなければならず、Linuxのバージョンが1つだけということはありませんし、これからもないでしょう。 Linux は、通常ディストリビューションまたはディストロと呼ばれるオペレーティング システムのファミリーです。 ディストリビューションは、Linuxカーネルと、コンピュータを使えるようにするために必要なソフトウェアの残りを含んでいます。 DistroWatch というウェブサイトは 100 のディストリビューションをリストアップしていますが、100 という数字は丸いので、そこで止まっています。

developing an understanding of any major distribution gives you a significant set of skills that you can map over to any one of them.

最も人気のあるディストリビューションのいくつかは Debian, Red Hat, Ubuntu, そして Fedora です。 Ubuntu は実際には Debian をベースにしており、Fedora は Red Hat をベースにしています。 そしてもちろん、同じくRed HatをベースとしたCentOSや、UbuntuをベースとしたMintもあります…ご覧のように、複雑なんです。 どのディストロがベストかという戦いは、OS やマンガをめぐる戦いと同じくらい熱を帯びますが、明るくはなりません。

では、元の質問に戻りましょう。 プログラマは Linux を学ぶべきか」という質問に対して、「どれを学ぶべきか」という答えが返ってきますが、これはあまり有益な答えではありませんね。 あなたの目標は何ですか。

これは、あるツールや、それを使い始めることを勧められたときに、常に心に留めておくべき質問です。 何を学ぶ必要があり、これに時間を費やすことでそこに到達することができるのでしょうか。 あなたが毎日訪れるほとんどすべての Web サイトは Linux を実行しており、データベースのような「バックエンド」アプリケーションを実行するためにそれらの背後にあるサーバーも同様です。 例えば、銀行では金融取引の管理にLinuxを多用しています。

Linux は組み込みプラットフォームで非常に人気があります。 Raspbian は Raspberry Pi 用の人気ディストリビューションです。 Google の Android OS は Linux の派生であり、多くのネットワーク・ルーターやスイッチも Linux を使用しています。

したがって、サーバー・ソフトウェア、IoT (Internet of Things) コード、または組み込みシステム用ソフトウェアを書くことが目的なら、Linux に慣れることはあなたの生活を楽にするために大いに役立つはずです。

もしあなたの夢が iPhone 用のアプリケーションや美しい Web ページを書くことであるなら、Linux を学ぶことは、今、あなたの時間を費やす最良の方法ではないかもしれません。 (すみません、我慢できませんでした。)

Linux で動作するサーバーソフトウェアを書くのであれば、それを動作させるシステムにデプロイする必要があります。 どこで働いているかによりますが、これはコードを DevOps 組織に渡すことを意味するかもしれませんし、自分でやることを意味するかもしれません。 いずれにせよ、コマンドラインと Linux システム上でファイルがどのように構成されるかに慣れることができれば、同僚はもちろん、自分の人生をより快適にすることができます。 それらの間には (しばしば厄介な) 相違点がありますが、主要なディストリビューションの理解を深めることで、それらのいずれかにマッピングできる重要なスキル セットを得ることができます。 また、お気に入りの IDE の保護された世界の中だけで満足している開発者に対して、競争力をつけることができます。

ロボット工学や組み込みシステム用のソフトウェア開発に興味があるなら、カーネル レベルで Linux に親しむ必要があります。

ここでも、選択するディストリビューションは、単に足を踏み入れることよりも重要ではありません。 すべてのディストリビューションが同時にカーネルバージョンを更新するわけではありませんが (そしていくつかは滑稽なほど遅い)、Linux カーネルは Linux カーネルなのです。

How Do I Do That?

もしあなたがロボット工学や IoT に興味があるなら、Raspberry Pi を入手してすぐに取りかかった方がよいでしょう。 USBマウスと接続するモニタを用意しておくとよいでしょう。

サーバーソフトウェアに興味があるなら、ディストリビューションを選んでインストールします。 ある人は、Ubuntu が最も初心者にやさしいと考えます。 また、Linux Mint が少し良いと考える人もいます。 良いニュースは、それらが無料であるということで、それらすべてを試すことができます!

Linux をインストールし、ドアを蹴ってタイヤをドタバタさせるための最も安価なオプションは、すでに持っているコンピュータに仮想マシン・ソフトウェアをインストールすることです。 VirtualBox は無料で、Windows と macOS で動作します。 セットアップすると、Linux をインストールするためのガイドまでしてくれます。 Raspberry Pi や仮想マシンで遊ぶことの良さは、何かが吹っ飛んでも、いつでもゼロから始められるということです。

So, Programmers Should Learn Linux?

プログラマーとしてのキャリアの中で、どこかで Linux に出会う可能性は十分にあります。 事前に慣れておくことで、そうでない他の開発者よりも優位に立つことができます。 8997>

This post was written by Eric Goebelbecker. Eric は 25 年間ニューヨークの金融市場で働き、市場データおよび金融情報交換 (FIX) プロトコル ネットワークのインフラストラクチャを開発してきました。 彼は、チームを効果的にするもの(あるいはそうでないもの!)についての話が大好きです