CSSだけで条件分岐や連番を扱えるようになった新しい関数たち

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

これまでCSSでは表現しきれず、JavaScriptやSassのような前処理ツールに任せてきた処理がいくつもありました。要素が並びの中で何番目かを数えたり、条件によって値を出し分けたりといった、いわば「ロジック」にあたる部分です。ここ最近、その領域をCSSの標準機能として扱えるようにする新しい関数がブラウザに入り始めています。中小企業サイトの制作でも、外部ライブラリを一つ減らせる余地が広がってきました。今回はそうした関数を並べて紹介します。

並びの順番を数える sibling-index() と sibling-count()

sibling-index() はその要素が兄弟要素の中で何番目かを返し、sibling-count() は兄弟要素の総数を返します。これまで各要素に少しずつ違う値を割り当てるには、:nth-child() を項目の数だけ書き並べるか、JavaScriptで番号を振るしかありませんでした。

この二つを calc() と組み合わせると、リストの各項目に段階的な遅延を与えるアニメーションが一行で書けます。たとえば animation-delay: calc(sibling-index() * 0.08s) と書けば、項目が5個でも500個でも同じ記述で順番にずれて動きます。ナビゲーションのメニューやカードの一覧を、順に浮かび上がらせるといった演出が、余分なマークアップなしで表現できるわけです。

遅延だけでなく、要素の位置に応じた大きさや透明度の調整、リストへの連番の割り当てなど、数式で表せる装飾なら幅広く応用できます。項目の増減があっても記述を書き直さずに済むため、更新頻度の高いお知らせ一覧や商品の並びといった、中身が動くコンテンツと相性がよい機能です。

値そのものを出し分ける if() 関数

if() は、スタイルクエリやメディアクエリ、機能クエリの結果に応じて、プロパティの値そのものを分岐させる関数です。これまで同じことをするには、状態ごとにクラスを付け替えたり、カスタムプロパティを何段も重ねて条件を組み立てたりする必要がありました。

if() を使うと、たとえばカスタムプロパティの値を見て背景色を切り替える、といった書き分けが一つのプロパティの中で完結します。分岐のたびにセレクタを増やさずに済むため、コンポーネントのスタイルが見通しよく保てます。テーマの切り替えやボタンの種類ごとの装飾など、これまで冗長になりがちだった部分を短く書ける関数です。

たとえば明るい配色と暗い配色を切り替えるサイトで、ボタンや枠線の色を状態に合わせて出し分ける、といった使い方が考えられます。従来はそのためにクラス名の組み合わせが増えていきがちでしたが、値の分岐を一箇所にまとめられると、後から見返したときの読みやすさが変わってきます。

導入時に押さえておきたいブラウザ対応

便利な一方で、対応状況にはまだ差があります。sibling-index() と sibling-count() はChromeが先行して対応し、Safariも追随、Firefoxは実装が進んでいる段階です。if() はさらに新しく、現時点ではChromiumを基盤とするブラウザが中心で、SafariやFirefoxはこれからという位置づけです。

つまり、いますぐ全ての利用者に届く機能とは言い切れません。本番のサイトでは @supports で対応ブラウザを見分け、未対応の環境には従来どおりの書き方を残しておくのが安全です。長くウェブ制作に携わってきた立場からも、こうした新機能は「安全な既定値を先に書き、その上に重ねる」という進め方を勧めたいところです。派手さはありませんが、この順序を守ることで、新しい表現を取り入れつつ表示崩れを避けられます。手元の小さなコンポーネントから試して、感触を確かめてみるのがよさそうです。

インストール済みPWAをドメイン変更後も引き継ぐ新しい仕組み

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

ウェブアプリをスマートフォンのホーム画面に追加できるPWA(プログレッシブウェブアプリ)の普及が進むなか、制作現場での課題のひとつが「ドメインやURLを変えると既存のインストールが引き継げない」問題だった。リブランディングや技術的な再構成でオリジンが変わると、それまでインストールしてもらったユーザーは古いアプリを手動でアンインストールして新しいURLから再インストールするしかなく、この一手間がユーザー離れにつながることも珍しくなかった。

Chrome 150(2026年6月にベータ版公開)では、この問題を解消するPWA Origin Migrationという仕組みが新たに導入された。Chrome for Developersの公式ブログによると、新しいオリジンのウェブアプリマニフェストに migrate_from フィールドを追加することで、既存のインストール済みアプリをシームレスに移行できるようになる。ユーザー側には通常のアプリ更新と似たダイアログが表示され、ワンクリックで古いアプリがアンインストールされ、新しいURLのアプリが即座にインストール・起動される。

