定義
オープンソースとは、ソフトウェアの設計図にあたるソースコードを、誰でも自由に確認・修正・再配布できるように一般公開する方式のことです。世界中の大勢の開発者や研究者が知恵を出し合ってプログラムを磨いていく、大きな協力文化でもあります。
秘伝のレシピを隠さない料理人
おいしい鍋料理を出す町の食堂が、秘密のタレのレシピをネットの掲示板にすべて公開したと想像してみてください。お客さんは家でそっくりの味を再現できますし、辛いものが好きな人は唐辛子を足して、自分だけの新しいメニューを作ることもできます。
ソフトウェアの世界でも、同じことが起きています。かつて企業は、プログラムを作るためのコンピューター言語の設計図であるソースコードを厳重な秘密にしていました。設計図がなければ、外部の人はプログラムの内部がどう動いているのか分かりませんし、ちょっとした不具合ひとつ自分では直せなかったからです。
ところがオープンソースの運動は、この設計図を世界中に透明な形で公開しました。おかげでプログラミングを学ぶ学生は、完成度の高いコードを読みながら力を伸ばせますし、ほかのプログラマーはそこに便利な機能を付け足して、より完成度の高いソフトウェアを生み出しています。
世界中の開発者がつくる集合知
どんなに大きなテック企業でも、所属する社員の数には限りがあります。けれども、インターネットでつながった世界中の個人開発者や、複数の企業に所属する開発者たちが力を合わせれば、一社だけでは手に負えない複雑な問題も素早く解決できることがあります。
誰かがプログラムの欠陥やエラー(バグ)を見つけると、地球の反対側にいる別のエンジニアが、解決策を盛り込んだ改良コードを書いて、元の作者に送ってくれることもあります。こうした参加の仕方を「コントリビュート(コード貢献)」と呼び、たくさんの人の手が集まることで、驚くほどの開発スピードと安定性が得られることもあります。
実際、私たちが毎日使っているスマートフォンのAndroidの基盤コードや、世界中のウェブサイトを支えるLinuxサーバー、最新のAI研究の土台になっているツールも、オープンソースとして公開されています。Androidのように、一つの会社が中心になって開発しつつコードを公開しているケースもあります。ただし、端末に一緒に入っている一部のアプリやサービスは非公開です。オープンソースは、現代のデジタル社会の頑丈な土台の役割を果たしているのです。
もう少し正確に言うと:ルールのある自由です
オープンソースは何でもタダで分け与えるものですが、だからといって著作権がまったくないとか、好き勝手に使っていい無法地帯だという意味ではありません。すべてのオープンソースのプログラムには、作者が決めた「使用許諾のルール(ライセンス)」がきちんとついています。
たとえば「このプログラムを使うときは、原作者の名前を必ず表示してください」という比較的ゆるやかなルール(MITライセンス)があるかと思えば、「このコードを改変したプログラムを他の人に配布するなら、そのとき、あなたが改変したコードも一緒に公開しなければなりません」という厳格な共有の義務を求めるルール(GPL)もあります。
結局のところ、オープンソースでいう自由とは、責任を負わずに好き勝手にふるまうことではありません。先に知識を分け合ってくれた人の権利を認めて尊重し、みんなで作った成果をみんなで楽しもうという、お互いの信頼と約束の上でこそ成り立つものなのです。
よくある誤解
オープンソースはコードが全部公開されているので、ハッカーに攻撃されやすい。
コードが公開されているからといって、破られやすくなるわけではありません。多くの人が目を通すプロジェクトでは、脆弱性が早く見つかって直されることもあります。一方で、面倒を見る人が少ないプロジェクトでは、ハートブリードのように古い欠陥が発覚するのが遅れることもあります。
オープンソースは無料のプログラムだから、法的なルールは何もない。
無料で使えるとしても、作者が定めたライセンスのルール(出典の表示や、ライセンスによっては改変したコードの公開など)を破ると、著作権侵害などの法的な問題になることがあります。
日常で出会う場面
世界のスマートフォンの大半が使う「Android」は、オープンソースのLinuxをベースに作られています。
データ分析やAI開発で広く使われているプログラミング言語「Python」や、ウェブブラウザの「Firefox」も、代表的なオープンソースです。
つまり ひとことで
オープンソースとは、プログラムの設計図を公開し、世界中の人が決められたルールのもとで一緒に発展させていく、知識を分かち合う文化です。