新しいフリーソフトウェアプロジェクトをスタートさせる方法――概論オープンソースソフトウェアの育て方(2/2 ページ)

» 2009年08月18日 14時20分 公開
[Karl Fogel, ]
前のページへ 1|2       

手持ちのもので始めよう

 まわりを見渡してみたけれど望みどおりのものが見つかりませんでした。ということで、結局新しいプロジェクトを始めることになりました。

 さて何をしたらいいのでしょう?

 フリーソフトウェアプロジェクトの立ち上げ時に最も厄介なのは、個人的なビジョンをみんなに分かる形に置き換えることです。あなた(あるいはあなたの属する組織)にとっては何がやりたいのかは明白でしょう。しかし、そのプロジェクトの目標が何なのかを一般にも分かるように表明することは、それなりに大変な作業です。しかし、かならず時間を割いてそれをやらなければなりません。

 あなた(そして共同でプロジェクトを立ち上げたほかのメンバー)は、まず「プロジェクトが実際何なのか」、すなわち、「何をやるのか」と同時に「何をやらないのか」という限界を決定し、ミッションステートメントを書き上げなければなりません。普通は、これはそれほど困難なことではありません。しかし、この作業によって、プロジェクトの本質に関する暗黙の了解やさらには意見の相違まで浮かび上がってくるかもしれません。それでいいんです。後になってからそれが判明するよりも、早いうちに見つけた方が解決しやすくなります。この作業が終われば、次にすることは一般公開用のパッケージを作成することです。これは、ぶっちゃけて言うと単純でつまらない純然たる骨折り仕事です。

 何がそんなに面倒くさいのかというと、その作業の大半が、既にみんなが知っている――ここでいう「みんな」とは、これまでずっとプロジェクトにかかわってきた人のことです――ことをまとめ上げて文書化するということだからです。つまり、その作業を実際に行う人には直接的なメリットは何もないのです。彼らにとっては「このプロジェクトは……」というようなREADMEファイルは不要ですし、もちろん設計文書やユーザーマニュアルも不要です。ソフトウェアをソースで配布するときにみんなが標準的に使っているようなコードツリーを構成する必要も感じていないでしょう。別にディレクトリ構成がどうであっても彼らは気にしません。だってもうそのコードの内容を熟知しているのだし、コードが動き出せば、後はどう使えばいいのかも知っているわけですから。彼らにとっては、そのプロジェクトの基本的な設計方針が文書化されていなくても平気です。だってそれは彼らの頭の中にちゃんとあるのですから。

 一方、新参者にとってはそのようなドキュメントは必須です。とはいえ、幸いなことにすべてのドキュメントが一度に必要となるわけではありません。プロジェクトを公開する前に、あらゆるリソースを提供できるようにしておく必要はありません。理想を言えば、新しいオープンソースプロジェクトを始めるときには設計文書や完全なユーザーマニュアル(今後実装予定の機能についての説明も含む)、複数プラットフォームで動作するきれいにパッケージされたコードなどがそろっているといいのでしょう。しかし現実的には、これらをばっちりそろえることは手間が掛かりすぎます。それに何より、ひとたびプロジェクトが動き出せば、これらの作業に対するボランティアの協力を正当に期待できるのです。

 しかし、何が本当に必要なのかといえば、見栄えの調整に十分に力を入れ、新入りさんが不慣れという名の最初の障壁を乗り越えられるようにすることです。この作業をブートストラップ過程の第一段階、プロジェクトをいわば活性化エネルギー最小の状態に持っていくことだと考えてください。新入りさんが「このプロジェクトに対して何らかのかかわりと持とう」と考えるために必要なエネルギーのしきい値のことを、どこかの誰かがハクティベーション(hacktivation)*1エネルギーと呼んでいました。ハクティベーションエネルギーが低ければ低いほどいい、というわけです。あなたが最初に行う作業は、プロジェクトのハクティベーションエネルギーを下げていろいろな人たちがプロジェクトに参加しやすくすることとなります。

 以下の各項では、新しいプロジェクトをはじめるに当たって重要となる内容について個別に説明します。そのプロジェクトをはじめて知った人が遭遇するであろう順に並べていますが、もちろんこのとおりの順で作成しなくても構いません。これらの項目を、チェックリストとして用いるといいでしょう。プロジェクトをはじめる際にはこれらの各項目が網羅されていることを確認するか、あるいはもし省略した項目がある場合は、せめて予想される結果が満足のいくものであることを確認しましょう。

[1] hackとactivationを組み合わせた造語? おそらくAn Overview of Guile Programmingからの引用だと思われます。


著者:Fogel Karl

翻訳者:高木 正弘

翻訳者:Takaoka Yoshinari(a.k.a mumumu)

製作著作 © 2005, 2006, 2007, 2008, 2009 Karl Fogel, 高木正弘, Yoshinari Takaoka(a.k.a mumumu), under a CreativeCommons Attribution-ShareAlike (表示・継承) license (3.0, 2.1-jp)


よいフリーソフトウェアを作ることは本質的に価値のある目標です。その方法を模索している読者の皆さんが、本連載「オープンソースソフトウェアの育て方」で何かのヒントを得てくだされば幸いです。


前のページへ 1|2       

content on this article is licensed under a Creative Commons License.

注目のテーマ