見出し画像

「オープンソース」のお話(エンジニアだけでなくユーザーも関係します)

皆さんはオープンソース、もっと言えば「オープンソースソフトウェア」って知っていますか?

IT系の用語はいつものように複数の単語からできていることが多いので、今回も細かく分けて考えてみましょう。

オープンソースソフトウェアの言葉を分解してみましょう

オープンは、開けたとか開いていることを意味しますが、誰にでも広く門戸が開いているような意味合いでとらえてください。

ソースは素(もと)になるものをさしています。

ソフトウェアはコンピューターで動作するプログラムのことで、たくさんの命令の集合体です。コンピューターへの命令がソースコードと呼ばれています。プログラムはプログラマーがプログラミング言語を使って記述します。

以上のことから、オープンソースソフトウェアは、誰もが無償で利用できるソースコードプログラムということができます。

一般的なソフトウェアとオープンソースソフトウェアとの違い

私たちがスマートフォンで利用するアプリもひとつの完成されたソフトウェアです。パソコンで作成するプレゼン資料や書類も専用のソフトウェアを使っています。

つまりソフトウェアといったら、スマートフォンで使うTwitterやTikTok、WindowsのパワポやワードをイメージしていただければOKです。

これらのソフトウェアの元となるのが「ソースコード」と呼ばれるものですが、ソースコードは基本的には開発した企業や団体の無形の財産であり、開示しないのが一般的でした。開示しない、つまり閉じていることを意味するクローズド(closed)が使われ、クローズドソースなどと呼ばれます。

ちょっと難しい表現ですが、独占を意味するプロプライエタリソフトウェアなどと呼ばれることもあります。

オープンソースソフトウェアは、クローズドに対してのオープン、つまり公開されているのが大きな特徴です。

ソースコードが公開されていると、誰もが自由に改変が行えます。プログラムに不備があれば(いわゆるバグですね)修正して、必要な機能があれば追加できます。

オープンソースの代名詞「Linux」の誕生

このような誰もが自由に改変が行えるオープンソースソフトウェアの中で、もっとも代表的なソフトウェアはLinuxでしょう。

Linuxはオープンソースのオペレーティングシステム(OS)です。1991年に当時学生だったフィンランドのリーナス・トーバルズ氏がUnix互換のカーネルとして開発し、ソースコードを公開したのがはじまりです。

カーネル、というのはOSの中心部分と考えてください。

リーナス氏が開発したのはそのカーネル部分ですが、その他必要なもの(基本的なライブラリやデバイスドライバ、各種アプリケーションなど)を組み合わせて、広義の意味でのLinuxと呼ばれることが多いです。

そのUnix(これもOSです)は開発当初はオープンだったものの、紆余曲折あってクローズドソースとなり、1980年代後半には不自由なものとなっていきました。さらに、Unixには高額の専用ハードウェアが必要でしたので、普及によって低コストが進んだパソコンでUnix互換OS、つまりLinuxを動かそうという流れが生まれました。

ちなみに、現在市販されているパソコンに使われているOSは大きく分けてWindowsとmacOSの二つがありますが、前者はマイクロソフト社が、後者はアップル社が独自開発したプロプライエタリなOSであり、ソースコードは非公開になっています。

話が脱線しましたが、独占志向のUnixとは逆のオープン志向をかかげたLinuxが徐々にシェアを伸ばし、人気を博していくことになります。リーナス氏やLinuxが掲げるオープン志向に共感した技術者によるコミュニティの拡大も相まって、Linuxは今日も日々発展を続けています。

ちなみに、スマートフォンのOSに使われているグーグル社開発のAndroidはLinuxカーネルが使われています。また、iPhoneなどに使われるアップル社開発のiOSでも実は多くのオープンソースソフトウェアが使われています。興味がある人は設定の一般からたどれる法律関連の認証を確認してみてください。

コミュニティの存在

オープンソースソフトウェアを語る上で重要なのはコミュニティの存在です。

コミュニティは人の集まりのことですが、オープンソースソフトウェアにおいてはソフトウェア開発者が集まってコミュニティとなります。

世界のどこかの国の誰かが開発・公開したソフトウェアを、他の国のたくさんの開発者たちが協力し合いながら修正したり、機能を追加していくような活動をしているのです。

そしてもう1つ忘れてはいけないのが、ソフトウェアを使う側、つまり利用者の立場で協力しあうようなユーザコミュニティの存在が挙げられます。

使った感想をフィードバックするのはもちろんのこと、ソフトウェアのマニュアルを作成したり、海外産ソフトの翻訳、勉強会などの開催も活動の一つとなります。

さらに、上に挙げたコミュニティの集合体ともいえそうな、地域単位の複合コミュニティなども存在します。日本●●ソフトウェアユーザー会、などがそれに当たりますね。

オープンソースソフトウェアに貢献したい

今までご紹介してきた通り、オープンソースソフトウェアは多くの開発者やソフトウェア利用者の相互の理解や協力によって成り立っています。

そうした時に、「なんか、お手伝いしたいな」と思ったりしませんか?

そう思ったら、ぜひオープンソースソフトウェアの話の中に飛び込んでみましょう。

もしあなたがエンジニアを目指しているなら、同じエンジニアとしてのソフトウェアの機能強化の貢献ができたら素晴らしいですね。もちろんそこまでではなくても、バグの修正などでも素晴らしいと思います。いまはGitHubのような、分散型のソースコード共有サービスで開発を進める形が当たり前のようになっています。

利用者の立場であればユーザコミュニティへの参加を通じて開発者へ意見や感想、改善要求などのフィードバックするとよいでしょう。もしくはマニュアルやホームページの翻訳の部分も貢献できる分野だったりします。

オープンソースソフトウェアの将来性

アマゾンのAWSやマイクロソフトのAzureのようなクラウドサービスは仮想化技術の進展によって発展してきましたし、その仮想化技術はオープンソースソフトウェアの代名詞ともいえるLinuxによって実現されています。

一般的なサーバーではLinuxが動いています。銀行や通信など、社会インフラと呼ばれるサービスもLinuxやオープンソースソフトウェアが支えています。

オープンソースソフトウェアは今も重要で、将来的にも重要であり続けることでしょう。言い換えれば、オープンソースソフトウェアなくしてIT業界の発展はのぞめません。

ITエンジニアを目指すのであれば、オープンソースソフトウェアの意味をしっかり理解し、その開発や利用を通じて業界に貢献できるようになりたいものですね。

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!