hiramas’s blog

気になったことをちゃんと調べてみようってブログ

BEMが思いのほか難しいって話

ボクにプログラミングを教えてくれた超頭の良かった師匠は言いました。
ープログラミングで一番悩むのは関数名であるーと。

 

目次!

 

命名規則は何をもたらしてくれるのか。

ある機能に「名札」を付ける作業というのは、
コーディングの中において、最もコミュニケーション性のあるタスクです。

ふと気を抜くと、その時思いついた名前を付けてしまいがちなのですが、
適当な名前を付けてしまうと数週間、下手したら数日経過した自分にとってすら
難解なコードが出来上がっている…
なんてことも少なくありません。

命名規則目的は、
果たすべき機能の塊に対して、その機能を円滑に伝達する
ことであり、その伝達性が高いと読みやすい、メンテナンスしやすいコードである可能性が高くなります。

 

BEMってなぁに?

CSSにおいても、命名規則は重要であり、最も知られた命名規則の一つに
BEM(Block-Element-Modifier)があります。

ざっくり簡単に説明すると、
クラス名を
BLOCK:パーツの名前
ELEMENT:パーツの構成要素の名前
MODFIRE:要素に対するタグ付け
に分けることで、プラモデルのように、組み立てていこうという命名規則です。

説明は下記がわかりやすかったのでご興味がある方はぜひ

frasco.io

 

BEMを使ってみての個人的感想

このBEM、実際にやってみると名前の付け方にかなり頭を使います。
実装前にデザインを見ながらこのパーツはどういった要素に分類できるのかを否応なく考えるようになります。

最初のころ(といってもつい最近)はパーツの中にパーツがあって、その中にパーツが…なんて闇の深いネストが出来上がっていたのですが。

下記の記事を参考にしつつすこーしずつBEMの勘所をつかみ始めています。

www.smashingmagazine.com

僕個人としては連結要素を"-"や"_"を2つ用いるという点で「汚い」という根拠のない嫌悪感を抱いているので、いまはそれぞれ1つだけに改造して使っています。
ブロック名で2単語使いたいときはキャメルケースで命名してます。 

統一され、共有された命名規則はBEMしか使っていないので、相対的な評価はできませんが、少なくと要素の機能を一意に伝えようと思考する時間は増えました。

糖質制限って結局なんなん?って話①

この記事は
どうやら「糖質制限」なるものがあって、健康のためにもやった方がいい「らしい」
程度の認識のワタシが、「糖質制限」ってなんなの?
と、その謎に迫るって話です。
完結した後にまとまった記事を書こうと「思っている」ので、結論だけ教えてって人は今しばしお待ちを

 

ご注意
この投稿は専門家でもなんでもない、しがない社会人が合間にちょろっと調べた内容なので、間違いが多々あるかと思います。ご指摘いただけますととっても助かります。

 

1.「糖質制限」はどういった行為を指すのか?

糖質制限」、読んで字のごとく糖質を制限すればいいらしいことは、なんとなしに察しがつきます。

ではこの糖質とは何を指すのか?

よく糖質制限の記事で引き合いに出される医学誌「THE LANCET」に掲載された

Associations of fats and carbohydrate intake with cardiovascular disease and mortality in 18 countries from five continents (PURE): a prospective cohort study

を参考に見てみましょう。
ざっくり「炭水化物をとる量が多い人ほどヤバイよ(脂質とるとイイヨ)」ということがいろんな国の人のデータ(日本は未調査)のから示されている論文で世界に衝撃を与えました。
タイトルを読むと「carbohydrate:炭水化物」という表現がいわゆる糖質に該当しそうです。

 

では「炭水化物」と「糖質」の違いは何なのか?

厚生労働省の「食事摂取基準」から炭水化物の定義を抜粋すると

炭水化物(carbohydrate)は、組成式 Cm(H2O)n からなる化合物である。炭水化物は単糖あるいはそれを最小構成単位とする重合体である。化学的特徴、物理学的特徴、生理学的特徴によって分類できる。化学的特徴である重合度によって分類すると、糖類…(中略)
また、生理学的分類では、ヒトの消化酵素で消化できる易消化性炭水化物と消化できない難消化性炭水化物に分類できる。食物繊維という名称は生理学的な特性を重視した分類法によるものであるが、食物繊維の定義は国内外の組織間で少しずつ異なっている 3)。

といろいろあります。炭水化物っていろんな定義があるんですね。。

ここで注目したいのが、生物学的分類では炭水化物は消化できる炭水化物消化できない炭水化物に分けられるということです。さらに読み進んでいくと次のような記述がありました。

栄養学的な側面からの炭水化物の最も重要な役割は、エネルギー源としての機能である。易消化性炭水化物(いわゆる糖質)は…

 つまり、糖質とは、炭水化物の内、生物学的な分類上でいう消化しやすい方
ということが言えます(消化できない方は食物繊維)。
糖質は炭水化物だけど、炭水化物は糖質じゃないことも(食物繊維)ある

 

ええと、糖質制限は炭水化物のうち消化しやすい方の摂取を控えるってことで。。。

あれ?でも論文で示された傾向的には炭水化物の摂取量が多いと危なくて??

糖質制限?炭水化物制限?んー?


次回に続くよ!
家庭科でやった気がする…

cssクラスの命名規則について

cssのクラス名を「公開されている」命名規則に則って付けようって話。

自分で制作して、自分で管理して、そのソース自分しかいじらないよ!
って人は存分に僕の考えた最強の命名規則を使うなり、好きにすればいいと思うんだけど、

別に制作部があったり、保守管理をアウトソーシングしていたり、
他の人がソースをいじる場合に、
社内命名規則ガイドラインを頑張って作るよりも、すでに公開されているもの(bemとか)を使ったほうが、向こうも学習コスト少なくて済むし、こっちも品質の担保がしやすいと思う。

cssのクラス名を体系的にかつ、メンテナンスブルに一定の品質保つのって一人でも大変なのに、複数人で制作、管理するとかなり難易度高いから
命名規則やら外部が品質担保してくれるのは大きいのではなかろうか。