Safari & Testing

2026 年、静的 HTML フォームと Safari サインオフのための CSS field-sizing: content とクラウド Mac QA

MacHTML Lab2026.04.15 約 25 分

サポート窓口やマーケティングのミニサイトは、いまも 静的 HTML と手書きのフォームで出荷されることが多いです。フィードバック欄、障害報告の自由記述、パートナー向けアンケートなど、textarea の高さ調整は長らく JavaScript の仕事でした。input を監視し、scrollHeight を測り、Safari のフォントメトリクスと格闘する数十行。2026 年は field-sizing: content によって、ブラウザが宣言的に「中身の量に合わせてコントロールを伸ばす」道が開けています。IME、スペルチェック、ネイティブのアクセシビリティ API を壊しにくいのが大きな利点です。本稿はビルド済みバンドルでも SPA ランタイムが無い前提で、機能を Popover による文脈ヒント と組み合わせるコツと、なぜ Safari/WebKit の実機サインオフが依然として外せないのかを整理します。

ブラウザ対応のマトリクス、最小/最大の高さや行数の目安、プログレッシブエンハンスメントのレシピ、そしてレンタルした Mac mini で回せる Safari チェックリストまで持ち帰れる構成にしました。設計トークンと CDN のキャッシュキーまで含め、静的パイプラインの運用者がそのままテンプレート化できる言い回しを意識しています。

textarea の高さが UX を壊す理由

固定高さの textarea はオーバーフローを隠し、モバイル利用者を苛立たせ、全文が見えないせいで二重送信を増やします。一方で上限なしの可変高さは、主要ボタンを画面外へ押し出し、短いビューポートではスティッキーフッターを破壊します。現場でよく効くのは、コンテンツ駆動の伸び96 px から 320 px のレンジに収めるマーケティング向け第一案です。免責事項が縦に長いデスクトップ断片では 480 px まで広げても、まだナビゲーションは見えることが多いでしょう。

JavaScript のリサイズは RTL、可変フォント、macOS の Dynamic Type を忘れがちで、「CSS のバグ」のように見える微妙なスクロールジャンプを生みます。伸長をエンジン側へ寄せれば移動部品が減り、静的ジェネレータも単純化します。パーシャルひとつ、ルールブロックひとつ、バンドラ用プラグインは不要、という運用が現実的になります。

2026 年初頭の公開コンポーネントのテレメトリでは、field-sizing を欠くセッションがおおよそ 6〜9% に残る例が報告されています。フォールバックでは少なくともスクロールバーを見せ、貼り付け全文が隠れないようにしてください。

デザイントークンには --textarea-min-block--textarea-max-block を用意し、ブランド刷新でグリッドを超えて入力欄が肥大化しないようにします。popover のヒントと併用する場合、アンカーが毎キーストロークで再レイアウトしないよう、マーケがスプリント中に文脈チップを出したいときは requestAnimationFrame 単位で位置更新を間引くと安全です。

静的サイトのオーナーは、法務レビューとセキュリティレビューの合間にフォームの見た目を直すことが多いので、CSS だけで完結する伸縮は変更管理の観点でも扱いやすいです。Pull Request の差分が小さく、ロールバックもスタイル差し戻しで済みます。翻訳チームへ渡す文言も、長文入力が視覚的に許容されると「注意書きを短くしてよい」という交渉が進みやすくなります。

上限付きで field-sizing を書く

プログレッシブエンハンスメントは、まず明示的なベースライン高さを置き、その上でキーワードを @supports で包みます。

textarea.feedback {
  min-height: 120px;
  max-height: 360px;
  overflow-y: auto;
  field-sizing: content;
  width: 100%;
  line-height: 1.5;
}
@supports not (field-sizing: content) {
  textarea.feedback { min-height: 160px; }
}

常に max-heightoverflow-y: auto をセットにしてください。無いと長文貼り付けがナビゲーションを覆います。エンジンが単行 input のキーワードを尊重する場合は、任意の cols より max-inline-size で幅を抑え、RTL でも左右対称に保てます。

