PowerShell 7をインタラクティブシェルとして使う

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第103回】PowerShell 7をインタラクティブシェルとして使う

[2020/06/15 07:00]後藤大地 ブックマーク ブックマーク

コマンドプロンプトの根強い人気

Microsoftから正式に「PowerShell 7.0」が公開された。このバージョンはこれまでWindows 10に互換性確保の目的で保持されてきた「Windows PowerShell 5.1」の正式な後継と位置付けられており、Windows 10の正式なシェルということになる。

Windowsには長らくコマンドプロンプト(cmd)というシェルが搭載されている。MS-DOS時代から存在するシェルだ。現在でもこのシェルを使っているユーザーは少なくない。しかし、Microsoftの開発者はできればもうコマンドプロンプトは使わないでほしいと説明している(参考:MS開発者がツイート「コマンドプロンプトじゃなくPowerShellを使ってね」)。その理由として、主に次の事柄が挙げられている。

  • もともとコマンドプロンプトはMS-DOSやWindows 9xからWindows NTに移行してくるユーザーに対し、MS-DOSスクリプトやMS-DOSコマンドを実行する環境を提供するという目的で存在していた
  • コマンドプロンプトはMS-DOS時代のスクリプトとの互換性を維持するということが至上命題になっているため、すでに少しでも変更することはできない。メンテナンスモードにあるということであり、ユーザーがこのシェルをコマンドラインシェルとして利用することはお薦めできない


コマンドプロンプトは長きに渡って変更されていない。互換性維持が目的で提供されたシェルであるだけに、変更するわけにはいかないためだ。Linuxのシェルと比べても提供されている機能はまるで足りず、インタラクティブシェルとして使いやすいとは言えない。しかし、コマンドプロンプトは現在でも次のような理由で一定の人気がある。

  • コマンドプロンプトは動作が軽快で高速。それに比べるとPowerShellは動作がもっさりしている。コマンドを実行したいと思ったときにサクッと起動できるコマンドプロンプトのほうが便利
  • PowerShellはコマンドレットの出力がオブジェクトであり、扱いにくい
  • コマンドレットが長すぎて覚えられない
  • PowerShellはやりたいことをどのようにやればよいのか調べるのが難しい


コマンドプロンプトは、現状、スクリプトとして使うには制限が多すぎてかなり使いにくい。その点では、プログラミング言語として.NETやC#とともに発展を続けているPowerShellとは比べものにならないのだが、コマンドプロンプトのシンプルさは何事にも代えがたい魅力にもなっている。

多くの方がMicrosoftの主張は理解している。確かに、時代的にはPowerShellへ移行するべきなのだろうと。しかし、実際には使い慣れたコマンドプロンプトを使っている。指摘されているように、PowerShellは学習が難しい。パイプラインを流れるデータはオブジェクトだし、コマンドレット名の長さやパラメータの長さには辟易する。Microsoft側も補完機能を充実させることで改善してはいるのだが、それでもこうした難点は初見者をはねのけるに十分な威力を持っている。

Microsoftがbashやzsh、fish辺りがシステム標準のシェルになる日が来るかどうかはわからない。WSL2の導入を行っているくらいだから、もしかするといずれはbashやzshあたりがシステム標準のシェルになるかもしれないが、それまでは「PowerShell 7」が公式のシェルだ。Windows Terminal 1.0もリリースされたことだし、しばらくは「PowerShell 7をインタラクティブシェルとして使う」という視点から連載を進めていこうと思う。

Windows Terminal 1.0を新しいプラットフォームに

まず、PowerShell 7を利用する環境を整えよう。ちょうど1年ほど前、本連載の第56回で、当時プレビューの段階にあった「Windows Terminal」を取り上げた。Windows Terminalはその後順調に開発が進み、先日初のメジャーバージョンとなる「Windows Terminal 1.0」が公開された。今後はこのアプリケーションがPowerShell 7のお薦め環境となる。

本稿執筆時点(2020年6月)において、「Windows Terminal 1.0」はMicrosoft Store経由でインストールできる。「Windows Terminal」で検索すればすぐに見つかるはずだ。

Microsoft Store経由でWindows Terminalをインストール

Windows Terminalはいわゆる「ターミナルエミュレータ」だ。ターミナルエミュレータは、「ターミナルアプリケーション」「ターミナル」「ターミナルウィンドウ」「端末エミュレータ」「端末アプリケーション」などとも呼ばれる。

