Rのつく財団入り口

ITエンジニア関連の様々な話題を書いているはずのブログです。

【感想】TECHNICAL MASTER はじめてのASP.NET Webフォームアプリ開発 C# 対応版

最新のASP.NET Web Forms 丸ごと解説本

 ちょいと仕事の案件で必要になったので最近の本を一冊体系的に読んでおこうと思って揃えた本。
Microsoft.NET Frameworkを使った世界の中で、Webアプリの見た目周りを取り仕切る基盤技術 ASP.NET。HTTP回りの事をあまり気にせずともWindowsフォーム開発と同じように開発できるようにしようという基本理念で作られた技術がこのWeb Forms(複数形のsが付く。日本語だと「Webフォーム」)。長らくASP.NETイコールWeb Formsでしたが、最近はASP.NET MVCという別の技術も登場しています。
 本書は2015年刊行、ASP.NET4.6対応、例に登場するIDEVisual Studio 2015 ommunity版です。

 ASP.NETはずいぶん昔にやったきりでなんとなく理解したままでいたのですが、今回この本を読んで体系的に理解し直せてだいぶすっきりしました。
 C#や他の言語でWebアプリの開発経験ありの人にはオススメです。サーバコントロールの種類からaspxファイルでの書き方全部、検証コントロール、最近MSが提唱しているDBアクセスの仕組みのEntity Frameworkとの繋げ方、付属している認証の仕組みのASP.NET Identity、中でjQueryが動いているASP.NET AJAX……などなど、最近のWeb状況に合わせてWebフォームのことがまるっと一通り全部書いてあります。帯に「基本に忠実だから安心。長く使える定番教科書。」とある通りの本です。
 兄弟シリーズにVisual Basic対応版もありますが、まあ今どきお客さんの特定要件が制限がなければC#でしょう。

TECHNICAL MASTERはじめてのASP.NET Webフォームアプリ開発C#対応版

TECHNICAL MASTERはじめてのASP.NET Webフォームアプリ開発C#対応版

 Webフォームという技術一式にフォーカスを当てているので、C#の文法レベルの話とかWebの基本のキホンなど、あまりに基礎的なことは書いていません。
 プログラミング初挑戦やこれから初めてWebアプリケーションを作ってみる…等の人には若干敷居が高いのかもしれません。そういう方には今だと(僕は未読なんですが)『独習ASP.NET 第5版』あたりやC#入門書各種になるのでしょうか。

独習ASP.NET 第5版

独習ASP.NET 第5版

ASP.NET Web Forms vs ASP.NET MVC

 本と関係ないですが、Webアプリケーションフレームワークの中では独自路線を走ってきた異端児であるWebフォームを久々に触って感じたのは、今までネット上あちこちで言われているのと大体同じようなことでした。

  • ボタンクリックで ButtonXyz_Click()メソッドを実装するようなイベントドリブンライクな書き方なので簡単な画面だと楽だが、凝った処理になってくるとだんだん実装場所ここでいいの?という気がしてくる。
  • 独特のポストバックの仕組みがやっぱり独特。感覚的にPage_Load()メソッドに画面初期表示時の処理を入れればいいような気がするが、すべてのボタン押下や子画面のボタン押下やダイアログの表示などで全部Page_Load()に飛んできて(回避方法はあるけど)後で困ったりする。
  • aspxのタグの記述内容が変換されて最終的にHTMLが描画されるので、属性を設定した時の動きが予想と違ったりする。時々HTMLと属性名が微妙に違ったりして混乱する。
  • サーバサイドで処理しないHTML要素を書きたかったり、POSTせずにクライアントサイドで独自のJavaScriptで処理を入れたくなったりすると途端に工夫が必要。
  • 簡単な画面で必須チェックをしたりするなら検証コントロールは楽だが、ボタンが複数ある画面などで完全に制御しようとすると途端に工夫が必要になる。
  • 感覚的に深そうなので回避していましたが、一覧表示のGridViewなどに処理を詰め込むといろいろやばそう。
  • 複雑な画面が正しく動くようになって安心してHTMLソースを表示してみると、長くて汚すぎて死ねる

……などなど探せばきりがないですが、うーんやっぱり独特なところが多いですね。本書の最初のほうにも書いてありますが、他言語のMVCモデルのフレームワークに慣れた人は最初は戸惑うと思います。
 .NETの流れの最新の.NET Coreでは遂にASP.NET Web Formsは廃止されるのが決定していますし、Microsoftの戦略としては今後はASP.NET MVC推しに舵を取る流れなのは頷けます。
 関連するのでASP.NET MVCのこともちょっと調べたのですが、RazorというMS謹製のビューエンジン(PHPにおけるHTMLテンプレートエンジンと同義)で画面を作るMVCモデル構造、URLのルーティング機能……など、他言語のMVCモデルのフレームワークの路線にかなり習ったシンプルな構造になっています。
 対応テーブルが1つの時にCRUDを揃えた画面をすぐ作れるRuby on Railsのスキャフォールド(scaffold)機能と、名前もやることもほとんどそのまんまのスキャフォールディング(Scaffolding)機能があるあたりも面白いです。
 やっぱり複数言語で実績のある仕組みが主流になると徐々にそこに収束し、結局シンプルなものが一番なんだなあと思います。

 現在、ASP.NET MVCを学ぶならまずはASP.NET4.6 + MVC5を扱っているこの紫本でしょうか。

ASP.NET MVC5実践プログラミング

ASP.NET MVC5実践プログラミング

 さらにコアなところというとMicrosoft公式解説書のこちら。

遂にMacLinux上で動くらしい.NET Coreについては世の中一般でまだあまり情報がないですが、ASP.NET Core + MVCも1冊本が出ています。

ASP.NET MVCプログラミング入門

ASP.NET MVCプログラミング入門

またC#界隈ではこの本がアジャイルスクラムデザインパターン、SOLID原則などコーディング回りのベストプラクティスをしっかり解説していて評判がよいので、いつか読もうと思いました。

C#実践開発手法 (マイクロソフト公式解説書)

C#実践開発手法 (マイクロソフト公式解説書)