この機能を利用するには、新しいオリジン側のマニフェストに migrate_from を記述するだけでなく、移行元となる旧ドメイン側にも明示的な承認が必要になる。具体的には、旧ドメインの .well-known/web-app-origin-association というファイルに移行先のURLと allow_migration の許可を記載する仕組みだ。このふたつの設定を両側で行うことで、第三者が無断で他社のPWAを乗っ取るリスクを排除している。現時点では移行先は同じeTLD+1(たとえば同じドメイン内のサブドメイン変更やパス変更など)に限られており、まったく別の組織のドメインへの移行には対応していない。移行の強制度は suggest(通知のみで継続も選べる)と force(ダイアログで必ず選択が必要)の二段階から選べるため、サービスの状況に応じた移行体験を設計できる。

これまでPWAをインストールしてもらったユーザーは、ドメイン変更という技術的な事情に関係なくアプリを使い続けられるのが理想だった。一方で開発者にとっては「新しいインストールへ誘導する手立てがない」という制約が長く続いており、URLの変更をためらう原因のひとつにもなっていた。今回の仕組みはその制約を取り除くもので、PWAを実運用しているチームにとっては歓迎される変化だろう。

制作現場でPWAを手がけている場合、特にサブドメイン変更や構成の整理を予定しているプロジェクトでは、Chrome 150の正式リリース後に対応を確認しておきたい。現在はChrome限定の機能だが、こうした移行の仕組みをウェブ標準の場で議論し整備していくことで、PWAをより長期的に安定して使える基盤が育っていく。

Document Picture-in-Picture APIが制作現場を変える、新時代のマルチタスク体験を作る仕組み

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

ウェブ制作の世界で新しい風が吹いています。これまで<video>要素でしか利用できなかったピクチャー・イン・ピクチャー機能が、任意のHTML要素を扱えるDocument Picture-in-Picture APIによって大きく進化しました。Firefox 151がこのAPIをデスクトップで正式サポートしたことで、主要ブラウザでの実用段階が近づいています。制作者にとって、これまで不可能だった新しいユーザー体験を構築できる転換点になるかもしれません。

従来の制限を超える新しい可能性

これまでのPicture-in-Picture APIは<video>要素に限定されており、カスタムコントロールやインタラクティブな要素の追加が困難でした。Document Picture-in-Picture APIは、任意のHTML要素を常に最前面に表示される独立したウィンドウに配置できる画期的な機能です。

ビデオ会議でのカスタムコントロール、動画プレーヤーでの詳細設定など、これまでブラウザタブを切り替える必要があった作業を、メインコンテンツを見ながら並行して実行できます。ウェブアプリケーションの利用体験が根本的に変わる可能性を秘めています。

ブラウザサポートの現状と実装の注意点

Chrome 116から既に実装されており、Firefox 151でデスクトップサポートが追加されました。ただし、全ての主要ブラウザで利用可能ではない段階のため、実装時には機能検出とフォールバック機能の準備が必要です。

APIの利用方法は比較的シンプルで、documentPictureInPicture.requestWindow()を呼び出して独立したウィンドウを作成し、そこに任意のHTML要素を配置できます。ブラウザサポートの確認とフォールバック機能の実装が重要で、対応していない環境では別のUI体験を提供する必要があります。

制作現場での活用事例と実践

実際の制作現場では、様々な場面で活用できる可能性があります。ビデオ会議中に他の作業をする際の参加者表示、コード学習プラットフォームでの結果プレビュー表示、生産性アプリでのタイマーやメモ機能など、ユーザーのマルチタスクを支援する機能として威力を発揮します。

実装時には、元のページのCSSスタイルシートを適切にコピーして、一貫した見た目を保つことが重要です。また、CSS display mode media featureのpicture-in-picture値を使用して、ピクチャー・イン・ピクチャーモード専用のスタイルを適用できます。

将来への展望と制作者への影響

このAPIの普及により、ウェブアプリケーションの設計思想が変化する可能性があります。従来のシングルウィンドウ前提の設計から、マルチウィンドウを活用した新しいユーザー体験の設計へのシフトが期待されます。

