Rubyist Magazine 第 24 号をお届けする。
今号は、るびま創刊 4 周年にあたる。笹田さんが 4 周年にあたっての現状分析と 今後についてを語る「Rubyist Magazine 4周年に寄せて」、 先日の LL Future でも話題になった Code Golf に関する連載記事「るびまゴルフ 【第 4 回】」、 先日開催された東京 Ruby 会議 01 のレポート記事「RegionalRubyKaigi レポート (01) 東京 Ruby 会議 01」、 Kwartz の作者でもある桑田さんによる3つの記事「テンプレートシステム入門 (1) 歴史編」、「テンプレートシステム入門 (2) 基礎編」、「エラー発生箇所を自動的にエディタで開く EditorKicker」、さらに「0024-RubyNews」と、今回も盛りだくさんの構成でお届けする。
最近の Ruby 界隈の動きとして特筆するべきことは、1.9 安定版リリースに向けての動きと、 地域での活動の動きだろう。
前者については、9/25 に feature freeze となった。これ以降、 安定化に向けての動きが中心となる。
1.9 は当初 2.0 のバージョンに入るはずのものだった仕様が多々入っていることもあり、 残念ながら 1.8 というか、既存の Ruby との互換性が損なわれる面がある。 これについては、今ならまだ(不具合と見なされるものであれば)異論を述べ、 軌道修正を提案することも不可能ではないだろう。 Ruby は未だ進化を続ける言語であり、いずれは 1.9 への移行を強いられることは 確実である。ぜひ、今のうちに trunk 版の 1.9 を試してみていただきたい。 ……ということで、以下、後者について触れる。
21 世紀はコミュニティの時代、と言われることもあるくらい、コミュニティという 単位への注目が高まっている。 これは、血縁、家族的なコミュニティと、町内会的な純粋に居住地域的なコミュニティに 加え、企業という単位の集団が発達したのが 20 世紀であったが、21 世紀には、 これらに含まれない、新しい単位のコミュニティが育つ、といった意味だと思われる。
Ruby のコミュニティも、そのような意味でのコミュニティに含まれるものであろう。 とはいえ、コミュニティの形にも、ネット上のものもあれば特定地域に依存したものも ある。構成人数の規模もまちまちだろう。そのような意味で、「Ruby のコミュニティ」と 一言でいっても、その含意するところは人により大きく異なるだろう。
Ruby におけるコミュニティの歴史を簡単に振り返ってみよう。 当初はネット上のコミュニティ、ruby-list、ruby-dev などの ML を中心とした 動きがあった。ネットニュースにおける fj.comp.* の一部もこれに含まれるかもしれない。 その中から、主に「オフ会」的な動きとして、地域で集まる動きがでてくる。 これは散発的なものが中心だった。ML のメンバーは現在でも継続的に活動をしている 人々も多いが、その外部で継続的に活動を続けている団体はおそらくほとんど ないのではないかと思われる。
2000 年以降は、ある程度普及し始めてきた Ruby に興味を持つ人々による 勉強会的なものが立ち上がりはじめる。 また、LL* や OSC といった総合的な IT 系イベントが開催されるにあたり、 Ruby コミュニティを代表する団体や意思決定機能が要求されるようになる。 これは「日本 Ruby の会」の設立にも少なからず影響している。
そして、主に Ruby on Rails の登場とともに、Ruby が一般層にも普及し始めた 2005 年以降、地域コミュニティや勉強会などが活発化する。このころ以降に 立ち上がったコミュニティも、案外多いと思われる。この傾向は現在でも続いており、 先日行われた東京 Ruby 会議で発表された関東の各種 *.rb も そうした良い例としてとらえることができる。
振り返ってみると、コミュニティができるには、そのジャンルに 新しい人が多く参入してきたことがきっかけとなることが多いのではないか。 Ruby の場合も、Rails の影響で Ruby を実際に利用する機会のある 人が急増したため、コミュニティ活動の動きが強まった、ということは 確実にあるだろう。
なお、コミュニティ結成の動きについては、Ruby Conference の開催という目的のもと、 海外にも広がるのだが、これについては別の機会に委ねたい。
さて、そのような様々な背景を持つコミュニティが多数生まれ、それらが継続的に活動を 続けて行くことは、とても望ましいことではある。しかしながら、 継続していくことは難しいことであり、さらに言えば、単純に継続することを 無条件に肯定することもできない。
コミュニティに期待される機能の一つに、コミュニティのメンバーが成長できる場となること、 メンバーの成長を促すことがある。もちろん、メンバーも役割も固定化されたコミュニティも ありうる。しかしながら、 コミュニティに新たに関わる多くの人は、自身の成長とコミュニティの成長との相互作用が 起きることを期待するだろう。 いずれにしても、活気があり、成長の続くジャンルには、新しい構成員が必ず現れる。 コミュニティは、その受け皿となるべく、新しい人を受け入れ、育てなければいけない。
しかし、ある程度成熟してしまったコミュニティにとって、 育てることは難しい。なぜだろうか。 それは、コミュニティと一緒に育つ、ということができなくなるからだ。
コミュニティの黎明期は、人を育てることと不可分である。 コミュニティ立ち上げのメンバーは得てして不慣れなものである (人は自分の求めるコミュニティがないから立ち上げを行うものであり、 コミュニティを立ち上げること自体を目的とする人はあまりいない)。 そしてコミュニティの成熟は、そこに属する人々の成熟を否応無しに要求する。 それはつまり、そこに属し続けようとするだけで、成長できるのである。
しかしながら、成熟したコミュニティでは、新たな構成員に対し、彼/彼女の成熟を要求しない。 もうコミュニティが回る形ができてしまっているのである。 ひどい場合は、それをさらに成長させようとする動きを discourage してしまうだろう。 それは成長を仕掛けようとした新参者をも discourage する。
人とコミュニティを同時に成長させるには、例えば拡大路線がある。 規模や内容の拡大は、それだけで成長を必要とする。 RubyKaigi の運営は、現状このような軌道に乗っている。毎年適切な規模に 設定をすることが、コミュニティの成長と安定のバランスをとるための 重要な要素となっている。 もっとも、成長が困難、もしくは不可能であるような規模まで続いてしまった場合、 副作用の方が大きいだろう。そのため、これはいつまでも継続できる方法ではないだろう。
場合によっては、新しいコミュニティが次々と生まれていく一方で、 古いコミュニティが衰退していったり、あるいは路線変更していったり、 いずれにしても新しいコミュニティが古いコミュニティに取って代わるような 形を想定した方がよいのかもしれない。 もっとも、古いコミュニティにしても、ある程度以上の規模がある場合は、 「取って代わる」ことが困難なこともある。それでも、 例えばコミュニティ自体は継続するとしても、そのメンバーや活動内容を変えるといった、 「名」は同じでも「実」は変容していくような形なら可能かもしれない。
アプリケーション、プロダクトにもライフサイクルがあるように、 コミュニティにもライフサイクルがある。それを踏まえ、コミュニティや構成員の 新陳代謝を含めた、ある種の「メタコミュニティ」的なものを想定しながら、 コミュニティを設計/実装していく。そういった視点も、無駄なものではないだろう。
そういう意味では、地域から小規模な活動が盛んに発生すること、そのような 活動に注目が集まることは、非常に望ましいことだと言える。
そしてそれは Ruby の会や、この「るびま」にも同様のことが当てはまる。 あまり遠くない将来、 ネガティブなものであれ、ポジティブなものであれ、 抜本的な判断が必要なのだろう、とは思っている。