BEM: 構造的なウェブサイト構築のための設計

BEM: 構造的なウェブサイト構築のための設計

DXを学びたい

先生、ウェブサイトを作る時の『BEM』という言葉を聞いたのですが、これは何のことですか?

DXアドバイザー

それはウェブサイトの見た目を整えるCSSという技術の、設計方法の一つだよ。ウェブサイトを分かりやすく整理して、修正や再利用をしやすくするためのものなんだ。

DXを学びたい

整理して再利用しやすく、ですか。具体的にどういうことでしょう?

DXアドバイザー

例えば、ウェブサイトの部品(ボタンやメニューなど)を「ブロック」「要素」「修飾子」という3つの部分に分けて名前を付けるんだ。そうすることで、どの部分が何を表しているのかが明確になり、他の場所でも同じように使えるようになるんだよ。

BEMとは。

「デジタル変革」に関連する言葉で、ウェブページの見た目を整えるための技術である『BEM』について。」

BEMとは何か

BEMとは何か

ウェブ構築における構成要素を整理し、再利用性を高める手法として、BEMという設計があります。これは、ウェブページを「塊」「部分」「修飾」という三つの概念に分け、関係性を明確化することで、大規模な案件でも管理をしやすくするものです。「塊」は独立した機能を持つ部品、例えば、案内釦や献立などが該当します。「部分」は「塊」の一部であり、それ単独では意味をなしません。献立の項目や入力欄がその例です。「修飾」は、状態や見た目を変化させるもので、釦の色や献立の表示状態などが該当します。この手法を使うことで、様式定義の衝突を避け、再利用性を高め、保守性を向上できます。規模が大きくなるほど、その恩恵は大きくなるでしょう。複数人で開発する際も、各々が独立して作業を進められ、効率が上がります。命名規則に従うことで、名称から役割を推測でき、理解しやすさも向上します。この設計は、多くの現場で取り入れられていますが、導入にあたっては、規模や技術力を考慮し、最適な方法を選ぶ必要があります。品質向上に貢献することが、導入の真の目的であることを忘れないようにしましょう。

構成要素 概念 説明
BEM 塊 (Block) 独立した機能を持つ部品 案内釦, 献立
BEM 部分 (Element) 「塊」の一部で、単独では意味をなさない 献立の項目, 入力欄
BEM 修飾 (Modifier) 状態や見た目を変化させるもの 釦の色, 献立の表示状態
BEM 効果 – 様式定義の衝突回避
– 再利用性の向上
– 保守性の向上
– 理解しやすさの向上
– 複数人での効率的な開発

三つの構成要素

三つの構成要素

ウェブページの構築において、ブロック、要素、修飾子という三つの部品が重要な役割を果たします。ブロックとは、それだけで意味を持ち、再利用可能な独立した部品のことです。例えば、ウェブサイトの案内表示や、商品を探すための入力欄などがこれにあたります。要素は、ブロックを構成する一部であり、ブロックなしには存在できません。案内表示の中の個々の項目や、入力欄の文字入力領域などが該当します。そして修飾子は、ブロックや要素の状態や見た目を変化させるために使われます。例えば、ボタンの大きさや色、あるいは選択されている状態の表示などが修飾子にあたります。これら三つの部品を適切に組み合わせることで、ウェブページの構造が明確になり、管理が容易になります。部品間の関係性を明確にするために、命名規則が定められています。ブロック名はその機能を表す名詞を使い、要素名はブロック名を基に、修飾子名はブロック名または要素名を基に命名します。この規則に従うことで、部品の役割が理解しやすくなり、プログラムの可読性が向上します。

部品 説明 命名規則
ブロック 意味を持ち、再利用可能な独立した部品 ウェブサイトの案内表示、商品検索入力欄 機能を表す名詞
要素 ブロックを構成する一部 案内表示の項目、入力欄の文字入力領域 ブロック名を基に命名
修飾子 ブロックや要素の状態や見た目を変化 ボタンの大きさや色、選択状態の表示 ブロック名または要素名を基に命名

BEMの命名規則

BEMの命名規則

BEM方式において最も大切なことは、厳格な命名規則に従うことです。この規則に沿うことで、見ただけで構成要素の役割と場所が理解できるようになります。構成要素の名前は、それが何であるかを簡潔に示す必要があり、例えば「案内釦」、「献立」、「入力欄」などが考えられます。部分の名前は、構成要素の名前を基に、二つの下線で区切ります。例として、「案内釦__文字」、「献立__項目」、「入力欄__本文」などが挙げられます。部分は、構成要素内での役割を明確にすることが求められます。状態を表す名前は、構成要素または部分の名前を基にして、二つのハイフンで区切ります。例えば、「案内釦–主要」、「献立–選択中」、「入力欄__本文–誤り」などがあります。状態を表す名前は、状態、大きさ、色などを表現するために使われます。命名規則を守ることで、見やすさが向上し、他の人が理解しやすくなります。また、様式の衝突を避け、意図しない変更を防ぐことができます。ただし、規則にこだわりすぎると、名前が長くなることがあります。そのため、規模や複雑さに合わせて、規則を調整することが大切です。例えば、小規模なものでは、状態を表す名前を省略したり、より短い名前を使ったりできます。BEMの命名規則は、あくまで目安であり、絶対的なものではありません。必要に応じて、柔軟に対応することが重要です。大切なのは、一貫性のある命名規則を使用し、見やすさと保守性を高めることです。

