SE(たぶん)の雑感記

一応SEやっている筆者の思ったことを書き連ねます。会計学もやってたので、両方を生かした記事を書きたいと考えています。 でもテーマが定まってない感がすごい。

PowerShellの編集にはVisual Studio Codeが良いと思う

当ブログではたまにしか記事にならない、PowerShellの話です。

PowerShellスクリプトを編集・デバッグする際は、WindowsについているPowerShell ISEを使う方法もありますが、何かと使いにくいです。*1

私が勧めるのは、Visual Studio Codeです。

バージョン等

ツール等 バージョン
Visual Studio Code 1.20.1
PowerShell 5.1.16299.248
PowerShell(VSCode拡張機能) 1.5.1

PowerShellについて(ニュース)

Windows PowerShell - Wikipedia

PowerShellといえば、Windows上で動作するスクリプト言語でした。
.NET Framework上で動作*2していました。

2018年1月、ついに.NET Coreへ移植され、クロスプラットフォーム対応となりました。
今後は、PowerShellLinux等でも動かせます。(要インストール)

blog.shibata.tech

非常にわかりやすかったので、リンクさせていただきました。

Visual Studio Codeの拡張機能

名前そのままなPowerShellを使います。
当ブログ執筆時点で、バージョン1.5.1です。

github.com

下記の通り、1.5.1の時点で、すでにPowerShell6.0に対応しています。

f:id:hiroronn:20180219203636p:plain

よいところ

ブログを始めたころに書いた、以下の記事のスクリプトで紹介します。

hiroronn.hatenablog.jp

デバッグできる

PowerShell ISEと同じですが、デバッグできますし、ブレークポイントも配置できます。

関数の参照一覧が出てくる

f:id:hiroronn:20180219204247p:plain

ファイルの先頭で関数を定義しています。
VSCodeを使うと、参照している箇所の数が表示され、クリックすると、参照箇所が画像のように表示されます。

関数や変数の定義にジャンプできる

Visual Studioや、IDEを使ったことがある人なら、おなじみの機能です。
F12キーで、その定義元にジャンプできます。

IntelliSenseが早いうえに親切

f:id:hiroronn:20180219210149p:plain

f:id:hiroronn:20180219205801p:plain

コマンド名の入力時は、ある程度名称が近いものを出してくれます。*3
コマンドレットの引数入力時は、入力できるパラメーター一覧と、要求型を表示してくれます。

.NETのメソッド等もIntelliSenseで表示してくれる

PowerShellで細かい処理を行う際、どうしても.NETの処理に頼る場合があります。
そういう場合でも、入力補完が行われます。

f:id:hiroronn:20180219211557p:plain

スニペットがある

vscode-powershell/PowerShell.json at master · PowerShell/vscode-powershell · GitHub

リンク先のJsonファイルに定義されている通り、多種多様なスニペットが用意されています。
私も全体を見ていませんが、こんなのがありそうです。

  • ex系(スクリプト例)
  • for、for reverse、foreach
  • function、method、class等

構文チェックが丁寧

例えば、未使用の変数がある場合、警告が表示されます。*4
上手に使えば、スクリプトの品質向上にも役立ちそうです。

まとめ

Visual Studio Codeだと、PowerShellはかなり扱いやすくなります。
特に、複数のスクリプトに分けて処理を記載する場合は、Visual Studio Codeのフォルダをルートとして開く特性と相まって、非常に扱いやすくなります。
参照先に飛ぶこともできるので、複数ファイルに分けるのが、とても楽です。

おわりに

個人的には、PowerShellが便利すぎて、Pythonスクリプトとして使用する機会がなかなか訪れない状況となっています。
単純に、PowerShellのほうが慣れているだけなのですが。

PowerShellを使いたい、と思う方がいれば、Visual Studio Codeはお勧めです。


*1:デバッグの開始終了がやりづらい、複数ファイルを扱いにくい、Intellisenseはあるが微妙に不親切等

*2:よって、PowerShellから.NETにあるライブラリを呼び出せる

*3:ただし、先頭の動詞(GetとかInvokeとか)は正確に入力したほうが良い

*4:実行は可能