本連載ではリッチ・インターネット・アプリケーション(RIA)開発におけるマネジメント領域の課題とその解決策というテーマで,RIAコンソーシアムのマネジメント分科会における研究結果をもとにいろいろな面から考察してゆきます。連載第2回目のテーマはRIAの開発体制についてです。

開発に必要なスキルや作業範囲が拡大している

 前回の「発注者とのコミュニケーション」において,RIA開発は実現したい機能の特性からプロジェクトに参画するメンバーの職種が多岐にわたる点を指摘しました。具体的には,デザイナーに要求分析のスキルやシステム的な思考が求められ,エンジニアにデザイナー的な感覚が求められる,といったように,作業範囲や求められるスキルが広範囲になってくるということです(図1)。

図1:RIA開発で求められる作業範囲やスキル(RIAシステム構築ガイド2.0(2006年度版)より引用)

 このことはディレクションやマネジメントを行う方々にとっても,全体を見渡すために必要なスキルや作業範囲の拡大につながります。そしてこのことも,RIA開発を難しくしている要因の一つとなっているようです(図1)。

Viewの中にさらにMVCモデルが存在する

 RIAの構造を,ソフトウエア設計のMVCモデル(Model・View・Controller)に照らし合わせて考えてみましょう。

 RIA開発ではViewとして「Flash」「Curl」「AJAX」など,いわゆるリッチ・クライアントのユーザー・インタフェース(UI)テクノロジを利用し,Viewの中でも情報を一時記憶(Model)したり,複数のViewを遷移(Controller)したりすることで操作性の向上を実現させます(図2)。これはViewの中にさらにMVCモデルが存在している状態と言え,Viewの実装においても構造化された実装知識が必要となります。

図2:RIA開発が従来のWeb開発と異なる点

 RIA開発では,「デザイナーにシステム的な思考やシステム開発スキルが求められる」と言われる理由はここにあります。一方,Controller,Modelの開発担当であるシステム・エンジニアも,デザイナーの領域にまで踏み込んでいくという役割の拡大が求められます。

適切なタイミングでキャストを投入する

 これまでの通り,RIA開発においては,デザイナー,システム・エンジニアといった従来のWeb開発における職種の定義で体制を考える訳にはいかないようです。実現したい機能,予定されるUIテクノロジを見極めて,開発に必要なキャストそして要求スキルをより詳細に検討する必要があります。

 参考にRIAコンソーシアム マネジメント分科会で作成したキャストとスキルの対応表を紹介します。(図3

図3:キャストとスキルの対応表(RIAシステム構築ガイド2.0(2006年度版)より引用)

(クリックすると拡大表示します)

 もっとも図3の対応表にあるようなキャストを,最初からすべてそろえることは難しいでしょうし,そのようにする必要もありません。

 プロジェクト・マネージャは「とにかく必要な人材をそろえなければ」と要求スキルにマッチした人材の確保に必死になりがちです。どこのプロジェクトも人手不足でしょうから,要求スキルが広範囲にわたるRIA開発であればなおさらでしょう。

 人材をなんとか確保し見事なキャスティングを実現したとしましょう,プロジェクト・マネージャはキックオフ・ミーティングでそうそうたるメンバーにご満悦。しかし翌日,現場からは「まだまだ出番は先だね,なんで今から会議に出なきゃいけないの?」「システム開発の経験があるデザイナーってことで呼ばれたけど,設計は別の人がやるようだし,どんなデザインになるかわからない段階で何をすればいいのか?」といった声が聞こえ始めます。

 すべてのメンバーが開発の初めから終わりまでのすべてのフェーズにかかわるわけではありません。プロジェクト・マネージャはまず,開発フェーズ毎の作業内容と適切なキャストの投入タイミングを確認,理解し,チーム編成を時間軸とともに考えることが重要となります(図4)。

図4:必要なキャストとその投入タイミング

 これは決してRIA開発に限ったことではありませんが,「とにかく必要な人材をそろえなければ」と人材確保ありきで走りがちなRIA開発においては,とりわけ注意しなければならない点でしょう。

キャスティングが成功のカギを握る

 必要なスキルセットの拡大,各メンバーが行うべき作業範囲の拡大が求められるRIA開発。マネジメント・サイドはプロジェクト内でより密度の濃い連携を実現する為に,必要な体制について正しく理解したうえでのキャスティング,参画メンバーがプロジェクト内で自分が発揮すべき能力,残すべき成果を理解できるチーム作りが求められるのです。