この記事は、ニフクラブログで2021-10-04に公開された記事を移転したものです。
こんにちは。 ニフクラエンジニアミートアップ事務局の鮫島です。
2021年9月29日(水)に第41回ニフクラエンジニアミートアップを開催しました。
今回のテーマは
ということで、モデレーターの宮原氏(講師名:みやはらとおる氏)が、先月発売されたばかりの「オープンソースの教科書」の発売記念ということで、オープンソースの基本的な考え方について語るというものです。
おかげさまで、ZOOMはなぜか申し込み数以上が集まるというなかなかの盛況ぶりでした。
ありがとうございました。
オープンソースソフトウェアとは何か?
まず、ソフトウェアはプログラマーがソースコードを記述して、コンパイルすることで実行可能な形式になりますが、修正する際にはソースコードを修正して再コンパイルするという基本的な話からスタートしました。
ソフトウェアは、「知的財産」なので基本的に開発元がソースコードを公開せず、顧客にはコンパイルした後の実行形式で提供するというクローズドソースが基本です。 つまり、開発元しか修正はできないので、ビジネスとして成り立つわけです。
それに対し、フリーソフトウェアという概念が1980年代~1990年代に広まり、それが発展してオープンソースソフトウェアという考え方が生まれたとのこと。 フリーソフトウェアの全盛期は、まだインターネットが一般的ではありませんでしたが、その後インターネットの普及とともにコミュニティによる相互支援・コラボレーションが生まれることになったということのようです。
もはや歴史ですね!
オープンソースのメリットは、クローズドソースのデメリットを解消した点にあります。 デメリットもありますが、必要な人がそれを理解して使う分には解決可能なケースが あります。 特にサービスに対価を支払うという文化が根付いていない日本にありがちな誤解が「無償だから安くできるでしょ?」というものでしょう。
オープンソースの火付け役「Linux」
オープンソースの火付け役といえば、やはり「Linux」でしょう。
ライバルのUnixが自滅したということもありますが、20世紀末に安価なPCとインターネットが普及したことが追い風になったようです。
PCを自作してWindowsOSを購入せずに、Linuxをインストールしている人は確かに一定数見かけました。
Linuxは、普及し始めたPCでUnixを動かしたいと考えた人が
「自分が欲しいから開発する」
というシンプルな動機で生まれました。
そして、ソースコードが公開されたことで開発者と利用者がインターネットを通じて情報共有することで次第に広まっていきました。
要するに今や世界中に存在するオープンソースのコミュニティができたということですね。
オープンソースとライセンス
オープンソースのライセンスの考え方は誤解されやすい部分であり、かつオープンソースの理念とも密接にかかわる部分です。
一般的にソフトウェア・プログラムは知的財産権によって保護されますが、企業では誰かが権利を所有しているものだという前提で「オープンソースではライセンス違反をしてはいけないセンシティブなもの」というとらえ方をされることが多いようです。
オープンソースではそうではなく、知的財産権はコミュニティで共有されているものだという考え方であり、むしろ自由に制限を加えることを禁止するという考え方です。各オープンソースソフトウェアごとに、例えば「ソースコードを修正して配布する場合は、修正したソースコードの開示が必須」といった義務・条件が存在するようです。
根底にあるのは「みんなで共有して楽しく便利に使いたい。いいねこれ!」というノリです。 オープンソースのコミュニティに入れるかどうかは、そのノリというかマインドに共感できるかどうかで決まると思われます。
オープンソースとビジネス
オープンソースは開発することで得られる成果物をみんなでシェアするという考え方が基本です。
一方で、ビジネスにおいては自分たちが利益を出さなければならないという考え方がふつうです。
ソフトウェアを開発して、使用権許諾を与えることで利益を上げるというものです。
オープンソースをビジネスで利用する場合は、オープンソースのソフトウェアはあくまで素材であって、それをどうやって構築して運用してサポートするか?という部分をサービスとして提供する形式になります。
料理にたとえると、オープンソースのソフトウェアは魚や野菜であり、それをプロが料理して提供する(見せ方・店のロケーションなど付加価値含め)こと、つまりサービスに対価を払うのと同じという考え方です。 そこで、冒頭で出てきた「無償だから安くできるでしょ?」というのは間違っているという話につながります。
オープンソースとセキュリティ
続いて、気になるセキュリティです。
一般的に、ソースコードが開示されていることから脆弱性を突かれやすいのでは?という考え方があります。一方で、開示されているからこそ修正も迅速に行えるという考え方もあります。
いずれにせよ、脆弱性の早期発見と、それの迅速な対応(アップデート)が必要なのは、どのソフトウェアも同じです。
脆弱性だけでなくヒューマンエラーを狙ったサイバー攻撃も組み合わせて行われることが多く、脅威も多様化しています。 サイバー攻撃に備えるには、技術的・組織的な対策も含めて考えるしかないでしょう。
最後に
最後に、オープンソースと似た活動もいくつか紹介されましたが、このセッションで使われた資料そのものが「クリエイティブ・コモンズ」という創作物を自由に活用していただくためのライセンスに基づいて共有可能であり、改変含め自由に使ってほしいというお話がされました。
もちろん、原作者とタイトル表示は残していただいた上で、誰かがアップデートしたものをまた宮原氏がイベントで使うというサイクルになるといいね・・・ということで今回のセッションは終了しました。
恒例のQAセッション
QAセッションも、いつものように盛り上がりましたが、こういう質問がありました!というサマリーだけご紹介しておきます。
・オープンソースのコミュニティに参加するには?(ハードルが高い)
・稼げないオープンソースの開発が続けられる理由は?
・Elastic VS AWS問題
・コミッターの役割って?
・企業が開発したものをOSS化した場合のあれやこれや
・OSSは自己責任だと思うが、万が一の場合リスク回避は?
・CentOSの話
などなど、興味深いQが次々に飛び込んできました。
チャプターもつけてあるので、YouTubeでどんな回答がされたのか確かめてください。
オープンソース入門 前半の動画 youtu.be
QAセッション 後半の動画 youtu.be
本編はポッドキャストで音声で楽しむこともできます。 anchor.fm
それでは、次回もお楽しみに!