SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
リファクタリング

HTML/CSS
ヤフー株式会社

マーケティングソリューションカンパニー

開発本部エクスペリエンスデザイン部

テクニカルデザイン



ヒラヤ ナオコ
∼レガシー世界を超えて∼
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ふんわり自己紹介
美術史出身のエクストリーム文系
アプリデザインや大規模サイト運用を経て
ペライチとか作る係
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
広告管理ツール
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
掘れば何か出てくる

超巨大遺跡(現役)
もともと大規模なシステム
度重なる仕様・機能追加
設計担当者も実装担当者も変わる
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
掘れば何か出てくる

超巨大遺跡(現役)
もともと大規模なシステム
度重なる仕様・機能追加
設計担当者も実装担当者も変わる
カオス!!
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
見た目は

同じはず?
ひとつのスタイルを当てるのに、
機能をクラス名にしてしまうと
こうなる。
.myModule .orenoBtn,
.myModule .omaenoBtn,
.myModule .oreToOmaenoBtn,
.myModule .kiminoBtn,
.myModule .anatanoBtn,
.myModule .kimitachinoBtn,
.myModule .oregaOmaedeOmaegaOredeBtn,
.myModule .oregaOretachigaBtn,
.myModule .darekanoBtn,
.myModule .karenoBtn,
.myModule .kanojonoBtn,
.myModule .anoBtn,
.myModule .konoBtn,
.myModule .sonoBtn,
.myModule .donoBtn,
.myModule .yabaiBtn,
.myModule .sugoiBtn,
.myModule .choberibaBtn,
.myModule .mk5Btn,
.myModule .kaeruBtn {
display:inline-block;
width:15px;
height:15px;
background:no-repeat url(icon.gif) 0 4px;
text-decoration:none;
overflow:hidden;
margin:0 0.2em 0 0;
cursor:pointer;
}
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
その親要素、
要るの?
親要素が違う場合はどうなるん
だろうと不安になるセレクタ群。


yellowIconという同名で異なる
画像を使用するパターンがある
のだろうか……。
.myModule .yellowIcon,
span .yellowIcon,
p .yellowIcon {

display:inline-block;

width: 15px;

height: 15px;
    background:no-repeat url(icon.gif) 0 4px;
} 
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
遺跡の修繕、

リファクタしよう
の、HTML/CSS編
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
迷路状態
ドキュメント:なし
構造、記法のルール:なし
パーツごとの標準的な仕様:なし
作ろう
決めよう
見直そう
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ドキュメント
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
スタイルガイド(KSS)
KSS
様々な言語でジェネレータがある
導入コストは高いが柔軟で、

比較的記述しやすい
無駄なCSSの増殖を抑制…できるといいな
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
その他スタイルガイド
StyleDocco
導入は簡単(gulp,grunt,etc)
Modifierまでマークアップするのが面倒
DSS
Javadoc風の記法
多くのプリプロセッサに対応
コメント補助Sublimeプラグインがある
node,grunt環境ならオススメ
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
その他ドキュメント
構造やルールの説明
GithubのWikiに記載
mixinやfunctionの説明
必要に応じてSassDocを利用予定
mixinに頼る設計ではないため現状ナシ
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
構造、記法
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
BEM
コンポーネントの使い回しが多い
複雑化しても詳細度が上がらない

※改造してModifierは詳細度上がる
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
.Block__element
.m-odifier
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
.Block

__element
.m-odifier
modifierだけ別クラス化。

ただしmodifier単体のルール
セットは存在しない。
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
粒度をそろえる
基本的な考え方はBEM
Block, element, modifier
でもコンポーネントの粒度は捉え方次第
粒度の考え方をルール化してしまう
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
粒度のルール(の一例)
elementは1階層まででネストはしない

1つのBlockが持つことができるelementは

基本4種類+リンク
機能や見た目ではなく、

このルールが適用できる粒度に分解する
.Block__element__elementino
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
基本4種類

