はじめに
Webサイトやアプリケーションを構築する際、CSSはデザインやレイアウトを定義する上で欠かせない存在です。しかし、CSSのコードが複雑になると、メンテナンス性が低下し、保守が困難になる可能性があります。そこで、クラス名の命名規則を適切に設計することが重要となります。本記事では、CSSクラス名のチートシートを参考にしながら、効率的でメンテナンス性の高いCSS設計の方法について詳しく解説していきます。
CSSクラス名の基本的な命名規則

CSSクラス名を設計する上で、最も重要なのが命名規則です。適切な命名規則を設けることで、クラス名の意味が明確になり、予測可能で保守しやすいコードを実現できます。
ハイフンによる単語の区切り
クラス名は複数の単語で構成されることが多いため、単語と単語の間をハイフン(-)で区切ることが一般的です。例えば、「navigation-menu」や「contact-form」といった具合です。ハイフンを使うことで、可読性が向上し、単語の区別がつきやすくなります。
単語の間にアンダースコア(_)を使用することもありますが、ハイフンの方がより一般的です。アンダースコアは主にBEM(Blocks, Elements, Modifiers)方式で使われることが多く、後述します。
キャメルケースの使用を避ける
キャメルケース(camelCase)は、最初の単語は小文字で、それ以降の単語の頭文字を大文字にする命名規則です。JavaScriptなどのプログラミング言語ではよく使われますが、CSSのクラス名ではあまり使われません。キャメルケースを使うと、大文字と小文字の区別がつきにくくなるためです。
CSSのクラス名には、すべて小文字を使うか、ハイフンで区切るのが一般的です。大文字を使う場合は、略語などの特別な場合に限られます。
省略語の使用
クラス名は短くてわかりやすいものが望ましいため、適度に省略語を使うことがあります。例えば、「nav」は「navigation」の略語として使われます。ただし、あまり一般的でない省略語は避けた方が良いでしょう。
省略語を使う場合は、一般的に理解されるものに限定することが大切です。「img」は「image」の代わりに使えますが、「pct」を「picture」の代わりに使うのは適切ではありません。
BEM(Blocks, Elements, Modifiers)方式

BEMは、CSSクラス名の命名規則として広く使われている手法です。Block、Element、Modifierという3つの要素から構成されています。
Block
Blockとは、Webサイトやアプリケーションの基本的な構成要素を表します。ヘッダー、フッター、メニュー、コンテンツ領域などがBlockに当てはまります。Blockは他の要素から独立しており、単独で存在できます。
Blockの命名規則は単純で、通常はハイフンを含まない単語を使います。例えば、「header」、「menu」、「sidebar」といった具合です。
Element
Elementは、Blockの一部を構成する要素を表します。例えば、メニューのリストアイテム、ヘッダーのロゴ、サイドバーの検索フォームなどがElementに当てはまります。ElementはBlockに依存しており、単独では存在できません。
Elementの命名規則は、Block名とElement名をアンダースコア(_)で区切ります。例えば、「menu__item」や「header__logo」といった具合です。
Modifier
ModifierはBlockやElementに対する装飾や状態を表します。例えば、メニューのアクティブな状態や、ボタンのサイズやカラーバリエーションなどがModifierに当てはまります。
Modifierの命名規則は、Block名やElement名に続けてハイフン(-)を付け、Modifier名を記述します。例えば、「menu__item–active」や「button–large」といった具合です。
その他の命名規則

BEM方式以外にも、様々な命名規則があります。ここでは、その他の一般的な命名規則について説明します。
プレフィックスによる分類
クラス名の先頭にプレフィックス(prefix)を付けて、要素の種類を分類することがあります。例えば、「js-」をJavaScriptで使用する要素に付けたり、「is-」や「has-」を状態を表す要素に付けたりします。
プレフィックスを使うことで、クラス名の意味がより明確になり、コードの可読性が向上します。ただし、プレフィックスを多用しすぎるとかえって可読性が低下するので、注意が必要です。
名詞形の使用
CSSクラス名は一般的に名詞形で記述されます。例えば、「button」や「header」、「modal」といった具合です。動詞形や形容詞形のクラス名は避けた方が良いでしょう。
名詞形のクラス名を使うことで、要素の種類や役割が明確になり、コードの予測可能性が向上します。また、命名規則が統一されているため、メンテナンス性も良くなります。
マルチクラス
1つの要素に複数のクラス名を割り当てることをマルチクラスと呼びます。これにより、スタイルの再利用性が向上し、コードの冗長性を減らすことができます。
例えば、ボタンスタイルに「button」クラスを、サイズに「button–large」クラスを、カラーに「button–primary」クラスを割り当てるといった具合です。マルチクラスを上手く活用することで、柔軟でメンテナンス性の高いCSSを実現できます。
CSSセレクターチートシート

CSSクラス名の設計と並行して、CSSセレクターの使い分けも重要になります。適切なセレクターを使うことで、より効率的でメンテナンス性の高いコーディングが可能になります。
基本的なセレクター
| セレクター | 説明 | 例 |
|---|---|---|
| 要素セレクター | HTMLタグ名で要素を選択する | h1 { } |
| クラスセレクター | クラス名で要素を選択する | .header { } |
| IDセレクター | ID名で要素を選択する | #main { } |
| 属性セレクター | 属性値で要素を選択する | input[type=”text”] { } |
これらの基本的なセレクターを適切に使い分けることで、柔軟でメンテナンス性の高いスタイリングが可能になります。
複合セレクター
複数のセレクターを組み合わせて使うことで、より細かい指定ができます。代表的な複合セレクターは以下の通りです。
- 子孫セレクター(スペース区切り): .parent .child { }
- 子セレクター(>): .parent > .child { }
- 隣接兄弟セレクター(+): .prev + .next { }
- 一般兄弟セレクター(~): .prev ~ .next { }
複合セレクターを上手に使うことで、不要なスタイルの影響を受けずに、目的の要素だけをスタイリングできます。ただし、セレクターが複雑になりすぎるとメンテナンス性が低下するので、注意が必要です。
疑似クラスセレクター
疑似クラスセレクターは、要素の状態や構造に基づいて要素を選択します。代表的な疑似クラスセレクターは以下の通りです。
- :hover
- :active
- :focus
- :first-child
- :last-child
- :nth-child()
疑似クラスセレクターを使うことで、JavaScriptなしでインタラクティブなスタイリングが可能になります。また、要素の並び順に応じたスタイリングも簡単に実現できます。
まとめ
本記事では、CSSクラス名の命名規則やCSSセレクターの使い方について詳しく解説してきました。適切なクラス名の設計と、セレクターの上手な使い分けが、メンテナンス性の高いCSSコーディングの鍵となります。
命名規則としては、ハイフンによる単語の区切り、キャメルケースの使用を避ける、適度な省略語の使用などが挙げられます。また、BEM方式やプレフィックスによる分類、マルチクラスなども有効な手段です。
CSSセレクターについては、基本的なセレクター、複合セレクター、疑似クラスセレクターなどを上手に組み合わせることで、柔軟でメンテナンス性の高いスタイリングが可能になります。
これらの知識を活用することで、予測可能で再利用しやすい、保守しやすいCSSを実現できるはずです。Webサイトやアプリケーションの制作に役立ててください。

