読了: 約 3 分

近頃BEMがバズワード化しTwitterで呟いてる人を見る度にリムってやろうか躊躇う程にもう見飽きている。
フロントエンド界隈の新しいものを取り入れようとする行為や思想自体は自分自身もそうなので理解出来るのだが、BEMはどういう時使えばいいか論には本当に興味がない。
判断力の無さなのか、コピペデベロッパーなのか。

そういう思いがあり、本稿を執筆するに至った。
bem

BEMを勉強したいとか言ってるやつはHTML/CSSやれ。

BEMは中長期的なフロントエンド開発ルールの明確化、名前空間の明示化、命名規則によるCSSのgzip圧縮を意図している。

が、これらを目的とするのであればこれまでのアプローチで可能である。
何故ならBEMはclassの命名規則に過ぎないのだから。

それを勉強しようということがいかにおかしいかお分かりいただけただろうか。
だからそういう人にはまずHTML/CSSについて勉強していただきたい。

初学者はまず各ブラウザでデザインを忠実に再現出来る事が重要である。
これは他人への引き継ぎ等を含めた運用面も考えられている事が出来れば良いがそれが出来ない場合は次は、運用面を考えたHTML/CSS設計になる。
そこで初めて開発効率を考えたHTML/CSS設計としてBEM等を取り入れるかどうかの意思決定をすれば良いのである。
最初から勉強するというのは意味が違う。

判断力のない新しいもの好きに未来はない。

フロントエンドに関わらず新しい技術はデバイスやブラウザの進化と共に次々と出てくる。

一例として今回ほBEMを挙げたが、永遠と議論しても意味がない。
自分の判断で現在、今後、開発するプロダクトの性質等フロントエンドの全体を考え、明確な命名規則が無くこれから必要なら取り入れれば良いだけの話。

新しいものをキャッチアップしないと開発体制や開発速度が遅れて行く事は間違いないが
そこに判断力がない場合永遠の闇に入って行く。

判断力という点でもう一つ考えておかないといけない事がある。BEMを導入するなら開発するプロダクトの性質を考えるという点だ。
BEMはBlock,Element, Modifierと構造を明示的にclassに記述するために構造が変化するようなプロダクトに初期導入するのは間違っている。


私が関わっているプロダクトのようなスマートフォン向けのウェブアプリケーションの場合、構造・モジュールの変更が多い。
ただ、機能のモジュールも多いためそれをBEMのblockとして下層はelementとして定義してあげれば良いかもしれないが、その親としてwrapする要素が出てきた場合
全体が変更される危険性がある。そのような変更が頻繁する場合に、classの命名を変えなければならなくなったり、cssを変えなければいけなくなったりする。
それをローンチ直後のプロダクトで頻繁して行うというのは危険性を高める。現実的ではない事は誰にでも分かると思う。

ある程度構造やモジュールが普遍的であるような管理画面やECサイト・コーポレートサイト、ポータルサイトといった所では使用出来る、目的を満たす事が出来る
だろう。

しかし、それをいつまでも議論し持論を展開した所で意味がないしいつまでも人に使い方を聞いても意味がない。
新しいものはどんどん出てくる。そんな時、自分がこれま得た経験や知識の中で取り入れるかどうか判断出来ないようなそんな人に未来はないだろう。

参考

http://togetter.com/li/571668
http://bem.info/