Top Banner
Architecture for CSS 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計
92

悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Nov 30, 2014

Download

Technology

Horiguchi Seito

CSS設計に関わるあれこれ。
基本〜実践的な内容です。
OOCSS, BEM, SMACSSとかも出てきます。
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Architecture for CSS

悩まないコーディングをしよう!  

 OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計

Page 2: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ホリグチ セイト

自己紹介

Front-End-Engineer

趣味Lang-8(先週から)、漫画(いろいろ)、 宇宙とかSFとか

担当している業務html,css,jsを用いいた中規模メディアサイト, Webアプリケーションの開発

2001

!2014 2014

経歴初めてWebサイトを作る。当時最もモダンな「メモ帳」なるエディターを使い、 また「おえかき掲示板」「キリ番システム」などのリッチコンテンツを提供した。 デザイナーからフロントエンドエンジニアに転身。 カルタ大会やハッカソンなど、業務外の事で活躍し始める。

Page 3: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

はじめに

アジェンダ

CSS設計の3大メソッドOOCSS BEM SMACSS

設計で必要な3つのこと設計指針 ディレクトリ構成 スタイルガイド

業務で実践してみてわかった7つのこと

まとめ

Page 4: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

~はじめに~

CSS設計って何それ美味しいの?

Page 5: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

CSS設計とは

※引用1 『SMACSS: Scalable and Modular Architecture for CSS』

!CSSをより体系立て、より構造化させることで、 制作とメンテナンスをより容易に行うこと

Page 6: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

CSSに強い拡張性、保守性、明瞭性を持たせることが大事と、言われています

Page 7: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

というわけで、今回僕がお話しさせていただくことは3つです

Page 8: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

たくさん知ろう

いいとこだけ取ろう

自分なりの設計をしてみよう

Page 9: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

CSS設計の3大メソッド

Page 10: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSS

BEM

SMACSS

Page 11: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSS

Page 12: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

オブジェクト指向に基づいて考案された設計手法。

米Yahoo!のNicole Sullivan氏によって考案された。

! OOCSSで設計されている代表的なサイト

!!

OOCSSとは

Page 13: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

大きな特徴は以下の2つ

要素をContainerとContentsに切り離して考える

要素をStructureとSkinに切り離して考える

Page 14: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

Page 15: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

Container

Page 16: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

.registration

Page 17: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

Contents

Page 18: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

.text

.input

.heading

.btn

Page 19: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

Page 20: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

Page 21: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

要素をContainerとContentsに切り離して考える

.registration > button{ … } というような、依存したスタイルの充て方ではなく、

.btn{ … }というように独立させてスタイルを充てると、色々なところで使い回せる

Page 22: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ストラクチャーとスキンを切り離そう

skin

(color)

structure

(display,text-align,…etc)(width,height)

Page 23: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

structure skin

Page 24: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

   .btn{              display:  inline-­‐block;              border-­‐radius:  5px;                text-­‐align:  center;      }

   .btn-­‐green{              background:  green;      }      .btn-­‐black{              background:  black;      }      .btn-­‐pink{              background:  pink;        }      .btn-­‐blue{              background:  blue;        }

structure skin

Page 25: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

   .btn{              display:  inline-­‐block;              border-­‐radius:  5px;                text-­‐align:  center;      }

   .btn-­‐large{              width:  300px;              height:  50px;      }      .btn-­‐medium{              width:  200px;              height:  40px;      }      .btn-­‐small{              width:  100px;              height:  30px;      }

structure skin

Page 26: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

structure skin+

=<button  class="btn  btn-­‐pink  btn-­‐medium">button</button>

Page 27: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

structure skin+

=<button  class="btn  btn-­‐black  btn-­‐large">button</button>

Page 28: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

structure skin+

=<button  class="btn  btn-­‐green  btn-­‐small">button</button>

Page 29: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

BEM

Page 30: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

html構造を明確にすることに軸を置いた設計方法。厳格な命名規則が特徴。

ロシアのYandex社によって考案された。

! BEMで設計されている代表的なサイト

!!

BEMとは

Page 31: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

大きな特徴は以下の2つ

