Try .NET Core

.NET Coreを動かした、試した記録を書き残します。

音楽サーバ"Mopidy"のフロントエンドを作る:小休止 - Visual Studioの環境づくり

"Mopidy"フロントエンド「Mopidy.Finder」が出来るまで、今回は小休止です。

近年のWeb系のみなさんには不評この上ないWindows+IDEですが、セットアップさえしてしまえば、強力な助っ人になってくれます。

WindowsVisual Studioの開発環境を整えるまでの手順を、少しずつUIを追いながら、書き綴ってみたいと思ます。

Visual Studioのインストール

まずはVisual Studio。現行最新はVisual Studio 2019です。
特にCommunity Editionは、小規模事業者や学生さん向けに無償で配布されています。
無償とはいえ、機能はほぼProfessional Editionと変わりありません。
f:id:try_dot_net_core:20190806174248p:plain
この「無償ダウンロード」リンクから、インストーラがダウンロードできます。

f:id:try_dot_net_core:20190806174453p:plain

このインストーラを起動すると、Visual Studioの機能を選択する画面が出てきます。
私の場合は、過去案件の保守の関係もあり、下記の4つをいつも入れています。

f:id:try_dot_net_core:20190806174611p:plain
f:id:try_dot_net_core:20190806174941p:plain

機能を選んで「インストール」ボタンを押すと、インストールが始まります。
f:id:try_dot_net_core:20190806175216p:plain

インストールが終わると、Visual Studioが起動します。
あらかじめ作っておいた、Microsoftアカウントを使ってサインインします。
f:id:try_dot_net_core:20190806175443p:plain

こちらが起動直後の、プレーンなVisual Studio 2019の画面です。 f:id:try_dot_net_core:20190806175558p:plain

ためしに一度、ASP.Net Coreプロジェクトを作ってみます。
「新しいプロジェクトの作成」をクリックすると、プロジェクトテンプレートの一覧が出てきます。
f:id:try_dot_net_core:20190806175642p:plain

ASP.Net Coreプロジェクトを選んで進めると、こんな画面。
f:id:try_dot_net_core:20190806175942p:plain

「作成」ボタンを押すと、さらに詳細なテンプレート選択が出てきます。
f:id:try_dot_net_core:20190806180043p:plain
おっと、ASP.Net Coreのバージョン 2.2が選べませんね。
これは後からインストールする必要があるようです。
一旦このまま、プロジェクトを作ってみます。

そして、作り立てのプロジェクトの最初の画面。
f:id:try_dot_net_core:20190806180339p:plain

最初はファイル一覧などが右側に配置されてます。
私は左側に置いておきたいので、移動させます。
f:id:try_dot_net_core:20190806180522p:plain

プロパティウインドウはデスクトップアプリしか使わないため、左帯に追いやりました。
f:id:try_dot_net_core:20190806180957p:plain

Extensionのインストール

Visual Studioでは拡張機能が色々用意されています。
このままでも十分使い物になるのですが、そこはお好みで。
Extensionのインストールは、メニュー「拡張機能」からです。
f:id:try_dot_net_core:20190806181323p:plain

「Manage Extensions」画面の左ペインで、オンラインを開きます。
まずは定番、Microsoftさん御謹製のProductivity Power Toolsです。
f:id:try_dot_net_core:20190806181551p:plain

そして、改行コードを保存時に整形してくれる「Line Endings Unifier」 f:id:try_dot_net_core:20190806181638p:plain

Markdownの編集機能も便利です。 f:id:try_dot_net_core:20190806181713p:plain

ひととおり欲しいものを「Download」ボタンで追加しておき、画面を閉じます。
そして、Visual Studio自体も一回閉じてしまいます。
すると、Extensionのインストーラが走ります。
しばらく待つと、インストール対象の確認ダイアログが出ます。
f:id:try_dot_net_core:20190806182053p:plain

そしてVisual Studioを起動すると、Extensionがインストールされた状態で開かれます。
いらないExtensionを無効化する場合は、同様にメニュー「拡張機能」から「拡張機能の管理」を開きます。

Productivity Power Toolsは沢山のExtensionのセットパッケージです。
私の場合は「Shrink Empty Lines」があまり好みではないため、無効化しています。 f:id:try_dot_net_core:20190806182500p:plain

.Net Core SDKの追加インストール

前述でプロジェクトを作ったとき、ASP.Net Core 2.2が選択できませんでした。
これは、.Net Core SDK 2.2がまだ入ってないためです。
追加でインストールしましょう。
f:id:try_dot_net_core:20190806182740p:plain
え...っと、どれだ?と迷いました。
Visual Studio用のインストールなので、左側三番目かなぁ?

選んでみると、注釈が出ていました。 f:id:try_dot_net_core:20190806182923p:plain
ほうほう、2019で使うならそのリンクなんですね。ぽちっとな。

f:id:try_dot_net_core:20190806183016p:plain
なんだか色々出てきました。
この辺がMSさんの洗練されてないところいや、素朴なところと言っておきます(?)

環境はWindows10-x64なので、SDK2.2.401のx64インストーラを選びます。
インストーラがダウンロードされました。
f:id:try_dot_net_core:20190806183343p:plain

早速インストール。
f:id:try_dot_net_core:20190806183416p:plain

インストール終了後、Visual Studioを起動。
また新しくASP.Net Coreプロジェクトを作ると、リストにASP.NET Core 2.2が出てくるようになりました。
f:id:try_dot_net_core:20190806183557p:plain

node.jsのインストール

node.js開発機能は選択しませんでしたので、現状ではまだnode.jsがインストールされていません。
コマンドプロンプトをだして... f:id:try_dot_net_core:20190806183954p:plain

