ChromeのベータでJPEG XL画像が表示できるようになった

つくば市のホームページ制作会社

Chrome for Developersのブログで、9月16日にベータ版となったChrome 155の変更点がまとめられました。CSSの新しい指定やJavaScriptのモジュール読み込みの改善など項目は多いのですが、画像を扱う制作者として目が留まったのは、JPEG XL(image/jxl)の画像を読み込んで表示する機能がBlink(Chromeの描画エンジン)に加わったことです。

JPEG XLは国際規格ISO/IEC 18181として標準化された画像形式です。紹介記事によると、読み込みの途中から段階的に絵を見せられるプログレッシブ表示に対応しており、体感の表示速度を上げやすいとされています。加えて、広い色域やHDR、高いビット深度、アニメーションも扱えます。写真を多く載せるサイトや、色の再現にこだわる商品写真などとは相性のよい特徴がそろっています。回線の細い環境で大きな写真を見せるとき、最後まで読み込まれるまで空白が続くのか、粗い絵が先に出て徐々に鮮明になるのかでは、見ている人の印象がかなり違います。

中身の実装にも注目したい

今回の対応では、デコード(画像データを表示できる形に戻す処理)に、Rustで書かれたjxl-rsというデコーダーが使われています。記事ではこれを「メモリ安全な純Rust製のデコーダー」と説明しています。画像の読み込み処理は外から届いたデータをそのまま解析する部分なので、昔から脆弱性の温床になりやすい場所でした。新しい形式を受け入れるにあたって、安全性を意識した実装を選んだという点は、ブラウザ側の姿勢として心強く感じます。

とはいえ、今の段階はあくまでベータ版での対応です。正式版にいつ届くか、ほかのブラウザでどこまで使えるかは、それぞれの状況を確かめる必要があります。すぐにサイトの画像をJPEG XLへ置き換えるというより、<picture>要素で対応ブラウザにだけJPEG XLを渡し、それ以外にはWebPやJPEGを返す、という段階的な使い方が現実的でしょう。この書き方なら、対応していないブラウザで画像が欠けることもありません。

ちなみに同じベータ版には、ほかにも制作者に関係する変更が並んでいます。コンテナの先頭や末尾の子要素の余白を切り落とせるCSSのmargin-trimや、読み込みに失敗したJavaScriptのモジュールをあらためて読み込み直せるようにする変更などです。画像の話と合わせて、不安定な回線でも崩れにくいページを作るための部品が少しずつそろってきている印象です。

中小企業のサイトでは、画像の書き出し形式を一度決めたら何年も見直さないことが珍しくありません。WordPressのメディアライブラリや画像最適化プラグインがこの形式をどう扱うかも、今後の動きを見ていきたいところです。私たちも、写真の多い案件から少しずつ試しながら、表示の速さと画質のバランスを確かめていくつもりです。

WordPressにAPIキーを暗号化して預ける仕組みが入る見込み

つくば市のホームページ制作会社

決済、メール送信、地図、予約システム。WordPressで作るサイトは、外部サービスとつながるたびにAPIキーやパスワードのような「鍵」を預かります。その鍵がどこにどう保存されているか、納品のときに意識したことはあるでしょうか。WordPress本体の開発チームが公開した次期版の計画に、この鍵の保管方法を根本から整える「Secrets API」が入っています。

いまはプラグインの設定と同じ場所に平文で置かれている

Make WordPress Coreに8月末に投稿された提案によると、現在のWordPressには「秘密の値」を扱う専用の仕組みがありません。APIキーを必要とするプラグインは、サイトのキャッチフレーズなどと同じオプションテーブルに、暗号化せずに書き込むしかないのが実情です。提案者も、これはプラグイン作者の落ち度ではなく、ほかに選択肢がないためだと書いています。

問題は、このテーブルがデータベースのダンプやバックアップ、ステージング環境の複製にそのまま含まれることです。制作会社が検証用にコピーしたデータベースにも、クラウドに置いたバックアップにも、本番の鍵が読める形で残ります。一部のプラグインは独自に暗号化していますが、方式はばらばらで、まとめて点検することができません。

提案されている仕組みの中身

提案では、wp_set_secret()とwp_get_secret()を中心とした少数の関数と、値を包むオブジェクトが用意されます。保存時の暗号化は常に有効で、無効にする設定はあえて設けないとされています。暗号化できる設定にしておくと、結局多くのサイトが平文のまま残るからだ、という理由です。

ほかにも実務で効いてきそうな設計がいくつかあります。

  • 取り出した値はログやvar_dump()の出力では伏せ字になり、生の文字列を得るには明示的な呼び出しが必要
  • 値を取り出す経路にはフィルターを置かない。フィルターがあると、どのプラグインでも全部の鍵を横取りできてしまうため
  • 値の書き出し機能はなく、移行先やステージングでは入力し直す前提。確認用には値そのものではなく指紋(fingerprint)を使う
  • 上書きしても直前の値を一つだけ残し、入力ミスや切り替え途中の不具合に備える
  • WP-CLIからも扱えるようにし、コマンドの引数に鍵を書いてシェルの履歴に残る問題も減らす

