スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷

RubyKaigi 2009でRails開発者が講演

“Railsという現象”とコミュニティの性質

2009/07/21

 登場からわずか5年。Webアプリケーション開発のあり方を根底から変えてしまったと言われるWeb開発フレームワークの「Ruby on Rails」。なぜ5年という短期間で普及し、今なお驚異的スピードで進化を続けているのか。7月17日から3日間の予定で東京で行われたイベント「RubyKaigi 2009」の初日に講演したフリーランスのRails開発者、松田明氏は、自身のRails開発とコミュニティ参加の経験から“Railsという現象”についての考察を披露した。

開発者とユーザーの間にある「超えられない壁」

rails01.jpg フリーランスのRails開発者で地域Rubyistコミュニティ「Asakusa.rb」のリーダー、松田明氏

 「Railsエコシステムの研究」と題した講演で松田氏が指摘するのは、Rails開発コミュニティの特異性だ。一般的なOSSコミュニティは中心にリーダー的存在と、少数のコア開発者がいて、それ以外の「ユーザー」は、開発者グループに容易に入っていくことができない。

 「私はApacheやLinuxのユーザーで利用させてもらっているが、開発者ではない。そこには超えられない壁がある」(松田氏)

 Railsがベースに使う言語処理系のRubyも同様だという。Rubyのエコシステムとして、頂点に“唯一神”としてのまつもとゆきひろ氏がいて、その下(あるいは周囲)にコミッタと呼ばれるコア開発メンバがいる。こにれ続いて、その下にはライブラリ作者がいて、さらに下にRubyユーザーがいる。ライブラリ開発者のように、何らかの形でRuby開発に加われるのはごく一部の限られた開発者で、一般ユーザーが開発に加わるには「険しい道があって、大きな断絶があるんじゃないかと思う」(松田氏)という。

rails02.jpg Ruby開発者の階層構造には、なかなか超えられない「壁」があるという

やる気さえあれば、いきなりRails開発者に

 Rubyの一般ユーザーとRuby開発者の間に大きなギャップがある。プログラミング言語は本質的に難しいものなので、Rubyはそれでいいのかもしれないとしながら松田氏は、Railsコミュニティにはそうしたギャップが存在しないことを指摘する。

 Railsコミュニティでは、トップにはRailsの生みの親であるデビッド・ハイネマイヤ・ハンソン(David Heinemeier Hansson)氏がいて、周囲に6人のコア開発者がいるのは変わらないが、その下には「コントリビュータ」と呼ばれる開発者が約1400人もいる。「いきなりRails Coreに入るのは難しいが、やる気さえあればRailsを作る人にはなれる」(松田氏)

rails03.jpg Railsではユーザーからコア開発者までが段階的で、それぞれの間が密接なため、比較的壁が薄いという

 コントリビュータはRailsのコードを直接書き換える。その価値がコアメンバーなどに認められれば、それがそのままRailsに取り込まれる。中心人物のハンソン氏は、最近はコードを書くよりも、どのパッチを取り入れるかの判断をしていることが多いという。

 Railsではコントリビュータの下にさらに「報告者」、その下に「アクティビスト」と呼ばれる人たちもいるという。こうした区分は連続的であるため、ほかのOSSコミュニティに見られる開発者とユーザーのギャップが小さく、下から上に上がって行きやすいともいう。驚くのは、Railsコミュニティでは「これらの区分は自然発生的にこうなったわけではない。意図的な工夫としてエコシステムを作り出して運営している」ということだ。

 なぜ、役割を明確化してコミュニティが運営されているのか。松田氏は、それは「Railsが前に進んで行くための重要な装置だから」と指摘する。「まだ5年目のプロジェクトで、1400人が同時多発的に開発している恐るべき状況。開発者数は一般のOSSに比べて非常に多い」(松田氏)。特に分散ソースコード管理コミュニティのGitHubが活用されるようになってからコミュニティによる開発は加速し、最近の各新バージョンに搭載された目玉機能の多くが、「コアチームが作ったものではなく、コミュニティの産物」(松田氏)となっているという。そこでは「ユーザーがコミッタでもあるという理想」が実現した直接民主制のような状況となっている。

