こんにちは!
皆さん映画見てますか!!
映画ってほんとうに良いものですよね!!!
私は昨年ついに、立川シネマシティの会員になってしまいました!!!!
突然ですが映画の話を差し込みます
ゴーストバスターズ という1984年の大ヒット映画があります。科学兵器で幽霊退治をする映画です。
最近になってあらためて観ますと、劇中の最終目的地となるビルが呪術的な構造をしていて純度の高いSelenium(セレン)を含んでいる、なんて感じの説明があってニヤリとするわけです。
Seleniumの構造体に巣食うPhantomを退治してしまうのね...
というわけでこの記事ではSeleniumとPhantomJSの話をします。
PhantomJS!? 非推奨にしたはずでは...
SeleniumとPhantomJSを組み合わせて何か作る類の技術記事は非常に多く、最近もまだまだこの構成での新しい記事がWeb上で書かれているようです。
しかし、残念ながら既にSeleniumのいくつかのバインディングでは、PhantomJSの併用は明示的に非推奨・サポート切れとなっています。
- Ruby(Selenium v3.6.0から)
- Java(Selenium v3.8.0から)
- Python(Selenium v3.8.1から)
今まさにSelenium + PhantomJSの記事を書いている途中だったら、すぐにSelenium + Headless Chrome/Firefoxの記事に書き換えましょう!!!!
既に書いちゃった記事は、青春の1ページと思って10年後に読んで苦しめ!!!!! フハハ!!!!!
そもそもなんで非推奨になったの???
2017年4月に、PhantomJSの唯一のメンテナーであったVitaly Slobodinが引退してしまったことが、強く影響しているとみられます。
当時のPhantomJSのメーリングリストへの Vitaly Slobodinの投稿 は強い悲観を感じさせるもので、PhantomJSの将来が完全に途絶えた印象を持つには十分だったのではないでしょうか。
この投稿を、ざっくり日本語訳します。
やあ、私から告知させてほしい。
ヘッドレスChromeがやってくる - https://www.chromestatus.com/features/5678767817097216
(https://news.ycombinator.com/item?id=14101233)結局は、みんなこれに切り替えるんだろう。ChromeはPhantomJSに比べて、速いし安定している。メモリーをバカみたいに食うこともない。
PhantomJSの開発に、私はもう未来を見出せない。PhantomJS 2と2.5をひとりで開発するのは血だらけの地獄だ。
最近、新しくてピカピカのQtWebKitを使った2.5 betaバージョンをリリースしたけど、私には一度に3つすべてのプラットフォームの物理的なサポートはできない(サポートのためにMacを買うまでした!)。 私たちにはサポートが無い。
今から、私はメンテナーから退く。もし誰かが継ぎたいときは - 気軽に連絡してくれ。私はAriya、James、Ivanを讃えたい! 皆さんと仕事ができて嬉しかった。乾杯!
私たちを助けてくれた、あるいは助けようとしてくれたすべての人々にも、感謝を告げたい。ありがとう!
折しも、各WebブラウザーにおけるWebDriverの実装を、 W3Cで標準化されつつあるもの に準拠させようとされている最中です。
PhantomJSは開発が止まったことによりW3C WebDriver準拠とする作業が止まってしまったわけで、Selenium開発者たちはPhantomJSのサポートも止めざるを得なくなってしまったものとみられます。
PhantomJSの最新事情
PhantomJSは完全に終わったかと思いきや、一波乱ありました。2017年12月になって ポーランドのフリーランサーであるpixiuPL がPhantomJSへの精力的なコントリビューションを始めて、ついにはPhantomJSの新バージョンが再リリースされたのです。
しかしこれは、非常に残念な結果に終わってしまいました。
pixiuPLのコミット品質は全体的に低く、かつ進め方も粗暴なものであったため、2018年3月にPhantomJSの原作者である Ariya Hidayat はリポジトリー防衛のために開発プロジェクトを凍結することを宣言したのです。
master
ブランチの状態はバージョン2.1.1まで巻き戻され、将来的に開発を再開できる状態までには整えられたものの、PhantomJSをSeleniumで再び利用可能とするための壁はまた一段と厚くなってしまいました。
Archiving the project: suspending the development
https://github.com/ariya/phantomjs/issues/15344
pixiuPLの動きにはたいへんに問題があり、邪推をすればリポジトリーを乗っ取るようにみえるものでした。(著者表示を自分だけのものに差し替えたり、ファイルの削除・再追加によってGitログ上は自分の成果物に見えるようにしたり、リポジトリーや公式サイトの管理権限についてAriyaに執拗にコンタクトをとったり...)
また、既存の release
など重要なブランチもpixiuPLにより削除されるなどしたため、リポジトリー復旧のための多大な努力の甲斐無く、いくつかのコードは失われてしまったようです。
PhantomJSの最新バージョンは2.1.1となり、これはもう2年前のものとなってしまいました。ヘッドレス機能も既にPhantomJSだけのものではなく、他にいくつも代替となる実装例があらわれています。
残念ですが、GhostbustersがPhantomを退治して、一時代が終わってしまったと結論づけるのが妥当なようです。