要素を Block, Element, Modifierの3つに分ける

.Block__Element_Modifierという命名ルールを用いる

Page 32: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Block, Element, Modifier

Page 33: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Block, Element, Modifier

Block

Page 34: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Block, Element, Modifier

.registration

Page 35: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Block, Element, Modifier

Element

Page 36: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Block, Element, Modifier

.registraion__text

.registraion__input

.registraion__heading

.registraion__btn

Page 37: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Block, Element, Modifier

Modifier

Page 38: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Block, Element, Modifier

.registraion__btn_color_bule

Page 39: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

BEMのエッセンスをとり入れつつ、命名ルールは

自分たちでカスタマイズするのもあり

MindBEMding

CSS Wizardly Harry Roberts氏 http://csswizardry.com/2013/01/mindbemding-getting-your-head -round-bem-syntax/

Page 40: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

SMACSS

Page 41: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSS,BEMの流れを汲みつつ、著者の経験や理論も交えてドキュメントに落とし

込まれたスタイルガイド(コーディングルール)。

Jonathan Snook氏によって考案された。

SMACSSとは

Page 42: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

大きな特徴

要素をBase,Layout,Module,State,Theme

の5つに分ける

Page 43: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Base

Layout

Module

State

Theme

Page 44: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Base

Layout

Module

State

Theme

!

reset.css helper.css …etc

Page 45: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Base

Layout

Module

State

Theme

Page 46: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Base

Layout

Module

State

Theme

Page 47: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Base

Layout

Module

State

Theme

.tab .is-current

Page 48: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

Base

Layout

Module

State

Theme

Page 49: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

その他にもいろいろ

マルチクラス推奨ざっくりした命名規則Sassでの実装方法

などなど

Page 50: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

設計で必要な3つのこと

Page 51: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ディレクトリ構成

スタイルガイド

設計指針

Page 52: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

設計指針

Page 53: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

設計指針

コーディングを行う際に守るべき約束事。

方針。

コーディング中に迷いが生じたら、これを

元に判断・解決する

Page 54: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

HTMLとコンテントのセマンティックな価値を向上すること

特定のHTML構造への依存を低減すること

設計指針 例

SMACSSの場合

※引用1 『SMACSS: Scalable and Modular Architecture for CSS 日本語』

Page 55: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

絶対にCSSを増やしたくない

class名で悩みたくない

設計指針 例

KOJI ISHIMOTO氏の場合

※引用2 KOJI ISHIMOTO『ぼくのかんがえたさいきょうのしーえしゅえしゅ』

完璧じゃなくてもいい

石本 光司 @t32k Front-end-engineer サイバーエージェント所属 JS Girl ファウンダー

Page 56: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ディレクトリ構成

Page 57: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ディレクトリ構成例(SMACSSベース)

scss js imagehtml

Page 58: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ディレクトリ構成例(SMACSSベース)

scss js imagehtml

Page 59: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

normlize.scss  helper.scss

header.scss  footer.scss  main.scss  side.scss

button.scss  heading.scss  table.scss  form.scss                            …etcmixin.scss  

setting.scss  common.scss

ディレクトリ構成例(SMACSSベース)

scss

base

layout

module

Page 60: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

mixin.scss  setting.scss  common.scss

ディレクトリ構成例(SMACSSベース)

scss

normlize.scss  helper.scss

header.scss  footer.scss  main.scss  side.scss

button.scss  heading.scss  table.scss  form.scss                            …etc

base

layout

module

Page 61: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ディレクトリ構成例(SMACSSベース)

common.scss

@importして1つのCSSに

@import "normlize.scss"; @import “helper.scss”; !@import "header.scss"; @import "footer.scss"; @import "main.scss"; @import "side.scss"; !@import "button.scss"; @import "heading.scss"; @import "table.scss"; @import "form.scss";

Page 62: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ディレクトリ構成 まとめ

カテゴライズして分けておくと管理しやすい

SMACSSなどのスタイルガイドを参考にしよう

(他にこんなのもあります)

Page 63: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

スタイルガイド

Page 64: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

スタイルガイド

モジュールの一覧表。コンポーネント一覧と

呼ばれることもしばしば。