既存の設定値を自動で移し替えることはせず、プラグイン作者が自分の判断で移す関数を用意する方針です。移した鍵には「作り直しが必要」という印が付きます。すでにバックアップに平文で残っている以上、暗号化しただけでは不十分で、鍵そのものを発行し直すのが本当の対策だという考え方です。

守れるものと守れないもの

提案は効果の範囲をはっきり線引きしています。守れるのは、データベースの流出、クラウドに置いたバックアップ、SQLインジェクションによる読み取り、設定画面のスクリーンショットやデバッグログからの漏れといった経路です。一方、WordPressの中でコードを実行されてしまった場合は防げません。鍵は使うために取り出せる必要があり、WordPressとして動くコードなら同じように取り出せるからです。

それでも、流出の多くはデータベースやバックアップ経由で起きるという前提に立てば、盗まれたデータベースの価値を下げる意味は大きいと考えられます。鍵へのアクセスが一か所にまとまるので、誰がいつ変えたかを記録できるようになる点も見逃せません。

7.2に入るかどうかと、制作現場の準備

9月18日に公開されたWordPress 7.2のロードマップでは、再認証を求める「sudoモード」やApplication Passwordsの強化と並んで、Secrets APIがセキュリティ面の柱に挙げられています。7.2のベータ1は10月20日から22日、正式版は12月上旬の予定です。ただしロードマップ自体が、掲載項目がすべて入るとは限らないと断っていて、提案でもベータ1までに間に合わなければ7.3へ見送るとしています。管理画面の設定画面は7.3以降に回し、まずはAPIとWP-CLIを固める段取りです。

本体に入ってもすぐに何かが変わるわけではなく、各プラグインが対応して初めて効果が出ます。それまでの間にできるのは、自分たちが納品したサイトにどんな鍵が保存されているかを把握しておくことでしょう。データベースを検証環境にコピーするとき、そこに本番の決済キーやメール送信の認証情報が入っていないか確かめるだけでも、事故の芽は減らせます。プラグインの更新履歴に対応の知らせが載りはじめたら、預かっている鍵を発行し直すよい機会になりそうです。

Firefoxが古い鍵交換方式を既定で使わなくなった

つくば市のホームページ制作会社

9月15日に公開されたFirefox 156で、HTTPS通信の最初のやり取り(TLSハンドシェイク)に関する既定の設定が変わりました。MDNの開発者向けリリースノートによると、有限体Diffie-Hellmanと呼ばれる方式のうち、ffdhe2048とffdhe3072という2つのグループが、既定では提示されなくなっています。目立つ新機能ではありませんが、サーバーを預かる側としては一度確認しておきたい変更です。

鍵交換は、ブラウザとサーバーが暗号化に使う鍵を安全に取り決めるための手順です。現在の主流は楕円曲線を使うECDHEで、今回外れたのはそれより前から使われてきた有限体の方式にあたります。リリースノートでは、これらのグループにしか対応していないサーバーとは接続の取り決めが成立しなくなる一方、ほぼすべてのサーバーはECDHEに対応していると説明されています。つまり、大半のサイトでは何も起きない見込みです。

変更の経緯と影響が出そうな場面

この変更はMozillaのバグ管理システムに約11か月前に寄せられた提案から始まっています。提案者は、Chromium系のブラウザがこれらのグループを使っていないことや、Firefoxがすでに量子計算機を見越した新しい鍵交換方式(X25519MLKEM768)に対応していることを挙げ、既定で無効にするよう求めていました。その後、FFDHE系の暗号スイートが有効な場合にだけこれらを鍵共有の候補に含める形に修正され、156で反映されています。

影響が出るとすれば、長く設定を見直していないサーバーです。たとえば社内向けの管理画面や、古い機器に組み込まれたウェブ設定画面、何年も前の設定ファイルを引き継いだまま動いているサーバーなどが考えられます。こうした環境で鍵交換の方式が有限体のものに絞られていると、Firefoxだけ接続エラーになるといった形で表面化するかもしれません。ChromeやSafariでは開けるのにFirefoxでは開けない、という問い合わせが来たときは、証明書だけでなく鍵交換の設定も疑ってみる価値があります。

確認の方法としては、外部のSSL診断サービスでサーバーが対応している鍵交換方式を調べるのが手軽です。ECDHE系、できればX25519が有効になっていれば今回の変更で困ることはまずありません。レンタルサーバーやマネージド環境であれば、事業者側で既に現代的な設定になっている場合がほとんどです。一方、nginxやApacheを自前で運用している場合は、暗号スイートや鍵交換の指定を昔の推奨設定からコピーしたままになっていないかを見ておきたいところです。設定を変えたときは、主要なブラウザで実際に開けるかを確かめてから本番に反映すると安全です。

証明書の有効期間が段階的に短くなる流れもあり、HTTPSまわりの設定は一度作れば終わりというものではなくなってきました。自社で管理しているサーバーや、納品後に手を入れていない顧客のサイトがあれば、次の保守のついでに暗号設定の一覧も眺めておくと安心です。

Googleのスパム対策の更新がいつもより長く続く

つくば市のホームページ制作会社

Googleが9月24日(米国太平洋時間)に、今年4回目となるスパムアップデートの配信を始めました。Google検索の状況を知らせるステータスダッシュボードによると、対象は全世界・全言語で、配信の完了までに最長で2週間ほどかかる可能性があるとされています。今回はこの「長さ」が、制作や運用に関わる立場から見て少し気になるところです。

