0035 号 巻頭言

コミュニティによる開発へのお誘い

Rubyist Magazine 第 35 号をお届けする。

今号をもって、Rubyist Magazine は無事に 7 周年を迎えた。 RubyKaigi2011 会場や ruby-list ML などで募ったお祝いのメッセージを集めた 【七周年記念企画】 Rubyist Magazine へのたより 、 7 周年を振り返る Rubyist Magazine 七周年、 そして 7 周年記念という予定ではなかったのだが何とか今号に間に合ったので 7 周年記念ということにしておきたい、Ruby 1.9 のリリースマネージャとしても有名な Yugui さんをインタビュイーにお迎えした Rubyist Hotlinks 【第 28 回】 Yugui さん、 案外多くはなさそうな Ruby 1.9 に対応した人工無能である Reudy1.9 を Glass_saga さんが紹介する 人工無能 Reudy (ロイディ) 1.9、 yhara さんが ruby-dev 専用の翻訳サービスサイトを作って「言語の壁」を乗り越える試みを紹介する ruby-dev translationのご紹介、 そういえばるびまの RSpec 連載はどうなったんでしょうねと思いつつ、赤松さんが RSpec の書き方について説明する 改めて学ぶ RSpec 組込み機器向けの Web フレームワーク Alone の概要と事例を紹介する東さんの 組み込み向けウェブインターフェースフレームワーク「Alone」とその応用機器の紹介、 最近人気の高いサーバ構成管理ツール Chef の概要を諸富さんが紹介する Chef でサーバ管理を楽チンにしよう! (第 1 回)、 先日行われた RubyKaigi 2011 の舞台裏を紹介するシリーズ第1回である Making of RubyKaigi2011 第一回、 なぜか一年遅れで RubyKaigi 2010 の運営を振り返るインタビュー企画 RubyKaigi2010 後の角谷さん・島田さんインタビュー それ以外にも最近行われた内外の Ruby 関連イベントの参加レポート記事として RegionalRubyKaigi レポート (24) 松江 Ruby 会議 03、 そして Ruby 関連イベント という、充実した内容となった。


突然だが、あなたはフリーソフトウェア開発、オープンソースソフトウェア開発に貢献しているだろうか。

こんな問い方をすると、もしかしたら少々居心地の悪くなる方もいるかもしれない。 実際ここのところ、オープンソースを利用したら何かしらオープンソース、 もしくはオープンソースのコミュニティにもっと自分は貢献しないといけない、するべきではないかというような言葉を何度か目にする機会があった。

確かにそういう気持ちになるのは理解できるし、また貢献しよう!という呼びかけは 実際にオープンソース開発へのコミットメントを促すためには重要なきっかけになりうるものではある (が、貢献するべき!という主張とは微妙に異なることに注意したい)。 そうやって背中を押してくれるような動きは大切なことで、実際に背中を押されて勇気を出せるようになる人もいるだろう。

しかし、そのように背中を押すことと、それを義務であるかのように思ってしまうことは別のことだ。 オープンソースは何も貢献しない人に対しても開かれている。 オープンソースはそのライセンスからしても、自由に使ってもいいし、自由に捨ててもいいことになっている。 貢献できていない自分に対して後ろめたい気持ちを持っている人に対しては、そんなこと気にしなくてもいいから、まずは存分に使い倒してほしいと伝えたい。

オープンソースはあなたや私の協力を強制しない。その大前提をまず共有しておきたい。

そしてその上で、少しばかり力を込めて主張したい。オープンソースを利用している開発者であれば、オープンソースコミュニティで行われている開発に対して、何かしらの形で関わってみるべきだと思う。

もっとも、ここで言う「コミュニティ」というのは、日頃開催されている勉強会やイベントであったり、 ML や twitter で日常会話や非日常的な会話を交わし合うことだけを指しているのではない。 オープンソースには(一人でもくもく開発・利用している場合は除き)「コミュニティ」 というものは欠かせないものだが、そのようなオフラインやオンラインでの交流とは少し異なる。

オープンソースを開発するためのコミュニティは、 基本的にはコードの公開とその利用、そしてパッチやバグ報告、要望などを含めた相互のフィードバックの交換からなる。実際に Ruby でも、まつもとさんも含めたほとんどのコアチームの方々や、それ以外の Rubyist とはまったく会う機会もないまま、Ruby に対して大きな貢献をした方もいる(ここでは Guy Decoux のことを念頭に置いている)。Ruby のように非常に大きな、国際的な集まりもあれば、すぐ近くにいる数名の集まりもあれば、たまたまどこかのレポジトリですれ違った、それまでは全然関わりもなかった、世界各地にいる数名の集まり、のようなものもあるかもしれない。

そのような集まりには、いわゆるコミュニティらしさは少ないのかもしれない。 そもそも相手の顔も見えたり見えなかったりするし、感情的な交流はそれほど多くはない。 この2つを同じ「コミュニティ」という名前でくくるのは紛らわしいというか、誤解を招くところもあるかもしれないが、ここでは後者への参加のことを指していると考えてほしい。

