書籍転載:ASP.NET MVC 5 実践プログラミング
ASP.NETの全体像
ASP.NET上で動作するWebアプリケーションフレームワーク「ASP.NET MVC」とは? その全体像と6つの構成要素について紹介する。書籍転載の1本目(導入編「1-1」)。
書籍転載について
本コーナーは、秀和システム発行の書籍『ASP.NET MVC 5 実践プログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。
『ASP.NET MVC 5 実践プログラミング』の詳細や購入は秀和システムのサイトや目次ページをご覧ください。
ご注意
本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。
本書のテーマであるASP.NET MVCは、ASP.NET上で動作するWebアプリケーションフレームワークです。イントロダクションとなる本章では、まず具体的な構文の解説を始める前に、そもそもASP.NET MVCとはどのようなフレームワークであるのかを、ASP.NETの全体像を概観しながら、解説していくことにします。また、後半ではASP.NET MVCを利用するにあたって、最低限必要な環境の構築手順(※転載対象外)について紹介します。
1-1 ASP.NETの全体像
ひと口にASP.NETと言っても、バージョンアップを重ねるに従って、さまざまな機能(サブフレームワーク)が追加され、いまや巨大なフレームワークへと成長しました。初学者の方が混乱するところでもあるので、まずはASP.NETの全体像を概観し、その中でのASP.NET MVCの位置づけを理解します。
1Webフォーム
ASP.NETの中で一番の古参がこれ、ASP.NET Webフォーム、もしくは、単にWebフォームと呼ばれるサブフレームワークです。ASP.NET 1.0から提供されているしくみで、少なくとも4~5年前までは、単に「ASP.NET」といえば、そのまま「Webフォーム」を意味していました。
サーバーコントロールと呼ばれるUI部品が豊富に用意されているのが特長で、Visual Studioのフォームデザイナーからドラッグ&ドロップするだけで、高機能なアプリケーションを作成できます*1。
- *1 それこそ一切のコードを記述せず、コントロールのプロパティ設定だけで作成されたブログアプリケーションの例もあったほどです。
イベントドリブンモデル*2を採用していることから、Windowsアプリケーション開発の知識をほとんどそのまま、ASP.NETアプリケーションの開発にも利用できるというメリットもあります。
- *2 ボタンがクリックされた、選択行が変化した、など、ページで発生したイベント(出来事)をトリガーにコードを実行するプログラミングモデルです。
ただし、その特殊性がゆえに、トレンドに取り残され、現在では積極的に採用すべきフレームワークとは言いづらくなっています。具体的な理由についてはあとで改めますが、少なくとも新規の開発では、ASP.NET MVCを優先して利用することをお勧めします。
2ASP.NET MVC
Visual Studio 2008の拡張コンポーネントとしてお目見えし、その後、Visual Studio 2010で標準搭載されたサブフレームワークです。比較的新しいフレームワークながら、現在のトレンドを取り込みながら、短期間で頻々とバージョンアップを重ね、現在ではASP.NET開発の主流とも言うべき地位を確立しています。本書のテーマです。
3ASP.NET Web Pages
.NET Framework以前のASP(Active Server Pages)、PHPによく似た技術で、HTML埋め込み型モデルを採用しています。たとえば「ようこそ、 @name さん!」のように@...
の形式で、HTMLの中にコードを埋め込むことができます。2011年にリリースされた無償のWebサイト構築ツールWebMatrixの標準技術として採用されました。
小規模なサイト開発での利用を想定しており、デザイナー、システム管理者(非プログラマー)、あるいは、その性質上、PHPでの開発に慣れた人などにお勧めです。前提知識は最低限に、とにかく気軽に手を付けられるのが特長ですが、残念ながら、現時点ではさほど普及しているとは言えません。
詳しい技術情報は、以下のページも参照してください。
4ASP.NET Web API
Web APIとは、言うなれば「Web経由で利用できるAPI」のこと。たとえば「Youtube Data API」というWeb APIがあります。これはアプリケーションからYoutubeの機能にアクセスするためのサービスです。Youtube Data APIを利用することで、(たとえば)Youtubeで提供されている動画を検索し、リスト表示する、といった機能を、あたかも自分のアプリケーションの一部であるかのように実装できます。
Web上では、このようなWeb APIが豊富に提供されており、これらを組み合わせることで、労少なく高機能なアプリケーションを実装できます。
ASP.NET Web APIとは、このようなWeb APIを実装するためのサブフレームワークです。ASP.NET MVCでもWeb APIを実装することは可能ですが、ASP.NET Web APIの方が機能特化している分、同じことをするにもシンプルに表現できます(そして、高機能です)。今後は、アプリケーション開発のためのASP.NET MVC、Web API開発のためのASP.NET Web APIと、用途を明確に使い分けていくのが望ましいでしょう。
本書の主テーマではありませんが、第8章で基本的な構文を理解します。ASP.NET MVCとASP.NET Web APIとは構文も共通する部分が多いので、ASP.NET MVCを理解した後であれば、ASP.NET Web APIの理解は容易です。
5SignalR
Ajax、そして、HTML5の普及に伴って、昨今では、Webアプリケーションにもデスクトップアプリケーションのようなリッチな操作性と、そして、リアルタイム性が求められるようになってきました。
SignalRは、そのようなリアルタイム通信に対応するためのライブラリです。クライアントでの実装に応じて、最適なトランスポート(通信手段)を選択しますので、アプリケーションが低レベルな手続きを意識しなくても良いという特長があります。
本書の守備範囲からは外れますので、詳細は以下の記事などを参照してください。
6ASP.NET Single Page Application(SPA)
SPA(Single Page Application)とは、名前のとおり、単一のページで構成されるWebアプリケーションのこと。初回のアクセスでは、まずページ全体を取得しますが、以降のページ更新は基本的にJavaScriptで賄います。JavaScript単独で賄いきれない部分(データの取得/更新)は、Ajaxなどの通信技術によって実装します。
デスクトップアプリケーションによく似た操作性、そして、敏速な動作を実現するためのアプローチとして、近年にわかに注目を浴びているキーワードです。
ASP.NET Single Page Application SPA)(は、まさにこのSPAを実装するためのプロジェクトテンプレートです(純粋な意味でのフレームワーク、ではありません)。ASP.NET MVC+ASP.NET Web APIをベースに、JavaScriptフレームワークであるKnockout.js、Summy.jsをデフォルトで組み込んでおり*3、即座にSPA開発に着手できます。
ASP.NET MVC、ASP.NET Web API、Knockout.jsなど、個別のフレームワークについて学んだ後に学ぶべき題材とも言えます。
- *3 JavaScriptフレームワークは、用途に応じて、AngularJS、Backbone.jsなどで差し替えることもできます。
以上のように、ASP.NETの世界には、実に多彩なフレームワークが渦巻いています。思わず腰が引けてしまう、という人もいるかもしれません。しかし、心配することはありません。改めて整理してみると、ASP.NETの世界は、
- ブラウザーからアクセスするためのアプリケーション開発(Sites)
- アプリケーション連携のためのサービス開発(Services)
の技術に大別できます。このうちSitesで押さえるべきフレームワークは、じつはASP.NET MVCだけ。現在のトレンド、普及度合いなどの点を鑑みれば、Webフォーム/ASP.NET Web Pagesにはあえて目を瞑ってしまって構わないでしょう。
Servicesに目を向けると、ASP.NET Web API/SignalRもいずれは学んでおきたいテーマですが、SPAへの足掛かりという意味では、まずはASP.NET Web APIの基本を押さえておくと開発の幅が広がります。
ということで、新たにASP.NETを学ぶ人は、まずASP.NET MVC(+ASP.NET Web API)に軸足を置くことを、著者は強くお奨めします。本書でもその考えを前提に、ASP.NET MVCを主テーマとすると共に、第8章(※転載対象外)でASP.NET Web APIの基本を押さえています。
【Note】One ASP.NET
Visual Studio 2008以降、ASP.NETは急速に成長しました。目的に応じて、あまたのサブフレームワークが提供されるようになったことで、ごくシンプルなコードで、さまざまな形態のアプリケーションを、しかもASP.NETだけで、開発できるようになりました。
しかし、問題もあります。関連するプロジェクトテンプレートが飛躍的に増えたことから、目的の機能を実装するためにどのテンプレートを選択すれば良いのか、わかりにくくなった点。そしてなにより、サブフレームワークがそれぞれに成長してしまったため、標準のテンプレートでは互いに連携することが困難になってしまった点です。
これらの問題を解消するべく、提唱された思想がOne ASP.NETです。具体的には、肥大化してしまったASP.NETの世界を、いま一度ひとつのフレームワークの中で体系化し、ライブラリ/テンプレートも見直していこうというのです。あとで具体的な手順の中で触れますが(※転載対象外)、Visual Studio 2013はOne ASP.NETを具体的に体現した最初のバージョンでもあります。
One ASP.NETについての詳細は、以下のページも参考にしてください。
※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
1. 【現在、表示中】≫ ASP.NETの全体像
ASP.NET上で動作するWebアプリケーションフレームワーク「ASP.NET MVC」とは? その全体像と6つの構成要素について紹介する。書籍転載の1本目(導入編「1-1」)。
2. ASP.NET MVCとは?
なぜASP.NET MVCを使うとよいのか? Webフォームの問題点を示し、ASP.NET MVCの特徴とメリットを紹介する。書籍転載の2本目(導入編「1-2」)。
4. フォームを生成する - BeginFormメソッド[Razor]
<form>要素を生成するには、標準のビューヘルパーとして提供されているBeginFormメソッドが便利だ。その使い方を解説。書籍転載の4本目(基礎編「4-2-1」)。
5. ルート定義からフォームを生成する - BeginRouteFormメソッド[Razor]
ポスト先のルートパラメーターを指定した<form>要素を生成できるBeginRouteFormメソッドの使い方を解説。書籍転載の5本目(基礎編「4-2-2」)。