Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
新卒研修2週間で一つのWebサービスをチームで作り切った話
Search
NkiHrk
December 13, 2021
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新卒研修2週間で一つのWebサービスをチームで作り切った話
Think ! FrontEnd by DMM #4
NkiHrk
December 13, 2021
Other Decks in Programming
See All in Programming
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
Press start. Python's next generation.
willingc
PRO
3
310
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
160
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
170
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
470
XHTMLが残したもの
yosuke_furukawa
PRO
2
430
片田舎のおっさん、 Swift Buildのダイアモンド問題解決の不具合修正PRを出すが、解決方法がキャッシュをしないようにすることであり、ビルド時間が伸びると言われてマージされないので高速化もする/swiftbuild
yimajo
0
360
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
390
ソフトウェアラスタライザ
fadis
1
790
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
140
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
2
1.8k
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
470
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Google's AI Overviews - The New Search
badams
0
1.6k
The browser strikes back
jonoalderson
0
1.6k
Code Review Best Practice
trishagee
74
20k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Building Applications with DynamoDB
mza
96
7.2k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
Transcript
© DMM.com 新卒研修2週間で一つのWebサービスをチー ムで作り切った話 合同会社DMM.com マーケティング・テクノロジー部 CRMグループ 濱田 翔馬
© DMM.com 自己紹介 名前:濱田翔馬(2021年新卒) 所属:マーケティング・テクノロジー部 CRMグルー プ 領域:フロントエンドその他(最近は主にバックエ ンド・ インフラを触っています)
趣味:創作活動・開発・お酒
© DMM.com 今回の目的 • 話すこと ◦ Webサービスに関して ◦ フロントエンド領域での工夫 ◦
短期間で作り切るために何をしたか • 話さないこと ◦ 新卒研修の詳細 ◦ バックエンド・インフラなど今回の趣旨から外れ る技術の詳細
© DMM.com チームで開発したサービス 4 栄養バランスの取れたメニュー(献立)から好きなものを選び、 実際に作った料理を記録していくことで成長を実感する、 自炊支援サービス
© DMM.com チームで開発したサービス 5 5 ECサイトの機能も持ち合わせたWebサービス
© DMM.com 使用した技術 6 6
© DMM.com 使用した技術 7 7 linaria • CSS in JSのライブラリ
• ビルド時にJSファイルからCSSを解析して CSSファイルとして書き出してくれる • styleの解析にかかる時間が削減できるの でパフォーマンス ⭕ vite • HMR(Hot Module Replacement)など、 ネイティブのESモジュールに対して豊富な 機能拡張を提供するビルドツール • Rollupで高速バンドル • Vue での使用例が目につくが、ちゃんと React でも使える!!
© DMM.com 使用した技術 8 8 linaria • CSS in JSのライブラリ
• ビルド時にJSファイルからCSSを解析して CSSファイルとして書き出してくれる • styleの解析にかかる時間が削減できるの でパフォーマンス ◦ vite • HMR(Hot Module Replacement)など、 ネイティブのESモジュールに対して豊富な 機能拡張を提供するビルドツール • Rollupで高速バンドル • Vue での使用例が目につくが、ちゃんと React でも使える!!
© DMM.com 使用した技術 9 9 lint-staged & pretty-quick の導入により、メンバーの開発環境に依存しないコード品質の 維持
© DMM.com 使用した技術 10 10 色を一つの変数で管理し、グローバル変数に展開して各 コンポーネントから呼び出すように整備 • 各コンポーネントで使用する 色
を統一的に管理できる • Figmaから色を抽出する手間 がなくなる
© DMM.com 今回行った開発の流れ 11 11 1. サービス企画 2. ワイヤーフレームの作成 3.
必要機能の抽出&着手の優先順位付け 4. プロジェクトの環境構築&準備(フロント&バックエンド&デザイン) 5. デザイン作成 6. 必要機能の再抽出&やる・やらないの決定 7. デイリースクラムで進捗のボトルネックを再整理し、潰す一手を打つ 8. 7を繰り返し、完成を目指す
© DMM.com 課題点 12 12 下記の課題点を、プロジェクト初期に想定して対処しました • チームメンバーの役割が不明瞭になる恐れ • チームメンバーの得意な技術領域にばらつきがあった
• デザイナーとエンジニアの意思共有が難しい
© DMM.com 課題点 13 13 • チームメンバーの役割が不明瞭になる恐れ • チームメンバーの得意な技術領域にばらつきがあった •
デザイナーとエンジニアの意思共有が難しい
© DMM.com 課題点 14 14 • チームメンバーの役割が不明瞭になる恐れ ⇒ 重複した作業、意見の衝突が発生するおそれ ⇒
出戻りによるスケジュール超過 ⇒ 未完成
© DMM.com 課題点 15 15 • チームメンバーの役割が不明瞭になる恐れ 意思決定権のレイヤーを分割して解決(以下は、実際に行ったチーム体制) • プロダクトオーナー:Aさん(エンジニア)
• スクラムマスター:Bさん(エンジニア) • フロントエンド:Cさん(エンジニア) • バックエンド&インフラ:Dさん(エンジニア) • デザイン:Eさん(デザイナー)
© DMM.com 課題点 16 16 • チームメンバーの役割が不明瞭になる恐れ • チームメンバーの得意な技術領域にばらつきがあった •
デザイナーとエンジニアの意思共有が難しい
© DMM.com 課題点 17 17 • チームメンバーの得意な技術領域にばらつきがあった ⇒ 開発に必要な画面数が多く、フロントエンドの比重が大きい ⇒
フロントエンドへの重点的な開発リソースの投下が必要 ⇒ メンバーのフロントエンドへの理解力に偏り があった
© DMM.com 課題点 18 18 • チームメンバーの得意な技術領域にばらつきがあった CSSのBEM(Block Element Modifier)記法をコード規約として設定し、
その勉強会を開いて対応。主に、以下の形式でチームの共通認識を作りました • Block:要素のレイアウトを行う • Element:要素自体のデザイン • Modifier:要素にあるデザイン差分の追加
© DMM.com 課題点 19 19 • チームメンバーの得意な技術領域にばらつきがあった • チームメンバーの役割が不明瞭になる恐れ •
デザイナーとエンジニアの意思共有が難しい
© DMM.com 課題点 20 20 • デザイナーとエンジニアの意思共有が難しい ⇒ デザイナーが仕上げたデザインと実装の実現性の間に齟齬 が生まれる
⇒ 一部デザインの修正作業の発生 ⇒ 出戻りにより、期間内に完成しない
© DMM.com 課題点 21 21 • デザイナーとエンジニアの意思共有が難しい プロダクトオーナーがデザインの助っ人 として参加する •
2倍の進捗になるため、開発メンバーにスムーズなタスク割り振りが可能 • デザイナーとデザインでコミュニケーションすることで、 POの目指すゴールを伝えやすくする • エンジニアの観点から、出戻りの発生しにくい(開発しやすい)デザインの提案 が可能
© DMM.com 課題点 22 22 下記の課題点を、プロジェクト初期に想定して対処しました • チームメンバーの役割が不明瞭になる恐れ • チームメンバーの得意な技術領域にばらつきがあった
• デザイナーとエンジニアの意思共有が難しい
© DMM.com まとめ 23 23 • ワイヤーフレームの作成段階で、メンバー一人一人が納得するものを作り 上げられた点が大きい • 開発のゴールをメンバー全員が明確に持てたからこそ、出戻りを一切出さ
ずに開発しきることができたといえます