プログラマが知るべき97のこと/オープンソースプロジェクトで夢を実現する
仕事でソフトウェア開発をしている人は大勢いますが、その中に、本当に自分の希望どおりのソフトウェアを作ることのできる立場にいる人は多くはないでしょう。夢と現実は違っているものです。たとえば、本当はGoogleやApple、Microsoftなどで働いてみたいとう希望をを持ちながら、今は大手の保険会社から発注されたシステムを作っている、そんな人もいるはずです。実は自分の会社を興して、次の時代の中心をなすような斬新なソフトウェアを作ってみたい、と思っているけれど、今は別の仕事をしているという人もいるかもしれません。ただ、今の仕事をそのまま続けていても、なかなか希望に近づくものではありません。

幸い、希望に近づく方法はあります。それは「オープンソースプロジェクト」に参加する、という方法です。オープンソースプロジェクトは少なくともすでに何千という単位で存在し、その多くは非常に活発に活動しています。オープンソースなら、自分の好きなタイプのソフトウェアに関われる可能性は高いでしょう。たとえば、OS の開発プロジェクトは10以上あるので、OSに興味がある人ならすぐにでもどれかを選んで参加すればいいわけです。その他、音楽、アニメーション、暗号、ロボット工学、ゲーム(スタンドアロンのゲームもあれば、オンラインゲームもあります) 、携帯電話など、どんな分野であっても、探せば1つは関連するプロジェクトを見つけられるはずです。

もちろん、世の中には「うまい話」というのはありません。オープンソースプロジェクトに関われば、自分の時間を多少なりとも犠牲にする必要が出てきます。まさか昼間会社にいる時に関係ない作業をするわけにはいかないからです。昼間は相変わらず、今までと同じように社員としての責任を果たさなくてはなりません。またオープンソースに貢献しでも、お金になることはまずありません。確かに中には、お金になっている人もいますが、大半はそうではないのです。つまり、自分の時間をタダで差し出さなくてはならないということになります(しかし、ゲームをする時間やテレビを見る時間を削るくらいは何でもないでしょう)。オープンソース活動に熱心に取り組めば取り組むほど、自分の本当の希望に気づくのが早くなるでしょう。しかし、プロジェクト参加の前には、会社との雇用契約をよく確かめておく必要があります。会社によっては、たとえ勤務時間外であっても、参加できるプロジェクトに制限を設けているところもあるからです。また、活動中は「知的財産」つまり著作権、特許、商標、企業秘密などに関する法律に違反しないよう、十分注意しなくてはなりません。 オーブンソースは、やる気のあるプログラマにとっては、大きなチャンスを与えてくれるものです。まず、オープンソースプロジェクトに参加すれば、多くの人の仕事ぶりを目の当たりにできます。たとえば、同じ問題を解決するにしても色々な方法があり得ること、目的は同じでも自分と他人とではやり方が違うのだということが学べます。何より大きいのは、他人の書いたコードから多くを学ぶことができるということでしょう。もう1つ大事なのは、プロジェクトに自分のコードやアイデアを提供できるということです。どんなに素晴らしいコードを書いても、どんな素晴らしいアイデアを出しても、すべてが受け入れられるとは限りません。しかし、そうしてアイデアを練り、コードを書いて提供するだけでも、学ぶことはとても多いはずです。自分と興味を同じくする人に出会えるというのも、大きな利点でしょう。出会う人の中には、素晴らしい技術を持った優秀な人も多くいるに違いありません。出会った人との友情は生涯続く可能性があります。そして、能力を存分に発揮し、プロジェクトに大きく貢献すれば、それは立派な「実務経験」となります。本業に加え、自分がまさに興味を持っている技術分野での実務経験を積むことができるのです。 オープンソースプロジェクトへの参加はとても簡単です。開発に必要なツール群(ソースコード管理ツール、エディ夕、プログラミング言語、ビルドシステムなど)は、どれもドキュメントが多数存在しています。参加するプロジェクトを決めてから、そのプロジェクトが使っているツールに関して学べばいいでしょう。多くの場合プロジェクト自体に関するドキュメントは量が少ないのですが、あまり困りません。ソースコードを読んで学ぶことができるからです。システムについて早く理解したいのなら、ドキュメントを充実させることでプロジェクトに貢献するのも1つの方法です。あるいは、プロジェクトにテストコードを書くことで貢献を始めるという方法もあります。テストコードを書くというと、あまり楽しそうには思えないかもしれません。しかし実際は、他人の作ったソフトウェアについて学ぶのに、テストコードを書くほど効果的な方法は無いのです。努力して良いテストコードを書き、バグを見つけ、修正を提案する。プロジェクトを通じて友人を作り自分の好きなソフトウェアに関わることで、自分の希望も早く実現に近づくでしょう。