+リンク
head
body
item
foot
link
body
item
item
item
head
foot
link
Block
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
Block
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
Block
head
body
foot
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
head
body
foot
?
?
Block
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
Block
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
Block
head
item
item
item
foot
item.m-thumb
item
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
TopixList
TopixBox
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例.css
こんな感じに。
/* ボックス全体 */
.TopixBox {

width: 300px;

border: 1px solid #9eb4db;
}
.TopixBox__head {

padding: 0;

}

.TopixBox__body {

padding: 3px 7px;
}
.TopixBox__foot {

padding: 10px 5px;
}
!


/* タイトルの一覧 */
.TopixList {
width: 100%;
}
.TopixList__head {

font-size: 11px;

padding-bottom: 5px;
}
.TopixList__item {
padding: 3px 0;
}
.TopixList__item.m-thumb {
position: absolute;
}
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例2
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例2.scss
Sass3.4なら記述もスッキリ。

head, body, footはそれぞれ、
hd, bd, ftと省略。
.PageInfo {
padding-top: 10px;
padding-bottom: 20px;
!
&__hd {
font-weight: bold;
}
&__bd {
color: #777;
}
}


.RegisterGroup {
padding-left: 1.5em;
!
&__hd {
border-bottom: 1px solid #E8E8E8;
}
&__bd {
padding-bottom: 1.5em;
}
&__item {
padding: 0.8em 0;
}
}


.RegisterUnit {
@include clearfix;
!
&__hd {
float: left;
width: 13em;
text-align: right;
}
&__bd {
padding-left: 13.5em;
}
}
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
でも柔軟に
名前は一例
もちろん例外もある
__inputとか、__btnとか
1つのBlockが抱えられる

elementの種類の上限を定めると良さそう
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ルールの分けかた
.A…エラー表示用、別パターンなし
.B…お知らせ用、色・アイコンパターンあり
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
やり方色々
.iconLabel
共通のスタイルにはO.O的な細かい汎用クラスを作成。
.panel.m-typeDenger
.closeButton
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
やり方色々
Block, elementごとに記述
.ErrorPanel { 赤枠、赤背景、アイコン付き太赤字 }
.NotePanel { 赤枠、赤背景 }
.NotePanel__hd { アイコン付き赤太字、下点線 }
.NotePanel__ft { 閉じるボタン }
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ルールを明確に
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ルールを明確に
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ルールを明確に
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
BEMコンポーネント

 +

汎用パーツ
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
構成
base/
elements/
modules/
pages/
stickers/
style.scss
.
├── base
│   ├── _layouts.scss
│   ├── _reset.scss
│   ├── _variables.scss
│   └── mixins
├── elements
│   ├── _buttons.scss
│   └── _labels.scss
├── modules
│   ├── _noticePanel.scss
│   ├── _searchBox.scss
│   └── common
│   └── _header.scss
├── pages
│   ├── _confirm.scss
│   └── _create.scss
├── stickers
│   └── _spacers.scss
└── style.scss
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
base
ノーマライズやリセット、レイアウト
変数、関数、mixin
基本的にプロジェクト開始時に整備し、

あとはあまり弄らない
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
elements
MCSSでいうベースレイヤー
ボタン、ラベルなどの汎用パーツ
階層構造を持たず、それ自体で完結
.lowerCamel(.button, .iconLabel, …)
外部に影響するレイアウト情報は

持たない(margin, floatなど)
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
modules
MCSSでいうプロジェクトレイヤー
複数要素からなるBEMコンポーネント群
.UpperCamel (.NotePanel, .SearchBox)
内側に対してのみレイアウトを変更できる
(paddingを持ってよい、elementはmarginも持ってよい)
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
pages
ページ固有のスタイルを記述
上書き用ではない
ページ名に関連付いた接頭辞などで

名前をユニークに
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
stickers
一時的なレイアウト変更など
シングルルールのクラス
.s-sticker
ここでのみ!importを利用する
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
style.scss
全てのパーシャルを読み込む
ディレクトリはアルファベット順なので