今年のスパムアップデートと比べて何が違うのか

Search Engine Journalのまとめによると、2026年は3月、6月、8月にもスパムアップデートがありました。所要時間は3月が約19時間半、6月が約2日、8月が約2日半強で、いずれも事前の告知は「数日」という表現でした。それに対して9月は、最初から2週間という枠が示されています。もちろん枠いっぱいまでかかるとは限りませんが、これまでより長い期間、検索順位の揺れが続くことを前提にしておいたほうがよさそうです。

もうひとつの特徴は、何を狙った更新なのかが説明されていない点です。広告・検索業界を追っているPPC Landは、今回はブログでの解説も新しいポリシーの発表もなく、「通常のスパムアップデート」とだけ伝えられたと報じています。つまり新しいルールができたのではなく、すでにあるスパムポリシーに沿った判定の仕組みが強化された、と受け取るのが自然です。

期間が長いと原因の切り分けが難しくなる

配信が2週間続くということは、その間に起きたアクセスの増減が、今回の更新によるものなのか、季節要因やほかの変動によるものなのかを見分けにくい期間が長くなる、ということでもあります。PPC Landによると、正式な発表の前、9月22日ごろから順位計測ツール各社で大きめの変動が観測されていたそうです。発表前の揺れと更新そのものの影響が混ざるため、なおさら判断が難しくなります。

サイトを運用している側としては、この期間にSearch Consoleの数字が動いても、すぐにページを大きく書き換えるのは避けたいところです。配信の完了が告知されてから、期間を区切って前後を比べるほうが落ち着いて判断できます。日々の変化は記録しておき、完了後にまとめて見る、くらいの距離感がちょうどよいと思います。

中小企業のサイトで見直しておきたい点

スパムアップデートは基本的に、Googleが公開しているスパムポリシーに反するサイトの評価を下げるためのものです。ポリシーの文書には、クローキング、隠しテキスト、キーワードの詰め込み、リンクスパムなど、昔からある手法が並んでいます。普通に運営している会社サイトであれば、過度に心配する必要はありません。そのうえで、制作の現場で実際に見かけやすいものをいくつか挙げておきます。

地域ごとのほぼ同じページ

ポリシーでは、特定の地域や都市を狙った複数のドメインやページを作り、最終的にひとつのページへ誘導するやり方を「ドアウェイの悪用」の例として挙げています。対応エリアを示すために市町村ごとのページを作ること自体は珍しくありませんが、地名だけを差し替えた中身の薄いページが並んでいる場合は、統合するか、地域ごとに固有の情報を足すほうが安全です。

知らないうちに増えているページ

ハッキングによって追加されたコンテンツもポリシーの対象です。文書では、既存ページへの不正なコード埋め込みや、身に覚えのないページの追加、検索結果から来た人だけを別サイトへ転送する細工などが例として説明されています。更新が止まったWordPressサイトで、管理者が気づかないまま怪しいページが量産されているケースは今も見かけます。Search Consoleのページ数が急に増えていないか、サイト名で検索して見覚えのないタイトルが出てこないかを、この機会に確かめておくとよいでしょう。

戻るボタンを妨げる仕組み

ブラウザの履歴を操作して、利用者が戻るボタンで元のページに戻れないようにする行為も、ポリシーに明記されています。自社で意図して作ることはまずないはずですが、外部の広告タグやポップアップ系のスクリプトがこうした動きをしていないかは、一度実機で確かめておく価値があります。

ポリシーの文書によると、違反と判断されたサイトは順位が下がるか、検索結果に表示されなくなる場合があります。一方でSearch Engine Journalは、改善を行えば、Googleの自動判定がポリシーに沿っていると数か月かけて学習することで回復につながりうる、というGoogleの説明を紹介しています。慌てて何かを足すよりも、ふだんのサイトの状態を点検する機会として、配信の完了を待ちながら見直してみてはいかがでしょうか。

手を入れていないサイトにも届くブラウザ側の変更

つくば市のホームページ制作会社

ブラウザの更新情報というと新しいCSSやAPIに目が向きがちですが、9月に出たChrome 154とFirefox 155、156の開発者向けリリースノートを読み比べると、こちらが何も変えていなくても既存サイトの見え方や動き方に関わる変更がいくつか含まれていました。新機能の紹介とは少し角度を変えて、納品済みのサイトや社内システムを抱える側が気にしておきたい項目を並べてみます。

その1 HTTPのまま開くと確認画面が出るのが既定に

Chrome 154では、暗号化されていないhttpの接続でサイトを開こうとしたとき、利用者に確認を求める動作が既定で有効になりました。管理者向けには企業ポリシーでこの既定を制御する手段も用意されています。

公開サイトの多くはすでにHTTPS化されていますが、気になるのは周辺部分です。印刷物やQRコードに載せたhttpのURL、古い記事の中に残った内部リンク、LAN内で動く機器の管理画面などは、これまで素通りだったところで一度立ち止まる形になります。httpからhttpsへの転送がきちんと効いているか、紙の販促物に刷ったURLが今どうなっているかを、この機会に確かめておくと安心です。