論理プロパティ(padding-inlineborder-block)と併用すると、CJK とラテンで同じルールセットを共有しやすくなります。静的ジェネレータは色トークンの隣にこれらの宣言を出し、遅延読み込みの CSS チャンクへ分割しないでください。チャンク到着の 1 フレーム遅れでジャンプします。

緊急時にマーケがインライン style を注入する運用なら、同セレクタへ height: fixed !important を禁じます。ネイティブの伸長も max-height ガードも無効化されます。

レビューでは「最小高さだけ上げれば足りるのでは」という声が出ますが、未対応ブラウザと対応ブラウザで視覚差が出すぎないよう、@supports not 側の値はチームで合意した読みやすさを基準に調整してください。QA が迷わないよう、Storybook やプレビュー URL にサンプル文字列を固定で載せるのも有効です。

2026 年のブラウザ対応表

エンジンfield-sizing: content静的サイト向け QA の重点
Chromium 123 以降textarea/input で対応DevTools で内在サイズ遷移を確認。印刷スタイルも忘れずに。
Firefox 136 以降対応max-height が内在高さと一致するときの二重スクロールに注意。
Safari 17.4 以降対応(リリースノートで再確認)IME 変換と Dynamic Type をマイナー更新ごとに再テスト。
レガシー WebKit未対応min-height とスクロールのフォールバック。必要なら極小のリサイズ用スクリプトを水合。

クラウド Mac mini での Safari QA

Playwright の WebKit はパースエラーは拾えますが、SF Pro のトラッキング差でベースラインが微妙にズレる問題までは見えません。Apple シリコン上の Safari で 20〜35 分/リリースを見込み、契約上のサインオフは安定版、回帰切り分けは Safari Technology Preview、という二段構えが現実的です。

調達が遅れるならスプリント単位でクラウドの Mac mini を借りましょう。MacHTML の Apple Silicon ホストは多くの場合 1 日約 $16.9 前後から、静的バンドルを push する SSH と、対話的にフォームを見る VNC がセットになります。夜間にローン端末を送るより安く、証跡も残しやすいです。

プレビューでは本番同等の font-feature-settings、ウェブフォント URL、color-scheme を揃えてください。フォントが違うと改行位置が変わり、高さ前提が無効になります。日本語 IME の画面収録は、scrollTop リセットで 1 フレームちらつく稀なケースの説得材料になります。

運用では field-sizing を含む CSS のハッシュを CDN キャッシュキーに結びつけ、HTML だけ新しく CSS が古い、という部分デプロイの組み合わせを避けます。静的サイトでもキャッシュ戦略のミスはフォーム事故の温床です。

チーム内で「Safari は後回し」が口癖になっているなら、スプリントレビューの Definition of Done に「実機スクショ 2 枚」を入れるだけでも効きます。クラウド Mac なら地理的に離れたメンバーでも同じ画面を共有でき、議論の往復が減ります。

アクセシビリティ、検証、ライブリージョン

高さが変わってもキーボードフォーカスを閉じ込めないでください。エラー表示時はサマリーへフォーカスを移し、視覚的な枠線と aria-invalid を同期します。文字数カウントを読み上げるなら、高速入力でスクリーンリーダーを埋めないよう aria-live300 ms 程度で間引きます。

ダークモードの半透明パネルでは、動的背景上のフォーカスリングのコントラストも再確認が必要です。プレースホルダだけに説明を載せないでください。伸びるフィールドほどプレースホルダが早く消え、認知負荷が上がります。

国際化ではドイツ語の複合語やフィンランド語の長母音が折り返しを変えます。ロレム ipsum ではなく、現実的に長いサンプルで max-height を試してください。セキュリティレビューはペースト爆弾を懸念します。max-height は UX ガードであり境界ではありません。サーバ側の長さ制限とセットで説明しましょう。

フォーム送信後に高さを戻すアニメーションを入れる場合、フォーカスがどこへ移るかを明示し、スクリーンリーダー利用者が次の操作に迷わないようにします。ライブリージョンは politeness を慎重に選び、成功メッセージとエラーを同じ領域に詰め込みすぎない方が安全です。

デザイナーとエンジニアの合意事項として、エラー色と警告色のトークンを分け、色だけに依存しないアイコンや下線パターンを用意すると、フィールドが伸びた後も状態が追いやすくなります。