そのままの順番でOK
pagesレイヤーが重くなってきたら、

pagesだけ別に出力してもOK
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
UI仕様
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
UI仕様もソースから
同機能でもUI仕様がブレブレ

配置、サイズ、色……
似た名前やモディファイアが大量発生
ソースの肥大化・複雑化を招く
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
例
.VerticalList__link
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
UI仕様もソースから
ソースを読めばルールがわかる
新規モジュールを作るときは

スタイルガイド+該当ルールセットを参照
ソースの肥大化・複雑化を抑止!!したい!!
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
まとめ
まずはドキュメント環境をつくる
リファクタしながらルールを作る
仕様のブレはソースから直す
Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
ご静聴ありがとう
ございました。

Weitere ähnliche Inhalte

Was ist angesagt?

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】DeNA
 
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...WebSig24/7
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]Koichiro Matsuoka
 
Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例Takeshi Mikami
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
Ltの作成と実践~入門編~
Ltの作成と実践~入門編~Ltの作成と実践~入門編~
Ltの作成と実践~入門編~Daiji Okuno
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Shin Ohno
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤Yu Otsubo
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話Preferred Networks
 
リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」Recruit Technologies
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることShingo Fukui
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 

Was ist angesagt? (20)

SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
 
Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例Aws auto scalingによるwebapサーバbatchサーバの構成例
Aws auto scalingによるwebapサーバbatchサーバの構成例
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
DNS再入門
DNS再入門DNS再入門
DNS再入門
 
Ltの作成と実践~入門編~
Ltの作成と実践~入門編~Ltの作成と実践~入門編~
Ltの作成と実践~入門編~
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話ツイートID生成とツイッターリアルタイム検索システムの話
ツイートID生成とツイッターリアルタイム検索システムの話
 
リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」
 
GraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 

Ähnlich wie リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03

IT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfuture
IT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfutureIT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfuture
IT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfutureYahoo!デベロッパーネットワーク
 
100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfes
100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfes100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfes
100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfesYahoo!デベロッパーネットワーク
 
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのかヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのかYahoo!デベロッパーネットワーク
 
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groongaMroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groongaYahoo!デベロッパーネットワーク
 
ヤフーにおけるTableau Blue Printの実践
ヤフーにおけるTableau Blue Printの実践ヤフーにおけるTableau Blue Printの実践
ヤフーにおけるTableau Blue Printの実践Sho Maekawa
 
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」aitc_jp
 
html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」robotstart
 
ディレクションのフロントエンド開発 @JSオジサン 12/17
ディレクションのフロントエンド開発 @JSオジサン 12/17ディレクションのフロントエンド開発 @JSオジサン 12/17
ディレクションのフロントエンド開発 @JSオジサン 12/17Yosuke Doke
 
擬人化で ざっくりわかる オープンソース EC専用CMS
擬人化で ざっくりわかる オープンソース EC専用CMS擬人化で ざっくりわかる オープンソース EC専用CMS
擬人化で ざっくりわかる オープンソース EC専用CMSTakahiro Hisasue
 
What is Enterprise Agile
What is Enterprise Agile What is Enterprise Agile
What is Enterprise Agile Kenji Hiranabe
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkSho Yoshida
 
マンガ駆動開発 第3版
マンガ駆動開発 第3版マンガ駆動開発 第3版
マンガ駆動開発 第3版Koji Hara
 
モデリングの彼方に未来を見た
モデリングの彼方に未来を見たモデリングの彼方に未来を見た
モデリングの彼方に未来を見たHagimoto Junzo
 

Ähnlich wie リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03 (20)

IT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfuture
IT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfutureIT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfuture
IT業界のリーディングカンパニーとして描く「少し先の未来」〜Yahoo! JAPANの事例を通して〜#a11yfuture
 
100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfes
100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfes100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfes
100を超えるサービスに
アクセシビリティーをどう組み込むか # #a11yfes
 