その2 古い鍵交換方式だけのサーバーにFirefoxがつながらなくなる

Firefox 156では、TLSの接続開始時に既定で提示する鍵交換の方式から、有限体Diffie-Hellmanのffdhe2048とffdhe3072が外れました。リリースノートによると、これらの方式しか扱えないサーバーとは接続の取り決めが成立しなくなるとされています。

ほとんどのサーバーは楕円曲線を使うECDHEに対応しているため、一般的なレンタルサーバーやCDN経由のサイトで問題になることはまずないはずです。ただ、長く更新されていない自前のサーバー、古い業務用機器の管理画面、社内の古いシステムなどはこの限りではありません。「Firefoxでだけ開けない」という問い合わせが来たときの確認項目として覚えておくと役に立ちます。

その3 ポップオーバーやダイアログが意図せず閉じにくくなった

Chrome 154では、ポップオーバーやダイアログの外側を押したときに閉じる「ライトディスミス」の判定が、押し下げと離す操作の組み合わせからクリックイベントに切り替わりました。これにより、スマートフォンで画面をスクロールしただけのときや右クリックしたときに、開いていたメニューが勝手に閉じてしまう現象が起きにくくなります。

利用者にとっては素直な改善ですが、標準のpopover属性やdialog要素の挙動に合わせて独自の処理を足しているサイトでは、閉じるタイミングが以前と少しずれる可能性があります。スマートフォンでメニューを開いたまま縦にスクロールしてみる、といった簡単な確認をしておくとよさそうです。

その4 読み込みに失敗したモジュールを後から読み直せる

Firefox 155では、ネットワークエラーやMIMEタイプの誤りで読み込みに失敗したJavaScriptのモジュールが、失敗した状態のまま記憶されなくなりました。サーバー側が復旧すれば、同じ指定で読み込み直したときに成功するようになります。JSONやCSSのモジュール、動的なimportも対象です。

サーバーの一時的な不調やデプロイ中の瞬断で、ページを開き直すまで一部の機能が動かないという状況が減る方向の変更です。逆に言えば、配信側でMIMEタイプの設定を誤っていた場合、再試行のたびに同じ失敗を繰り返すことになるので、サーバー設定の見直しは引き続き大切です。

その5 開発者ツールの表示サイズが端数まで出るように

Firefox 156の開発者ツールでは、インスペクターで要素を選んだときに出るビューポートの幅と高さが、四捨五入されずに表示されるようになりました。ブラウザの拡大率が中途半端なときや高精細なディスプレイでは、これまでの表示が実際と食い違っていたためです。

レスポンシブデザインの切り替え幅を確かめる際、境界ぎりぎりで表示が崩れる原因を追うときに小数点以下の値が見えるのは助かります。制作中に表示される数字が以前と違って見えても、不具合ではなく正確になった結果と受け止めてよいでしょう。

どれも派手な変更ではありませんが、何年も前に納品したサイトほど影響を受けやすい種類の話です。隔週で更新が届く時代になり、こうした細かな挙動の変化は今後も積み重なっていきます。新機能を追いかけるのと同じくらい、既存のサイトに何が起きうるかを定期的に拾っておくことが、運用を任される側の地道な仕事になりそうです。

npmの公開に人の承認を挟む流れが強まっている

つくば市のホームページ制作会社

WordPressのブロックテーマやプラグインを作っていると、npmを使わない日はほとんどありません。ビルド用のツール一式も、CSSの処理も、小さな便利ライブラリも、たいていnpm経由で入ってきます。そのnpmで、9月に入ってから公開の手順まわりの変更が立て続けに発表されました。一つひとつは地味な更新ですが、並べてみると「パッケージを公開する最後の一押しは人間がやる」という方向がはっきり見えてきます。

今回は、GitHubの変更履歴(Changelog)に9月に載った三つの更新と、6月に予告されたnpm v12の既定値の変更、そしてその背景にある8月のワーム被害をつなげて、制作の現場から見た意味を考えてみます。

8月に起きたことを振り返る

話の出発点は、8月4日に起きたnpmパッケージの大規模な乗っ取りです。Datadog Security Labsの分析によると、キャッシュ用ライブラリとして広く使われているkeyvのGitHubリポジトリに不正なコミットが入り、そこから公開された版に悪意あるコードが仕込まれました。同じ手口はcacheable系のパッケージ群やectoにも広がり、flat-cacheやfile-entry-cacheといった、名前を見れば依存関係の奥で見覚えのあるパッケージも含まれていました。コミュニティではChainDropと呼ばれています。

仕組みとしては、パッケージのインストール時に自動で走るpreinstallスクリプトから読み込み役のファイルを起動し、そこから本体を動かすというものです。本体は開発者の端末やCIの環境から、GitHubやnpmのトークン、クラウドの認証情報、環境変数などを集めて外部へ送り出します。さらに、盗んだnpmトークンのうち二要素認証を迂回できる設定のものを見つけると、そのトークンで書き込める別のパッケージにも同じ仕掛けを入れて勝手に新しい版を公開する、という自己増殖の機能まで備えていました。