プログレッシブ・エンハンスメントの観点から、対応ブラウザでは新機能を提供し、非対応環境では従来通りの機能を維持するアプローチが現実的です。制作者にとっては、新しい技術を段階的に導入しながら、幅広いユーザーへの配慮を両立できる良い例といえるでしょう。

Document Picture-in-Picture APIは、ウェブ制作におけるユーザー体験設計の新しい選択肢を提供します。現時点では限定的なブラウザサポートですが、将来的には標準的な機能として定着する可能性があり、制作者が注目すべき技術の一つです。

CSS scroll-triggered animations機能がChrome 145で実用化、スクロールベース新時代の動きが制作現場へ

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

Chrome 145でscroll-triggered animations機能がリリースされ、スクロール時に特定の位置でトリガーされる時間ベースアニメーションが可能になりました。これまでIntersectionObserver APIで実装していた効果を、CSSだけで宣言的に記述できます。

Animation Timeline APIの対応状況は現在約85%に達しており、Firefoxでも完全実装済みでフラグ付きで利用可能です。この新機能により、従来のanimation-timelineプロパティに加えてanimation-triggerプロパティが利用でき、アニメーション実行のタイミングをスクロールイベントで制御する仕組みが標準化されます。

設定方法は直感的で、通常のCSS animationにanimation-trigger: --t play-forwards play-backwardsを追加し、timeline-triggerプロパティでトリガー名と参照するtimelineを定義します。これまでのscroll-driven animationがスクロール量に応じて進行割合が変化する連続的なアニメーションだったのに対し、scroll-triggered animationは特定のスクロール位置で開始・終了する従来型のアニメーションです。

制作現場に与える実用的変化

これまでGSAPやScrollMagicのような大型ライブラリが必要だった複雑なスクロール連動インタラクションが、ネイティブCSSだけで実現可能になります。パフォーマンスが向上するだけでなく、スタイル処理がスタイルシートに集約されることで開発体験も改善されます。

CSSベースの実装により処理がコンポジタースレッドに移行され、メインスレッドでの重い処理によるレイアウト計算の影響を受けずにスムーズなアニメーションが維持できます。JavaScriptのscrollイベントリスナーで頻発していた「カクつき」問題が根本的に解決される点は、ウェブサイトの体感品質向上に直結します。

さらに、animation-rangeプロパティにより、エントリー、退出、カバーなどのキーワードとパーセンテージオフセットを組み合わせて、要素がビューポートの特定位置に達したタイミングを精密に制御できます。これにより映画的な演出表現や複雑なストーリーテリングが実装しやすくなります。

制作現場では、従来のJavaScript依存から脱却しCSS中心のワークフローに移行することで、デザイナーとエンジニアの協業がよりスムーズになることも期待されます。現時点でサポートしていないブラウザ向けには、IntersectionObserverを使用したフォールバック実装を併用することで段階的な導入が可能です。

Navigation APIが遂に実用段階へ。シングルページアプリ開発が劇的に変わる

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

2026年初頭、ウェブ制作の現場に大きな変化をもたらすNavigation APIがBaselineの「Newly Available」ステータスを獲得し、主要ブラウザ全体で利用可能になりました。これまでシングルページアプリ(SPA)の開発において、開発者が頭を悩ませてきたルーティング処理が、このAPIの登場により根本的に改善されます。

従来のHistory APIを使ったSPA開発では、複数のイベントリスナーと手動でのDOM更新を組み合わせる複雑な実装が必要でした。開発者は、リンクのクリックイベントをグローバルに監視し、preventDefault()を呼び出し、手動でhistory.pushState()を実行し、DOMを更新し、さらに別途popstateイベントを監視してブラウザの戻るボタンに対応する必要がありました。これは、まさにパズルのピースを組み合わせるような作業で、エラーが起きやすく保守性も低いものでした。

Navigation APIが解決する従来の課題

Navigation APIは、これらの複雑な処理を一本化します。単一の中央集約されたNavigateEventで、ユーザーがリンクをクリックする、フォームを送信する、戻るボタンを押す、またはコードでnavigation.navigate()を呼び出すといった、あらゆるナビゲーションを統一的に処理できるようになります。

event.intercept()関数が重要な処理を自動化します。アドレスバーと履歴スタックの更新、フォーカス管理などのアクセシビリティ機能の自動処理、戻るボタンとクリックイベントの統一的な処理など、これまで開発者が個別に実装していた機能が、APIレベルで提供されるようになりました。