ux_team_of_one
ux_team_of_oneux_team_of_one
ux_team_of_one
 
Yahoo! JAPAN の Ambari 活用事例 #ambarimeetup
Yahoo! JAPAN の Ambari 活用事例 #ambarimeetupYahoo! JAPAN の Ambari 活用事例 #ambarimeetup
Yahoo! JAPAN の Ambari 活用事例 #ambarimeetup
 
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのかヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
ヤフー株式会社はアクセシビリティ対応を
なぜ始めたのか、どう進めているのか
 
ヤフーの次世代パイプラインについて#yjdsw3
ヤフーの次世代パイプラインについて#yjdsw3ヤフーの次世代パイプラインについて#yjdsw3
ヤフーの次世代パイプラインについて#yjdsw3
 
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groongaMroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
 
ux_team_of_one
ux_team_of_oneux_team_of_one
ux_team_of_one
 
ヤフーにおけるTableau Blue Printの実践
ヤフーにおけるTableau Blue Printの実践ヤフーにおけるTableau Blue Printの実践
ヤフーにおけるTableau Blue Printの実践
 
インスタグラムの写真をオウンドメディア活用(Instagram website)
インスタグラムの写真をオウンドメディア活用(Instagram website)インスタグラムの写真をオウンドメディア活用(Instagram website)
インスタグラムの写真をオウンドメディア活用(Instagram website)
 
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」
2015年5月期 AITCオープンラボ 「第二回 デジタルガジェット祭り!」
 
html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」html5jロボット部 第3回勉強会「ロボット × ビジネス」
html5jロボット部 第3回勉強会「ロボット × ビジネス」
 
airyのご紹介
airyのご紹介airyのご紹介
airyのご紹介
 
ディレクションのフロントエンド開発 @JSオジサン 12/17
ディレクションのフロントエンド開発 @JSオジサン 12/17ディレクションのフロントエンド開発 @JSオジサン 12/17
ディレクションのフロントエンド開発 @JSオジサン 12/17
 
擬人化で ざっくりわかる オープンソース EC専用CMS
擬人化で ざっくりわかる オープンソース EC専用CMS擬人化で ざっくりわかる オープンソース EC専用CMS
擬人化で ざっくりわかる オープンソース EC専用CMS
 
大規模システムScrum実践 効果と課題 #rsgt2015
大規模システムScrum実践 効果と課題 #rsgt2015大規模システムScrum実践 効果と課題 #rsgt2015
大規模システムScrum実践 効果と課題 #rsgt2015
 
What is Enterprise Agile
What is Enterprise Agile What is Enterprise Agile
What is Enterprise Agile
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
 
マンガ駆動開発 第3版
マンガ駆動開発 第3版マンガ駆動開発 第3版
マンガ駆動開発 第3版
 
モデリングの彼方に未来を見た
モデリングの彼方に未来を見たモデリングの彼方に未来を見た
モデリングの彼方に未来を見た
 

Mehr von Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Mehr von Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

