Seleniumでブラウザーと一緒に用意しなきゃいけないアレの更新がめんどいのをどうにかしよう

この記事は[Selenium/Appium Advent Calendar 2016](http://qiita.com/advent-calendar/2016/selenium_and_appium)の6日目の記事です。
5日目はkimpakuの[Jenkins+Seleniumで非推奨の負荷試験をやってみた](http://qiita.com/kimpaku/items/c66a29b6fced08df64dc)でした。


こんにちは！
名前が思い出せなくてアレって言うことが増えましたね！！

# Seleniumのアレ

Seleniumやるときにブラウザーと一緒に用意しなきゃいけないアレは総称がなくて、説明するときに困ります。
Google Chrome/Chromium には chromedriver
Microsoft Edge には MicrosoftWebDriver
最近では Firefox にも geckodriver が必要ですし、
仮面ライダードライブでいよいよ呼称がどうなるかと思ってたら普通にドライブドライバーでｽﾞｺｰでしたよね。

これらはブラウザーにREST APIを提供するための一種のプロキシーなわけですが、プロキシーという言葉が指す範囲は広すぎて誤解を生みやすいので、なんとかこうSeleniumの文脈に閉じた専用の名前が欲しいところですね。
将来的にそういう用語が生まれることに期待しつつ、この記事ではSeleniumのアレのことを暫定的に「ジャスタウェイ（仮）」と表記することにします。

# 更新情報をどうやって得るか

ジャスタウェイ（仮）はブラウザーに合わせて更新していくのですが、ブラウザーの新バージョンが出ると各種メディアで報道されてわかりやすいのに比べると、ジャスタウェイ（仮）の更新情報はあんまり世の中に露出していなくてわかりにくい印象があります。

でも、実はジャスタウェイ（仮）の更新情報はリアルタイムに効率的に配信されていることがほとんどです。

## GitHub の Releases フィードをチェックする

最近はオープンソースのジャスタウェイ（仮）はGitHub上で開発が進められていることが多くなりましたね。
案外知られていないのですが、GitHubのReleasesページのURLに `.atom` というサフィックスを追加すると、リリース情報のRSSを取得できます。これをRSSリーダーに登録しておけば、リリース情報をすぐに得られます！

GitHubで確認できる主なジャスタウェイ（仮）のRSSフィードURLは次の通りです。

* GeckoDriver https://github.com/mozilla/geckodriver/releases.atom
* detro/ghostdriver https://github.com/detro/ghostdriver/releases.atom
* codeborne/ghostdriver https://github.com/codeborne/ghostdriver/releases.atom
* HtmlUnitDriver https://github.com/SeleniumHQ/htmlunit-driver/releases.atom
* jBrowserDriver https://github.com/MachinePublishers/jBrowserDriver/releases.atom

## 独自形式のフィードをチェックする

ChromeDriverとIEDriverServerはGoogle Cloud Storageで公開されていて、Google Cloud Storage APIを叩くことで独自形式のリリース情報を確認できます。
APIを叩くとなると多少の心構えが必要な気がしますが、サフィックス無しのURLにアクセスするだけで既定のAmazon S3互換の [XML API](https://cloud.google.com/storage/docs/xml-api/overview) を叩けますので、気軽に試してみましょう！

* ChromeDriver https://chromedriver.storage.googleapis.com/
* IEDriverServer https://selenium-release.storage.googleapis.com/

XMLのほかに、 [JSON API](https://cloud.google.com/storage/docs/json_api/) でも同様の情報を取得できます。

* ChromeDriver https://www.googleapis.com/storage/v1/b/chromedriver/o/
* IEDriverServer https://www.googleapis.com/storage/v1/b/selenium-release/o/

このようにして得られたXML/JSONは、自分でがんばってパースして通知処理に流しても良いのですが、最近は定型処理を自動化するサービスがまた流行っているので、うまく利用するとだいぶお手軽になります。

* Microsoft Flow https://flow.microsoft.com/ja-jp/
* Zapier https://zapier.com/
* dlvr.it https://dlvrit.com/
* IFTTT https://ifttt.com

私の今のおすすめは、無料アカウントでもかなり複雑な処理を組める Microsoft Flow と、自前の処理をJavaScriptで簡単に書ける Zapier です。
[日本SeleniumユーザーコミュニティのTwitter](https://twitter.com/seleniumjp) には、これらのサービスを活用して得られた更新情報をなるべく自動投稿しています。ぜひご参照ください。

## OSやパッケージシステムの更新処理にまかせる

新しいSafariDriverは、AppleがSafariのアップデートに合わせて同梱してくれるようになりました。あえて更新情報をチェックしなくても、なんとかなります。

そのほか、最近は次のような標準的なパッケージシステムにもジャスタウェイ（仮）が登録されていることが増えました。ぜひ活用しましょう。

* Windows
    * NuGet
    * Chocolatey
* Mac
    * Homebrew
* Linux
    * apt
    * yum

## 公式のWebサイトを見る

旧来の、最も効率的でないパターンです。
MicrosoftWebDriverェ...
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

MicrosoftWebDriverはWindows 10 Insider Previewの大型アップデートが入る際（つまり、Microsoft Edgeが大きく変わるタイミング）に更新される傾向にありますので、大型アップデートのリリース直後くらいにチェックすると良いかもしれません。


# 今回はここまで

次回はgluelan2013です。よろしくお願いします。
[Selenium/Appium Advent Calendar 2016](http://qiita.com/advent-calendar/2016/selenium_and_appium)はまだまだ君の挑戦を待っているぜ！