Chrome DevToolsチームは、ヘッドレスChromeの操作に特化したNode APIのPuppeteerをリリースした。同じような機能のサードパーティツールのリストに新たなツールが加わることで、イノベーションと成長が余儀なくされる。
複数のブラウザを対象とするSeleniumとは異なり、Puppeteerの目的はただひとつ、ヘッドレスChromeの操作にある。Node APIなので、開発者は使い慣れているはずだ。
const puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); await page.screenshot({path: 'example.png'}); browser.close(); })();
コードはPuppeteerのREADMEより引用
プロジェクトを立ち上げた背景には、Chromeバージョン59から提供が開始された、ヘッドレスChromeの操作を大幅な簡素化することがある。Google Performance EngineerであるPaul Irish氏は、既存のプロトコルを使用することの難しさについて、次のように書いている。
個人的な経験から、自動化スクリプトを記述する上で、DevToolsプロトコルを直接扱うのは得策ではないと言えます。もっと高レベルのAPIを備えたライブラリが必要なのは明らかです。
同じ欠点は、コミュニティでも認識されている。PhantomJSが役割を終えて以来、その後継をめぐって激しい競争が続いている。Chromeless、Chrominator、Chromyはいずれも、ヘッドレスChromeの発表を受けてローンチされたものだ。Puppeteerのようなファーストパーティツールが現れたことで、サードパーティツールがこのゲームに留まるためには、イノベーションと素早い行動が求められることになる。おそらくはマーケットで淘汰が始まるだろう。
Mediumの記事では、通称Ken Sohという著者が、Googleチームの参入は開発者にとって朗報だと述べている。
Googleがこのコミュニティを受け入れると決めているのなら、当然ながら事態は急速に改善されるでしょう。Chromeベースのアプローチは開発者にとって、エコシステムの確立した既存のものとは違う、新たな選択肢となり得るのです。
現時点では、AWS Lambda上でテストのリモート実行が可能なChromelessにアドバンテージがあるものの、将来的にはPuppeteerもLambda上で機能するようになるだろう。現在のPuppeteerにはNodeのバージョン7.1が必要だが、記事の執筆時点では、Lambdaがサポートするのはバージョン6.10.3のみとなっている。一部の開発者にとっては、ひとつのブラウザでのみテストを行なうという考え方は受け入れ難いかも知れないが、Chromeでテストすればほとんどの開発者には十分だとSoh氏は考えている。
ChromeあるいはヘッドレスChromeでテストが動作すれば、少なくともユーザの大多数にとって、そのWebアプリは正しく動作するという確信が得られるはずです。
この記事を評価
- 編集者評
- 編集長アクション