要素 説明 命名規則
構成要素 (Block) 独立した意味を持つ要素 簡潔に何であるかを示す 案内釦, 献立, 入力欄
部分 (Element) 構成要素内の役割 構成要素名__部分名 案内釦__文字, 献立__項目, 入力欄__本文
状態 (Modifier) 状態、大きさ、色など 構成要素名--状態名 または 構成要素名__部分名--状態名 案内釦--主要, 献立--選択中, 入力欄__本文--誤り

導入の利点

導入の利点

区分化された構築要素という手法を導入することは、数多くの長所をもたらします。特に重要なのは、様式記述言語の維持管理が容易になる点です。この手法は、範囲を明確に定め、記述の衝突を避けることで、符号の変更や追加を円滑にします。これにより、ウェブサイトの規模が拡大しても、様式記述言語の管理が容易になります。さらに、符号の再利用性を高めます。各要素は独立した部品として設計されているため、様々な場面で再利用できます。これは、開発時間の短縮や符号の重複を避けることに繋がります。加えて、この手法は、複数人での共同開発における意思疎通を円滑にします。命名規則は、要素の役割を容易に推測できるように設計されているため、意思疎通を円滑にし、開発効率の向上や誤りの削減に貢献します。表示速度の向上にも寄与します。様式記述言語の選択子を具体的にすることで、ウェブページの表示速度を向上させることができます。導入には学習が必要となるかもしれませんが、その長所を理解し、適切に導入することで、長期的に見て開発効率と保守性の向上に貢献します。この手法は、現代のウェブ開発において、欠かせないものと言えるでしょう。

利点 詳細
様式記述言語の維持管理が容易 範囲が明確になり、記述の衝突を回避できる。変更や追加が円滑になるため、ウェブサイトの規模拡大に対応しやすい。
符号の再利用性が向上 各要素が独立した部品として設計されているため、様々な場面で再利用可能。開発時間の短縮や符号の重複を回避。
複数人での共同開発における意思疎通が円滑 命名規則により要素の役割が推測しやすく、意思疎通を円滑にし、開発効率の向上や誤りの削減に貢献。
表示速度の向上 様式記述言語の選択子を具体的にすることで、ウェブページの表示速度を向上。

導入時の注意点

導入時の注意点

新しい技術を取り入れる際には、いくつかの注意点があります。まず、その技術の根本的な考え方を正確に理解することが大切です。例えば、ウェブページの構造を整理する手法であるBEMを導入する場合、単に名前の付け方を覚えるだけでなく、その背後にある設計思想を理解する必要があります。次に、計画の規模や参加者の能力を考慮しましょう。大規模な計画や複数人での開発には適していますが、小規模な計画や個人での開発では、過剰な機能となることもあります。また、参加者がその技術に詳しくない場合、導入に時間がかかることがあります。さらに、名前の付け方にこだわりすぎないことも重要です。名前の付け方はあくまで目安であり、絶対的な規則ではありません。計画の必要に応じて、名前の付け方を調整しましょう。例えば、小さな計画では、修飾語の名前を省略したり、もっと簡潔な名前を使ったりすることができます。また、新しい技術を取り入れる際には、既存の仕組みとの整合性を考える必要があります。既存の仕組みを新しい技術に移行する際には、段階的に行うのが望ましいです。一度に全ての仕組みを移行すると、予期せぬ問題が起こることがあります。最後に、新しい技術は万能ではないことを理解しましょう。CSS設計の問題を解決するための手段の一つであり、全ての問題を解決できるわけではありません。新しい技術を取り入れる際には、他の設計手法や道具と組み合わせて、最適な解決策を見つけることが重要です。

注意点 詳細
根本的な考え方を理解する 技術の背後にある設計思想を理解する
計画の規模と参加者の能力を考慮する 大規模な計画や複数人での開発に適しているか
名前の付け方にこだわりすぎない 必要に応じて名前の付け方を調整する
既存の仕組みとの整合性を考える 段階的に移行する
最適な解決策を見つける 他の設計手法や道具と組み合わせる

実例

実例

具体的な例を見ていきましょう。例えば、ウェブサイトでよく見かける「釦」を考えてみます。BEMでは、まず「釦」という構成要素を定義します。これは「.釦」という名前で示されます。次に、釦の中の文字を表示する部分を定義します。これは「釦__文字」という名前になります。さらに、釦の色を変える装飾子を定義します。例えば、主要な釦であれば「釦–主要」という名前で表現します。別の例として、「献立」を考えてみましょう。献立全体は、「.献立」という構成要素として定義します。献立の各項目は、「献立__項目」という要素として定義されます。そして、今選ばれている献立の項目は、「献立__項目–選択中」という装飾子で表現します。このように、BEMは、ウェブページの各要素をはっきりと分類し、CSSの適用範囲を限定することで、CSSの管理をしやすくします。また、BEMの名前の付け方に従うことで、CSSの名前からその要素の役割を簡単に推測でき、記述されたものの読みやすさを向上させます。さらに、BEMは、JavaScriptとの連携にも役立ちます。JavaScriptで要素を操作する際に、BEMの名前を使うことで、要素の特定や操作が簡単になります。

要素 名前 説明
釦 (構成要素) .釦 釦全体のスタイルを定義
釦__文字 (要素) .釦__文字 釦の中の文字部分のスタイルを定義
釦–主要 (装飾子) .釦--主要 主要な釦の色など、釦の見た目を変更
献立 (構成要素) .献立 献立全体のスタイルを定義
献立__項目 (要素) .献立__項目 献立の各項目のスタイルを定義
献立__項目–選択中 (装飾子) .献立__項目--選択中 選択中の献立項目のスタイルを定義
error: Content is protected !!