フレームワークを導入する前にやっておきたいこと
第2回、第3回とRuby/PHP/Perlの言語別のフレームワークを比較してきました。今回は、フレームワークを導入する前に、身に着けておきたい4つの習慣をまとめました。より良い開発工程を模索する参考となれば幸いです。
これまでの連載
1.案件について分析する
Web開発では、そのサービスが『誰を対象としたものか』によって、プログラマが担う役割や作業負荷が変わります。
コンシューマを対象としたWebサイトの改変の多くは、デザイン・UIの変更です。この場合、ロジックとデザインの切り離しを行うことで、プログラマは作業負荷を軽減することが可能となります。そのため、なるべくシンプルなテンプレート構造を持ったフレームワークやテンプレートエンジンを採用することをお勧めします。
一方、エンタープライズ用途のWebサービスでは、改変頻度は前述のコンシューマ向けWebサイトと比べると少なくなります。しかし、改変を行う際には、ロジック部分の大幅な見直しが行われる傾向が多いようです。この場合、ビジネスロジックを効率的に管理できる堅牢なフレームワークを選択することで、機能追加や仕様変更に対して、柔軟に対応できるように備えることができます。
近年では、エンタープライズ領域でも、利用者の作業効率化のため、RIAを取り入れたサービス改善を要求される機会が増えてきています。多少テンプレートの記述が複雑になったとしても、開発者にとって使いやすいViewロジックを持ったフレームワークを導入することで、さまざまなUIとの連携を柔軟に行うことが可能です。
- コンシューマ用途ではシンプルなテンプレート構造を採用してデザイナーとのやり取りを効率化する
- エンタープライズ用途ではビジネスロジックを効率的に管理できる堅牢なフレームワークを選択する
- RIAを取り入れたサービスには、UI連携が柔軟なViewロジックを採用する
例えば、Ajaxとの連携を考える場合、Ruby On Railsには、「RJS」というJavaScriptとサーバサイドロジックの連携を手助けしてくれるテンプレートの仕組みを持っています。このロジックを採用することで、RIA系の案件には通常の開発案件との違いをそれほど感じずに挑むことができるでしょう。ただし、デザインとの連携が必要な案件である場合、デザイナーにとってはなじみのないコードをテンプレート内に記述するため、作業分担を上手に行わないと非効率な作業が発生する可能性もありえます。
2.開発メンバーについて分析する
実際に開発を行う場合、プロジェクトはグループ単位で進められていきます。
グループ開発で最も大切なことは『どれだけ共通意識を持って作業を行えるか』ということにあります。作業工数が少ないWeb開発の場合、短期間で実装の対応に追われるため、それぞれのプログラマがガリガリとソースコードを記述し処理を実装してしまったり、作成するべきドキュメントにおいて差異や抜けが出てしまったり、設計もれが発生してしまったりすることがあります。
また開発期間が短いため、Webサイトの設計思想をすべてのメンバーが同じレベルで共有し続けることも難しく、実装に対する機能の見直しに多くの工数を割いてしまうことがあります。長期間を要するプロジェクトで設計思想の統一化が測られたとしても、メンバーの変動が発生することも多く、また雇用形態の違いなどで個人のスキルレベルの均一化を図ることも容易ではありません。
このような状況を防ぐためには、どのような言語であっても、チームの軸となる構築手法を持つことをお勧めします。メンバーの特徴を見極めて強みと弱みを分析し、それらを補ってくれるようなフレームワークをさまざまな視点から分析していくことで、チームに適した『フレームワーク・開発方法』を見つけることが可能になるでしょう。
そのために、メンバーそれぞれの構築経験を持ち寄り、ライブラリやフレームワークの知識を共有することも有効な手段の1つです。定期的に勉強会を行うなど、事前にいろいろな言語や各フレームワークについてのメリット・デメリットを洗い出し、チーム内で共有しておくことで、急な案件であっても構築手法の選定をスムーズに行えるようになります。個人ではカバーしきれない知識を吸収し合い、今後の作業に生かすことができるだけでなく、各メンバーの特徴も見えてきて、より良いチーム連携が図れるようになります。