
OutSystems Community
The OutSystems Developer Community empowers you to build robust, sustainable apps that make a difference. Get to know us!
オープンソースとは、変更あり、または変更なしで使用、コピー、配布されることを前提に書かれたコードです。つまり、誰でも参照、変更、使用することができるコードです。
1970年代後半、MITのスタッフプログラマーだったRichard Stallman氏は、紙詰まりがよく発生するプリンターに小さな修正プログラムを実装しました。この修正プログラムは、プリンターが詰まると印刷待ちのデータを持つユーザー全員にメッセージを送信するというシンプルなものでした。これで誰かが紙詰まりを解消してくれるようになります。
このシステムは非常に便利であったため、新しいプリンターが部署に配備された際、Stallman氏は同じ修正プログラムを実装できるようプリンターソフトウェアのソースコードをリクエストしました。しかし、このプリンターには非公開のクローズドソースソフトウェアが使われていたため、コードの提供を断られてしまいました。
その後10年ほど、コンピュータソフトウェアの秘密性は高まるばかりでした。長年公開されてきたコードも無料ではなくなりました。ソースコードが商品になっていったのです。
この頃、コンピュータソフトウェア企業が爆発的に増え、プロプライエタリライセンスの販売がそうした企業の主なビジネスモデルとなっていました。
Stallman氏は、プロプライエタリソフトウェアの増加とコミュニティが開発するフリーソフトウェアの減少を食い止めたいと考えました。そこで、フリーソフトウェアを一大ムーブメントとすべく、幅広く使用されているクローズドソースのUnixに代わるオペレーティングシステムを開発することにしました。
Stallman氏は、Unixとの互換性を持つフリーオペレーティングシステムの開発を目的とするGNUプロジェクトを立ち上げました。折しも、自ら提唱した「コピーレフト」というコンセプトが浸透し始めていた頃でした。コピーレフト(Copyleft)は「Copyright」(著作権)にかけた言葉で、著作権法の理念に則り、知的財産の自由な配布と変更を許可するという意味です。
これは1989年に、GNU Emacs General Public Licenceで初めて使用されました。
1991年には、フィンランド系アメリカ人学生のLinus Torvalds氏がGNUの開発ツールを使用してLinuxカーネルを作成しました。私たちが知るLinuxオペレーティングシステムは、GNUソフトウェアとTorvalds氏のLinuxカーネルがこうして組み合わさったことで誕生したのです。
1990年代後半になると、オープンソースソフトウェアは正当かつ優れたコンピュータソフトウェアとして専門開発者の間で受け入れられるようになりました。1999年、VA LinuxとRed Hatが株式市場に上場し、大成功を収めました。
1990年代後半には、Open Source Initiative(OSI)も設立されました。その目的は、これまでと変わらずソフトウェア開発の共有やコラボレーションによる改良について、教育や提言を行うことでした。
「クローズドソースソフトウェア」とは非公開のソースコードを含むソフトウェアのことであり、「プロプライエタリソフトウェア」と呼ばれることもあります。そのため、ソースコードは作成した組織が保有するライセンスにより保護されており、自由に利用することはできません。
ソフトウェアを利用するには有効なライセンスが欠かせません。ライセンスはベンダーや保有企業から購入する必要があります。クローズドソースソフトウェアの価格は保有組織が定めることができ、高額な場合も安価な場合もあります。ライセンスを保有している場合であっても、法律上ソースコードを参照、コピー、変更することは一切できません。
オープンソースはクローズドソースと正反対です。オープンソースソフトウェア(OSS)は非常にコストが安く、「フリー」です。ここでいう「フリー」とは、ソフトウェアを自由に使用、変更、配布できるという意味です。
この「自由」という用語と「オープンソース」という用語の区別については、OSSコミュニティでも長年にわたり議論されています。Stallman氏は「自由」という単語を使うことが重要だと主張しています。
この単語を除外してしまうと、将来的にオープンソースコード自体は無料で使用できても、ユーザーが必要に応じて自由にソフトウェアを変更することができなくなるだろうと考えているのです。
まず、コスト効率が優れています。オープンソースソフトウェアライセンスの多くは完全に無償で利用できます。Linuxなど多くのソリューションでは、タスク処理を担うハードウェア能力がプロプライエタリオペレーティングシステムを実行するサーバーより少なくてすむため、ハードウェアコストも抑えられます。
また、ベンダーとの契約に拘束されません。多くのITリーダーにとってベンダーロックインは切実な問題です。その理由は、コストの高さや柔軟性に欠けるカスタマイズソリューションなど様々です。一方、OSSではソフトウェアを自由に利用することが認められています。
このことから、OSSは柔軟であると言えます。OSSの場合、ユーザーは何にも縛られません。ソースコードを変更する権利が認められているため、固有のニーズに応じてカスタマイズすることができます。
また、信頼性も確保されています。大規模オープンソースプロジェクトの多くは、数千人のアクティブな開発者が継続的にコードの作成を行っています。これは大半のプロプライエタリプロジェクトを大きく上回る人数です。OSSの陰の立役者となっているのが、オープンソースコミュニティです。バグやセキュリティ上の欠陥の修正から、新たなシステムとの簡単な連携の実現まで、様々な作業に当たっています。
オープンソースには非常に多くのメリットがありますが、デメリットもいくつかあります。
オープンソーステクノロジーの場合、先行投資はほとんど(またはまったく)必要ありません。しかし、長期的または一時的に外部のサポートが必要になる場合があります。オープンソースコミュニティの性質上、社内に専門家が不足している場合はサードパーティのサポートが不可欠になることもあります。
オープンソースソフトウェア開発につきまとう最大の問題はセキュリティです。コードを自由に利用できるということは、悪意のあるユーザーも自由に利用して欠点を見つけられるということになります。
しかし、興味深いデータがあります。2018年以降、全アプリケーションの96%がオープンソーステクノロジーを利用して作成されているのです。
一般的に、オープンソースソフトウェアのセキュリティはプロプライエタリソフトウェアほど高くありません。しかし、必ずしも低いというわけでもありません。オープンソースソフトウェアのセキュリティを批判する人たちがその根拠としてあげるのは、たいてい前述のリスクです。OSSの透明性の高さゆえにハッカーが簡単に脆弱性を見つけてしまうのではないかと懸念しているのです。
しかし、OSSソフトウェアの支持者は、OSSはオープンソースコミュニティによって開発と改良が続けられており、クローズドソフトウェアの多くよりセキュリティが高いと擁護します。コミュニティには、驚くほど迅速に問題を発見し、修正プログラムを開発できるメンバーが(悪意のあるハッカーを凌駕するほど)大勢いるためです。
このことは、むしろOSSの利点だといえます。多くの協力者が参加するOSSプロジェクトでは、民間のソフトウェアよりも問題の発見率が高く、パッチやバージョンのリリースも迅速に行われます。これにより、OSSではセキュリティアップデートを非常に頻繁に行うことができます。
実は、OSSのセキュリティ上の欠陥であるとされているものの多くは、オープンソースコードを使用している商用アプリ側の問題なのです。
2021年の「Open Source Security and Risk Analysis」(OSSRA)レポートによると、コードベース(ソフトウェアを作成する際に使用される一連のソースコード)の91%に開発が中止されたオープンソースコードが含まれていました。
また、コードベースの85%(プロプライエタリコードを含む)で、4年以上前の古いオープンソースコードが使用されていました。こうしたコードは開発が中止されたわけではありません。コミュニティ側はセキュリティアップデートを定期的に行っています。単に、この85%のコードベースがパッチを適用せずにコードを使用しているだけなのです。
さらに、OSSRAが監査したコードベースの60%に、高リスクなオープンソースの脆弱性が含まれていたそうです。
結局のところ、大切なのは使用するソフトウェアのセキュリティや評価を調査することです。商用ライセンスは、ソフトウェアのセキュリティを保証するものではないからです。
OSSについて1つ確かに言えることは、その透明性により、コミュニティが脆弱性の把握・修正を行える可能性が高いということです。一方、クローズドソフトウェアでは、ソフトウェアの所有者やベンダーの信頼性を確認する必要があります。
OutSystemsプラットフォームは、開発者を反復的なタスクから解放し、本来の関心事であるコーディングに集中できるようにする設計になっています。このコーディングが違いを生み出し、ビジネスに大きなインパクトをもたらします。このビジョンを中心となって支えるのが、OutSystems Forgeと開発者コミュニティです。
Forgeは、コミュニティメンバーが開発したOutSystems用のソフトウェアを他のコミュニティメンバーに簡単に共有できるオンラインリポジトリです。こうしたソフトウェアはアプリケーション全体からコンポーネント、コネクタ、テンプレートまで幅広く対応しており、様々なプロジェクトで開発の高速化を支援します。
無償版でOutSystemsのパフォーマンスをぜひお試しください。