パフォーマンスとレイアウト安定性

リサイズのたびに height: auto の祖先がレイアウトされます。兄弟カラムは align-items: start のグリッドに置き、textarea の伸びが無関係なカードまで引き伸ばさないでください。ファンレスの Mac mini で CI スクリーンショットも回すホストでは、同一ビューポートに自動伸長フィールドを 2 つ まで、と文書化すると安全です。

field-sizing と同時に height をアニメーションしないでください。境界色の即時変化に留めます。将来のリファクタで README に合成の期待値を書いておけば、backdrop-filter を伸長入力と同じレイヤーに積み上げる事故を防げます。

マーケがリッチな影付きフォーカスリングを求める場合、長時間のディクテーションで GPU メモリを見てください。影が毎キーストロークで動くと Safari のテキストタイルが余計に保持されることがあります。

計測では、フィールド伸長に伴う Largest Contentful Paint の変化よりも、累積レイアウトシフトの方がユーザー体感に効くケースが多いです。スティッキーヘッダと入力欄の距離が変わるデザインは特に要注意です。

パフォーマンスとアクセシビリティの両方を満たすには、伸縮より先に情報設計を直す方が早い場面もあります。必須項目を減らし、段階的開示で画面を分割すれば、textarea 自体の高さ競争が起きにくくなります。

ロールアウト用チェックリスト

HTML プリプロセッサの feature flag の背後で段階的に出荷し、@supports を含む CSS チャンクがステージングのビジュアル差分を通過したら bodydata-field-sizing="on" を出す、という流れが扱いやすいです。JavaScript を再デプロイせず属性を戻すだけでロールバックできます。

Playwright で現実的な散文 400 文字入力後の clientHeight を測り、100 文字あたり 40 px を超える急伸びでアラート、というアサーションは max-height 欠落の早期検知に効きます。優先ロケールを文書化し、CJK はラテンと異なる行間バグを先に踏みやすいと心得てください。

成功指標はサポートチケットに寄せ、「全文が見えなかった」系の苦情を公開後 2 週間で少なくとも 12% 減、を狙うと説得力があります。スローモーション収録を Lighthouse トレースと同じセッション ID で保管すれば、性能・UX・コンプライアンスの三者が再実行なしに議論できます。

ステークホルダー向けには、対応ブラウザ率とフォールバック率を一枚のスライドにまとめ、リスクを可視化してから main へマージすると反対が減ります。反対意見は多くの場合「Safari で壊れたら誰が見るのか」なので、クラウド Mac の予約リンクを同じ資料に貼っておくと会議が短くなります。

リリース後 48 時間はエラー率と送信完了率を通常の 1.5 倍粒度で監視し、週次で振り返りの欄を設けると継続的改善に繋がります。

よくある質問

field-sizing は JavaScript の自動リサイズを置き換えますか?

多くの静的サイトでははい。レガシーエンジンや高度な行折り返し分析には JavaScript を残します。

最初に狙うべき要素は?

公開フィードバックやチェックアウトのコメント欄を優先し、社内管理ツールは対応が広がってからで構いません。

Safari QA はどれくらい?

リサイズと IME で 20〜35 分、エラー状態の VoiceOver で 10 分を目安にしてください。

Apple Silicon Mac mini は WebKit のフォーム議論を最短で収束させる舞台のままです。ネイティブのテキストスタック、熱設計が読みやすい長時間 QA、Linux では再現が難しい macOS のユーザー補助トグル。MacHTML のクラウド Mac mini は SSH と VNC 付きで、field-sizing や Popover、スティッキーフッタを静的サイトチームが CapEx を増やさず検証する用途に向きます。スプリント単位で借り、証跡を残し、グリーンなら解放、という運用が現実的です。料金の目安は 1 日あたり約 $16.9 前後のホスト構成が多く、試算と予算申請にそのまま載せやすいです。

クラウド Mac mini で Safari フォーム QA

Apple Silicon 実機で field-sizing、IME、スティッキーレイアウトを WebKit ネイティブ描画のまま検証できます。

クラウド Mac でフォーム検証
1 日 $16.9〜