仕事でオープンソース

僕はほとんど遊びでオープンソースしているんですごく悠長に考えちゃっているんですが、8月からどこかで仕事に就くはずなので、仕事でオープンソースというのはどういうことなんだろうと考えてみました。


オープンソースにするメリット
デバッグをすごい人数で行うことができるかも。(デバッグは並列可能)
・作っている側が思ってもみなかったアイディアがユーザから寄せられるかも。
・勉強熱心な開発者のアドバイスや改善策を得られるかも。


コスト*1
オープンソースプロダクトの開発をする単純なコスト
オープンソースのプロダクトを作ったり、メンテするのにかかるコストです。

・ユーザをコミュニティにひきつける魅力を作るコスト
魅力はプロダクト自身の長所だったり、コミュニティの雰囲気だったりするわけですが、これはきっと計上するのは難しいでしょう。でも魅力を作ろうとするのなら、その方法にかかるコストは計れるかも知れません。しかし、僕が面白そうだと思う大抵のプロダクトはそういうものを作ろうとしているようにはあまり見えなくて、むしろ開発者自身が楽しいからという風にも見受けられます。



一般的な企業がオープンソースで仕事をする日が来る気はしないのですが、一部の企業は積極的にオープンソースに向かっていく気がします。その一部の企業はどんな感じなのでしょうか?僕は詳しく知らないので、憶測を書きます。


オープンソースとして公開できる部分をちゃんと切り出せる。
例えば、大抵の会社やプロジェクトでは何らかの共通部分をまとめたライブラリがあると思うのですが、このライブラリの依存関係が適切に整理されており、公開できるようになっているということです。
公開するにはソースコードの他に、ドキュメントも必要ですし、インストール方法もある程度一般的な方がいいでしょう。企業としてそれらのスキルを持った開発者たちを抱えられるってところがポイントです。


オープンソースにするだけのコストを割ける。
例えばアプリケーション開発を行っている会社なら、そのアプリケーションの開発にオープンソースプロダクトの開発をうまく含めるかもしれませんし、別立てでコストを計上しアプリケーションの開発時にその分を上乗せするかもしれませんし、その辺はいろんなやり方があると思います。
ここでのポイントは、会社がちゃんとオープンソースをやろうって意識していることです。一部の開発者が「わーい!オープンソースにしーようっと」って(僕みたいに)喜んでいるだけでは仕事にはなりません。


・積極的に人を集める
いい人材を確保するのはどんな会社でも重要な課題だと思うのですが、システム屋の多くの企業は人集めをするのに、他の多くの職種の企業と同じように福利厚生や給料で人を集めようとしている気がします。確かにそれらは重要な要素ですが、仕事できる人=ハッカー*2という乱暴な前提を導入するなら、重要なことを見落としています。それは、その会社で楽しいハッキングができるかどうかです。

楽しいハッキングができるかどうかをハッカーが判断する材料はなんでしょうか?きっとそれは先人がいるかどうかです。では先人がいるかどうかはどうやって?ハッキングのアピールがあるかどうかです。面白い記事や面白いプロダクトがあれば、それに関わりたいと思うのがハッカーの心情ってやつらしいです。技術的なトピックがサイトに掲載されていればハッカーの注目を引けるかもしれません。でも一番のアピールはハッキングしたくなるモノを公開してしまうことです。



まあ当てずっぽうですので大きく外れているかもしれません。でもあたっているとすれば、オープンソースをやっている企業はそれをやれるだけの人材(マネージャと開発者)がいるので、製品が面白ければいい人材が集まりやすく、そうでない企業は中々いい人材が集まらずオープンソースから遠のきやすいと思います。

では、オープンソースが出来ていない企業が将来オープンソースをやるためにはどうしたらいいのでしょうか?上の論法だと永遠にできない気がしてしまって夢も希望もあったもんじゃありません。そこで自分が起業するとしたらどうするかを考えてみます。


1.いい人材を雇う。
僕にお金があるなら、いい人材を雇おうとするでしょう。しかし問題がひとつ。いい人材をどのように探すのでしょうか?まあ地道にコネクションを探っていくしかない気がします。じゃあオープンソースに理解のある人とコネクションを作るには?オープンソースコミュニティに参加するのが一番近道です。


2.何かアピールする。
人を集めるために何かアピールしようとします。何をアピールするべきでしょうか。これはやっぱり自分が面白そうだと思えるものをアピールするべきでしょう。コミュニティに参加してどんなことが今流行っているのかを知るのも重要ですが、自分が楽めないと他の人に楽しそうにも写らない気がします。


3.とにかくコミュニティに参加する
いい人材を雇うだけのお金も、アピールしたい何かもなかったとしたら?自分が面白いと思えるトピックに関係するコミュニティに参加することです。そこで議論したり、オフ会に行くことで思わぬ出会いや何か貢献できることがあるかもしれません。確実さはありませんが。


うーん、他になにか・・・・思いつかないっす。



マネージャとしてはお金払って仕事してもらっても企業の利益につながらないっていうんじゃやってられませんよね。開発者がちゃんとその辺を考慮して、直接の利益にはつながらないかもしれないけど、人材集めや教育効果、品質向上などのメリットがあると胸張って言えて、マネージャがちゃんと理解できる。そんな関係っていいなー。多分そういう関係を作るには時間がかかると思うんだけど。きっとそんなマネージャがいる会社がどこかにあるはず。

考えてみたらそういう関係って別にオープンソースじゃなくてもOKじゃん。オープンソースであることよりマネージャといい関係をキープできる方が僕は嬉しいな。

*1:もっといい言葉があると思うんだけど、思いつかないっす

*2:クラッカーじゃないっすよ