Web制作を学んでいると必ず直面するのが「効率のいいコードの書き方」と「クラス名の付け方」です。動くサイトを作るだけなら多少コードが乱雑でも問題ありませんが、そのままでは修正や拡張に大きな時間がかかります。特にチームでの開発では、他の人が理解しやすいコードであることが非常に重要です。私自身、最初はbox1
やred-text
のようなクラス名をつけ、数日後には自分でも意味が分からなくなることがありました。しかし、インデントや命名規則を意識するだけで、コードはぐっと整理され、後々の作業効率が大幅に上がります。この記事では、効率的なコードの基本原則から、具体的なクラス命名ルール、さらに実務で役立つツールまで体系的に解説していきます。
効率的なコードを書くための考え方
コードは未来の自分とチームへのメッセージ
効率的なコードとは、短く書かれたコードではなく「誰が読んでも理解できるコード」です。数日後の自分であっても「なぜこう書いたのか」が分からなければ、修正や拡張に時間がかかります。現場ではチームで開発することが多く、他人が読みやすいコードを書くことが生産性に直結します。
「動けばいい」から「読みやすさ」へ
初心者のうちは「表示されればOK」という発想になりがちですが、実務では「読みやすさ」が重要視されます。同じ処理でも、行間やスペースの使い方、クラス名の意味付けによって理解度が大きく変わります。
コード整理の具体的テクニック
インデント・スペース・改行ルール
インデントを揃えることは基本ですが、プロジェクトでルールを統一しておかないと崩れやすいです。自動整形ツール(Prettierなど)を導入すると、チーム全体でコードスタイルを統一できます。
<!-- NG -->
<div><ul><li>Item</li><li>Item</li></ul></div>
<!-- OK -->
<div>
<ul>
<li>Item</li>
<li>Item</li>
</ul>
</div>
コメントの適切な使い方
コメントは全ての行に書く必要はありません。むしろ冗長になると逆効果です。CSSではセクションごとにコメントを入れる程度で十分です。
/* NG */
.red { color: red; } /* 赤文字 */
.bold { font-weight: bold; } /* 太字 */
/* OK */
/* ========== Header ========== */
.header { background: #fff; }
繰り返しを減らすリファクタリング
共通部分をまとめ、修正を一箇所に集約できるようにします。
/* NG */
.btn-blue { background: blue; color: #fff; }
.btn-red { background: red; color: #fff; }
/* OK */
.btn { color: #fff; padding: 10px 20px; }
.btn--blue { background: blue; }
.btn--red { background: red; }
クラス名を付ける基本ルール
見た目ではなく「意味・役割」で命名する
クラス名を考えるときに最も大切なのは、「見た目」ではなく「意味」や「役割」を意識することです。
例えば、以下のようなケースを考えてみましょう。
<!-- NG例:見た目に依存 -->
<div class="red-box">エラーメッセージです</div>
<!-- 改善例:役割に基づく -->
<div class="alert-box">エラーメッセージです</div>
.red-box
という名前は「赤い箱」を意味しています。デザイン変更で色が赤から黄色になったとき、クラス名と実際の見た目がずれてしまいます。- 一方
.alert-box
という名前なら「警告を表示する箱」という役割を示すため、色を変更しても意味は崩れません。
👉 このように、見た目依存の命名は短期的には分かりやすくても、長期的には保守性を下げる原因になります。
実務を始めた頃、とにかく早く作らないとと焦って、とりあえずのクラス名をつけて、デザインしていたのですが、あとあとコードが増えていくうちに痛い目をみていました。
その場しのぎの適当なクラス名は、そのときはいいのですが、あとからどんどんコードを付け足していくときや、ちょっとした修正をしたいときにすごく面倒でした。
なので、少し面倒でも最初からしっかりと、意味・役割をもたせたクラス名を書いていくことがとても大切で、一番効率の良いコードの書き方だと思うので、常にこころがけています。
命名規則の統一
クラス名の付け方にはいくつかパターンがあります。これを「命名規則(ネーミングルール)」と呼びます。
コードの世界では、ルールをバラバラにするととても読みにくくなるので、プロジェクトやチームで必ず統一します。
ここでは代表的な3つの書き方を紹介します。
ケバブケース(kebab-case)
- 書き方: 単語を「ハイフン(-)」でつなぐ
- 例:
.main-title
.card-header
- 名前の由来: ハイフンが「ケバブ串」に似ているから。
✅ メリット
- 単語の区切りがはっきりしていて読みやすい。
- CSSの世界で最も一般的に使われる書き方。
- GoogleやBootstrapなど、多くのプロジェクトでも採用されている。
❌ デメリット
- クラス名が長い場合、ハイフンが多くなりすぎて読みにくくなることもある。
👉 初心者〜上級者までCSSではケバブケース一択に近いです。
キャメルケース(camelCase)
- 書き方: 2語目以降の先頭を大文字にする
- 例:
.mainTitle
.cardHeader
- 名前の由来: 大文字が「ラクダのこぶ」に見えるから。
✅ メリット
- JavaScriptやプログラミング言語全般で広く使われている。
- 単語の区切りにスペースや記号を使わないため、タイピングしやすい。
❌ デメリット
- CSSで使うと少数派なので、他人が見たときに「このプロジェクトだけ特別なルールなの?」と混乱することがある。
👉 JavaScriptでは一般的だけど、CSSのクラス名では推奨されない。
スネークケース(snake_case)
- 書き方: 単語を「アンダースコア(_)」でつなぐ
- 例:
.main_title
.card_header
- 名前の由来: アンダースコアが「蛇(スネーク)」が横に這っている姿に似ているから。
✅ メリット
- 古いシステムや一部のプログラミング言語(Pythonなど)でよく見かける。
- 小文字だけで統一できるので分かりやすい。
❌ デメリット
- CSSでは一般的ではなく、読みやすさもケバブケースに劣る。
- モバイルでの読み書きや検索がしにくい。
👉 昔のプロジェクトで残っていることはあるが、現代のCSSでは非推奨。
💡 まとめ
- ケバブケース → CSSでの王道。読みやすくておすすめ。
- キャメルケース → JavaScriptではよく使うが、CSSでは避ける。
- スネークケース → CSSではほぼ使われない。
最初は「どれを選ぶか」悩むと思いますが、CSSではケバブケースで統一すれば間違いありません。
もしチーム開発に参加する場合は、プロジェクトのルールを必ず確認して、それに従うのがベストです。
BEMとSMACSSによるCSS設計
BEM(Block Element Modifier)
簡単に言うと: 部品(Block)、その中の要素(Element)、見た目や状態の違い(Modifier)をわかりやすく整理するルール。
例:カードの部品を作るとき
<div class="card card--highlight">
<h2 class="card__title">タイトル</h2>
<p class="card__text">本文です。</p>
</div>
.card { border: 1px solid #ddd; padding: 1rem; }
.card__title { font-size: 1.2rem; }
.card__text { font-size: 1rem; }
.card--highlight { background-color: #fef3c7; }
- 特徴: 名前がちょっと長くなるけど「どの部分かわかりやすい」
- 向いている場面: 大規模開発や、複数人で同じサイトを作るとき
SMACSS(Scalable and Modular Architecture for CSS)
簡単に言うと: CSSを役割ごとに5つに分けて整理する考え方。
分類の例:
- Base(基本スタイル) → タグそのもののデフォルト調整
- Layout(ページの枠組み) →
.l-header
- Module(部品ごとのスタイル) →
.m-card
- State(状態を表すスタイル) →
.is-hidden
- Theme(テーマ切り替え用)
/* Layout */
.l-header { ... }
/* Module */
.m-card { ... }
/* State */
.is-hidden { display: none; }
- 特徴: 名前は短めで柔軟。
- 向いている場面: 中小規模のサイトや、デザイン変更が多い案件。
実務での使い分け
- 大規模開発 → BEMをベースにして、しっかり整理する
- 中小規模 → SMACSSやシンプルなルールで十分
- 実際の現場では → BEMを基盤にしつつ、SMACSSの要素も一部取り入れる“ハイブリッド型” が多い
まとめ
慣れてきたら BEMやSMACSSを少しずつ取り入れていくと実務で役立ちます。
ケバブケース → クラス名の「書き方」のルール
BEM / SMACSS → コード全体を「どう整理するか」の設計ルール
初心者の第一歩はケバブケースに慣れること
実務で役立つ効率化ツール
効率的なコードを書くためには「ルール」を理解することが大切ですが、それだけでは十分ではありません。
実際の現場では、ツールを活用して作業を自動化・効率化することが不可欠です。
ここでは初心者でも導入しやすく、実務でもよく使われている代表的なツールを紹介します。
ツール名 | 説明 | 公式リンク |
---|---|---|
Prettier | コードのインデント・スペース・改行などを自動で整形してくれるツール。コードスタイルの統一に役立ちます。 | Prettier公式サイト (prettier.io) |
ESLint | JavaScriptのコード中のミスやスタイル違反を発見・指摘する静的解析ツール。ルールを自分で設定できます。 | ESLint公式サイト (eslint.org) |
VSCode スニペット | よく使うコードパターンをスニペットとして登録しておき、入力の手間を大幅に省く機能。 | VSCode スニペット公式ドキュメント (Visual Studio Code) |
Storybook | UIコンポーネントを「見た目や状態ごと」に分けて表示・テスト・共有できるツール。デザインとコードの乖離を減らすのに有効です。 | Storybook公式サイト (storybook.js.org) |
💡 まとめ:ツールを使うと自然に効率化できる
効率化は「気合いで頑張る」ものではなく、ツールの力を借りて自然に習慣化するのがベストです。
- Prettier → 自動でコードをきれいに
- ESLint → ミスを自動で検出
- VSCodeスニペット → コードを素早く展開
- Figma / Storybook → デザインとコードをつなぐ
こうしたツールを活用すれば、初心者でもプロに近い開発環境を手に入れられます。
まとめ
効率的なコードを書くためには、まず**「読みやすさ」**を意識することが第一歩です。
インデントや改行を整え、不要な繰り返しを避けるだけで、コードの理解度はぐっと上がります。
さらに、クラス名は見た目ではなく役割を表すことが大切です。
CSSの命名規則はケバブケースで統一すれば安心。慣れてきたらBEMやSMACSSの設計ルールを取り入れることで、規模の大きなサイトでも破綻しにくくなります。
また、効率化のためにはツールの活用も欠かせません。PrettierやESLintで自動整形・チェックを行い、VSCodeのスニペットで作業を時短することで、「毎回きれいに書こう」と頑張らなくても自然と効率的なコードが身につきます。
コメント