Rubyで開発されたPingKingの画面
Rubyで開発されたPingKingの画面
[画像のクリックで拡大表示]

 WEB2.0がRubyを採用した。ただし今回紹介するWEB2.0は,デジタルガレージ,ぴあ,カカクコムの合弁会社である株式会社WEB2.0(ウェブツーポイントオー)である。昨年末に設立された同社は,初のサービスである「PingKing」のほとんどを,オープンソースのオブジェクト指向プログラミング言語RubyとそのWebフレームワークRuby on Railsを用いて開発した。1割程度のPHP部分を除けば残りはすべてRuby on Railsである。現在ベータ公開中だ。

 そして今,RubyとRuby on Railsが,海外のWeb 2.0的とされるサービスの開発に多数利用されていることも事実である(Ruby on Rails公式サイトの利用サイトリスト)。

 なぜインターネット上の新サービス開発競争に,JavaやPHPではなくRubyが選ばれたのか。その理由が,PingKingの開発事例に典型的に見えるように思える。

実質1人,2カ月程度でWebサイトを実装

 PingKingは,一般ユーザーを対象にした「お気に入り情報共有サイト」である。パソコンに詳しくないユーザーに向け,デザインを親しみやすく,機能も分かりやすくシンプルにしている。気に入った情報をブックマークすることをPingKingでは「マイポッケに入れる」と呼ぶ。ポッケに入れた情報やそれに対するコメントは他のユーザーと共有できる。

 PingKingは現在の形になるまで「コンセプトを何度も練り直した」(WEB2.0 技術統括マネージャーの佐藤匡彦氏)。ユーザーを獲得するためには,他にない,つまり手本のないサービスを短期間で開発しなくてはならない。そのため,すべからくサービスはベータ版として公開し,ユーザーの反応を見ながら進化させていかなければならない。

 Ruby on Railsの特徴は,生産性の高さとされる。命名規約に従ってデータベースやそれにアクセスするコードを自動生成できるのがその理由である。設定ファイルを極力減らし,同じことを繰り返して記述する必要をなくすDRY(Don't Repeat Yourself)がRailsの設計思想だ。

 少数精鋭による開発も特徴だ。PingKingの開発担当は3人。うち1人はデザイナー,もう1人はPHP担当である。9割のRuby部分は,1人でほとんどを書き上げた。開発スピードを極限まで高めていこうとすれば,コミュニケーションの手間が無視できなくなる。

 実質1人,2カ月でプログラムを書き上げたのはフリーのプログラマである増井雄一郎氏。Rubyプログラマの間では,10分間でブックマーク・システムを作成したムービー「10分でできるRailsアプリケーション」をインターネットで公開した作者として有名だ。オープンソースの寄せ書きアプリケーションPukiWikiでの活動などでも知られる。

 Ruby on Railsは単なるGUI開発ツールではなく,自動生成を含むすべての開発をコマンド・ラインから行うことができる。このアプローチが,増井氏のようなきわめてスキルの高い技術者にRuby on Railsが選ばれる理由だ。そしてRailsを記述するためにRubyが選ばれた理由は「美しいプログラムを書けるから」(David Heinemeier Hansson氏)だという(Hansson氏インタビュー)。ハッカーがハッカーのためにハッカーの言語で書いたフレームワークと言えるかもしれない。

 コンサドーレ札幌オフィシャル・ブログもRuby on Railsで開発されているが,こちらもリチェルコの技術者である山中茂樹氏1人が約2カ月で作り上げた(関連記事)。

 またAjaxとの親和性も高い。PingKingでも情報をブックマークする際などにAjaxが使われている。

個人のスキルを最大に発揮させるための開発スタイル

 これまで,ソフトウエアの開発方法論は,定型化,標準化することで個人のスキルへの依存を可能な限り減らすことを目指し整備されてきたように思う。しかしPingKingやコンサドーレ札幌オフィシャル・ブログで採用されているのは,突出した個人のスキルへの思い切った依存だ。短期間での開発と試行錯誤を至上とするビジネス側の要請と,Ruby on Railsのようなツールの進化があいまって生まれてきた開発スタイルだろう。

 もちろんどんなアプリケーションにでも適用できるものではないし,規模の限界もあるだろう。しかし,システム・ソフトウエアでなく,一般ユーザー向けのアプリケーションでこのような開発スタイルが広がっているのを見ると,アプリケーション開発においてある種の方向性の変化が始まっているのではないかとも思わせる。何にでも2.0をつけるのもどうかとは思うが。

 ただし,変化しないものもある。増井氏がRuby on Railsの開発のポイントとして指摘するのが「データベース設計の重要性」(増井氏)だ。正規化が正しくなされていないとSQL文が複雑になり生産性や性能が低下したりするという。これはメインフレームの時代から変わらない。