PowerShell 7がインストールされていれば、Windows Terminalを起動すると次のようにPowerShell 7が利用できる状態になる。

PowerShell 7が動作するWindows Terminal

MicrosoftはこれまでコンソールアプリケーションやテキストベースユーザインタフェースとしてWindows APIベースのインフラストラクチャ「Windows Console」を提供しており、これをベースとしたアプリケーションが利用されてきた。だが、Windows Consoleをベースに開発されたアプリケーションは「ターミナルエミュレータ」とはちょっと違う。

そのため、「Windows Terminal」はこれまでWindowsしか使ってこなかったユーザーにとっては若干とっつきにくいものになっている。今回は、この辺りを整理しよう。

普段見ているコマンドプロンプトやWindows PowerShellは同梱モノ

これまでコマンドプロンプトやWindows PowerShellを使ってきたユーザーからすれば、コマンドプロンプトやWindows PowerShellはスタートメニューから専用のアプリケーションとして起動する実行環境ということになる。これらはWindows Consoleをベースに開発されたものだ。

そうしたアプリケーションは、前述した「ターミナルエミュレータ」と「シェル」が同梱された状態にある。コマンドプロンプトはWindows Consoleをベースに開発されたターミナルエミュレータで「cmd.exe」を実行したものであり、Windows PowerShellはWindows Consoleをベースに開発されたターミナルエミュレータで「powershell.exe」を実行したものだ。専用で開発されたターミナルエミュレータでシェルを実行した状態で起動したもの、それが普段見ているコマンドプロンプトでありWindows PowerShellのウィンドウということになる。

Windows PowerShell

コマンドプロンプト

Windows TerminalはこのWindows Consoleを引き継ぎつつ、Windows Consoleのターミナルエミュレータとしての機能のみを特化させていったアプリケーションだ。Windows Terminalは、シェルを含まない純粋なターミナルエミュレータである。

macOSやLinuxではこうしたターミナルエミュレータのみのアプリケーションが多数存在しており、提供されている機能は多岐にわたる。ターミナルエミュレータは開発者や管理者に欠かすことのできないものであり、日々の作業効率を左右する重要なアプリケーションだ。Windows Terminalはそうしたターミナルエミュレータの一つであり、Microsoftが初めて公開したモダンなターミナルエミュレータということになる。

Windows Terminalはcmd.exeにもpowershell.exeにも対応しているし、当然PowerShell 7 (pwsh.exe)にも対応している。WSLにも対応しているし、sshやbash、zsh、fishといったシェルにも対応している。後発のターミナルエミュレータだけあって内容もよく整理されており、「Cascadia Code」と呼ばれるフォントまで同梱している。かなりバランスの良いターミナルエミュレータだと思う。

シェルの新たなプレーグラウンドが「Windows Terminal」

では、Windows Terminalと、これまでのコマンドプロンプトやWindows PowerShellのターミナルエミュレータ機能は何が違うのか。ずばり、「汎用性が違う」と言えるだろう。そもそも、Windows Terminalのほうがターミナルエミュレータとしての機能が比較にならないほど豊富であるほか、当然ながら最初から複数のシェルに対応している。

デフォルトで起動するシェルは設定によって変更することができる。また、タブの隣りにある「∨」をクリックすると表示される候補からシェルを選択すれば、そのシェルが新規タブで起動する。コマンドプロンプトウィンドウやWindows PowerShellウィンドウと違って、Windows Terminalはあくまでもシェルに対して中立的なターミナルエミュレータなのだ。

複数のシェルに対応するWindows Terminal

今後、Windows 10では、Windows TerminalでPowerShell 7を実行するというのがスタンダードになっていくと見られる。Windows Terminal 1.0もPowerShell 7.0も公開されたこのタイミングは、新しい環境に移行する良いタイミングだと言えるだろう。

PowerShell 7をインタラクティブシェルとして扱っていくとともに、Windows 10を使っている場合にはこのWindows Terminalについても基本的な操作方法や設定方法は覚えておきたい。特にタブとペイン、設定ファイルの書き方は最初に覚えたいところだ。macOSやLinuxで行っているような作業をWindowsでも簡単に実現できるようになる。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
対話システムをつくろう! Python超入門
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
PowerShell Core入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る