Alt.NET カンファレンス

2007年10月9日

先週末、Alt.NETカンファレンスに参加しました。ブログスフィアで私がずっと注目していた人々が、初めて「Alt.NET」という名前で集まった会でした。彼らは長年Microsoftテクノロジーを使用してきたユーザーで、自分たちの開発哲学がレドモンド(Microsoft本社)の正統派とされるものとずれてきていると感じています。一部の人はMicrosoftから離れることを検討していますが、このグループはMicrosoftの世界にとどまり、影響を与えようと熱心です。

「alt.net」という言葉は、David Laribee氏が自身のブログで作った造語です。カンファレンスはオープンスペース形式で開催されましたが、このコミュニティの性質に特に適切なスタイルだと感じました。私はこのコミュニティを代表したり、定義したりするつもりはありません。ここに書かれているのは、私が見て聞いて解釈したことです。

オルタナティブ

話題になったことの1つは、「オルタナティブ」という名前についてでした。一部の人は、この名前がこのグループがMicrosoftに反対していることを暗示しているように感じ、不快感を示しました。「オルタナティブ」の別の見方は、「選択」を受け入れるものということです。多くのコミュニティは、多くの選択肢を持つことでより強くなると考えています(Unixコミュニティがすぐに思い浮かびます)。ソフトウェア開発において、1つの解決策があらゆる状況に最適であることは稀です。選択肢があるということは、自分の状況に最適な解決策はどれかを考えなければならないことを意味しますが、私はハンマーでナットを回そうとするよりも、その方が好きです。そして、これは個人的な経験や好みが異なる選択につながることを意味します。私たちはプログラマーかもしれませんが、それでも人間であり、アルゴリズムの具現化ではありません。

alt.netの考え方は、私にとって非常に馴染み深いものです。アジャイル、オブジェクト指向、パターン、TDD、DDDが混在しており、まさに私が好むソフトウェア開発の流派です。(適切な名前がないので、OOPSLA流のソフトウェア開発と呼ぶことにします。)現時点では、OOPSLA流に合わない主流のMicrosoftの正統派があると信じている人が確かにいます。そして、それに対する不満もいくつかあります。しかし、ここで重要なのは、alt.netコミュニティは、認識されている主流のMicrosoftのルートを消去すべきだと考えているのではなく、Microsoftの世界は異なるアプローチを受け入れるのに十分な大きさであると考えているということです。

「オルタナティブ」が良い名前かどうかという議論に加えて、そもそも名前が必要かどうかという議論もありました。新語を compulsively 作る私としては、名前は役に立つと考えていることは当然でしょう。ここには明らかに共通のソフトウェア開発スタイルが形成されており、それに名前を付けることで、より簡単に話すことができます。必然的に、用語を作ることに苛立つ人もいるでしょうが、私はその有用性は、その反対意見よりも重要だと考えています。

参加型コミュニティ

alt.netの重要な特徴は、参加型コミュニティであることです。従来のユーザーカンファレンスでは、ベンダーが議題を決定します。ほとんどのセッションは、ベンダーがコミュニティに自社ツールの使い方を説明するものです。優れたベンダーは顧客コミュニティの声に耳を傾け、コミュニティの要望に応える新製品を開発することで対応します。

参加型コミュニティは違います。彼らはベンダーに耳を傾けて適切な製品を提供してもらうだけでなく、新製品の開発に参加したいと考えています。Javaの世界で主導権を握ったのは、まさにこのような参加型コミュニティです。JUnit、IBatis、Spring、Hibernateなどは、ベンダーからではなく、「顧客」によって開発されました。ソフトウェア業界の性質上、多くの顧客は、特にオープンソースのコミュニティと精神と結びついた場合、ベンダー企業と同じくらい重要な製品を生み出す能力を持っていることが多いのです。

Microsoftにとって、今後大きな課題となるのは、このような参加意識が高く、意見の強いコミュニティとどのように関わっていくかです。このようなグループを敵対者として扱うと、貴重な製品、そしてさらに重要なことに、彼らとつながりのある有能な人材を失うことになります。このようなコミュニティと関わることは、大きなチャンスをもたらします。エンタープライズJavaを取り巻く参加型コミュニティが、エンタープライズJavaプラットフォームを救ったと私は主張します。Microsoftにとって、このすべてにおける大きな課題は、オープンソース開発を受け入れる方法を見つけることです。特にIron Rubyに関する最近の兆候は、Microsoftの少なくとも一部が正しい方向に向かっていることを示唆しています。

