強化されたタブ補完機能

「PowerShell 7 Preview 5」にはプログラミング言語としての新機能も追加されているが、インタラクティブシェルとしての利用においての利便性も向上している。特に注目したいのがタブ補完機能の強化だ。PowerShellはもともとタブ補完でさまざまな入力補完を行ってくれるが、PowerShell 7 Preview 5ではこの機能がさらに強化されている。

PowerShell 7 Preview 5

今回はこの強化されたタブ補完機能について紹介する。この機能は基本的にタブキーを押すことで機能するので、何も考えなくてもいつの間にかこれまでよりも便利になっているというものだ。しかし、どのような改善が行われたのか知っておくことに損はないだろう。

新しいタブ機能の実行サンプル

例えば、1つ前のプレビュー版であるPowerShell 7.0.0 Preview 4で次のようにタブ補完を実行すると、変数として代入できる値ではなく、カレントディレクトリのファイルやディレクトリが補完候補として表示されている。

PowerShell 7.0.0 Preview 4

PowerShell 7.0.0 Preview 4でのタブ補完サンプル

PowerShell 7 Preview 5ではこうした場合のタブ補完機能が強化されており、次のように動作が変更された。

この状態でタブキーを押す

CategoryViewが候補として表示された。ここでさらにタブキーを押す

補完候補がCategoryViewからConciseViewへと変わる。ここでさらにタブキーを押す

補完候補がNormalViewに変わる。タブキーを押すごとにこのように代入できる候補が表示される

簡単に言うと、変数に代入する候補がタブキーで表示されるというものだ。候補が表示可能な場合にはタブキーで候補が順次表示されるようになる。タイプミスなどもなくなる便利な機能だ。

次のように明示的に代入できる候補を指定してみると、この補完機能がどのように機能するのかがよくわかる。

整数として1、2、5、10のどれかが代入できる変数$vを作成しようとしている

タブキーを押すと1が表示される

もう一度タブキーを押すと2が表示される

もう一度タブキーを押すと5が表示される

もう一度タブキーを押すと10が表示される

このように入力可能な値が補完候補として表示されることがわかる。もうひとつ、入力対象が限定されるケースとして列挙型を考えてみる。次のようにOSという列挙型を作成し、変数$vへ値を代入してみようとしてみる。

Windows、macOS、Linuxを値として取るOSという列挙型を用意

タブキーを押すと入力候補としてLinuxが表示される

タブキーを押すとmacOSが表示される

タブキーを押すとWindowsが表示される

こんな感じでタブ候補で適切な値をインタラクティブに選択できるようになった。これならPowerShellをインタラクティブシェルとして使っている間も入力ミスを減らすことができる。「Visual Studio Code」などの統合開発環境を使っている場合なら統合開発環境側から入力支援が行われるが、PowerShell 7からはインタラクティブに使っている状態でもそうした補完が機能することになる。

Visual Studio Code

これまでPowerShellの開発では、「PowerShell ISE」を使うというのが定番だったが、Microsoftはデフォルトの開発環境として今後はVisual Studio Codeを提供していくことを発表している。

まだ機能が不足しているものの、2020年1月に公開が予定されているVisual Studio CodeのPowerShellエクステンションにはPSReadLineの完全サポート、Omnisharpの統合、PowerShellスクリプトアナライザのホストが含まれる予定になっている。また、このバージョンからはPowerShell 3.0とPowerShell 4.0のサポートも廃止になる見通しになっている。

PowerShellにとって、2019年はプログラミング言語としての注目度が大きく上昇した年でもあった。PowerShell CoreがLinuxおよびmacOSでも使えるようになったことや、Windows PowerShellの後継をPowerShell 7にすると発表されたことなどが理由の1つだと考えられる。今後、PowerShellを巡る取り組みはますます活発になっていきそうだ。

参考資料