見落とせないのは、keyvの問題の版が、GitHub Actionsのワークフローから正規の手順で公開され、正しい来歴証明(provenance)まで付いていたという点です。Datadogは、来歴証明は「どこでどう作られたか」を示す証拠であって、安全かどうかの判定ではないと指摘しています。ワークフローそのものが乗っ取られていれば、証明は悪意あるコードの出どころを忠実に記録してしまうわけです。

ステージ公開という考え方

こうした流れを受けて、npmが力を入れているのがステージ公開(staged publishing)です。これは、新しい版をいきなりレジストリに出すのではなく、いったん「公開待ち」の状態に置き、メンテナーが二要素認証を通したうえで承認して初めて公開される、という手順です。

9月3日の更新では、この仕組みまわりに三つの変更が一般提供になりました。一つ目は、トークンを使わずにCIから公開する信頼済み公開(trusted publishing)の設定を、一つのパッケージに複数持てるようになったこと。安定版、プレリリース版、検証用といったワークフローを分けて運用できるようになり、これまでOIDCでまかなえない経路のために長期間有効なトークンを残しておく、といった回避策が要らなくなります。

二つ目は、公開待ちのパッケージはマルウェアの検査が終わるまで承認ボタンが押せなくなったこと。三つ目は、npmjs.comの版一覧で、それぞれの版が承認されたのか、却下されたのか、まだ待ち状態なのかという履歴がメンテナーから見えるようになったことです。

興味深いのは、信頼済み公開の設定は既定で「ステージまで」しかできず、直接の公開は設定ごとに明示的に有効にしないと使えない、という点です。GitHubは設定をステージ専用のままにしておくことを勧めています。ワークフローが乗っ取られても、人の承認がなければレジストリまで届かない。8月の件で破られた部分を、ちょうど塞ぐ形になっています。

トークンにも「ステージまで」の権限ができた

9月18日には、細かく権限を絞れるアクセストークン(granular access token)に、読み書きのうち「ステージのみ」という選択肢が加わりました。このトークンを使う自動化の処理は、npm stage publishで版を公開待ちに出すことはできますが、npm publishで直接公開しようとすると拒否されます。二要素認証の迂回を許可する設定にしていても同じです。

背景には、npmが2027年1月をめどに、二要素認証を迂回するトークンによる直接公開を廃止する予定だという事情があります。信頼済み公開にすぐ移れない現場向けの、移行の足がかりという位置づけです。ただし、ステージ専用トークンも配布タグの付け替えや版の非推奨化といった書き込み権限は残っているため、ほかの書き込み用トークンと同じように慎重に扱うよう注意書きがあります。利用にはnpm CLI 11.15.0以降、Node.js 22.14.0以降が必要とされています。

8月のワームが増殖に使ったのは、まさに二要素認証を迂回できる書き込み用のトークンでした。ステージ専用に切り替わっていれば、盗まれても勝手に新しい版を世に出すことはできません。ここでも、狙われた経路に対してピンポイントで手が打たれているのがわかります。

アカウントを取り戻したあとの猶予期間

9月9日の更新はもう少し地味で、リカバリーコードでサインインしたアカウントに、72時間の保留期間を設けるというものです。これまでは影響の大きいアカウントだけに適用されていた保護が、すべてのnpmアカウントに広がりました。

保留中は、サインインやパッケージの閲覧、インストールはできますが、公開やアクセストークンの作成といった影響の大きい操作が止まります。期間が過ぎれば自動で解除され、問い合わせなどは必要ありません。リカバリーコードが盗まれてアカウントを乗っ取られた場合に、すぐに悪意ある版を出されるのを遅らせるための仕組みです。自分で使った覚えがないのに公開できなくなったら、すぐにnpmのサポートに連絡してほしいとされています。

インストールする側の既定値も変わる

ここまでは公開する側の話でしたが、使う側にも大きな変更が予告されています。6月に発表されたnpm v12の破壊的変更では、npm installの挙動のうち、これまで自動で動いていたものを明示的に許可する方式に切り替えるとされています。

中心になるのは、依存パッケージのpreinstall、install、postinstallといったスクリプトを、既定では実行しなくなるという変更です。ネイティブ拡張のビルドも対象に含まれます。どのパッケージのスクリプトが止まるかはnpm approve-scriptsで一覧でき、信頼するものだけを許可すると、その許可リストがpackage.jsonに書き込まれます。あわせて、Gitリポジトリやhttpsのtarballといった外部の場所から依存を取ってくる動作も、既定では許可しない方向です。これらはnpm 11.16.0以降で警告として先に確認できます。

8月のワームが最初に動き出したきっかけはpreinstallスクリプトでした。インストールしただけで任意のコードが走るという、長年の前提そのものに手が入るわけで、影響は小さくありません。

制作会社の現場で見直しておきたいこと

npmにパッケージを公開していない制作会社でも、使う側としての備えは必要です。まず、案件ごとのリポジトリでnpmのバージョンを上げ、どのパッケージがインストール時にスクリプトを実行しているのかを一度洗い出しておくと、v12への移行で慌てずに済みます。古い案件ほど、ビルドの途中でネイティブ拡張を組み立てるパッケージが紛れていることがあり、許可リストの作成に意外と手間がかかるかもしれません。

