アジャイルプロトタイピングで上流工程が変わるRubyでアジャイルプロトタイピング(1)(3/3 ページ)

» 2005年11月11日 12時00分 公開
[鍜治舍浩, 西川仁, 林秀,永和システムマネジメント/永和システムマネジメント/アークピア]
前のページへ 1|2|3       

何を捨てて、何を得たいのか

 ソフトウェアのプロトタイプには、「使い捨て型」と「積み上げ型」があることは広く知られています。本連載では、前者の「使い捨て型」を支持します。プロトタイピングの目的は、機能要件を定義し、より良い設計を探求し、要求と設計の実現可能性を検証することであり、コードを再利用することではありません。再利用されるのは、プロトタイピングの結果として得られた知見なのです。コードを再利用することができれば、一見効率が良いように思われます。しかし、アジャイルプロトタイピングは、再利用を目的として作成されるわけではなく、頻繁な変更によって構造が整理されていない場合もあります。そして、プロトタイプの段階で完ぺきに整理しようとすれば、無駄を生むことになるでしょう。「捨てる勇気」がプロトタイピングでは必要なのです。

アジャイルプロトタイプツールとしてのRoR

 アジャイルプロトタイピングには、スピードと変更容易性が要求されます。RoRは、これを満たすプロトタイピングツールとしての特徴を備えています。具体的な説明は次回以降の記事に譲り、ここでは、なぜRoRなのか、を中心にRoRの特徴を解説します。

なぜRoRなのか

 Rubyは、動的型付け言語である、コーディングの手間が少ない、オブジェクト指向言語である、テスタビリティが高い、などの特徴を持つ言語です(Rubyに関しての具体的な解説は、次回の記事を参照していただければと思います) 。そして、Ruby上に構築されたRoRは、「フルスタックな」Webシステムフレームワークです。つまり、Webシステムのすべての層に対してフレームワークが提供され、それらがシームレスに統合されています。フルスタックなフレームワークであるということは、各層の大まかな実装方針と、層間を連携させる仕組みがすでに決まっているということですので、周辺整備ではなく、問題領域の開発に注力することができます。逆にJavaなどの開発では、以下のような作業が必要となり、動作可能な成果物の迅速な作成が阻害されてしまうことがあります。これらの作業は、プロトタイプの目的が機能要件の確定であるにもかかわらず、まず行わなければなりません。

  • 多くのプロダクト、コンポーネントの選定
  • 多くのプロダクト、コンポーネントの学習
  • 煩雑な構成定義ファイルの大量作成
  • ベストプラクティスの捻出(ねんしゅつ)
  • アプリケーション基盤の整備

 RoRはシンプルで、堅牢で、シームレスなフレームワークであるため、これらの作業は軽減されるか、まったく必要なくなります。

RoRによるプロトタイプ環境の独立

 RoR を採用する理由は、もう1つあります。現在のWebシステム開発においては、PHPやJavaが大きな市場シェアを獲得しています。本番開発は、これらの言語で行うことが多いのですが、すでに述べたとおり、プロトタイプは捨てる前提で作成します。ですので、本番開発で使用する開発環境(プロダクション環境)とプロトタイプ環境を言語レベルで分断してしまっても問題はありません。むしろ、「捨てざるを得ない」環境でプロトタイピングを行うことで、プロトタイプコードの誤った再利用を防止できます。プロトタイピングは少数精鋭のメンバーで行うものなので、新しい技術の壁は超えられるはずです。逆に、プロトタイプはそのようなメンバーで行うことが、成功のコツではないでしょうか。

アジャイルプロトタイピング適用の考慮点

 アジャイルプロトタイピングは非常に有益な手法ですが、当然ながらいくつか考慮すべき点もあります。

適用対象のプロジェクトの規模

 主要機能だけに絞ったとしても、中規模くらいまでのプロジェクトでなければ工数が掛かり過ぎてしまうでしょう。大規模システムの場合には、プロトタイピングが有効な一部の機能に限定します。懸念のある機能や、本当にコアな機能だけにするなど、限定範囲を工夫すれば十分なメリットが得られるでしょう。

振る舞い、モデルを実装する範囲

 モデルは全体を定義できればベストですが、振る舞いに関しては、機能のパターンごとに1つずつなど、要件の明確化に必要なところまで実装するのが現実的でしょう。


 今回は、アジャイルプロトタイピングによって上流工程の精度を向上し、開発工数と、開発のよくある苦労を大幅に軽減できることを解説しました。また、RoR がアジャイルプロトタイピングツールの有力な選択肢となることも説明しました。RoRによるアジャイルプロトタイピングの可能性を少しでも感じていただければ幸いです。次回はRoRの実装言語であるRubyが、本連載のアプローチにどのように寄与するのかを解説します。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