オープンソースとは? 今さら聞けないDX関連用語をわかりやすく解説
技術解説
最近「オープンソース」という言葉を聞く機会が多くなりました。GoogleやAmazon、Facebook(現Meta)などのビッグテックの自慢話で良く使われるようになったからかもしれません。また、オープンソースはプログラムが公開されていて無料で使えるので、無料のソフトウェアの意味かなと思っている方もいるかもしれません。
オープンソースは「オープンソースソフトウェア(OSS)」のことを指していますが、ちょっと長いのでソフトウェアが省略されることが多いのでしょう。
この記事では、オープンソース=OSSとはどういう特徴があるのか基礎的なことを説明します。
身近になったオープンソース
以前はサーバ(主にデータセンターに置かれるコンピュータ)で使うソフトウェアが代表的でした。サーバのOSとしてLinux(リナックス)が、WebサーバとしてApache(アパッチ)HTTPサーバやnginx(エンジンエックス)、その他にもメールサーバやデータベースサーバなどにも代表的なOSSがあります。これらは今でもよく使われています。
現在一番身近なOSSは、スマートフォンやスマートテレビのAndroid(アンドロイド)でしょう。最新技術の分野でも、機械学習・深層学習のAIや、昨今話題の生成AIで、大手IT企業が成果をOSSで公開して技術力をアピールしています。
また、OSSは他のソフトウェアの部品としても使われています。試しにお手元のスマートフォンに入っているアプリを開いて、ヘルプや設定などの普段は使わないメニューの奥の方に「オープンソース」や「ライセンス表記」、「使用しているライブラリ」などの情報が書かれているところを探してみてください。多くのアプリでその類のメニューが見つかります。そこには部品として使っているOSSがずらっと並んでいます。
オープンソースとは?そもそもソースって?
「オープンソース」は「オープンソースソフトウェア(OSS)」のことです。まれにソフトウェア以外で使われることもありますが、「オープンソースソフトウェア(OSS)」の「ソフトウェア」が略されたのだと思って大丈夫でしょう。
「オープンソース」の「ソース」とは何でしょう。調味料の「sauce」ではなくて源の「source」。プログラミング言語で記述したコンピュータのプログラムで、人間が読んだり書いたりできる状態のものを「ソースコード」または「ソースプログラム」と呼び、単に「ソース」と略すことが多くあります。ソースコードはコンピュータやスマートフォンでそのまま実行できないのが普通でした(実行できる場合もあります)。すぐに実行できるように変換したものをバイナリプログラムと呼びます。オープンソースではバイナリプログラムの方ではなくて、自分たちが読んだり書いたりできる「ソース」のほうを公開することで、元の開発者以外が理解をしたり改善することができます。
では、ソースコードを公開(オープンに)したらOSSなのか?というと、そんなに単純ではありません。「オープンソース」や「OSS」と呼ぶためには、満たすべき条件があります。これは国の法律のようなものではありませんが、IT業界では尊重されているものです。もしも自分たちで開発したソフトウェアをOSSにしたいと思ったら、この条件に合致するかどうかを確かめる必要があります。ただ、どういう条件なのかはちょっとややこしいので、末尾に記した関連情報を参照してください。
まずは、ソースをオープンにする目的や期待することから考えた方がわかりやすいでしょう。
なぜソフトウェアを公開するのか
「良いソフトウェアができた」と思ったのなら、売った方が作った人や会社の利益になって良いことのように思えます。なのに、なぜ公開するのでしょうか。使う側としては公開する理由はなんでもいいのかもしれません。けれど、ソフトウェアの公開に何を期待しているのかも、OSSについて理解してほしい点です。そこには、単に“世のため人のため”だけではないビジネス戦略もあるのです。
みんなで良いものに育ててもらう
物理的な(ハードな)製品に比べると、ソフトウェアはいったん完成させた後で新たな機能を追加したり手直ししたりするのは簡単です。また、同じ物を作る(コピーする)ことも、それを配ることも簡単です。
それなのに、中の仕組みを勝手に解析するな、勝手に変更するな、それを第三者と勝手に共有するな、というのは、ソフトウェアのソフトな面を活かせていません。ソフトウェアの特徴を活かして、「ソフトウェアをもっと良いものになりそうならどんどん手直ししてね」と、改良や修正に他人を巻き込むことがメリットになります。オリジナルを作った人や会社にとっても、それに興味を持ってくれた他の人や組織にとっても、どちらにもとってもメリットになります。
持続可能な仕組みを作る
良いソフトウェアが開発できて顧客に使ってもらいたいと提案した際に、「このソフトウェアを使っている間は何十年でも、御社は必ず事業を続けてくれますよね?」と聞かれて、これを保証する方法はありません。スタートアップ企業の場合はこの心配をされるケースがあるでしょう。
ソフトウェアを使いつづけるには維持管理も必要です。個人で使うソフトウェアでも今や頻繁にアップデートがあるのは普通でしょう。組織で業務に使う場合も同じです。もし開発組織に不測の事態があったとしても、そのソフトウェア製品がメンテナンスや改良が続けられるようにするため、つまり持続可能にする手段として、OSSとして公開するケースは少なくありません。そのソフトウェアが欠かせないと考えるユーザ企業がメンテナンスをすることもあり得ますし可能です。
結果として収益最大化を期待する
収益を全て諦めたからOSSとして公開するのではありません。良いものが開発できたのなら売ればいいというのは正論ですが、製品を普及させてたくさん買ってもらう目標は達成できないことも多いでしょう。デジタル赤字が問題にされている様に日本企業がIT分野で苦労している部分でもあります。そこで、最初に使い始めるときの利用者のコスト負担は低くして、その後のサポートやメンテナンスを有償にすることで収益にするビジネスモデルが良く取られます。初期の売上では稼げませんが、使い始めてから有益だと思ってくれるケースが増えることを期待できます。
技術力や得意分野のアピール
昨今、GAFAなどのビッグテックがAI関連技術をOSSにして発表することがたくさんあります。これらは、OSSを収益のための直接的な手段とするのではなく、「私たちはこんなにも世の中の役に立つものを作れるんですよ」とアピールするためと言っていいでしょう。
これは世界的なビッグテックだけができる芸当ではなくて、小規模な組織にも有効です。既存のOSSの追加機能や便利ツールを、元と同じくOSSで公開するケースがたくさんあります。「私たちはこのプロダクトや技術分野に強みを持っています」とアピールしています。その結果として、収益のある仕事につなげることができます。言い換えると、ある分野に強みを持っている企業を探す場合に、着眼点の一つになります。
OSSを清く正しく上手に活用したいときに考慮したいこと
OSSには「みんなで良いものに育ててもらう」期待があると書きました。誰もがOSSの開発に関われるようになればベストかもしれませんが、それは無理な期待でしょう。まずはOSSを採用することが最初の一歩になります。そのときに、考慮していただきたいことをまとめてみます。
「OSSを」選ぶ
OSSを特別にえこひいきする必要はありませんが、意識的・無意識的にOSSを全て排除はしないでください。「原則としてOSSは採用できません」という組織が以前はたくさんありましたし、今でもあります。オープンソース・OSSでわからないことがあるのは事実でしょう。そのため「OSSは〜」とは言わずに「フリーなソフトはダメです」と雑な認識になっているケースも見受けられます。
「良い」OSSを選ぶ
当然ですがOSSとして公開されているものが全て良いソフトウェアなんてことはありません。良いOSSを選ぶ目、逆に言うと、悪いOSSを選ばない目が必要です。もちろん簡単ではありません。ソフトウェアの適・不適はケースバイケースでもあるので、一律な評価が馴染みにくいのも事実です。
選定の参考情報として、非営利の企業コンソーシアムである日本OSS推進フォーラムが公開している「OSS鳥瞰図」というものがあります。ここに載っているものはOSSの知見を持ったIT業界のプロ達が考慮して選んだものです。誰にとっても絶対大丈夫だと保証しているわけではありませんが、あまたあるOSSの中から候補を絞る一助にはなります。こういう情報をオープンにできることもOSSの特徴の一つです。
日本OSS推進フォーラムの「OSS鳥瞰図」と一部拡大図
ライセンスを守る
OSの選定に際して、機能や品質の良否の他に、OSSらしい特徴として「ライセンス」を気にしてください。OSSはソフトウェア自体を販売しているものではありませんが、誰かの著作物であり、その著作権者が「こういう使い方ならOKです」という条件を付けています。明示的な契約はしていなくても、この条件を守らないと著作権法違反になります。本を買って読むときや、この記事のようなインターネット上の無料情報でも、契約書にサインはしていませんが著作権法の制約はあります。これと同じです。
OSSには代表的なライセンスがいくつかあって、多くのOSSはそれら代表的なライセンスのどれかを適用するのが主流です。独自のライセンスを定める場合も少しはあります。この記事では、個別のライセンスの中身を解説するのは省略しますが、守らないといけないライセンスがあるのだということは知っておいてください。
開発者や関連情報を発信している人や組織に敬意を払う
OSSが発展するためにはそのOSSを利用する人が増えるのも重要ですから、開発に参画できないことは気に病む必要はありません。ただ、OSSを利用する際には、開発やメンテナンス,マニュアルなどの執筆や翻訳してくれている人たちへの感謝と敬意を持ってください。
OSSを利用していると問題点を見つけることもあるかもしれません。感謝と敬意を持っていれば、問題点を開発コミュニティに連絡をするときに、一緒に良いものにしようとしている仲間として接することができます。
有償サービスがあればそこに費用を支出することを検討する
OSSを使い始める際は購入することなしに検証フェーズを始めることができます。その後に本番運用で利用することになった場合も、そのまま無償で使い続けることが可能ではあります。けれど、自分たちに自己解決力があれば別ですが、開発や運用をスムーズに進めるためには、外部のサポートを受けることも検討してはどうでしょうか。
企業ITでよく使われるOSSについては、有償でサポートサービスを提供している会社があります。「OSSなのに有償サポート?」と抵抗を感じる方もいるかもしれません。それらのサポートを提供している企業は、OSSの改善や普及に尽力しているケースが多くあります。有償のサポートを使うことは、そのOSSの発展に貢献していることにもつながります。
自分ができる貢献について考える
OSSに貢献もせずに使うだけの状態を、OSSに関わる人たちは「ただ乗り(free ride)」という言い方で批判することがあります。けれど、上で述べたように、OSSの機能追加や改善を直接行うことだけが貢献ではありません。自分自身や自社に見合った貢献について、少しだけでも考えていただければと思います。例えば次の様なことはできないでしょうか。
- 事例の発表
所属組織のWebサイトや、利用者コミュニティの場など発表の仕方はいろいろあります。 - コミュニティイベントなどへの参加
関心を持っているのを示すことも意味がありますし、詳しい人たちと話ができるコネクションも有益です。 - 気付いたことがあれば開発コミュニティなどにフィードバック
日本語のコミュニティがない場合もありますが、たとえば有償サポートを受けている場合にはそのサポート企業がフィードバックもしてくれるでしょう。 - マニュアルの翻訳
情報が不足している場合が少なくありませんし、日本語は更に不足していることが多くあります。 - ソースプログラムが読める様になって開発にも関与
ここまでたどり着けばエキスパートですね。
OSSコンソーシアムが公開しているOSS導入事例情報サイト
関連情報 (参照先)
この解説ではいろいろと詳細な説明を省いた部分もありますので、関連情報の参照先を示しておきます。
OSSの最新ニュースと情報源
オープンソースソフトウェア(OSS)最新情報(IPA)
オープンソースの定義について
オープンソースの定義(Open Source Initiative)
オープンソースとは? その定義とは?(Open Source Group Japan)
オープンソースの代表的ライセンスについて
IoT 時代におけるOSS の利用と法的諸問題Q&A 集 (一般財団法人ソフトウェア情報センター )
OSSライセンスとは(種類、確認方法、違反リスクなどについて)(日立ソリューションズ)
主要なOSSについて
OSS鳥瞰図(日本OSS推進フォーラム)
concept『 学んで、知って、実践する 』
DX SQUAREは、デジタルトランスフォーメーションに取り組むみなさんのためのポータルサイトです。みなさんの「学びたい!」「知りたい!」「実践したい!」のために、さまざまな情報を発信しています。
DX SQUARE とは