株式会社プランニングA

コラム

column
2025.07.22

クラス名で差をつける!WEBコーディングのための命名規則ガイド

WEBサイトを構築する際、HTMLとCSSのクラス名は非常に重要です。適切に命名されたクラス名は、コードの可読性を高め、チーム開発を円滑にし、将来的なメンテナンスを容易にします。しかし、どうすれば「区別しやすく、整理された」クラス名にできるのでしょうか?

効果的なクラス名の付け方とその具体的な例、そして避けるべきパターンを調べてみました。


なぜクラス名の整理が重要なのか?

1. 可読性の向上

コードを見たときに、そのクラスが何を表しているのか、どんな役割を持っているのかがすぐに理解できると、開発効率が格段に上がります。

2. メンテナンス性の向上

将来的に機能を追加したり、デザインを変更したりする際に、適切なクラス名が付けられていれば、影響範囲を特定しやすくなります。

3. チーム開発の効率化

複数人で開発を行う際、共通の命名規則があれば、コードの統一性が保たれ、コミュニケーションコストが削減されます。


クラス名の命名規則のヒント

1. 役割や目的を明確にする

そのクラスが何のために存在するのかを明確に示しましょう。

  • 良い例: navigation-menu, product-card, btn-primary, text-center
  • 悪い例: box1, red-text, item-wrapper (見た目を直接指定するのは避ける)

2. BEM (Block Element Modifier) 規則を検討する

BEMは、大規模なプロジェクトで特に効果的な命名規則です。 ブロック__要素--修飾子 の形式で名前を付けます。

  • ブロック: 独立したコンポーネント(例: header, card
  • 要素: ブロックの一部(例: card__title, header__logo
  • 修飾子: ブロックや要素の状態やバリエーション(例: btn--primary, card--active

BEMの例:

HTML

<div class="product-card">
  <img class="product-card__image" src="product.jpg" alt="Product Image">
  <h2 class="product-card__title">商品タイトル</h2>
  <p class="product-card__description">商品の説明が入ります。</p>
  <button class="product-card__button product-card__button--disabled">カートに入れる</button>
</div>

3. 接頭辞を使って分類する

共通の接頭辞を付けることで、クラスの用途を明確にできます。

  • js-: JavaScriptで操作する要素
    • 例: js-tab-trigger, js-modal-open
  • is- / has-: 状態を表すクラス(JavaScriptで付与されることが多い)
    • 例: is-active, is-open, has-error
  • u-: Utility(ユーティリティ)クラス(汎用的なスタイル)
    • 例: u-text-center, u-margin-top-10px

避けるべきクラス名のパターン

1. 抽象的すぎる名前

item, wrapper, box など、具体的な意味を持たない名前は避けましょう。

2. 見た目を直接表す名前

red-text, left-column など、CSSでスタイルを変更すると矛盾が生じる可能性のある名前は避けましょう。そのクラスが持つ「役割」で命名することが重要です。

3. 短すぎる、または長すぎる名前

短すぎると意味が分からなくなり、長すぎると記述が大変になります。適切な長さを心がけましょう。

4. 日本語のローマ字表記

gaiyou, shohin など、日本人以外には分かりにくい表記は避けましょう。一般的な英単語を使用しましょう。


クラス名整理一覧(具体例)

以下に、WEBサイトでよく使われる要素のクラス名例をカテゴリ別に示します。

カテゴリ良いクラス名例悪いクラス名例備考
レイアウトcontainer, main-content, sidebarwrapper, box2ページの構造を示す
grid, grid__item, grid--col-3columns, float-leftグリッドレイアウト
ナビゲーションnavigation, navigation__list, navigation__item, navigation__linkmenu, navi-ulヘッダー、フッターのナビゲーションなど
ボタンbtn, btn--primary, btn--secondary, btn--disabledbutton1, red-buttonボタンの役割や状態を明確に
フォームform-group, form-control, input-text, input-checkbox, error-messagemyForm, text-input入力フィールドやエラー表示など
カード/アイテムcard, card__image, card__title, card__bodyitem-box, product-div商品、ニュース、ブログ記事などの表示
ヘッダー/フッターheader, header__logo, header__nav, footer, footer__copyrighttop-area, bottomサイト全体のヘッダーとフッター
セクションsection-about, section-featuresarea3, content-block特定のコンテンツブロックやセクション
ユーティリティu-text-center, u-margin-top-20px, u-hiddencenter-align, mt20, display-none汎用的なスタイル(BEMと組み合わせて使うことも)
状態is-active, is-open, has-error, is-loadingselected, displayJavaScriptなどで動的に付与される状態クラス
JavaScript連携js-tab-trigger, js-modal-open, js-accordion-contentclick-me, do-somethingJavaScriptで特定の要素を操作するためのトリガー

まとめ

クラス名は、WEBコーディングにおける「言葉」のようなものです。意味のある言葉を選び、整理することで、コードはより理解しやすく、管理しやすくなります。

お困りのことがございましたら
お気軽にご相談ください

結果につながる広告制作は
プランニングAへおまかせください。

contact