次に、CIに置いているトークンの棚卸しです。今回の分析では、盗まれた情報の中心がCIの環境変数や認証情報でした。保守契約で複数のサイトを預かっている場合、デプロイ用の鍵やサーバーの認証情報がCIにまとまって置かれていることも多いはずです。npmのトークンに限らず、権限が広すぎないか、使っていないものが残っていないかを確かめておく価値はあります。

自社でプラグインやライブラリを公開しているなら、信頼済み公開とステージ公開への移行を検討するよい時期です。承認の手間は増えますが、少人数の現場ほど「誰かのアカウントが一つ破られたら終わり」という状態になりやすく、人の目を一段挟む意味は大きいと感じます。

私たちRESONIXでも、テーマやプラグインの開発にnpmを日常的に使っています。便利な仕組みの上に乗っている以上、その仕組みが変わる方向は追いかけておきたいところです。今回の一連の変更は、自動化を減らすのではなく、自動化の最後に人の判断を戻すという整理の仕方で、ほかのツールにも広がっていきそうな考え方だと思います。

スクロールバーの色指定を標準側に寄せる頃合い

つくば市のホームページ制作会社

サイトの一部に横スクロールの表や、高さを決めたお知らせ欄を置くと、スクロールバーの色をデザインに合わせたいという話がよく出ます。そのとき長く使われてきたのが、::-webkit-scrollbar で始まる一連の擬似要素です。9月15日に公開されたFirefox 156では、この古い書き方の扱いが少し変わりました。目立たない変更ですが、既存サイトのCSSを見直すきっかけになりそうなので紹介します。

Firefox 156で変わった判定の結果

MDNの開発者向けリリースノートによると、Firefox 156では @supports selector(::-webkit-scrollbar) という条件が、すべてのサイトで偽を返すようになりました。反対に @supports not (selector(::-webkit-scrollbar)) は真になります。

背景には、Firefox 155で入った仕組みがあります。設定で指定された一部のドメインに限って、Firefoxは ::-webkit-scrollbar の指定を実際に反映しています。156でもその反映自体は続きますが、対応しているとは答えなくなりました。リリースノートの説明では、多くのサイトがこの判定を関連する擬似要素一式が使える合図として扱っている一方、Firefoxは -thumb や -track といった仲間の擬似要素には対応していないため、とされています。

結果として、標準のスクロールバー指定を @supports not (selector(::-webkit-scrollbar)) の中に書いていたサイトでは、Firefoxでもその指定が適用されるようになります。

標準の指定はすでに主要ブラウザで使える

標準側の手段は、scrollbar-color と scrollbar-width の二つのプロパティです。MDNの scrollbar-color のページでは、2025年12月から主要ブラウザの最新版でそろって使える機能(Baseline 2025)として扱われています。

書き方は単純で、scrollbar-color に色を二つ並べると、最初がつまみ(サム)、二つ目が溝(トラック)の色になります。ルート要素に指定すれば、ページ全体のスクロールバーにも効きます。一方の ::-webkit-scrollbar はどの標準にも含まれない独自仕様で、つまみや上下のボタンまで細かく作り込めるかわりに、ブラウザによって効いたり効かなかったりします。

注意したいのは両者の優先関係です。MDNによると、ある要素の scrollbar-color や scrollbar-width の計算値が auto 以外だと、ブラウザはその要素の ::-webkit-scrollbar 系の指定を無視します。しかも scrollbar-color は継承されるため、親要素に色を指定しただけで、子の要素に書いた独自スクロールバーが効かなくなることがあります。その要素で scrollbar-color: auto を指定し直せば、独自の見た目が戻るとされています。

既存サイトで確かめておきたい書き方

MDNが紹介している代替の書き方は、まず @supports (scrollbar-color: auto) で標準プロパティが使えるかを確かめ、使えないブラウザに向けてだけ @supports selector(::-webkit-scrollbar) の中に独自の擬似要素を書く、という二段構えです。標準を先に置き、古い書き方を補助に回す形なので、今回のFirefoxの変更とも食い違いません。

見直しの対象になりやすいのは、以前に作ったテーマやページ単位の追加CSSで、Firefoxだけを別扱いにするつもりで ::-webkit-scrollbar の判定を分岐に使っているケースです。判定の前提が変わったので、Firefoxで見た目が変わっていないか一度開いて確認しておくと安心です。スクロールバーを display: none で消している箇所があれば、ブラウザごとに同じように消えているかもあわせて見ておきたいところです。

色を変える前に考えたいこと

MDNは、スクロールバーの見た目はなるべく既定のままにしておくよう勧めています。見慣れた形から離れると、使い勝手が損なわれやすいためです。変える場合は、つまみと溝の色の差を十分にとること(コントラスト比3対1が目安)、独自に作り込むなら指で触れる大きさを確保することが挙げられています。なお、ハイコントラスト表示のような強制カラーモードでは、scrollbar-color は自動的に auto に戻ります。

中小企業のサイトでも、ブランドカラーに合わせてスクロールバーまで塗りたいという要望は珍しくありません。色を合わせる程度なら、今は標準の二つのプロパティで十分に届きます。細かな作り込みは古い擬似要素に任せるとしても、土台を標準側に置いておくほうが、今回のようなブラウザ側の変更にも振り回されにくくなるはずです。

WordPressの修正版で見直したい投稿者アカウントの扱い

つくば市のホームページ制作会社

