オープンソースへの取り組みオープンソースへの取り組み弊社ではオープンソースソフトウェアを積極的に利用し、公開し、推進していくことを目標にかかげています「オープンソース」とは何?通常ソフトウェアを使う場合、そのプログラムの中身がブラックボックスであってもプログラムは動作すれば問題ありません。マイクロソフトのExcelは購入しインストールすれば誰でも使用することができますが、そのプログラムの中身は企業秘密で、ごく一部の人しか見ることができません。この「プログラムの中身」が「ソースコード」です。「オープンソース」とは「ソースコードをオープンにする」ことです。「オープンソース」にすると誰にメリットがあるの?では、「ソースコードをオープンにする」ことで私たちはどのようなメリットがあり、どのようなデメリットがあるのでしょうか?例えばこれを読んでいるあなたの会社が弊社に顧客管理システムを発注した、とします。この場合、弊社はシステムを開発し費用を貴社から受けとります。この時もしその顧客管理システムのソースコードをホームページから誰でもダウンロードできるようにしたとしたら、それは「オープンソース」になります。この場合、貴社は費用を支払い弊社が開発の手間をかけたのに、何もしていない第三者がそれを無償で入手できることになります。なんとなく不公平な感じがしますね。目的のシステムが完成したのであれば貴社も弊社も目標達成でWin-Winです。何もしていない第三者にWinを分け与えてしまったとしても、それでWin-Winの関係が崩れてしまうわけではないのではないでしょうか?このように、従来の「わたし1+あなた1+だれか0=2」の従来型開発スタイルに対して、「わたし1+あなた1+だれか1=3」の開発スタイルの方が、トータルではプラスが大きい、と考えるのがオープンソースの基本的な考え方です。これは開発者からの提案なので、ユーザの方の目線ではわかりにくいかもしれません。自分が第三者になった場合のことを考えると、わかりやすくなるでしょう。これまでの仮定とは逆に第三者の立場になってみましょう。貴社は顧客管理システムが欲しいので弊社に見積もりを取った。ところがネット上で「オープンソース」公開されている同等のシステムを発見した、とします。貴社にとってのメリットはもちろん、弊社に発注しなくても無償でシステムを入手できるという点にあります。実は他社に最適化されたシステムを導入しても自社の業務に最適化できない、やったとしても後追いになってしまう、という問題があります。その無償のシステムの導入は自力でできるのか?という問題もあります。そこで、弊社の出番です。弊社(に限らずオープンソース製品を得意とする業者であればどこでも)は、既存のオープンソース製品をカスタマイズし貴社の業務に沿うように改良してから納品します。このように既存の製品を改良/改造できるのもまた、オープンソース製品のメリットです。この方法を取ることで弊社は一から作る手間と時間を削減しつつプロジェクトを完成させることができ、貴社は「最適化されていない」「導入の手間」というオープンソースのデメリットを回避しつつ開発経費も削減できます。中小規模の事業者同士でのシステム開発に合った手法と言えるでしょう。「オープンソース」活用の実際ここまで読んでいただいた方にはだいたい察しがついたかと思いますが、「オープンソース」は「理想的なものが無償で入手できる夢のような世界」でも「ビジネスチャンスを失なう極悪な文化」でもありません。「上手く活用すればメリットを得られる手法」です。やって活用すればメリットを得られるのでしょうか?先ほどは極端な例を紹介しましたが、実際には納品するシステムをそのままオープンソースとして公開するケースはほとんどありません。発注元の業務形態に特化しているシステムをそのまま公開してもそれを他の誰も有効活用できないからです。「オープンソース」のメリットの中心はその「再利用性」にあります。理想的なストーリーとしては、貴社が弊社にシステムを発注し、弊社が開発を行なう際、第三者によってオープンソースとして公開されているシステムの中から貴社の希望しているシステムに似ているものを利用し貴社向けにカスタマイズします。弊社は完成したシステムのうち自社によって追加開発された部分を汎用的に利用できる形で公開し、オリジナルの開発者にフィードバックします。別の第三者によって使われることもあります。第三者がそれを改良した場合には追加部分が弊社にフィードバックされ、それが有用なものであれば貴社は弊社のシステムにそれを追加で組み込みアップグレードすることができます。このようにオープンソースの活用というのは「持ちつ持たれつ」の輪の中に積極的に入ってこそ実現されるのです。株式会社SGNが目指すオープンソースのある世界オープンソースの積極的利用システム開発やWebサービスなどの開発にオープンソース製品を利用し、コストダウンと品質向上を図る。他者が開発/管理しているオープンソースプロジェクトに積極的に参加し、フィードバックによる相乗効果を計る。自社が開発したシステムの中で、再利用可能なものは積極的にオープンソース化し、技術の発展に努める。あるオープンソース製品の中から有用なものをピックアップし検証する。その検証結果を公開し利用を促進する。