先日、ASP.NET MVC 5実践プログラミングをいただいたので(かなり時間はかかりましたが)読んでみました。
- 作者: 山田祥寛
- 出版社/メーカー: 秀和システム
- 発売日: 2014/09
- メディア: 単行本
- この商品を含むブログ (1件) を見る
読もうと思ったきっかけ
会社で開発しているものはASP.NET MVC5 アプリでコードも見ていますが、実際自分の手を動かすことはあまりなく*1、なんとなくしかMVC5での開発をやったことがないので、一度整理する意味もこめて読みました。
全体的には非常にわかりやすい構成になっているのと、実際の開発にすぐ使えるような内容が書かれているなと感じました。
全体的な構成
導入・基本・応用の大きく3つに分かれていて、まず導入編で開発環境を作ってMVC 5でアプリを作ります。MVC5での開発の全体像をまず把握することができます。 その後、基本編でビュー・モデル・コントローラーの開発の詳細が説明されています。 最後の応用編では、ルーティングであったり、クライアントサイド開発(バンドル&ミニフィケーション・jQuery・AJAXなど)、認証、Azureの利用といったあたりに触れられています。
MVC の説明とEntity Framework
一般的にMVCとは、となると大上段に構えた説明になりがちですが、この本ではASP.NET MVCの本質はView-Controllerであると言ってもよい、ASP.NET MVC にモデルに相当する機能は含まれていない、書いてあります。これは、モデルが単なるデータクラスにとどまるものではないということを意味しています。このあたりまで踏み込んで説明しているのはわかりやすいと思います。
となるとモデルには、ビジネスロジックやデータアクセスを記述することになりますが、ビジネスロジックはアプリケーションによって異なるため、データアクセスについて説明しています。特にMicrosoft Recommendedなライブラリ「Entity Framework」についてもページを割いて説明しているので、はじめてデータベースを使ったWebアプリを MVC5 で開発する場合でも参考にできるのではないかと思います。*2
具体的な操作手順
C# による開発のメリットは、VisualStudioというIDEがもたらしている部分が大きいです。これは ASP.NET MVC の開発でも同じだと思っています。この本では開発手順として VisualStudio の操作手順も丁寧に説明してあります。 また、具体例を挙げると、 「Viewを作成するときには、先にControllerに
return View();
とあったら、この"View"の部分からVSを操作してViewを作成できます」 というように、実際の開発でもこういう手順で動かすだろうな、という手順が載せてあるのも非常にわかりやすかったです。
網羅的な説明とその先への指針
たとえば、Viewの開発ではビューヘルパーを使うことがありますが、あらかじめ用意されているヘルパーメソッドについての説明も書かれています。また、さらにその先として、独自ビューヘルパーの定義の仕方も説明されています。このあたり、なんとなく知っていて使っているという状態であると、いったん自分の知識を整理することができ、その先に進む方針もわかりやすいのではと思います。
周辺技術への入口となる応用編
最近のWeb技術は多様化していることもあり、MVC5のコア機能だけでは開発が追い付かないことがあります。この本に載っているところで言えば、
- JavaScript/CSS のロード時間を削減するためのバンドル・ミニフィケーション
- クライアントサイドの開発で利用するjQuery
- 認証機能を実装するときに利用する ASP.NET Identity
- Azure Web Sitesを利用した迅速なアプリの展開
といったところです。これらについても説明されているため、このようなライブラリ・サービスがあってこういうことに使える、といったことを理解することができます。
まとめ
全体を網羅的に説明しつつ、詳細な機能への入口となる説明を載せている、といったのがこの本を通しての感想です。ですので、
- なんとなく ASP.NET を知っている
- JavaやRuby on Rails といった他言語・フレームワークでWeb開発をしたことがあって、C# の基本的機能は知っている
といった方には向いていると思います。個人的には一度全体を通して読んで、自分の知識を整理し、あとは実際の開発をしながら分からないところを読みなおす、という使い方をしています。
逆に、ASP.NET を使いこんでいてコアな部分の辞書的に使いたい、という目的だと説明が長すぎると感じるかもしれません。