「.NET」カテゴリーアーカイブ

ReSharper Ultimate 2016.3

情報源: ReSharper Ultimate 2016.3 is Released! | ReSharper Ultimate Blog

変更箇所多数wVS 2017 RCに対応しました。

RoslynによってVSが機能追加をしていく中、ReSharperのようなアドインの必要性も少なくなって行っているのも事実ですが、がつんと引き離しに来ていますね。

Code Style Configuration in the VS2017 RC Update

A first-hand look from the .NET engineering teams

情報源: Code Style Configuration in the VS2017 RC Update

varでの争いは絶えませんね。

以前紹介したVisual Studio 2017のC# Code Style設定ですが、2017 RC UpdateからEditorConfigで設定できるようになったようです。EditorConfigで設定できるようになると、プロジェクトテンプレートに付けることも出来ますし、配布、設置も楽になりますし、プロジェクト単位での制御も楽になりますね。

JetBrains Rider(C# IDE)

C# Advent Calendar 12/2分です(あれ?)

Rider(Reshaper IDE)は括弧内でもわかるようにJetBrains社が開発していて、先頃パブリックEAPとなったC#/VBのIDEです。内容的にはInteliJ IDEAなどで使用されているIDEエンジン+ResharperのC#/VBコード分析、編集機能と言う内容になっています。

現在Windowsではフルスタックの.NET Framework、.NET Core、Linux, Macではmono, .NET Coreに対応しています。IDE自体はJavaで動いています。

以下よりダウンロードが可能です。

https://www.jetbrains.com/rider/download/

以下はWindows版での紹介です。

IDEの外観としてはInteliJ IDEAやPyCharmなどと基本的に同じです。

capture-2016_12_03_2103_40-001

キーアサインはInteliJ, Resarper, Visual Studioなどの中から選択でき、私はVSと同じにしています。またvimライクな編集を可能にするプラグインも用意されています。

capture-2016_12_03_2121_38-002

インテリセンスの使い勝手についてはResharperのそれそのものです。

capture-2016_12_03_2106_40-002

つまり強力です。

またReSharper同様の強力なコード解析、修正機能もそのままです。

capture-2016_12_03_2111_02-002

上はクラス名がcamelCaseになってしまっているのでPascalCaseに修正しようという提案です。

これもResharperと同様にコードヒント(電球のアイコン)が出て、修正を行ったり、Riderに無視するように指定できたりします。

capture-2016_12_03_2113_19-002

また、クラス名だけで無く、クラス名修正後も電球のアイコンがツルハシのアイコンに変わりリファクタリング機能も呼び出されます。この辺がルールに合わせた名称変更までになっているVS 2017 RCとは異なるRiderやResharperの優れた機能です。

capture-2016_12_03_2116_50-002

ここでは一つのソースファイルに二つのクラスが書かれる形になるので、Employeeクラスを別のファイルに分割するかの提案がされています。

ただ、現状コードスタイル等の設定はResharperの標準設定のままとなっていて、Resharperのような細かい設定をすることが出来ません。

capture-2016_12_03_2124_52-001

プロジェクトテンプレートは以下のようになっています。

capture-2016_12_03_2127_18-001

現状ではコンソール、WEBプロジェクト、テストプロジェクトのみとなっています。もっともGUIデザイナーは無いのでWinFormやWPFのプロジェクトが合っても困りますが。また、現状Xamarinは正式にはサポートされていません。私は使ったことがありませんが、一応Unity開発用のプラグインはあるようです。

機能的な詳しいところは以下のJetBrainsのページを参考にしてください。

https://www.jetbrains.com/rider/features/

最後にRiderの意義みたいなところですが、Visual Studioのオルタナティブ、マルチプラットフォームと言うところになります。Xamalin Studioがそういう立ち位置になるかとも思っていましたが、(私的には)不幸なことにXamalin Studio はVisual Studio For Macになってしまいました。

どんな製品でもオルタナティブは必要です。オルタナティブが無く、競争のない製品は腐っていくと私は信じていますので、RiderのようなAlt Visual Studioが健全に育っていくことがMSやVSにとっても必要です。フェラーリに対するランボルギーニ、Intelに対するAMD,ARMそういった存在が互いに競争してこそ、健全な機能向上、健全な価格が維持されます。

また、マルチプラットフォームなIDE接続の場合としてmonodevelopはありますが、VSは残念ながらWindowsとMacでしか動作しません。しかし。.NET Coreは真のマルチプラットフォームが目指されています。そうした中でどんなOSであっても同様にいつものように使える高機能IDEの存在意義は大きなものがあります。

以上のようなことからRiderがより発展していくことを願っています。

では、Happy Holidays!

Visual Studio 2017 RCのC#コードスタイル機能について

Visual Studio アドベントカレンダーの1日目です。

Visual Studio 2017ではコード編集機能が強化されていて、今までのバージョンに比べてC#のコードスタイルの設定が細かく出来るようになっているので、その紹介をします。

下図の様にオプションのテキストエディタの項目にコードスタイルの項目があります。

capture-2016_11_30_2010_12-001

各設定項目は、None, Suggest, Warning, Errorのレベルが設定できるようになっていて、Suggest以上に設定すると、ビルド時にそのレベルのメッセージが表示され、Errorであればコンパイルエラーになります。また、編集中もリアルタイムでコード分析され、コードヒント等で、設定された内容に合わせてコードをその場で修正することが出来ます。

例えば、varの使用でErrorになるように設定しておき、コード内でvarを使用すると以下のように赤いニョロ付きで該当箇所が表示され、マウスカーソルをその場所にホバーするといつものようにエラー内容が表示されます。

snapcrab_consoleapp1-microsoft-visual-studio_2016-11-30_20-36-18_no-00

一緒に表示されているコードヒント(電球のアイコン)をクリックすると以下のようにどの様に修正されるか(するべきか)表示されます。

snapcrab_noname_2016-11-30_20-40-48_no-00

varでは無く明示的な型を使用しますをクリックすると、コードが修正されます。

snapcrab_noname_2016-11-30_20-41-56_no-00

このようにただ、後からコードスタイルを静的解析できると言うだけで無く、リアルタイムで解析して、通知、修正までが行えるようになっています。

個別の設定項目

それでは個別の設定項目を見ていきます。

まず全般の項目では次の設定項目があります。

また、各書式設定はその設定でどの様にコードスタイルが変化するのかわかるようにビジュアルでも表示されます。

  • 「thisの優先」thisを使用する化しないかの設定です。
    capture-2016_11_30_2016_57-001
  • 「定義済みの方の設定」これはInt32のようなフレームワークの型名を使うかintのような言語で定義された型名を使うかの設定をします。
    capture-2016_11_30_2017_52-001
  • 「’var’を優先」これはどの様なときにvarを使うのかを設定します。デフォルトでは一切使用しません。
    capture-2016_11_30_2024_39-001
  • 「Expression preference」これは型の初期化時に初期化子を使用するかどうかの設定です。
    capture-2016_11_30_2020_36-001
  • 「Variable Preference」は変数の定義場所の指定で、関数や条件式の中でインラインで定義できるか、変数の定義は独立させるかの設定となります。
    capture-2016_11_30_2027_04-001
  • 「’null’チェック」はnullチェックの方法についての設定を行います。
    capture-2016_11_30_2030_00-001
    capture-2016_11_30_2030_11-001

書式設定の全般はほぼ今まで通りです。

capture-2016_11_30_2051_16-001

インデントの設定は以下のようになっています。

capture-2016_11_30_2053_09-001

スペースの項目は設定項目が大幅に増え、細かく設定できるようになっています。

capture-2016_11_30_2054_06-001 capture-2016_11_30_2055_17-001

改行も同様に設定項目が大幅に増えています。

capture-2016_11_30_2057_18-001

折り返しの設定項目は以下のようになっています。

capture-2016_11_30_2058_25-001

名前指定は、変数名、型名などの名前の設定ルールを指定する項目で、デフォルトの設定では以下のようになっています。

capture-2016_11_30_2100_50-001

ルールは追加削除が可能で、ダイアログ左下の+をクリックでルールを追加、ルール右側のxをクリックするとルールの削除が行えます。また各ルールの左の矢印で適応の優先度を調整できます。

また、ルール対象、スタイルそれぞれの追加削除も可能で、以下はスタイルの定義をしているところです。

capture-2016_11_30_2100_28-001

これを組み合わせると以下のように新しいルールを追加できます。

capture-2016_11_30_2105_04-001

詳細設定は以下のような項目になっています。

capture-2016_11_30_2107_13-001

保存と展開

設定したルールは、設定のインポートとエクスポートウイザードのエクスポート機能で保存できるので、これを各ユーザーに配布して、インポートしてもらいます。

capture-2016_11_30_2110_13-001

まとめ

今まで、リアルタイムでのコードスタイル分析機能と、修正機能はReSharper等の有償の拡張ツールでは実現されてきましたが、Community Editionでも使用できるVisual Studioの基本機能としてこれが実装された意義は大きいと思っています。

Stylecopの時も書きましたが、コードスタイルの確認と指摘をいちいちコードレビューで行うようなことはお互い時間の無駄でしかないので、そのようにつまらないことは、このVSの新機能やStylecopで機械にやらせ、コードレビューはもっと本質的なところに注力できるようにした方がいいです。

という事で、1日目の投稿でした。VS2017はこれ以外にもいろいろな機能強化点があるので是非試してみてください。

では、Happy Holidays!

RiderがパブリックEAP

.NET IDE based on the IntelliJ platform and ReSharper. Supports C#, ASP.NET, ASP.NET MVC, .NET Core, Unity and Xamarin

情報源: Rider: Early Access Program builds

JetBrainsが開発しているC# IDEのRider(ReSharper IDE)がこれまでの登録・招待制から公開EAPとなりました。これでどなたでもダウンロードして試していただけるようになります。EAPはEarly Adapter Programの略でJetBrainsでのPublic Preview版の呼び方です。

RiderはInteliJ IDEAなど他のJetBrainsのIDEと同様のIDEエンジンを使用してC#での開発を行うIDE接続の場合製品です。従って、Windowsだけでは無く、Mac, Linuxでも使用できます。このため、.NET Frameworkだけでなく、.NET Core、monoでの開発に対応しています。今回公開の前のビルドからプロジェクトテンプレートの種類も増えましたし、完成度もだんだん上がってきています。

キーマップもVS, ReSharper, InteliJ IDEAから選べるのでそれぞれお使いの方も安心です。vimキーアサインにも対応。

capture-2016_11_22_0649_30-001

capture-2016_11_22_0654_24-001

現状monoがインストールされていないWindowsで用意されているプロジェクトテンプレートは以下のようになっています。

capture-2016_11_22_0655_36-001

こんな感じです。

capture-2016_11_22_0657_49-001

ReSharperお使いの方は、インテリセンスやサジェストに関してはReSharperそのものです。また、InteliJ IDEAなどと同じフェイスを持ち、同じキーアサインに出来るのでJetBrainsの他のIDEをお使いの方にも入りやすい感じじゃないでしょうか。

MSDNマガジンConnect(); 2016特集号

情報源: Connect(); 2016

日本語版はまだですが、現在開催されているConnect(); 2016のMSDNマガジン特集号が公開されました。

Blogを追いかけるのも良いのですが、全体サマリをそれなりの深度で確認されたい方はまずこれを呼んでから、公開されたセッションビデオを見てみるのも良いかと思います。

セッションビデオは以下で公開されるはず。

https://channel9.msdn.com/Events/Connect/2016

.NET Core Tools MSBuild “alpha” 

A first-hand look from the .NET engineering teams

情報源: Announcing .NET Core Tools MSBuild “alpha” | .NET Blog

今まで、.NET Coreと.NET Frameworkでは違うプロジェクト管理、ビルドプロセスとなっていましたが、それを統一しようという物です。

.NET Coreではproject.jsonファイルでプロジェクト管理、ビルド記述が行われてきましたが、これは今後「新しい」.csprojにつまりMSBuildによるビルドプロセスに統一されていきます。

この新しい.csprojはVS 2017, VS for Mac, VS Codeでサポートされます。