CMS のカスタムフィールドコード、ハイフンとアンダースコアどちらを使うべきか?
NEW
新しいテーマをリリースするにあたり、開発元として命名基準とかを見直しとか、整理を行なっています。 CMS を使っていると、独自項目を追加するために「カスタムフィールドコード(フィールド名)」を設定する場面があります。このとき、多くの方が -(ハイフン) と _(アンダースコア) のどちらを使うべきか迷うのではないでしょうか。
今回は、それぞれの特徴と実務的な判断基準を整理し、最適な選択肢を考えてみます。
技術仕様上はどちらも使える
HTML の name 属性や URL、データベースのカラム名などでは、ハイフンもアンダースコアも利用できます。つまり、技術的にはどちらを使っても構文エラーになることはありません。
ではなぜ迷うのかというと、実務上の扱いやすさや将来の拡張性、他システムとの連携などで差が出てくるからです。
ハイフン(-)を使う場合の特徴
メリット
- 見た目がスッキリし、URL スラッグやファイル名と同じ表記にできる。
- ユーザーに見せる公開 URL とフィールド名を統一できる。
デメリット
- JavaScript では変数名として直接使えない(減算演算子として認識されるため)。
obj.custom-field // エラー obj["custom-field"] // クォート必須
- テンプレートタグやパーサーによってはエスケープが必要になる場合がある。
- API や JSON のキーにする場合、必ずクォートが必要。
アンダースコア(_)を使う場合の特徴
メリット
- HTML の name 属性、JavaScript、PHP など多くの言語で変数名としてそのまま使える。
- API や JSON でクォート不要のケースが多い。
- 他システムとの連携や将来の拡張性が高い。
デメリット
- フォントによっては少し見づらい。
- 公開 URL の単語区切りとしては一般的ではない(SEO 面ではハイフン推奨)。
実務的なおすすめ
カスタムフィールドコード(システム内部用) → snake_case(小文字+アンダースコア)
event_date product_price meta_description
カテゴリーコード やファイル名(ユーザーに見せる部分) → kebab-case(小文字+ハイフン)
/event-list/ /product-detail/ entry-123.html
SEO を考えると、Google の公式ガイドラインでは、単語区切りに -(ハイフン) を使うことを推奨しているとのことです。ハイフンは単語の区切りとして認識されますが、アンダースコアは単語を連結したまま解釈されます。
/my-page/ → 「my」と「page」の2単語 /my_page/ → 「mypage」という1単語
このように役割に応じて使い分けることで、運用面・技術面の両方でストレスが減ることになります。
まとめ
- 技術的には - も _ も利用可能。
- 内部処理やテンプレートで扱うカスタムフィールドコードは _(アンダースコア)推奨。
- SEO やユーザーに見せる URL は -(ハイフン)推奨。
カスタムフィールドの命名規則は、一度決めると後から変えづらいものです。プロジェクト開始時にチーム内でルールを統一し、将来の拡張や他システム連携も考慮した命名を行うことをおすすめします。
Ver. 3.2 の新しいテーマが出来上がってきているところですが、開発元として推奨の実装であるべきなので見直しをしてみようと思います。カスタムフィールド名を変えるとインストールデータも関係してくるので結構大変なんですが、頑張ります!