銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

Visual Studio 2015 で強化されたリファクタリング機能について

Visual Studio 2015 の1日目です。

Visual Studio Advent Calendar 2014 - Qiita

一発目なので最新の機能の中からデバッグ関連の機能を軽く紹介したいと思います。

リネーム機能

変数名のリネーム機能が強化されました。変数名を変更したあとに、使用しているかしょをまとめて変更する機能はありましたが、今回はプレビュー機能もついて強化されました。 変数にフォーカスを置いて、Ctrl+R,Ctrl+R (CtrlとRの同時押しを2回)すると、この機能が呼びだされます。

f:id:tanaka733:20141130175956p:plain

f:id:tanaka733:20141130180006p:plain

強化された点は、変更対象がリアルタイムに変更に追随すること、文字列リテラルやコメント中の文字列もオプションで変更対象に含めることができる点です。

メソッドの抽出

抽出したいコードを選択して、 Ctrl+R,Ctrl+M でメソッドが抽出されます。抽出後は上のリネーム機能状態になりメソッド名を入力できます。

f:id:tanaka733:20141130183719p:plain

f:id:tanaka733:20141130183728p:plain

クイックアクション

選択して、Ctrl+. を押すとクイックアクションと呼ばれる機能が呼びだせます。ReSharper の Alt+Enter に似た感じの機能です。

たとえばハードコーディングした内容を定数化できたり、

f:id:tanaka733:20141130185911p:plain

メソッドチェーンをローカル変数に抽出したり、

f:id:tanaka733:20141130185945p:plain

逆に複数のメソッドをインライン化したり

f:id:tanaka733:20141130185959p:plain

といったことができます。

Roslynによるコードリファクタツールの追加

拡張できる、という意味ではこれがある意味最強の機能追加かもしれません。Roslynが解析APIを公開したことで、自分でコードリファクタの機能を作成・展開し、利用することができます。詳細はのいえせんせーのブログがわかりやすいです。

neue cc - VS2015のRoslynでCode Analyzerを自作する(ついでにUnityコードも解析する)

といった感じで、あっさりですが、わりと便利な機能が追加されたのではないでしょうか。また、リファクタリング機能に限らず全体的にモーダルダイアログを表示する、ということが少なくなった印象があります。好き嫌いはありそうですが、個人的には好みな向きな変更です。

ASP.NET MVC 5実践プログラミングを読みました

先日、ASP.NET MVC 5実践プログラミングをいただいたので(かなり時間はかかりましたが)読んでみました。

ASP.NET MVC 5実践プログラミング

ASP.NET MVC 5実践プログラミング

読もうと思ったきっかけ

会社で開発しているものは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 を使いこんでいてコアな部分の辞書的に使いたい、という目的だと説明が長すぎると感じるかもしれません。

*1:MVCのバージョンあげたり、MVCとあまり関係ない部分を触ったりはありますが

*2:ただ、個人的には EntityFramework (のような重厚なORマッパー) は嫌いなので使わないのですが...