npmをお試し。 f:id:try_dot_net_core:20190806184029p:plain
はい、無いですね。

公式配布ページから、node.jsをもらって来ます。
f:id:try_dot_net_core:20190806184217p:plain
最新の12.7.0 Currentを選びました。

ダウンロードしたインストーラがこちら。 f:id:try_dot_net_core:20190806184314p:plain

インストーラを起動し、デフォルト状態で次へ次へと進みます。
f:id:try_dot_net_core:20190806184443p:plain

インストール後、コマンドプロンプトを起動して、お試し。
f:id:try_dot_net_core:20190806184532p:plain
よしよし、入ってますね。

Visual Studioのプロジェクトを開いて、npmが使えるか試してみます。
f:id:try_dot_net_core:20190806184710p:plain

どれどれ。 f:id:try_dot_net_core:20190806184745p:plain
f:id:try_dot_net_core:20190806184819p:plain
おー。npm init が通りました。

さてこの調子で、webpackやらmochaやらのインストールを進めていくと。
f:id:try_dot_net_core:20190806185057p:plain
f:id:try_dot_net_core:20190806185114p:plain
あら。ダメ出しされちゃいました。
メッセージを読むと、rejected by your operationg systemとな。
こりゃ権限エラーかな、ということで、WindowsUACを無効化してみます。

コントロールパネルを出して... f:id:try_dot_net_core:20190806185347p:plain

ユーザーアカウントを開いていくと、ありますね。
ユーザーアカウント制御設定の変更です。
f:id:try_dot_net_core:20190806185505p:plain

これを、最低設定にします。
f:id:try_dot_net_core:20190806185539p:plain

UACは再起動しないと適用されませんので、再起動かけます。
f:id:try_dot_net_core:20190806185629p:plain

さて、どうよ? f:id:try_dot_net_core:20190806185654p:plain
おー。無事にnpmパッケージがインストールされました。よしよし。

TSCの設定

さてここで、tsc(Typescriptコンパイラ)が走るかどうか、試してみます。
f:id:try_dot_net_core:20190806185846p:plain
おっと、ダメですね。
tscの存在が分からないらしい。

tscはどこにあるか、というと。
Visual Studioでインストールした場合、ここに入ります。
C:\Program Files (x86)\Microsoft SDKs\TypeScript\[version]ですね。 f:id:try_dot_net_core:20190806190057p:plain

ここにパスを通してみます。 f:id:try_dot_net_core:20190806190148p:plain
f:id:try_dot_net_core:20190806190211p:plain
f:id:try_dot_net_core:20190806190358p:plain
一番最後に、TypeScriptのインストールパスを追記しました。

さて、どうよ?
f:id:try_dot_net_core:20190806190449p:plain
ありゃ? tscを、Windows Script Hostが実行しちゃってますね。
これをnode.jsが実行するように、変更します。

C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.5\tsc.jsのプロパティから。
f:id:try_dot_net_core:20190806190647p:plain

実行するプログラムを変更します。
f:id:try_dot_net_core:20190806190724p:plain
f:id:try_dot_net_core:20190806190814p:plain
最初はNode.js: Server-side Javascriptの選択肢がありません。
「このPCで別のアプリを探す」から、node.exeを探してセットします。
デフォルトインストールの場合、C:\Program Files\nodejs\node.exeとなるはずです。

実行プログラムをnodeに変更し、リトライです。
f:id:try_dot_net_core:20190806191258p:plain よしよし、ちゃんと動いてますね。

Chromeのセットアップ

Visual Studio 2017からは、標準でChromeデバッガへのアタッチが可能になりました。
これまではIEかEdgeでしか出来なかったJavascriptのステップデバッグが、Chromeで出来るようになったんですね。
これを使わない手はない!ということで、Chromeを入れます。

まずはWebから、インストーラを貰ってきてセットアップ。
f:id:try_dot_net_core:20190806191954p:plain

インストール後に出来るChromeのショートカットに、デバッガポートの設定を追記します。
f:id:try_dot_net_core:20190806192047p:plain
f:id:try_dot_net_core:20190806192109p:plain
chrome.exe の後ろに、--remote-debugging-port=9222と追記します。
これを一回起動しておけば、あとはChromeが覚えていてくれるようです。

動作環境のテスト

さて、ひととおりセットアップが終わったはずです。
ここでMopidy.Finderの初期コミットを貰ってきて、デバッガの動作を試します。

1つめはフォルダ構造がよろしくないため、2つ目のコミットをダウンロードします。
f:id:try_dot_net_core:20190806192434p:plain
f:id:try_dot_net_core:20190806192533p:plain

zipを解凍してプロジェクトを開きます。
まずはnpmパッケージをインストール。
f:id:try_dot_net_core:20190806192639p:plain
f:id:try_dot_net_core:20190806192716p:plain
ん、なんか警告出てるけど。まあ一応通りました。
この警告は、lodash脆弱性付きバージョンに対するものだったと思います。

テストは通るかな?
f:id:try_dot_net_core:20190806192906p:plain
よしよし、通ってますね。

ビルドも、問題なく通ります。 f:id:try_dot_net_core:20190806193001p:plain

Visual StudioでTypeScriptコードにブレイクポイントを置き、ブラウザをChromeに。
f:id:try_dot_net_core:20190806193152p:plain

これを実行してみると。
f:id:try_dot_net_core:20190806193218p:plain
Chromeが出てきて、「デバッガで止まってるよ」と表示が出ます。

Visual Studioに戻ってみます。 f:id:try_dot_net_core:20190806193319p:plain おーし!
ブレイクポイントで止まっています。
既に実行済みの、song1の生成後の値も確認できますね。

というわけで、今回は環境構築のおはなし、でした!