No270 フリーウェアとオープンソース
「フリーウェア」という言葉をご存知でしょうか?
作者の好意でタダ(Free)で使えるソフトウェアのことを一般的にそう呼びます。
その一方で「オープンソース」と呼ばれるものがあります。オープンソースの多くはフリーウェアでもあるのですが、有償のものも存在しています。
今回はわかったようで意外にわかりづらい両者の違いについて解説します。
1. フリーウェアはタダソフト?
フリーウェアはFree Softwareを略したもので、一般的には無料で使えるソフトウェア、つまりタダソフトのことを指します。
ですが、フリーウェアにはもう一つの意味があるのをご存知でしょうか?
それは「自由なソフトウェア」という意味のフリーウェアです。
でも、自由って何のことでしょう?
ここには、ソフトウェアを配布する自由、ソフトウェアを改変する自由が含まれています。
さらっと書きましたが、すごいことを書いているのにお気付きでしょうか?
フリーウェアというのは、他人が作ったものでも自由に再配布でき、他人が書いたものでも好きに改変できるべきだ、という考え方です。
俗にプログラマの間で「車輪の再発明」という言葉があります。
既に同等のプログラムがあることを知らずに、同じ機能のものを作ることを言うのですが、プログラマにとってはやりがちなミスです。
ですが、一般的に販売されているソフトウェアの場合、「この機能イイな」と思う部分があっても、知的財産権で守られていますから、気軽にコピペというわけにはいきません。この場合「車輪の再発明」をせざるを得ないのですが、社会全体として見れば、これは無駄なコストと言えます。
既に存在しているソフトウェアをコピペしていいことにすれば、イチから作るよりも社会全体で考えればプラスじゃないか、という考え方です。
この考え方はフリーソフトウェアを提唱したFSF(Free Software Foundation:自由なソフトウェア財団)の根幹となる主張です。
この団体は、ソフトウェアを作成するのに必要となるツール類を次々とフリーウェア(自由なソフトウェア)として公開し、多くのプログラマ達の支持を受けます。
余談:
GNU(FSFが提供するソフトウェアのブランド)が作成しているソフトウェアで現在も現役のものは多数あります。
例えばプログラマが日常的に使うプログラムをコンピュータで実行できるように変換するプログラム(コンパイラ)の分野ではGNUのCコンパイラ(C言語用のコンパイラ)であるgccは事実上の標準アプリと言えます。
2. ではオープンソースは?
さて、ソフトウェアの改変を容易にするためには、プログラムのソースコードが必要です。
ここでプログラムを作る手順について簡単に説明しておきます。
プログラマが書くプログラムのことを「ソースコード」といいます。
実は、コンピュータは「ソースコード」自体は理解できないのです。
コンピュータで実行するには、コンピュータが理解できる機械語に変換してやる必要があります。この変換ソフトウェアのことをコンパイラと呼びます。
コンパイラを使わないと、コンピュータが理解できる「実行形式」には変換できないのです。
余談:
この「実行形式」というはWindowsで言う.exeのことです。(excel.exe など)
ところが、この実行形式はイマドキのプログラマが見てもワケのわからないデータのかたまりに過ぎません。
機械語を直接理解できるようなプログラマは年配の方が中心で、今や絶滅危惧種です。
筆者はマニアでしたから、8ビットCPU時代(1980年代)の機械語は読めましたが、現代の64ビットCPUの機械語ははるかに複雑になっており、ほとんど読めません。
このように、実行形式のプログラムを作るにはソースコードが必要なのです。
既存のプログラムを改変したいと思えば、コンパイラで変換する前のソースコードが必ず要るのです。
つまり、フリーウェアの自由の保証には、ソースコードが欠かせないのです。
実際、FSFが登場した頃にはインターネットがまだまだ普及していなかったため、フリーウェアのソースコードを手に入れるには、作者から磁気テープ(QIC-150など)を郵送してもらうといった手順を踏む必要があり、ソースコードを入手するのも一苦労でした。
ですが、今はインターネットがあります。広く情報を公開することが格段に易しくなりました。
もうおわかりでしょうが、こういった公開ソースコードのことをオープンソースと呼ぶのです。
つまり、オープンソースはフリーウェアの改変の自由を保証するために発展してきたソースコードの入手方法なのです。
3. オープンソースの意外なメリット
オープンソースという形式が一般化すると、意外なメリットがあることがわかってきました。
一つはオープンソースにすることでプログラムのバグが減る点です。
当然ですが、ソースコードを公開すると、誰もがソースコードの検証が行えます。誰かがコードのバグを見つけると、作者に連絡が行き、短期間で修正が行われます。ソース公開で、多数の人の目に触れることで、短期間にバグが発見できるわけです。
実際、プログラムの一部をオープンソース化し、バグを見つけてくれたら謝礼を支払うという仕組みを取り入れている有償プログラムもあります。
もう一つのメリットとして、オープンソース化で信頼性を得ることができます。
従来のソースコード非公開の方式だと、プログラム内部で実際にどのような動作を行っているかを知ることは至難の技でした。
利用者に気付かれないこといいことに不利益を働くかもしれません。
例えば、利用者のデータを勝手に開発元に送付するといったプログラムが実在し、発見された時には大問題となりましたが、これを事前に知ることは至難の技です。
オープンソースとして公開されていれば、そういったズルい仕組みがないことを誰もが確認できます。
4. オープンソースがタダでも商売はできる
オープンソースにはメリットがいろいろあることがわかるにつれ、有償の製品でもオープンソース化されるケースが増えてきました。
特にLinux(リナックス。リヌークスとも)というサーバOSの世界ではLinuxの出自がオープンソースであったこともあり、有償版とオープンソース版の2つが併存しているものが増えてきています。
主要なソースコードはオープンソース版として公開し、有償版はそれに加えて非公開のソースコードを加えて販売するというわけです。
一見、販売側にメリットがなさそうに見えますが、そんなことはありません。
オープンソース部分については、多くのプログラマがデバッグしたり、機能追加をしたりしてくれますから、販売側はコストをかけずに品質向上できますから、有償部分の改善に注力できます。
オープンソース版を無償利用する人々から見れば、高品質なプログラムを無償で利用できますから、互いにWin-Winな関係が築けるのです。
5. 具体的には何があるの?
オープンソースの代表格と言えば、上でも書いたLinux(リナックス)でしょう。
これはもともとフィンランドの学生が作ったもので、最初は完全に無償でオープンソースとして公開されていました。
その後、これを商品として販売しようとするRedhatという会社が登場します。
他人が作ったオープンソースを使って商売をしようというのですから、驚きます。
当初は、オープンソースの信頼度が低かったので、Redhatという会社が提供する商品という形態にして、責任の所在をハッキリさせれば買ってもらえるのではないか?というコンセプトで始めたようですが、それがヒットし、今ではLinux界の巨人と言える企業となっています。
実際、多くの商用サーバはRedhatが提供しているLinuxで稼動しています。
オープンソースの提供元としてはapache foundation(アパッチ財団)と上述のFSF(Free Software Foundation:自由なソフトウェア財団)も有名です。
Apache foundationは元々Webサーバ(いわゆるホームページを表示するサーバプログラム)を提供していましたが、今はプログラマが必要とする開発用の様々なツールを提供する大規模な団体となっています。
また、冒頭で触れたFSFはApacheやLinuxよりさらに古く、1980年代から活動をしています。
6. まとめ
一般的にフリーウェアというと無料で使えるソフトウェアという意味で使われていますが、元々は改変や配布が自由なソフトウェアという意味でした。
その改変を自由に行うためには、そのソースコードを容易に入手できる環境が必要です。
それを実現したのがオープンソースという考え方でした。
このオープンソースが流通するにつれ、副産物として品質向上や信頼性向上というメリットも見えてきて、ますます広がるようになりました。
その後、製品版とオープンソース版を並行開発する会社が出てきました。オープンソースをうまく活用すれば、企業側にもコストメリットがあることもわかってきて、誰もがメリットを享受できるWin-Winの方式と言えます。
今回はフリーウェアとオープンソースについて解説しました。
次回もお楽しみに。
※来週はお盆休みの方も多いかと思いますので、号外として軽目のお話にしようかと思います。
(本稿は 2022年8月に作成しました)
本Noteはメルマガ「がんばりすぎないセキュリティ」からの転載です。
当所はセミナーなどを通して皆さんが楽しく笑顔でITを利用いただくために、 難しいセキュリティ技術をやさしく語ります。
公式サイトは https://www.egao-it.com/ です。
この記事が気に入ったらサポートをしてみませんか?