カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

個人プログラマは、生き残る戦略としてオープンソースを採用すべきではないか

概要: と僕は考えている


今日の、

は何について書こうかなぁと思っていたら、 いつの間にか今日の分が埋まっていたので、 暇つぶしがてらこれを書く。


プログラマは、自らのコードを生き延びさせるためにオープンソース化を行うべき

だと、僕はまず最初に思う。

というか、特に個人だけで開発してるとそうなんだけど、

  1. 個人だけの開発体制でかつクローズドソースの場合、
  2. ソースコードのロスト or なんらの事情による開発のストップによって
  3. そのプロダクトが永遠に死ぬ

ということが起き得るし、また、それが広く使われるような、 大変有益なソフトウェアであった場合、多くの利用者が途方にくれる、 という自体になる。

で、こういった、

  1. 開発者の突然の死等による、開発の永久停止
  2. ソースコードのロストによる、開発の継続の不可能化
  3. あと、開発者やる気無くして開発が止まった

等という理由で、そのプロダクトや、そのソフトウェアの開発が、 ある種の死を迎えてしまう、ということを、僕としては、 極力避けたい、と考えているし、そう考えているが故に、

  • 自分のプロダクト等をすべてオープンソースで提供する

という方針をもって開発している。

無論、作り出したけど、開発が途中で止まって放置してる、 とか、あるいは、これちょっと公開するクオリティに達してないから、 公開するのはもうちょい後にしよう、とか、そういう表に出してないコード類、というは確かに存在する。

けれども、これらはいわば生まれる前の段階の卵みたいなモノであって、 僕としてはオープンソースとして自分のコードを世に出すときは、 せめて自分のコードをヒヨコぐらいまで育ててからじゃないとなー、 とか思ってる。

で、それは何故か、と言えば、まあぶっちゃけ、

  • 不完全な動かないコード

使おうにも使えなくてがっかり、という自体を招くし、僕としてもそういうのに遭遇してがっかりするコトがよくあるので、やっぱり自分としてはそういうのは避けたいな、と僕は思う。

オープンソース化は、 自分が死んでも代わりはいるもの 、という状態を作り出せる

上記の話と若干かぶるけど、

  • オープンソースでコードを公開する

というのは、もし自分が開発を継続できなくなっても、もしそれが本当に必要とされるモノであれば、誰かが開発を継続してくれる、という利点がある。

そしてこれは、今の僕のように、大震災が来て大津波がくれば、住処はおろか、自らの命もろとも濁流に流される、というような場所に住んでる身としては、結構重要だったりする。

また、そういう大震災や大災害に巻き込まれにくい場所に住んでいたとしても、病気や事故による突然の死はそう簡単には避けられないし、また、火事や事件に巻き込まれて、っていうような場合でも、自分が死んで、コードも道連れになる、というようなコトが避けられると思うし、また自分が単にやる気を無くしたり、あるいは、もうそれについて開発する気はない、という状態になっても、Github等にOSSとして公開していれば、誰かがforkして開発を続けてくれる、みたいなコトが期待できると思う。

で、僕としてはそういう、

  • 開発者のSPoF=単一障害点を無くす

というのが重要だと考えているし、また、自分が何かを開発する際にも、この辺りを無意識に重視しているように思う。

オープンソース開発は、その開発者の成績簿になる

あとこれは実社会に出るときの話だけど、オープンソースソフトウェアの開発は、その開発者に取って、一種の成績簿的な役割を果たすのではないかな、と思う。

というのも、オープンソースソフトウェアって、個人で開発してたりすると、その人の開発者として実力が全裸で公開されているようなモノだし、また広く使われるようなOSS Productを開発できるような技量があれば、そういう開発者は引く手数多で職に困ったり、食うに困ったりすることには、そうそう陥らないのではないかな、とか思ったりする。

あと企業として雇う側としても、その人の書いたソースコードを見て、この人はどれくらいの実力があるか、とか見極められるし、またモダンな開発環境を持つ会社とかだと、自社の企業文化にその人が合うか、とかも判断しやすくなると思われるので、そういった面では、両刃の刃的な面もあるだろうけれど、まったくソースコードを公開しない開発者よりも、オープンソースメインで開発している開発者の方が、ある程度は有利になるんじゃないかな、と思います。

で、まとめというか結局何が言いたいのか

  1. 開発者は自身のProduct をOSSにすることによって、自分がSPoFになることを防げる
  2. 自分がSPoFになるコトを避けるコトは、多数の利用者の利益になる
  3. あと有益なOSSを作り広く広められれば、開発者として食う困らない

という辺りでしょうか。

あともう一つ個人的に言えば、僕はどうも自分の書いたコードを非公開についてバイナリだけ配布する、みたいなのを、自分が行うのは気持ち悪いというか、性に合わないと感じているので、そういった面でも、自分の書いたコードは積極的にOSSにしていきたいと僕は思ってる。

けれどまあこういった方針は、しがらみの無い環境じゃないと取れないだろうし、また企業で特許とか企業秘密が絡んだコードではこういう方針は取れないと思うので、その辺りはまあ個人プログラマであるうちの特権かな、とは感じます。

という訳で今日の考え事は以上。

暇つぶしというより、自分の考えを整理する時間になった気がします。