世界を動かす技術を、日本語で。

JavaScriptはもう必要ない: 現代のCSSが素晴らしい理由の概要

2025年8月29日原文(lyra.horse)

概要

  • 現代のWeb開発 ではJavaScriptフレームワークの肥大化が問題視されている現状
  • HTMLとCSSのみ でも多くの機能や美しいデザインが実現可能であることの提案
  • モダンCSS の新機能や書きやすさの向上についての紹介
  • パフォーマンス・アクセシビリティ の観点からCSS活用の利点を解説
  • JavaScript不要 なサイト構築のアイデアやCSSの力を再評価する内容

モダンWeb開発の課題とCSSの再評価

  • JavaScriptフレームワーク (例:React, NextJS)の肥大化によるパフォーマンス低下問題
    • 数秒のロード時間や ランダムなエラー 発生
    • node_modules フォルダの巨大化によるストレージ圧迫
  • 多くのサイトで 追跡スクリプトや悪いコード が混在し、ユーザー体験を損なう傾向
  • Webフレームワーク 自体にも適材適所が存在し、全てのサイトに必要ではない
  • HTML/CSSのみ で実現できる機能の多さに注目
    • eコマースやダッシュボード以外では JavaScript不要 の場合が多い

CSSへの誤解とその実力

  • CSSが 難しい・使いにくい という誤解
    • 多くの開発者が CSS基礎を学ばず に敬遠しがち
    • CSSは単なる装飾言語ではなく、 強力なドメイン特化言語
  • FlexboxやGrid などのレイアウト機能の進化
    • DevToolsのサポートにより、 直感的な操作 が可能
  • SassやTailwind などの登場は、過去のCSS記述の難しさへの対応策
    • 近年は CSS自体の進化 で書きやすさが大幅に向上

モダンCSSの新機能と書きやすさ

  • ネスト記法 による可読性・保守性の向上
    • 親子関係や状態疑似クラス(&:hover等)が 直感的に記述可能
  • 相対カラーcolor-mix() など、色操作の柔軟性
    • JavaScript不要で ダイナミックなカラースキーム 生成が可能
  • 新しいメディアクエリ構文lh単位scrollbar-gutter など、細やかなUI調整
  • Baseline によるブラウザ対応の明確化
    • 主要ブラウザでの サポート状況が一目で分かる

CSS活用のメリット

  • JavaScript無効化環境 でも問題なく表示可能
    • セキュリティ・プライバシー重視ユーザーへの配慮
  • HTML/CSSのみ で実装できる機能例
    • ボタンのホバー効果、トーストアニメーション、入力バリデーション等
  • パフォーマンスの高さ
    • CSSアニメーションは ブラウザのコンポジタスレッド で処理されるため、 滑らかさ・省電力性 が向上
    • 低スペック端末でも快適動作
  • 開発・保守コスト削減
    • 冗長なJavaScriptや外部ライブラリの導入不要

CSSを選択する理由

  • ユーザー体験向上パフォーマンス最適化
  • アクセシビリティ・セキュリティ の観点での優位性
  • 新機能の充実 により、CSSだけで十分な表現力を獲得
  • 必要に応じてWeb Animations API を利用し、JSからCSSアニメーションを制御可能

まとめ

  • CSSは過小評価されがちだが、現代のWeb開発において再評価すべき技術
  • JavaScriptを多用する前に、CSSやHTMLで実現可能かを再検討 する姿勢が重要
  • モダンCSSの活用 で、より速く・美しく・アクセシブルなWeb体験の提供が可能

Hackerたちの意見

まあ、こういう記事には賛同しやすいタイプなんだけど、「一部のユーザーはJavaScriptを望んでいない」っていう価値提案には全然共感できないな。ちなみに、俺はアーチユーザーで、ブラウザスクリプトやウェブクローリングにかなり時間を使ってきたし、普通の人よりも信者って感じなんだけど。そんなニッチなユーザーの好みは、ほとんど無視されるべきだと思う。確かに「noscript」な世界がもっと良くなればいいけど、個々の「草の根」運動が「JavaScriptなし」をその有用性の一部にするべきだとは思わない。CSSが勝つ理由は、IE6の時代に戻るような、非常に皮肉な呼びかけよりもずっと説得力がある理由がたくさんあると思う。全体的に見れば、この記事に関してはちょっとしたマイナーなポイントだけど(ちなみにこの記事は素晴らしいと思ってる)、今の「トレンド」をそのまま言ってるだけなんだ。

同意するよ。noscript派は役に立たないし、ターゲットにする価値も感じない。ただ、逆の側面をもっと強調したいんだ。コードを少なく書いてプラットフォームを使うことは、ものすごく価値があると思う!少なくして、ブラウザにやらせるのはすごくいい勝利だよね。

ちなみに、俺はnoscriptを使ってインターネットを利用してるけど、JavaScriptが必要なサイトでも全然使えるよ。拡張機能から有効にすればいいだけだから、普段使ってるサイトには全く邪魔にならないし、パフォーマンスやバッテリー、セキュリティにもいい感じ。noscriptを一週間以上使ってみたことある?君の視点はちょっと誤解を招くかもしれないな。俺もnoscriptを使う前は全く同じことを思ってたから。ちなみに、俺はこのブログ記事の作者だよ。

JavaScriptを望まないユーザーについては軽く触れてるけど、ほとんどの記事はCSSの機能を見せることに費やされてるね。もう一つの動機はパフォーマンスだけど、動機についてはあまり強調してないと思う。個人的には、技術を見せることに焦点を当てるのは生産的だと思うよ。

一部のユーザーはJavaScriptを望んでいない 正解、ほとんどの人がそうだね。

僕にとっての魅力は、数バイトの宣言的なCSSで、たくさんの行数が必要な命令的なJSよりも簡単に実現できることだね。変な挙動も少なく、フレームワークの互換性の問題も減るし、インタラクティブになるまでの時間も短い。noscript環境で動くのも、ただのおまけみたいなもんだ。でも、心の奥ではDSSSLが恋しいな。

今日はベースラインの広範な利用可能性について知ったよ。もっと健全なフロントエンドアプリケーション(ロジック)技術に向かって進んでほしいな(今のリーダー、Typescript NextJSはそれじゃないと思うけど)。でも、最近のCSSはかなり健全に感じられるようになってきたのはありがたいね。

Vite(現代のフロントエンドフレームワークの大部分で使われている)は、デフォルトでベースラインの広範な利用可能性のためにプロダクションバンドルをビルドするよ: https://vite.dev/guide/build.html#browser-compatibility

名前にハイフンが含まれていれば、要素を自由に作ってもいいよ 意味のあるタグを機械可読性のために使うことはもう無理かな。

既に自分のニーズに合った要素があるなら、たくさんのdivを使うよりずっと読みやすいよね。わざわざ新しい要素を作る必要もないし。

それに、ハイフンがなくても大丈夫だよ!そのまま使えばいいんだ。

最近の機械可読性の使い道って何なの?

Hacker Newsで議論の続きを見る