Windowsのコマンドラインインターフェースの設定

記事
IT・テクノロジー

Windowsのコマンドラインインターフェースの設定

最近の OS は、いろいろな設定をグラフィカルなインターフェースで設定できるため、「コマンドライン」を利用する機会は通常の使用ではほとんどなくなりました。 ところが、開発で利用する場合は、コマンドラインのインターフェースを使う場合もまだまだあります。特に Web 開発で、npmなどのパッケージ管理ソフトや、React や Vue の開発でnpmの管理機能を利用した環境で開発する場合はコマンドラインは頻繁に利用します。

Windows のコマンドライン

Windows の場合、このコマンドラインのインターフェースが分かりにくい部分があります。最新版の Windows10 の場合、「Powershell」が基本的には標準のコマンドラインのインターフェースになっています。しかし、いまだに、従来の「コマンドプロンプト(cmd)」も残っています。

さらに、混乱するのは、Node.js をインストールすると Node.js 用のコマンドプロンプトがインストールされますし、Git を入れても「Git Bash」、「Git CMD」がインストールされてどれも似た機能を持っています。

どれを使う?

開発で使う場合、概ねどのコマンドラインのインターフェースを使っても殆どの機能は動作します。分かりやすいのは、Git を使う場合は Git のコマンドラインインターフェースを使ったり、Node.js 関連の作業は Node.js のコマンドラインを使えばほぼ問題ないく作業ができます。

逆に、Windows Powershell を使えば大抵の作業は可能です。

ところが、Windows Powershell を使うと動かないあるいはエラーになる場合があります。 具体的な例をあげると、Firebase のコマンドや、Vue CLI などは特に設定をしていない場合 Power Shell ではエラーになります。ところが、同じ事を、Node.js のコマンドラインで実行すると問題なく動きます。

きっと同じような体験をされた方も多いかと思いますが、Node.js のコマンドラインを使えば特に問題なく動くのであまり深追いはせずに、Node.js のコマンドラインを使っていらっしゃる方も多いかと思います。

便利な VSCODE のターミナル機能

別にコマンドラインのウインドウを開けて処理する場合は、Node.js のコマンドラインを立ち上げて利用すれば問題ありません。しかし、VSCODE を利用していると、VSCODE からコマンドラインのインターフェースを利用出来る機能「ターミナル」があります。

この機能は意外に便利で、VSCODE から必要なモジュールのインストールをしたり、イメージの生成などをすることができます。また Typescript のコンパイルなども出来るので別々にウインドウを開けるより作業効率が上がります。さらに、バックエンドのプロジェクトを別のウインドウで操作しながら開発する場合は、どちらも別のフォルダで作業する必要がある場合が殆どです。その場合、どのコマンドラインがどのプロジェクトに対応しているかが、VSCODE のターミナルを利用するとすぐにわかるので便利です。

ところが、このターミナルは Windows 標準のコマンドラインインターフェースの Powershell が呼び出されています。そうすると折角の便利な機能が使えません。

Execution Policy の設定が必要

エラーメッセージを見ると分かりますが、実は Powershell はスクリプトの実行に制限がかかっています。この設定は

$ Get-ExecutionPolicy
で確認できます。この設定が「Undefined」や「Restricted」の場合、スクリプトの実行が制限されます。そうすると、開発でよく利用するnpmのスクリプトで実行出来ないものが出てきます。従って、この設定を変更すると、Powershell から実行が可能になります。

設定の変更例ですが、以下のコマンドは現在のユーザー(設定変更を行っているユーザー)の設定を変更する例です。

$ Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
のように実行します。ポリシーは「Bypass」や「Unristricted」にすればスクリプトが実行できるようになります。

Mac や Linux では?
Mac や Linux の場合、OS のシェルがこのコマンドラインの役目をしています。 アプリ毎に違うコマンドラインインターフェースをインストールする場合は殆どありません。さらに、通常はスクリプトの実行に制限はかかっていません。

従って特別な設定をしなくても、VSCODE のターミナルで必要な作業を行えます。

実は、この Powershell 自体はオープンソースで、Windows 以外でも利用可能です。Windows 以外の場合は、標準の設定は「Unristricted」になっているため、特に設定をしなくてもスクリプトの実行は可能です。(Windows 以外の場合、Powershell を VSCODE のターミナルで呼び出す場合はないと思います。)

まとめ
Windows の場合、元々余りコマンドラインのインターフェースを使うことを考えてこなかったため、アプリ毎にコマンドラインインターフェースをインストールするケースも存在します。Powershell は新たにスクリプト対応するために実装された比較的新しい機能です。

Windows の Powershell の場合、スクリプトの実行に標準設定では制限がかかっているため、開発で一般的に使うスクリプトでも一部実行ができないものがあります。機能上は別のコマンドラインのインターフェースを使えば問題はありませんが、VSCODE のターミナルを利用する際は、ExecutionPolicy の変更が必要になります。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す