現在のWebアプリケーション開発とは? その2
プログラマが担う役割の変化
ご存知のとおり、2005年に「Web 2.0」というWebサービスの考え方が提示されて以来、構築手法には『リッチクライアント』というキーワードで語られるさまざまな技術が登場しています。
例)Ajax、Adobe Flex、Adobe Air、WPF、Silverlight…
リッチクライアントの技術は、よりユーザーが利用しやすいWebサービスを提供するためのユーザーインターフェースに関する技術が集約されており、クライアントサイドで実装するべきロジックと、サーバサイド側で実装されるべきロジックが綿密に関係して動作します。この技術を実装するには、プログラミングの技術とユーザーインターフェースに関する知識が要求されるため、WebクリエイターやWebプログラマが連携して開発を行うことが重要です。
豊かなユーザーインターフェースはWebサービス開発のみの動向だけではなく、業務系・基幹系開発においても業務処理の作業効率を向上させるための手段として、導入が検討される傾向にあります。これは、大手ベンダーのSAPがAdobe Airを使用したクライアント環境を提供し始めたことや、NexawebがAjaxとJavaを使用したソリューションを提供していることでも明らかです。また、GoogleマップやGoogleカレンダーなどリッチクライアントなアプリケーションが一般化していることから分かるように、今後も加速的に浸透していくと思われます。
先日、私が参加したセミナーでは前述のNexawebやMicrosoft、 Curl、 Adobe Systemsのリッチクライアントに対する取り組みが採用事例と共に紹介され、今後の開発の方向性がWebサービスの形態にかかわらず変化してきていることを明確に実感することができました。
このように今までサーバサイドでの技術を発揮していたプログラマにも、クライアントサイドの知識と技術が要求されるようになってきました。
理想的なWeb開発を行うためには
では、この状況の中で求められる理想的なWeb開発のあり方とは一体どういったものでしょうか? コンシューマー向けアプリケーション開発だけではなく業務系アプリケーション開発においても、“リッチクライアント”というキーワードの基にWebプログラマの『あり方』が大きく変わろうとしているなかで、次のような欲求がでてくると考えられます。
![図2](http://cz-cdn.shoeisha.jp/static/images/article/3234/03.gif)
それでは、これから上記の要望を満たせるような開発について模索するために、Webアプリケーション開発であらためて注目されているMVCフレームワークの現在について見ていくことにします。
Web開発におけるMVCフレームワーク
ここで簡単にMVCフレームワークとはどんなものか触れておきます。
MVCフレームワーク
フレームワークはソフトウェアを作る上での枠組みを提供するものです。その枠組みの中で頻繁に必要とされる機能やロジックを実装するための雛形を提供します。Web開発で使用されるフレームワークの多くはMVCモデルと呼ばれる設計パターンに基づいて作られています。MVCはモデル(Model)、ビュー(View)、コントローラー(Contorller)という構成でアプリケーション内の処理を分担する設計パターンです。モデルが処理の中核を担当し、ビューが処理の結果を表示し、コントローラーがそれらの動きを制御します。
![図3 MVCモデルのイメージ](http://cz-cdn.shoeisha.jp/static/images/article/3234/04.gif)
フレームワークの利便性
MVCフレームワークを用いて開発を行うことで、次のようなメリットがもたらされます。
それぞれの役割分担を明確にし、効率的な開発ができる
プログラマ間での開発機能を分割できるだけではなく、Viewをうまく利用することにより、Webクリエイターが作成したWebページへ処理の実装が容易になる。
問題箇所、修正箇所の切り出しが早く、機能が変更の影響を受けにくい
- 各機能、ページ表示ごとにカプセル化されているため、広範にわたる修正を減らすことができる。
- ページデザインの修正が発生した場合に、プログラムへの影響を最小限に抑えることができる。
ディレクトリやファイルの配置・命名方法、一連の処理の規則が決まっているため、構成に悩む必要がない
フレームワークの構造について学習しておけば、各種ドキュメントを見なくとも、ファイル構成が「仕様書」的役割を果たしているため、開発効率があがる。
MVCフレームワークを導入することにより、Webプログラマは上記のような恩恵を受け、結果的にはプロジェクトの工数削減につながります。また、リッチクライアントを用いたアプリケーション開発を行う場合にも、Webプログラマは効率的に作業を行うことが可能になります。
次回では、より具体的にMVCフレームワークについて検証していきます。