WordPress.orgから、WordPress 7.1.1の公開が案内されました。コアの不具合修正が17件、ブロックエディターの不具合修正が19件、そしてセキュリティ修正が11件含まれた保守・セキュリティリリースです。公式はセキュリティリリースであることから、すぐに更新するよう勧めています。自動バックグラウンド更新が有効なサイトでは、更新は自動的に始まるとされています。

ログインできる人が起点になる修正が多い

今回の修正一覧を眺めて目につくのは、何らかのアカウントでログインしていることが前提になる項目の多さです。たとえば、寄稿者(Contributor)以上の権限で任意の投稿を上書きできてしまう問題、下書きやレビュー待ちの投稿のスラッグが寄稿者から見えてしまう問題、ログインしたユーザーなら誰でもコメント(メモを含む)の親子関係を付け替えられる問題が挙げられています。テンプレートを扱うREST APIでは、認証済みユーザーによるパストラバーサル(本来見えない場所のファイルを指定できてしまう問題)も修正されました。マルチサイト環境で、サイト管理者がネットワーク専用のプラグインをネットワーク全体で有効化できてしまう問題や、XML-RPC経由でCSS編集権限の確認をすり抜けられる問題も含まれています。

一方で、ログインしていない訪問者が関わる項目もあります。本文の段落整形を担う wpautop() に、コメント経由でスクリプトを埋め込めるストアド型XSS(保存された悪意あるスクリプトが表示時に動く問題)があり、コメントが承認されることが条件とされています。ほかにも、カスタムヘッダーに対応した一部テーマでのXSSや、細工したURLによってWordPress.orgにある未有効化のテーマが自動でインストールされ、プレビューされてしまう問題などが並んでいます。

制作の現場から見ると、これは「管理者だけが使うサイト」より「複数人で更新するサイト」で気にしたい内容です。広報担当や外部ライターに寄稿者アカウントを渡している企業サイト、会員登録を受け付けているサイトでは、ログインできる人の範囲がそのまま影響範囲になります。更新を当てるのはもちろんですが、使われていないアカウントが残っていないか、必要以上の権限を渡していないかを、この機会に棚卸ししておくと安心です。コメント欄を開いているサイトなら、承認の運用を誰が担っているかも確認しておきたいところです。

セキュリティ修正は、修正を受け取れる対象の古いブランチ(現在は4.7まで)にも順次バックポートされるとのことです。ただし公式が積極的にサポートしているのは最新版だけだと改めて書かれているので、古い系統に留まっているサイトは、この機会に最新版へ上げる計画も立てておくのがよさそうです。次の大型版となる7.2は12月に予定されています。保守契約で複数サイトを預かっている場合は、自動更新が止められている環境がないかもあわせて見ておくと、取りこぼしを防げます。

押しやすさや再入力の手間まで見る新しい指針

つくば市のホームページ制作会社

ウェブサイトの使いやすさを測る物差しが、欧州で一段新しいものに切り替わろうとしている。情報通信技術のアクセシビリティ要件を定めた欧州規格EN 301 549の新しい版が2026年9月に公開され、参照する指針がWCAG 2.1からWCAG 2.2へと改められた。

規格の版が上がっただけと言えばそれまでだが、中身を見ていくと、派手な新機能の話ではなく、日々の制作でつい後回しにしがちな部分が並んでいる。法令の直接の対象になるかどうかとは別に、自分たちのサイトを点検する材料として読む価値がありそうだ。

欧州の参照先が入れ替わる準備が進んだ

新版のEN 301 549 V4.1.1は、ウェブコンテンツだけでなく、ソフトウェアや電子文書に対する要件もWCAG 2.2に合わせて更新されている。公開元の説明によると、欧州アクセシビリティ法を明確に意識して作られた最初の版でもあり、規格の要件と同法の要求事項を結びつける附属書が新しく加わったという。

ただし、公開されたからといってすぐに法的な基準が切り替わるわけではない。欧州委員会が官報で新版を正式に引用するまでは、2021年の版であるV3.2.1、つまりWCAG 2.1のレベルAAが参照される基準として残る。正式に引用された後は、新版に適合していれば欧州アクセシビリティ法とウェブアクセシビリティ指令の両方に適合しているとみなされる扱いになる。

言い換えると、いま慌てて何かを差し替える必要はない。その一方で、欧州が向かう先がWCAG 2.2だとはっきりしたので、準備を始めるなら目標は定まったことになる。

増えた達成基準はどれも地味で実務的

WCAG 2.1と比べると、ウェブコンテンツ向けにはレベルAとAAの達成基準が六つ増えている。キーボードのフォーカスが他の要素に覆い隠されないこと、ドラッグ操作に代わる手段を用意すること、クリックやタップの対象を一定の大きさに保つこと、ヘルプへの導線を各ページで同じように置くこと、同じ情報を何度も入力させないこと、そして認証で記憶や謎解きに頼らせないこと。並べてみると、どれも新しい技術の話ではなく、作り方の話だと分かる。

たとえばクリック対象の大きさは24×24ピクセルが目安になるが、周囲に他の対象が近接していない場合や、同じ機能を別の適合した方法でも実行できる場合、文章やリストの中のリンクである場合などは除外される。ドラッグについても、並べ替えのような操作をドラッグ以外の単一のポインタ操作でも達成できるようにすることが求められ、ドラッグそのものが本質的な機能である場合は対象外になる。