コーディングルールやカラーコードを載せる

 となお良い。

Page 65: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

※引用3 Twitter『 Bootstrap』

Page 66: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

スタイルガイド 作り方

htmlとcssでべた書きで作る

ジェネレーター使う

Page 67: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

スタイルガイド 参考になるもの

CSS フレームワーク

コーディングルール

Page 68: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

スタイルガイド まとめ

コンポーネントの一覧があると保守しやすく、 コミュニケーションコストを減らせる

ジェネレーターを使おう

Page 69: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

業務で実践してみてわかった

7つのこと

Page 70: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

設計がオリジナルすぎると残業増える

Page 71: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

設計がオリジナルすぎると残業増える

既存の手法を取り入れつつ、厳しすぎないルールを設ける

設計者&作業者のコミュニケーションコストが増える

S

命名ルールってこの場合はどうなるの?

このデータはどこに入れるべき?

これはElement ? それともBlockかな?

oh…

Page 72: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ベストプラクティスなんてない!

Page 73: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ベストプラクティスなんてない!

時と場合による

S

メンバー 案件の内容 期限

Page 74: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ベストプラクティスなんてない!S

メンバー 案件の内容 期限

自分なりの設計をしてみよう

Page 75: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

言葉の意味はしっかり定義しとく

Page 76: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

言葉の意味はしっかり定義しとく

ContainerとContentとか、 BlockとElementtとか、 Moduleとか…言い方多すぎ?

Layoutってどこの部分?

S

Page 77: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

BEMは案外めんどくない

Page 78: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

BEMは案外めんどくないS

Dashのスニペット機能が超絶楽

PhpStormの補完機能は強力

.block{ &__element{ background: black; } }

.block__element{ background: black; }

Sass 3.3̃の使うと省略できる

Page 79: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSSとBEMは混ぜるとちょい危険

Page 80: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSSとBEMは混ぜるとちょい危険S

OOCSS

マルチクラス向きシングルクラス向き

.registration__btn_color_pink .btn .btn_pink .btn_small

Page 81: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSSとBEMは混ぜるとちょい危険S

OOCSS

.Block__Element._modifier

.registraion__btn._color_pink

Page 82: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

セマンティックに

こだわりすぎるのもよくない

Page 83: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

セマンティックにこだわりすぎるのもよくないS

.btn-blue

.btn-pink

.btn-green

.btn-default

.btn-primary

.btn-success

.btn-a

.btn-b

.btn-c

予測しやすい 予測しづらい

変更しづらい 変更しやすい

Page 84: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

オブジェクト指向を勉強すると

OOCSSが楽しくなる

Page 85: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

オブジェクト指向を勉強するとOOCSSが楽しくなる

複合オブジェクト など

スーパークラスとサブクラス

S

ITmedia エンタープライズ『5分で絶対に分かるオブジェクト指向』 URL : http://www.itmedia.co.jp/im/articles/0703/06/news125.html

オススメ

Page 86: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

まとめ

Page 87: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

たくさん知ろう

いいとこだけ取ろう

自分なりの設計をしてみよう

Page 88: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSS

たくさん知ろうS

Page 89: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSS

いいとこだけ取ろうS

Page 90: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

OOCSS

自分なりの設計をしてみようS

自分や周りの環境に合わせて、最適な設計をしよう

Page 91: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

参考文献S

※引用1 Jonathan Snook,斉藤祐也『SMACSS: Scalable and Modular Architecture for CSS』 https://smacss.com/ja

※引用3 Twitter『 Bootstrap』 http://getbootstrap.com/

※引用2 KOJI ISHIMOTO『MOL - Designing for a Mobile World!』 http://t32k.me/mol/log/the-perfect-css-i-thought/

株式会社ピクセルグリッド『Code Grid』 https://app.codegrid.net/

Harry Roberts『CSS Wizardly』 http://csswizardry.com/

谷 拓樹『Web制作者のためのCSS設計の教科書 モダンWeb開発に欠かせない「修正しやすいCSS」 の設計手法』 http://www.impressjapan.jp/books/1113101128

Page 92: 悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)

ご清聴ありがとうございました!