電車というメタファーの意味するもの

 松田氏は、こうしたRailsコミュニティのあり方は、Railsという名前に込められた思想を体現したものではないかと指摘する。

 言うまでもなく、Ruby on Railsは鉄道の「レール」にちなんだネーミングだ。これは「規約は設定に勝る」(Convention over Configuration:CoC)としたRailsの根底にある思想を表現している。「DHH(ハンソン氏)が敷いたレールの上に乗っていけば何もしなくても15分でブログのWebアプリが作れる」(松田氏)。

 CoCはRailsを一躍有名にした考え方で、ほかの多くのWebフレームワークにも影響を与えた。これに加えて松田氏は「レール」が暗示するのは終わりがない開発スタイルではないかという。「線路は続くよ、どこまでも、ではないですが、Railsは走り続けるフレームワークなんですね。Railsという名前はフレームワーク自体が電車のように走り続けているということも示しているのではないかとぼくは考えていてます」(松田氏)。

 Railsの本質は「Embrace Change」(変化を喜んで受け入れる)だという。松田氏は仕事柄、Railsを使うならどのバージョンがいいかとよく聞かれるという。そうした質問の背景には、十分に枯れて安定したバージョンで、機能的に十分と言えるバージョンがあるはずだという質問者側の想定がある。これに対して松田氏は、Rails界の格言を紹介して、そんなものはないという。その格言とは「Edge is more stable than stable, so use Edge」(開発バージョンのほうが安定版より安定している、だから開発版を使え)というものだ。「枯れたバージョンのRailsというものはない。昨日のバージョンより今日のバージョンのほうがいいし、今日のものより明日のRailsがいい。だから常に“今”のRailsがベスト」(松田氏)

パッチ共有でもDRY原則

 開発版を使え、と言えるのは「開発者=ユーザー」というコミュニティの性質とも関係している。「Railsでは新機能が未完成のまま出てくることが多い。攻めのプロダクト。完成していなければ、自分が完成させながら使えばいいじゃんという認識がコミュニティ側にある」(松田氏)という。荒削りの機能はコントリビュータと呼ばれる開発者たちがバグを修正する。1000人を超えるコミュニティによる、このアジャイルな開発スタイルは「(コア開発者の)コントリビュータに対する信頼で成り立っている」(松田氏)という。

 Railsがプログラミングの世界に広めた開発原則には、CoCのほかにも「DRYの原則」が有名だ。「Don't repeat yourself.」の頭文字をとったもので、できる限り同じ設定やコーディングを繰り返すな、という考えだ。このDRYの原則の価値観がRailsコミュニティ全体で共有されていることも、多くのRails開発者が開発に参加する動機になっていると松田氏は指摘する。「もともとRubyはオープンクラスでモンキーパッチが容易。自分の手元のコードの修正だけで十分ということもある。しかし、あなたが踏んだバグ、あなたが書いたモンキーパッチを、ほかの人に繰り返し経験させてはいけないという認識をRails開発者は共有している。DRY原則は、Rails開発者がネットにパッチを放流すべき理由になっている」(松田氏)。

日本のRailsは“残念”、参加を呼びかけ

 Railsエコシステムは、以下のように回っているというのが松田氏の見立てだ。まず、続々と新しい考え方や新機能が登場するため、多くの開発者がワクワクして使いたくなる。ところが、ドキュメントがないため、ソースを読むことになる。使ってみると、壊れている。ソースを見ているうちに直したくなる。GitHubという開発に参加しやすい仕組みがある。だから自然にパッチができている。

 Railsコミュニティは開発への参加を促す性質を備えているという指摘だが、その一方で、日本人開発者の少なさを嘆いてもいるという。「日本のRailsは残念。日本でRailsが使われてないということはないと思うが、それにしては開発者が少ない。私が見たところ1300人中で日本人らしき人は数人。英語の壁はあるかもしれないが、今は非英語圏の人も増えて日本英語で十分。開発に参加する義務はもちろんないが、自分が気に入るように改変する権利もあるし、純粋に楽しいこと」と松田氏は指摘。「もっと日本人も開発に参加しよう、とぜひ呼びかけたい」と講演を締めくくった。

(@IT 西村賢)

情報をお寄せください:


Coding Edge フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)

- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?