puppeteer 13.5.1

puppeteer 13.5.1がリリースされました。

さっそくリリースノートを見ていきましょう。

Bug Fixes

・waitForNavigation in OOPIFs

https://github.com/puppeteer/puppeteer/releases/tag/v13.5.1

今回はバグ修正のみでした。

ところで「OOPIFs」は「out-of-process iframes」の略です。即ちiframeを別のプロセスでレンダリングするという意味です。ご存知の通り、HTMLにはiframeを記述することで別のサイト(ドメイン)のページを表示することができます。

従来よりこれはセキュリティ上の問題となっていました。例えば、親ページで処理されている情報(クッキーだったりJavaScriptのオブジェクトだったり)を、セキュリティホールを突いてiframe側が意図しない方法で抜き出すようなことがありました。こういった問題を事前に回避するた、CORS(オリジン間リソース共有)などで明示的にリソースを共有する・しないを指定するようになったのです。

話を戻すと、HTMLやJavaScriptの世界では確かにデータが漏れないようにしていますが、それを更に強化する方法として考え出されたのがOOPIFsです。そもそもiframeを別の(ブラウザ)プロセスで処理させることで、メモリ空間を分けてしまうという考え方なわけです。

Webセキュリティを第一に考えているGoogleのChromiumならではの機能でした。そのうちChromeにも降りてくるんじゃないかと思います。

FreeBSDをインストール

実は「さくらのVPS」で最初から選べるOS(標準OS)にFreeBSDはありません。そのため、「OS再インストール」によってFreeBSDをインストールすることになります。具体的には以下の手順になります。

  1. コントロールパネルの「新規作成」から適当なOS(※)を選んでサーバーを作成する。
    ※とりあえずCentOS 7あたりを選ぶとよいです。
  2. 「OS再インストール」から「カスタムOS」を選択して「FreeBSD 12」か「FreeBSD 13」を選ぶ。
  3. さくらのVPSマニュアルに従ってインストールを行う。
    マニュアルの画面はFreeBSD 11ですが、FreeBSD 12/FreeBSD 13でも同じなので安心です。

以上で終わりです。実はさくらのVPSマニュアルがかなり丁寧に解説しているので、この画面の通りの操作でほぼ問題ありません。強いて言うならばセットアップで作業用のユーザを作っておいた方がいいですが、後から作っても問題ありません。

管理ユーザ(root)のパスワードは覚えておく

最初に選ぶ「標準OS」で設定した管理ユーザ(root)のパスワードは一応覚えておいてください。FreeBSDのrootパスワードはインストーラーの中で再設定するのですが、実はコントロールパネルにIPアドレスでログインする際には最初の「標準OS」の時に設定したパスワードを使います。もしも忘れた場合はコントロールパネルで再設定できますのでご安心を。

FreeBSDのバージョンリリース

2022/3/10現在のFreeBSDの各バージョンリリースとEOL(End of Life)は以下です。

ブランチ/リリースリリース日EOL日
stable/132026/1/31
13.1-RELEASE(2022/4予定)(13.2-RELEASEの3ヶ月後)
13.0-RELEASE2021/4/1313.1-RELEASEの3ヶ月後
stable/122024/6/30
12.3-RELEASE2021/12/712.4-RELEASEの3ヶ月後
12.2-RELEASE2020/10/272022/3/31
https://www.freebsd.org/security/#sup

FreeBSDも他のオープンソースソフトウェアと同じく「メジャー.マイナー」というバージョンナンバリングを採用しています。特にメジャーバージョンを取って12系とか13系と言います。番号が新しい方(13)が最新版のメジャーバージョン系列で、もう片方(12)が安定版のメジャーバージョン系列になります。CentOSにおける7系と8系(8系はなくなってしまいましたが…)の関係に近いと考えてもらうとよいです。

FreeBSD 12にするか13にするか

安定版系列(12系)は先にサポート終了になるので、基本的には最新版系列(13系)を選んだ方がよいです。しかし、FreeBSDには最初の最新版メジャーバージョン(つまりX.0)は避けた方がよい、というジンクスもあったりします。最近はないですが、私は昔は最初のリリースで地雷を踏んだことがよくありました。現時点では13系のリリースは13.0なので個人的には避けたいところです。13.1がリリースされれば、13.1を選んで問題ないでしょう。12系を選ぶ場合は最新の12.3を選べば問題ありません。新規インストールの場合に古いリリースを選ぶ必要はありません。

FreeBSDのメジャーバージョンアップ

ちなみに、FreeBSDでは12系から13系に上げるメジャーバージョンアップ作業(※)はそれほど大変ではありません。そのため今は12系を選んでおいて、後でサポート終了が近くなってから13系に上げても問題ありません。

(※12→13が大変ではないだけで、バージョン間によっては大きな変更があって大変になる場合があります。コンパイラがgccからclangに変わった時やia32からamd64に変わった時はかなり大変でした。)

既に廃止してしまいましたが、旧 www.magisystem.net の自宅サーバは 4.4-RELEASEから12.3-RELEASEまで実に8回ものメジャーバージョンアップを乗り越えてきました。初めてだと心配なこともありますが、最近のFreeBSDにはfreebsd-upgradeコマンドがあって慣れると簡単にできます。また、メジャーアップグレードしやすいように環境を保つことでも作業負荷を低減できます。

このあたりのノウハウも後々書いていこうと思います。

参考

puppeteer 13.5.0

puppeteer 13.5.0がリリースされました。

さっそくリリースノートを見ていきましょう。

Features
chromium: roll to Chromium 100.0.4889.0