具体的なコード例を見ると、その簡潔さは一目瞭然です。従来なら数十行にわたって書いていたルーティング処理が、Navigation APIでは中心となるイベントリスナー一つで済みます。navigateイベントは、同一文書内のフォーム送信も自動的にキャッチし、NavigateEvent.formDataプロパティでデータにアクセス可能になるため、フォーム処理の実装もシンプルになります。

開発体験とパフォーマンスの向上

Navigation APIの恩恵は、単にコードがシンプルになることだけではありません。このAPIはSPAの特別な要求に特化して設計されており、従来のHistory APIやwindow.locationの欠点を解決します。SPAでは、ページテンプレートは使用中も同じ状態を保ち、ユーザーが異なるページや機能を訪問する際にコンテンツが動的に書き換えられる特性があります。

従来のHistory APIでは、この動的な性質に対応するのが困難でした。しかし、Navigation APIは最初からSPAの動作パターンを想定して設計されています。現在のブラウジングコンテキストで作成され、現在のページと同じオリジンを持つ履歴エントリのみを公開し、アプリケーション専用の正確な過去の履歴エントリリストを提供します。これにより、履歴の移動が従来のHistory APIよりもはるかに堅牢になります。

また、navigateイベントによって、SPAフレームワークのルーティング機能に理想的な、すべてのページナビゲーションを一つの中央から制御できます。これはHistory APIでは困難だった、すべてのナビゲーションの検出と応答が可能になるという大きなメリットもあります。

実際の制作現場への影響

この変化は、ウェブ制作の現場にどのような影響をもたらすでしょうか。まず、SPAフレームワークの選定において、Navigation API対応が重要な判断基準になります。React、Vue.js、Angularなどの主要フレームワークは、すでにこのAPIを活用したルーティングソリューションの開発を進めており、2026年後半には多くのプロジェクトで恩恵を受けることになるでしょう。

中小企業や地方の制作会社にとっても、これは朗報です。複雑なルーティングロジックに頭を悩ませることなく、より直感的でメンテナンスしやすいSPAを構築できるようになります。特に、既存のサイトをSPA化するリニューアル案件では、Navigation APIの恩恵を実感しやすいはずです。

バグの発生しやすい複数のイベントハンドリングから解放されることで、開発者はより本質的な機能開発に集中できます。また、アクセシビリティ対応が自動化される点も、制作現場にとって大きなメリットです。フォーカス管理などの細かな配慮が、API側で処理されることで、品質の高いアプリケーションをより効率的に構築できるようになります。

2026年のウェブ制作を見据えた準備

Navigation APIのBaseline入りは、ウェブ制作技術の標準化が進む大きな流れの一部です。同時期に、ビュートランジション用の:active-view-transition CSSセレクタもBaseline入りしており、開発者がドキュメントのルート要素を、ビュートランジションの進行中に限定してスタイル設定できるようになっています。これは、トランジションオーバーレイの背景色変更や、特定のレイヤーのz-index調整など、よりスムーズな視覚効果の実現に役立ちます。

また、Service Workerでも、すべての主要ブラウザエンジンでJavaScriptモジュールがサポートされ、navigator.serviceWorker.register()でtype: ‘module’オプションを設定することで、標準的なimport/export文を利用できるようになっています。

これらの技術進歩は相互に関連しており、より統合された開発体験を提供します。Navigation APIでスムーズなページ遷移を実現し、ビュートランジションで視覚的な連続性を保ち、モジュール対応Service Workerでオフライン対応を強化するといった組み合わせが、標準的な実装パターンになっていくでしょう。つくばのような地方都市の制作現場でも、これらの最新技術を活用することで、大手制作会社に劣らない品質のウェブアプリケーションを提供できる時代が到来しています。

「一部のJavascriptファイルは縮小されていないようです」の解決方法

Wordpress

All in One SEOのSEO分析で「一部のJavascriptファイルは縮小されていないようです」と表示された場合の解決方法です。

これを解決するのはWordpressのプラグインの「Autoptimize」が便利です。
WordPressにAutoptimizeを追加して以下のように設定します。

AutoptimizeのJavaScript オプション
AutoptimizeのCSS オプション
AutoptimizeのHTML オプション

上記の設定が完了すると

すべてのJavaScriptファイルが縮小されているようです。

警告が解除されます。