当サイトはアフィリエイト広告を利用しています

コーディング規約の作り方!HTML・CSS・JSで統一感のあるコードを書く方法

Webデザインスクール

チームでWeb制作を行う際、メンバーごとにコードの書き方がバラバラだと、保守や修正のたびに「このクラス名は何を意味しているのか」「インデントはスペースとタブのどちらを使っているのか」と確認作業に時間を取られます。

コーディング規約とは、コードの書き方に関する統一ルールのことで、命名規則・インデント・コメントの書き方・ファイル構成などを定めたものです。規約があることで、誰が書いても読みやすく、修正しやすいコードベースを維持できます。

この記事では、HTML・CSS・JavaScriptそれぞれのコーディング規約の作り方と、実務で役立つ具体的なルールを解説します。個人制作でも規約を意識しておくと、コードの品質が格段に上がります。

ナビ助
ナビ助
コーディング規約は「自分のため」にも大事だよ。半年後に自分が書いたコードを見て「何これ?」ってならないための保険でもあるんだ。

コーディング規約はなぜ必要か

規約がもたらすメリット

  • 可読性の向上:統一されたルールで書かれたコードは、初めて見る人でも構造と意図をすぐに理解できる
  • 保守性の向上:修正箇所を特定しやすくなり、バグの発生リスクが低下する
  • オンボーディングの効率化:新しいメンバーがプロジェクトに参加した際、規約を読むだけでコードの書き方が把握できる
  • レビューの効率化:コードレビュー時にスタイルの指摘が減り、ロジックや設計の議論に集中できる

参考になる既存の規約

ゼロから規約を作るのは大変なので、まずは既存の規約を参考にするのがおすすめです。

  • Google HTML/CSS Style Guide:Googleが公開しているHTML/CSSのコーディングガイドライン
  • Airbnb JavaScript Style Guide:JavaScriptの命名規則やコーディングスタイルを詳細に定めた規約
  • WordPress Coding Standards:WordPress開発向けのコーディング標準

HTMLのコーディング規約

ドキュメント構造