再入力に関する基準は、ひとつの手続きの途中で同じ情報を書かせる場面を想定している。前に入力した内容を自動で埋めるか、選べるようにするのが基本で、安全上の問題がある場合や、以前の情報がもう有効でない場合は例外として扱われる。

中小企業のサイトで先に引っかかりやすいところ

この六つを実際のサイトに当てはめると、引っかかりやすい場所はだいたい決まっている。画面上部に固定したヘッダーや同意を求めるバーは、キーボードで送っていったフォーカスを覆い隠しやすい。スマートフォン向けに詰めて配置した小さなアイコンは、対象の大きさの目安を下回りやすい。

問い合わせフォームも見どころが多い。確認画面から戻ったときに入力内容が消える作りは、再入力に関する基準から見ると改善の余地がある。パスワードの貼り付けを禁止する設定も、記憶に頼らせない方向とは逆を向いている。ヘルプや連絡先の置き場所がページによってばらばらというサイトも珍しくない。

どれも大規模な作り直しを必要とする話ではない。固定ヘッダーの高さの分だけスクロール位置をずらす、アイコンの間隔を少し空ける、入力値を保持する。こうした細かい修正の積み重ねで届く範囲がかなりある。

法令の対象でなくても点検の材料になる

欧州の規格なので、国内の中小企業サイトが直接その適用を受ける場面は限られる。ただ、欧州向けに商品やサービスを販売しているなら無関係とは言えないし、この動きは欧州だけにとどまらない。オーストラリアの規格も欧州規格を土台にしており、現時点ではWCAG 2.1を参照しているが、今後の改訂で新しい版を取り込む可能性が指摘されている。

公開元が当面の準備として挙げているのは、サイトと電子文書をWCAG 2.2の観点で見直すこと、検査の手順や点検表を更新すること、調達の条件や発注先への要求を見直すことなどだ。制作を請け負う側からすると、最後の項目が効いてくる。発注元の点検表が更新されれば、納品物に求められる水準もそこに合わせて動く。

期限が切られているわけではないので、次に作るサイトから少しずつ織り込んでいけば足りる。フォーカスが隠れていないか、指で押せる大きさか、同じことを二度書かせていないか。基準の番号を覚えるより先に、その三つを手元の画面で確かめてみるところからでいいと思う。

Safariの新版が前面に出したのは不具合修正だった

つくば市のホームページ制作会社

WebKitのブログに、Safariの新しいバージョンで入った変更をまとめた記事が出た。日付は9月17日。冒頭に置かれているのは新機能の一覧ではなく、今回いちばん大きな機能は機能ではない、という一文だった。1年かけて既存機能の不具合を844件直した、という話が中心に据えられている。6月の開発者向けイベントの時点では525件と発表していたので、そこからさらに6割ほど積み増したことになる。

修正はいくつかの筋に整理されている。ひとつは互換性で、特定のサイトでヒンディー語の入力が正しく通らない、検索結果から画像が消える、といった個別の不具合を地道に潰していったもの。もうひとつは土台の作り直しで、JavaScriptのモジュール読み込み処理を新しく書き直し、CSSのzoomも作り直し、行内要素の配置をサブピクセル単位で行うようにしたという。深掘りの筋ではSVGだけで66件の修正が入り、SMILアニメーションの実装は端から端まで見直された。表組みの絶対配置まわりや、HTTPキャッシュがCache-Controlの指定にきちんと従うかどうかといった、仕様との食い違いを詰める作業も含まれている。

目を引いたのは、組み合わせという括りがあることだ。-webkit-line-clampがWebKitに入ったのは2010年、text-wrap: balanceは2024年で、どちらも単体では問題なく動く。ところが同じ要素に両方を指定すると、行のバランス調整のほうが効かなくなっていたという。それが今回直った。単体では再現せず、組み合わせたときだけ崩れる。制作の現場で原因の切り分けにいちばん時間を取られるのは、だいたいこの種類の不具合ではないだろうか。

読んでいる位置が飛ばなくなる

新しく入った機能のなかで、既存のサイトにそのまま効きそうなのがスクロールアンカリングだ。記事を読んでいる途中で、いま見ている位置より上に画像や広告、コメントが遅れて読み込まれると、読んでいた部分が下に押し出されて画面が急に飛ぶ。よくある挙動だが、読み手にとっては行き先を見失う原因になる。新しいSafariはこの場合にスクロール位置のほうを自動で調整し、読んでいた場所を画面上の同じところに保つ。制作側で何かを書き足す必要はなく、既定で有効になっている。挙動を切りたい箇所だけ、overflow-anchorというCSSプロパティにnoneを指定する形だ。

ブラウザの更新というと、新しい書き方が使えるようになったかどうかに目が行きやすい。ただ、納品してしばらく経ったサイトの表示が、こちらが何もしなくても静かに正しくなっていくというのは、保守を抱える側にとっては地味に大きい。Safariでだけ表示が少しずれるという理由で回避策を入れた案件が手元にあるなら、新しい版で一度素の状態に戻して確かめてみる価値はある。回避策は放っておくと、いつのまにか誰も理由を説明できないコードになる。