Kürzlich hochgeladen

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Kürzlich hochgeladen (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

リファクタリングHTML/CSS ~レガシー世界を超えて~ #scripty03

  • 2. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ふんわり自己紹介 美術史出身のエクストリーム文系 アプリデザインや大規模サイト運用を経て ペライチとか作る係
  • 3. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 広告管理ツール
  • 4. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 掘れば何か出てくる
 超巨大遺跡(現役) もともと大規模なシステム 度重なる仕様・機能追加 設計担当者も実装担当者も変わる
  • 5. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 掘れば何か出てくる
 超巨大遺跡(現役) もともと大規模なシステム 度重なる仕様・機能追加 設計担当者も実装担当者も変わる カオス!!
  • 6. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 見た目は
 同じはず? ひとつのスタイルを当てるのに、 機能をクラス名にしてしまうと こうなる。 .myModule .orenoBtn, .myModule .omaenoBtn, .myModule .oreToOmaenoBtn, .myModule .kiminoBtn, .myModule .anatanoBtn, .myModule .kimitachinoBtn, .myModule .oregaOmaedeOmaegaOredeBtn, .myModule .oregaOretachigaBtn, .myModule .darekanoBtn, .myModule .karenoBtn, .myModule .kanojonoBtn, .myModule .anoBtn, .myModule .konoBtn, .myModule .sonoBtn, .myModule .donoBtn, .myModule .yabaiBtn, .myModule .sugoiBtn, .myModule .choberibaBtn, .myModule .mk5Btn, .myModule .kaeruBtn { display:inline-block; width:15px; height:15px; background:no-repeat url(icon.gif) 0 4px; text-decoration:none; overflow:hidden; margin:0 0.2em 0 0; cursor:pointer; }
  • 7. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 その親要素、 要るの? 親要素が違う場合はどうなるん だろうと不安になるセレクタ群。 
 yellowIconという同名で異なる 画像を使用するパターンがある のだろうか……。 .myModule .yellowIcon, span .yellowIcon, p .yellowIcon {
 display:inline-block;
 width: 15px;
 height: 15px;     background:no-repeat url(icon.gif) 0 4px; } 
  • 8. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 遺跡の修繕、
 リファクタしよう の、HTML/CSS編
  • 9. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 迷路状態 ドキュメント:なし 構造、記法のルール:なし パーツごとの標準的な仕様:なし 作ろう 決めよう 見直そう
  • 10. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ドキュメント
  • 11. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 スタイルガイド(KSS) KSS 様々な言語でジェネレータがある 導入コストは高いが柔軟で、
 比較的記述しやすい 無駄なCSSの増殖を抑制…できるといいな
  • 12. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 その他スタイルガイド StyleDocco 導入は簡単(gulp,grunt,etc) Modifierまでマークアップするのが面倒 DSS Javadoc風の記法 多くのプリプロセッサに対応 コメント補助Sublimeプラグインがある node,grunt環境ならオススメ
  • 13. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 その他ドキュメント 構造やルールの説明 GithubのWikiに記載 mixinやfunctionの説明 必要に応じてSassDocを利用予定 mixinに頼る設計ではないため現状ナシ
  • 14. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 構造、記法
  • 15. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 BEM コンポーネントの使い回しが多い 複雑化しても詳細度が上がらない
 ※改造してModifierは詳細度上がる
  • 16. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 .Block__element .m-odifier
  • 17. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 .Block
 __element .m-odifier modifierだけ別クラス化。
 ただしmodifier単体のルール セットは存在しない。
  • 18. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 粒度をそろえる 基本的な考え方はBEM Block, element, modifier でもコンポーネントの粒度は捉え方次第 粒度の考え方をルール化してしまう
  • 19. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 粒度のルール(の一例) elementは1階層まででネストはしない
 1つのBlockが持つことができるelementは
 基本4種類+リンク 機能や見た目ではなく、
 このルールが適用できる粒度に分解する .Block__element__elementino
  • 20. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 基本4種類
 +リンク head body item foot link body item item item head foot link Block
  • 21. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例
  • 22. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例 Block
  • 23. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例 Block head body foot
  • 24. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例 head body foot ? ? Block
  • 25. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例 Block
  • 26. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例 Block head item item item foot item.m-thumb item
  • 27. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例 TopixList TopixBox
  • 28. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例.css こんな感じに。 /* ボックス全体 */ .TopixBox {
 width: 300px;
 border: 1px solid #9eb4db; } .TopixBox__head {
 padding: 0;
 }
 .TopixBox__body {
 padding: 3px 7px; } .TopixBox__foot {
 padding: 10px 5px; } ! 
 /* タイトルの一覧 */ .TopixList { width: 100%; } .TopixList__head {
 font-size: 11px;
 padding-bottom: 5px; } .TopixList__item { padding: 3px 0; } .TopixList__item.m-thumb { position: absolute; }
  • 29. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例2
  • 30. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例2.scss Sass3.4なら記述もスッキリ。
 head, body, footはそれぞれ、 hd, bd, ftと省略。 .PageInfo { padding-top: 10px; padding-bottom: 20px; ! &__hd { font-weight: bold; } &__bd { color: #777; } } 
 .RegisterGroup { padding-left: 1.5em; ! &__hd { border-bottom: 1px solid #E8E8E8; } &__bd { padding-bottom: 1.5em; } &__item { padding: 0.8em 0; } } 
 .RegisterUnit { @include clearfix; ! &__hd { float: left; width: 13em; text-align: right; } &__bd { padding-left: 13.5em; } }
  • 31. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 でも柔軟に 名前は一例 もちろん例外もある __inputとか、__btnとか 1つのBlockが抱えられる
 elementの種類の上限を定めると良さそう
  • 32. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ルールの分けかた .A…エラー表示用、別パターンなし .B…お知らせ用、色・アイコンパターンあり
  • 33. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 やり方色々 .iconLabel 共通のスタイルにはO.O的な細かい汎用クラスを作成。 .panel.m-typeDenger .closeButton
  • 34. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 やり方色々 Block, elementごとに記述 .ErrorPanel { 赤枠、赤背景、アイコン付き太赤字 } .NotePanel { 赤枠、赤背景 } .NotePanel__hd { アイコン付き赤太字、下点線 } .NotePanel__ft { 閉じるボタン }
  • 35. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ルールを明確に
  • 36. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ルールを明確に
  • 37. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ルールを明確に
  • 38. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 BEMコンポーネント
  +
 汎用パーツ
  • 39. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 構成 base/ elements/ modules/ pages/ stickers/ style.scss . ├── base │   ├── _layouts.scss │   ├── _reset.scss │   ├── _variables.scss │   └── mixins ├── elements │   ├── _buttons.scss │   └── _labels.scss ├── modules │   ├── _noticePanel.scss │   ├── _searchBox.scss │   └── common │   └── _header.scss ├── pages │   ├── _confirm.scss │   └── _create.scss ├── stickers │   └── _spacers.scss └── style.scss
  • 40. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 base ノーマライズやリセット、レイアウト 変数、関数、mixin 基本的にプロジェクト開始時に整備し、
 あとはあまり弄らない
  • 41. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 elements MCSSでいうベースレイヤー ボタン、ラベルなどの汎用パーツ 階層構造を持たず、それ自体で完結 .lowerCamel(.button, .iconLabel, …) 外部に影響するレイアウト情報は
 持たない(margin, floatなど)
  • 42. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 modules MCSSでいうプロジェクトレイヤー 複数要素からなるBEMコンポーネント群 .UpperCamel (.NotePanel, .SearchBox) 内側に対してのみレイアウトを変更できる (paddingを持ってよい、elementはmarginも持ってよい)
  • 43. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 pages ページ固有のスタイルを記述 上書き用ではない ページ名に関連付いた接頭辞などで
 名前をユニークに
  • 44. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 stickers 一時的なレイアウト変更など シングルルールのクラス .s-sticker ここでのみ!importを利用する
  • 45. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 style.scss 全てのパーシャルを読み込む ディレクトリはアルファベット順なので
 そのままの順番でOK pagesレイヤーが重くなってきたら、
 pagesだけ別に出力してもOK
  • 46. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 UI仕様
  • 47. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 UI仕様もソースから 同機能でもUI仕様がブレブレ
 配置、サイズ、色…… 似た名前やモディファイアが大量発生 ソースの肥大化・複雑化を招く
  • 48. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例
  • 49. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 例 .VerticalList__link
  • 50. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 UI仕様もソースから ソースを読めばルールがわかる 新規モジュールを作るときは
 スタイルガイド+該当ルールセットを参照 ソースの肥大化・複雑化を抑止!!したい!!
  • 51. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 まとめ まずはドキュメント環境をつくる リファクタしながらルールを作る 仕様のブレはソースから直す
  • 52. Copyright (C) 2015 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 ご静聴ありがとう ございました。