さて、それではなぜ開発コミュニティへの参加を促したいか。 それは、現在のプログラマ、特に(とりわけ Ruby に関わりの比較的深い)職業プログラマのあり方を考えていての話である。

プログラマとして社内でふつうに仕事をしていれば安泰、という恵まれた方は少ないというか、正直あまり想定できない、というのが現状ではないだろうか。 たとえ現状の職場環境が理想的な場所であっても、その環境がいつまでも続くとは限らないし、 続いたとしてもその方向性が自分の志向と一致し続けるかどうかは極めて疑問としか言いようがない。 以前からプログラマ、とりわけWebに近い場所にいるプログラマの転職率は他に比べると高かったように思っているが、そのような傾向は広まりこそすれ減ることはないだろう。

であれば、何かしらポータビリティの高いスキルセットを作れるようにしておきたい。 そして、その近道は、オープンソースの開発手法を知り、そこに実践的に関わることが挙げられるだろう。

それなりに広く知られている逸話としては、自作 CPAN モジュールを履歴書がわりにした宮川さんの事例がある(http://www.sixapart.jp/anniversary/event-blog/2008/12/17-1100.html)。 もっとも、一からモジュールやアプリケーションを開発するのはコストが高く、 何よりモチベーションの維持が難しい。 しかし、そうであっても、ここ最近のオープンソース開発を取り巻く環境の向上、たとえば github のような環境であれば、fork から pull request までの道のりが極めて容易になってきた。 ある意味、コミュニティ的な人間同士のコミュニケーションを極力排除し、 パターン化したやりとりでコミットメントができるようにしたために、 コードからすればよりコミュニケーションが高まるような自体になりつつあるのが、 最近のオープンソースの開発スタイルであるとも言える。

分散開発や issue tracking や自動化テストや CI なども当たり前のように使われていたりいなかったりし、 とはいえそれぞれがうまく行っているわけでもないので改善する必要は多々あって、 その改善の試みも当たり前のように行われたり行われなかったりする(そして失敗することもあれば成功することもある)。 比較的新しめの道具の導入もそれなりに積極的に行われているものの、逆に長く使われているツールで移行できないままメンテナンスが続けられているものもある。 このような環境は、様々な意味でやりがいがある場所と言える。実際、多くの人たちが、そこに何がしかの魅力を感じて、開発に参加している。

もっとも、単なるスキルアップやキャリアアップのためだけにオープンソース開発に関わるのは端的に言って邪魔であり、 少なくとも何かしら他の開発者のメリットになることも行うことが期待されている。 とはいえ、取り立てて失礼な態度を取らなければ、 何かしらのフィードバックはおおよそ有益なものであるし、 長期的に開発されているプロダクトであれば、長い目で見ていい関係さえ築ければ問題ない。

別に Ruby である必要もない。言語もライブラリも何でも構わない。 ただ、現在もなお改良され続けている、 コミュニティによるソフトウェア開発のノウハウに触れることは、 ある種の業界のプログラマとして生き延びるためには避けがたいというのが現実なのではないだろうか。

であれば、それが「貢献」になるかどうかなどとはまったく関係がなく、 単に利己的な理由によるためだけでも、積極的に関わることを勧める理由になるだろう。


おかげさまで、日本Rubyの会は一般社団法人としての登記が完了した。 8/18をもって、「一般社団法人日本 Ruby の会」が設立されたことになる。 当初は8/8の予定だったが、諸事情により遅れてしまったわけではあるのだが、 設立に関してご協力していただいた方々には心からお礼申し上げます。本当にどうもありがとうございました。

もっとも、肝心の Ruby の会の今後の活動については、過去の巻頭言でも触れたように、 基本的にはこれまでの活動の延長線上にある。新しいことも行いたいと考えているが、 何かがドラスティックに変わることは考えていない。

それよりも、もう少し長いスパンで、少なくとも日本で Ruby がどのように使われるべきか、 Ruby を使う人々がどのような形になるか、その理想的な形、考えうるゴールのあり方を 少し考えてみてもいいのでは……というような話を他の理事と話をしながら、 思いついたのが、上記のような、コミュニティによる開発を積極的に勧めることだった。

Ruby が今よりももっと広まり、Ruby で開発をすることの効果が高まるには、 単に言語をRubyに変更するだけではどうにもならないだろう。 問題は社会的なレイヤーにも移行しつつあると思うが、 まずはエンジニアの態度から変更を始めるのがその近道のように思われる。 こういった考え方が具体的な Ruby の会の活動に落とし込まれるのは まだ先のことになりそうだが、おそらくこれまでとは多少なりとも違うことをする必要があるだろう。 ちょっとまだ漠然としているのだが、長期的な活動指針の一つとして、思うところを書いてみた。