正しい方向に向かっているもう1つの兆候は、Scott Guthrie氏によるASP.NET MVCフレームワークのデモンストレーションでした(Scott Hanselman氏のビデオも参照)。これは私にとって非常に興味深いものでした。製品自体が特に革新的なものではない(そしてそれは不満ではありません)からではなく、それを取り巻く哲学的な兆候のためです。

まず、Scott Guthrie氏がこの小さなカンファレンスでこの製品を発表することを約束したという事実があります。次に、テスト容易性を重視した明確な設計目標がありました。この分野における他の研究から明確に理解し、学ぶことに重点を置いています。Microsoft以外のツールとの連携を可能にし、拡張を促進するプラグイン機能を追加しました。多くの参加者は、.NET以来、これほど製品発表に興奮したことはなかったと述べています。

また、「オルタナティブ」の良い例でもあります。MVCフレームワークはWebフォームを置き換えることを意図したものではなく、プログラマーはWebフォームとMVCのどちらを使用するかを選択できます。

このようなコミュニティにおけるもう1つの問題は、批判を敵意と同一視しないコミュニティであるということです。多くのベンダーは、自分を批判する人は誰でも敵だと考えています。実際には、多くの場合、友人は批判的であるときに最も価値があります。いかなる大企業と同様に、Microsoftは矛盾した反応を示すことがあります。組織の中には、友人は決して批判すべきではないと考えている部分が確かにあります。参加型コミュニティと協力するためには、友好的な批判を尊重することを学ぶ必要があります。同様に、コミュニティの人々は、意地悪にならずに批判する方法を学ぶ必要があります。これは、私たちの職業では特にまれな資質です。

排他的なコミュニティ

alt.netコミュニティが(悪い意味で)排他的なコミュニティかどうかについて、(特にブログスフィアで)議論がありました。私が考えるのに役立つ方法は、カンファレンス中に何度か出てきた質問です。alt.netユーザーグループを別に作るべきでしょうか、それとも既存のユーザーグループに影響を与えて変えていくべきでしょうか? これに対する私の答えは「両方」です。焦点を絞ったalt.netユーザーグループは、議論される内容と、グループの基盤となる価値観と原則についての期待を設定します。このスタイルの開発を行っている人々は、他の開発者と話し合って、彼らから学ぶ必要があります。私は10年以上このスタイルで開発に従事してきましたが、まだまだ学ぶべきことがたくさんあります。集中的な集まりの利点は、このタイプのコンテンツに集中できることです。

専門的なalt.netユーザーグループは、他人を排除しようとした場合にのみ排他的になります。alt.netカンファレンスは、少なくともカンファレンスが満員になるまでは誰でも参加できたため、排他的ではありませんでした。alt.netユーザーグループが誰でも受け入れる限り、それは良いことです。

同時に、alt.netの人々がより広範な.NETコミュニティに参加することも重要です。私はこのソフトウェア開発スタイルを推奨しています。なぜなら、それが本当に効果的だと考えているからです。そのため、できるだけ多くの人に、その方法と理由を伝えようとするのは重要だと考えています。こうすることで、他の人々はこのアイデアに触れ、テクニックを理解する機会を得て、試してみるかどうかを選択できます。多くのalt.netユーザーが、これらのテクニックとその経験について、さまざまなMicrosoft指向のカンファレンスで話そうとしていると思います。


私はalt.netコミュニティに大きな期待を寄せています。この種のコミュニティは、Microsoftエコシステムの将来の存続にとって重要であり、私は健全なMicrosoftの世界を望んでいます。Microsoftがこのコミュニティに参加し、多くの主要なMicrosoft社員が喜んでalt.netユーザーであると言えるようになることを願っています。alt.netユーザーが、自分たちを維持することと、コミュニティに参加する人々に開かれていることの間の微妙なバランスをとることができることを願っています。私がその実現に貢献できることを願っています。この最初のカンファレンスでは素晴らしい精神があり、それが将来への良い燃料となるでしょう。