HTMLの基本的な規約として、以下のルールを定めておきましょう。

  • DOCTYPE宣言は<!DOCTYPE html>を使用する(HTML5)
  • lang属性を指定する(<html lang="ja">
  • 文字エンコーディングはUTF-8を指定する(<meta charset="UTF-8">
  • viewportのmetaタグを記述する

セマンティックなマークアップ

HTMLタグは「見た目」ではなく「意味」に基づいて選択するのが原則です。見出しには<h1>〜<h6>、段落には<p>、リストには<ul>/<ol>、ナビゲーションには<nav>、記事コンテンツには<article>を使います。

  • 見た目を太字にしたいだけの場合は<b>ではなくCSSで対応する
  • ブロック要素の汎用コンテナには<div>、インライン要素には<span>を使う。ただし、適切なセマンティックタグがある場合はそちらを優先する
  • 画像には必ずalt属性を設定する。装飾目的の画像はalt=""(空文字)とする

インデントと改行

インデントはスペース2個またはスペース4個に統一します(チームで1つに決める)。ネストされた要素は1段階インデントし、コードの階層構造を視覚的に表現します。

ポイント

エディタの設定で「タブをスペースに変換」をオンにしておくと、環境による表示の違いを防げます。VS Codeでは「Editor: Tab Size」と「Editor: Insert Spaces」の設定を確認しましょう。

ナビ助
ナビ助
「スペースかタブか」は永遠の論争テーマだけど、大事なのは「どちらかに統一すること」。チーム内で決めたら一貫して守ろう。

CSSのコーディング規約

命名規則

CSS設計において最も重要なのが、クラス名の命名規則です。代表的な命名規約を紹介します。

BEM(Block Element Modifier)は、最も広く使われているCSS命名規則です。

  • Block:独立した意味のあるコンポーネント。例:.card
  • Element:ブロックの構成要素。アンダースコア2つで接続。例:.card__title
  • Modifier:状態やバリエーション。ハイフン2つで接続。例:.card--featured

BEMの最大のメリットは、クラス名を見るだけで「何のコンポーネントの、どの部分で、どんな状態か」がわかることです。

プロパティの記述順序

CSSプロパティの記述順序を統一することで、コードの一貫性が向上します。一般的には以下の順序が推奨されます。

  1. レイアウト:display、position、top/right/bottom/left、z-index
  2. ボックスモデル:width、height、margin、padding、border
  3. タイポグラフィ:font-family、font-size、line-height、color
  4. ビジュアル:background、box-shadow、border-radius、opacity
  5. その他:transition、animation、cursor

避けるべき書き方

  • IDセレクタの使用:詳細度が高すぎてスタイルの上書きが困難になる。クラスセレクタを使う
  • !importantの乱用:スタイルの優先度管理が破綻する原因になる。詳細度の設計で解決する
  • タグセレクタの直接指定divpに直接スタイルを当てると、意図しない箇所に影響が及ぶ
  • マジックナンバーmargin-top: 37px;のような根拠不明な数値。変数やデザイントークンで管理する

CSS設計手法

BEM以外にも、以下のCSS設計手法があります。プロジェクトの規模やチームの特性に合わせて選択しましょう。

  • FLOCSS:Foundation・Layout・Object(Component/Project/Utility)の3層構造。日本のWeb制作現場で人気がある
  • ITCSS:詳細度の低い順にCSSを配置する設計。大規模プロジェクト向け
  • ユーティリティファースト(Tailwind CSS):ユーティリティクラスを組み合わせてスタイリングする。コンポーネント指向のフレームワークと相性が良い
ナビ助
ナビ助
CSS設計は「正解は1つじゃない」のが難しいところ。まずはBEMを覚えて、それをベースにプロジェクトに合わせてアレンジしていくのが現実的だよ。

JavaScriptのコーディング規約

命名規則

JavaScriptでは、以下の命名規則が一般的です。

  • 変数・関数:camelCase(例:userNamegetUserName()
  • 定数:UPPER_SNAKE_CASE(例:MAX_RETRY_COUNT
  • クラス:PascalCase(例:UserAccount
  • プライベートプロパティ:先頭にアンダースコア(例:_internalValue

変数名や関数名は省略せず、意味が伝わる完全な単語を使うのが原則です。btnではなくbuttonusrではなくuserと書きます。

変数宣言

varは使わず、const(再代入しない値)とlet(再代入する値)を使い分けます。基本的にconstを優先し、再代入が必要な場合のみletを使います。

関数の書き方

  • 1つの関数は1つの責務に限定する(単一責任の原則)
  • 引数が多すぎる関数はオブジェクトで受け取ることを検討する
  • 関数の行数は30行以内を目安にする。長くなる場合は分割を検討する

コメントの書き方

コメントは「なぜそのコードを書いたのか(Why)」を説明するために使います。「何をしているか(What)」はコード自体で表現し、コメントで補足する必要がないように書くのが理想です。

注意

コメントアウトしたコードを残しておくのは避けましょう。「後で使うかもしれない」と思って残したコードが、時間が経つにつれて意味不明になり、コードベースを汚す原因になります。バージョン管理(Git)を使っていれば、過去のコードはいつでも復元できます。

ツールによる規約の自動化

規約を人間の目だけでチェックするのは限界があります。ツールを活用して自動チェック・自動修正する仕組みを導入しましょう。

代表的なツール

  • Prettier:コードフォーマッター。インデント・改行・セミコロンなどを自動で統一する
  • ESLint:JavaScriptのリンター。命名規則やベストプラクティスへの違反を検出する
  • Stylelint:CSSのリンター。プロパティの記述順序やクラス名の命名規則をチェックする
  • HTMLHint:HTMLの構文チェッカー。不正なマークアップを検出する

VS Codeでは「保存時に自動フォーマット」の設定を有効にしておくと、コードを保存するたびにPrettierが自動で整形してくれます。設定一つでコーディングスタイルの統一が保証されるため、導入効果は非常に高いです。

EditorConfigの活用

プロジェクトのルートディレクトリに.editorconfigファイルを置くと、エディタの設定(インデントの種類・サイズ、文字コード、改行コード)をチーム全体で共有できます。エディタの種類(VS Code、WebStorm、Sublime Textなど)に依存しないのが利点です。

ナビ助
ナビ助
Prettier + ESLintの組み合わせは「もはや標準装備」って言えるレベル。最初に設定しておけば、あとは勝手にコードがきれいになるから楽だよ。

よくある質問(Q&A)

Q&A

Q:個人制作でもコーディング規約は必要ですか?

A:必要です。半年後、1年後に自分のコードを修正するとき、規約に沿って書かれたコードはスムーズに理解できます。また、ポートフォリオとしてコードを公開する場合、規約に沿った統一感のあるコードは技術力のアピールにもなります。

Q:規約はどのくらい厳密に決めるべきですか?

A:最初は最小限のルール(命名規則・インデント・ファイル構成)から始め、開発を進めながら必要に応じてルールを追加していくのが現実的です。最初から細かく決めすぎると、ルールを守ること自体が負担になります。

Q:既存のプロジェクトにコーディング規約を導入するにはどうすればいいですか?

A:一度にすべてのコードを書き直すのは非現実的です。新しく書くコードや修正するコードから段階的に規約を適用していく方法が推奨されます。Prettierを導入して、まずフォーマットだけ統一するのが最初のステップとして効果的です。

Q:BEMのクラス名が長くなりすぎるのが気になります。

A:BEMのクラス名が長くなるのは「仕様」であり、可読性とのトレードオフです。ネストが深くなりすぎる場合は、Elementを独立したBlockとして切り出す(コンポーネントの分割)ことで改善できます。

Q:SassやLessなどのプリプロセッサを使う場合、規約は変わりますか?

A:基本的な命名規則やプロパティの記述順序は同じです。プリプロセッサ固有のルールとして、ネストの深さ(3階層まで)、変数やミックスインの命名規則、ファイル分割のルールなどを追加で定めておくと良いでしょう。

まとめ

コーディング規約は「チームのためのルール」であると同時に「未来の自分のためのルール」です。HTML・CSS・JavaScriptそれぞれの命名規則・インデント・記述順序を統一し、PrettierやESLintなどのツールで自動化することで、コードの品質と開発効率を大幅に向上させられます。

まずはGoogleやAirbnbの規約を参考にして最低限のルールを決め、PrettierとEditorConfigを導入するところから始めてみてください。ツールによる自動化を最初にセットアップしておけば、規約を「意識して守る」必要がなくなり、自然と統一感のあるコードが書けるようになります。

ナビ助
ナビ助
規約は「制限」じゃなくて「自由への道具」だよ。コードの書き方に迷わなくなる分、ロジックや設計に集中できるようになるんだ。
タイトルとURLをコピーしました