今回からは数回にわたり、PowerShellからMicrosoft Edgeを操作する方法を取り上げていく。作業効率を劇的に引き上げてくれる可能性の高い機能なので、じっくり取り組んで使い方をマスターしてしまおう。
→連載「PowerShell Core入門 - 基本コマンドの使い方」の過去回はこちらを参照。
Microsoftプロダクトを操作するPowerShell
Microsoftは、PowerShellをWindowsやMicrosoftプロダクト/サービスを連携させたり、操作・管理したりするためのシェルに位置付けている。こうしたケースでPowerShellを使わない場合、ユーザーは多くの作業をGUI経由で行うことになる。これは手間もかかるし、ヒューマンエラーも発生しやすい。したがって、PowerShellで業務をシンプルにしていくことが、業務の効率化につながるというわけだ。
Webブラウザで仕事ができるようになっている
最近は多くの作業がWebインタフェースに統合される動きを見せている。もちろんその進度は、業務や業界によって大きな開きがある。すでにほとんどの作業がWebインタフェースで行われている企業もあれば、全くそうでない企業もあるだろう。
とは言え、今後、産業界全体としてWeb技術の活用は広まっていくと考えられる。
そうなると問題なのは、PowerShellはWebブラウザを制御することができないという点だ。PowerShellはMicrosoft独自の技術である。現在、そのコア実装はオープンソースソフトウエアとして公開されているものの、主要なWebブラウザはPowerShellをサポートしていない。要するに、PowerShellからはWebブラウザの制御を行うことができない。
Windowsでサービスの統合に使えるシェルはPowerShellなので、できればPowerShellからWebブラウザの操作をしたい。せめてMicrosoft Edgeだけでも操作できれば、PowerShellを中心として多くの作業の自動化が可能となる。何とかして、これを実現したい。
WebアプリやWebサイト開発業界を見る
さて、ビジネスパーソンはますますインターネットに依存するようになっている。Webサイトはもちろん、インターネットを利用するようなアプリケーションも何かしら使っているだろう。そしてユーザーのニーズに応えるため、開発者は短期間でさまざまなWebアプリケーションやWebサイトを開発する必要性に迫られている。
現在では主要Webブラウザ間で高い互換性が実現しているとはいえ、それでも主要なWebブラウザ実装系はいくつもあり、利用する主なディスプレイサイズも複数存在している。WebアプリケーションやWebサイトを作成する際にはこれらの条件を組み合わせて試験を行わなければならない。だが、全てを手動で行うのはとても大変だ。
Webブラウザに対する操作を自動化し、試験を自動的に実行できるようにしたい。しかも、その試験は複数のWebブラウザに対して実行できるようになっていてほしい――そこで、WebアプリケーションやWebサイト/Webページの開発者に欠かすことができないのが「WebDriver」だ。
Webブラウザを操作する「WebDriver」
Webブラウザ以外のプロセスからのブラウザ操作を実現する、“要”となる規格が「WebDriver」だ。その情報は、執筆時点で次のワーキングドラフトにまとまっている。
WebDriverは、外部のプロセスからWebブラウザを操作するためのリモートインタフェースだ。OS、プログラミング言語、Webブラウザなどに依存しないニュートラルなプロトコルで、DOMを介した操作が可能になる。この機能を使うことで、比較的柔軟にWebブラウザに表示されているコンテンツを操作できる。
WebDriverはプロトコル
WebDriverへの対応は、Webブラウザ側が実現する必要がある。現在主要なWebブラウザは全てWebDriverに対応している。対応の程度に差はあるが、主要な機能はほぼどの環境でも使えると思っておいて間違いないだろう。
WebDriverを経由してWebブラウザを操作するには、WebDriverのプロトコルを使ってWebブラウザと“対話”を行う必要がある。通常、こうした操作を自前で実装することはない。面倒すぎるからだ。実際には、WebDriverを実装したライブラリやモジュールといったサードパーティ製のソフトウエアを利用することでWebDriverを経由したWebブラウザの操作を行う。
WebDriverを使うときは「Selenium」
WebDriverに対応した実装系はいくつか存在している。最も有名なのは「Selenium」ではないかと思う。WebアプリケーションやWebページを開発する際に多くの開発者が利用しているライブラリだ。
Seleniumはデフォルトで次のプログラミング言語に対応している。
- Java
- Python
- C#
- Ruby
- JavaScript
- Kotlin
PowerShellは、Seleniumの対応プログラミング言語には含まれていない。しかし、C#はサポートされている。PowerShellはシェルだが、技術的にはC#および.NETをバックグラウンドとして構築されている。そのため、C#の機能はそのままPowerShellから使用することができる。つまり、C#がサポートされているということは、PowerShellでも利用できるということを意味している。
PowerShellには「Selenium」モジュールがある
実は、PowerShellにはモジュールとして「Selenium」が存在している。Install-Moduleコマンドレットからインストールできるお手軽なモジュールであり、このモジュールを使うとC#の機能を呼び出すよりも簡単にWebDriverを使うことができる。
今のところPowerShellからWebDriverを使うには、このモジュールを使うのが最も簡単な方法ではないかと思う。