Bug Fixes
・Inherit browser-level proxy settings from incognito context
page: page.createIsolatedWorld error catching has been added
tests: ensure all tests honour BINARY envvar

https://github.com/puppeteer/puppeteer/releases/tag/v13.5.0

ついに Chromium 100 が来ました。これまでChrome含めてブラウザのバージョン番号は2ケタでしたが、ついにChromiumのバージョンが3ケタの大台に乗ったのです。User-Agentを見て分けるような処理で、バージョン番号を2ケタ決め打ちにしている場合に問題になっているようです。JavaScript等で処理するならば正規表現にしていたり、そもそもケタ数を意識しない(Stringにすればいい)言語なので問題になるケースは少ないでしょう。

FreeBSDって何?

FreeBSDはLinuxのようなUnix-like(UNIXのような)OSの1つです。歴史を紐解くとLinuxよりも古く、UNIXの勉強をするためにカリフォルニア・バークレー校が教材として開発した4.3BSD(Berkeley Software Distribution)をベースにしています。その後、4.4BSDとAT&Tとのライセンスの問題等があったりしたのですが…今回の話から逸れるので割愛します。

Linuxとの最大の違いは、Linuxの実体がカーネルのみ(コマンドやミドルウェアはGNUによるもの)であるのに対して、FreeBSDはカーネル・コマンド・ミドルウェアを一組にして提供していることです。

Linuxは様々なディストリビューション(UbuntuやCentOSなど)があることはご存知でしょう。これはLinuxがカーネルのみの提供であるがため、それを使うために必要なユーザーランド(コマンドやミドルウェア)を合わせて提供するためにディストリビューションが発達したのです。そのため、パッケージの配布形式もディストリビューションによって違います(UbuntuのdebとCentOSのrpmがその一例です)。

一方で、FreeBSDは全てをFreeBSD Projectが提供します。パッケージの配布形式(pkg/ports)もFreeBSDが提供しています。このため、FreeBSDと言えば1つしかなく、環境によってコマンドや設定方法が変わる、といった心配がないのです。Linuxに比べてFreeBSDで運用されているシステムはあまり知られていないかもしれませんが、Yahoo! Japanは結構昔(2000年初期ぐらい)からFreeBSDで組まれていました。OSとして一括で提供されることから、セキュリティ対応も早いのも安定重視のシステムで選ばれる理由になっています。

ちなみに、BSDには他にNetBSDとOpenBSDがあります。これらは同じ4.3BSDを起源とするものですが、FreeBSDと同じではありません。各BSDの違いは、Linuxのディストリビューションの違いと似ていると言えますが、Linuxはカーネルが同じ(バージョンが違うことはありますが)なのに対してBSDはカーネルが同じではありません。そのため、FreeBSDのバイナリを例えばNetBSDに持っていっても動きません。

何でFreeBSDか?

オープンソースのOSとしての地位を確立して久しいLinuxを差し置いて何でFreeBSDを選んだのか?

それは私がFreeBSDが好きだからです(笑)

ADSLを廃止した2022年まで、2000年から自宅で運用してきたサーバもFreeBSDです。最初はFreeBSD 2.2.8-R(98)でした。とまあ、個人の好みを言っていてもしょうがないので、FreeBSDのよいところを挙げたいと思います。

まず、ユーザーランドを含めて一括で提供されていること。そして、このユーザーランドを最小限にしよう、としているところがBSDの利点です。例えば、かつてFreeBSDにはPerlがユーザーランドに含まれていました。しかし、ある時点のリリースからPerlへの依存をなくしてユーザーランドからは削除されました。

同様にPythonなどもユーザーランドに含まれません。PerlやPythonをすぐに使いたい人にはデメリットに見えるかもしれませんが、OSが依存するPerl/Pythonが存在しないということは、自分が使いたいバージョンを選べるということでもあります。CentOS 7のベースがPython2.8であるために、Python3を使うのに手間がかかる・・・というようなことが起きないのです。

次にportsにより最新のミドルウェアが利用しやすいこと。PythonやPHPのような言語はもちろん、NginxやMariaDBのようなミドルウェアも最新のバージョン(と安定版)をportsから入れることができます。CentOSやUbuntuでは、標準で提供されるパッケージは古いバージョンであることが多く、最新版を使おうとすると自分でリポジトリを入れる必要があります。FreeBSDではOSとして一貫して提供してくれるので、安心して使うことができます。

最後にIPv6スタックをフルサポートしていること。これは私が個人としてIPv6の実験をいろいろしたいから、なのですが。

何でさくらのVPSか?

別にさくらインターネットからお金をもらっている訳ではありません。

もともと自宅でサーバを運用していた頃から「さくらのSSL」で証明書を導入していたことを切っ掛けにウェブサイトとメールサーバは「さくらのレンタルサーバ」に移行しました。それならVPSも同じ「さくらのVPS」にした方が支払いや管理、ネットワーク的にもいいのではないか、と思ったのが理由です。

「さくらのVPS」ではFreeBSDのインストールをサポートしていることもポイントですね。ちなみに「さくらのレンタルサーバ」の中身はFreeBSDです。

参考

puppeteer 13.4.1

puppeteer 13.4.1がリリースされました。

さっそくリリースノートを見ていきましょう。

Bug Fixes
・regression in –user-data-dir handling

https://github.com/puppeteer/puppeteer/releases/tag/v13.4.1

今回はバグ修正のみです。

ちなみにバグの内容は存在しないディレクトリを --user-data-dir に指定すると例外で落ちてしまうというもの(本来ならば新規ディレクトリが作成されます)。このオプションを指定することが稀だと思いますので、遭遇することはほとんどないでしょう。アップデートが可能ならば、対応しておきましょう。