Slide 1

Slide 1 text

© DMM.com 新卒研修2週間で一つのWebサービスをチー ムで作り切った話 合同会社DMM.com マーケティング・テクノロジー部 CRMグループ 濱田 翔馬

Slide 2

Slide 2 text

© DMM.com 自己紹介 名前:濱田翔馬(2021年新卒) 所属:マーケティング・テクノロジー部 CRMグルー     プ 領域:フロントエンドその他(最近は主にバックエ   ンド・ インフラを触っています) 趣味:創作活動・開発・お酒

Slide 3

Slide 3 text

© DMM.com 今回の目的 ● 話すこと ○ Webサービスに関して ○ フロントエンド領域での工夫 ○ 短期間で作り切るために何をしたか ● 話さないこと ○ 新卒研修の詳細 ○ バックエンド・インフラなど今回の趣旨から外れ る技術の詳細

Slide 4

Slide 4 text

© DMM.com チームで開発したサービス 4 栄養バランスの取れたメニュー(献立)から好きなものを選び、 実際に作った料理を記録していくことで成長を実感する、 自炊支援サービス

Slide 5

Slide 5 text

© DMM.com チームで開発したサービス 5 5 ECサイトの機能も持ち合わせたWebサービス

Slide 6

Slide 6 text

© DMM.com 使用した技術 6 6

Slide 7

Slide 7 text

© DMM.com 使用した技術 7 7 linaria ● CSS in JSのライブラリ ● ビルド時にJSファイルからCSSを解析して CSSファイルとして書き出してくれる ● styleの解析にかかる時間が削減できるの でパフォーマンス ⭕ vite ● HMR(Hot Module Replacement)など、 ネイティブのESモジュールに対して豊富な 機能拡張を提供するビルドツール ● Rollupで高速バンドル ● Vue での使用例が目につくが、ちゃんと React でも使える!!

Slide 8

Slide 8 text

© DMM.com 使用した技術 8 8 linaria ● CSS in JSのライブラリ ● ビルド時にJSファイルからCSSを解析して CSSファイルとして書き出してくれる ● styleの解析にかかる時間が削減できるの でパフォーマンス ○ vite ● HMR(Hot Module Replacement)など、 ネイティブのESモジュールに対して豊富な 機能拡張を提供するビルドツール ● Rollupで高速バンドル ● Vue での使用例が目につくが、ちゃんと React でも使える!!

Slide 9

Slide 9 text

© DMM.com 使用した技術 9 9 lint-staged & pretty-quick の導入により、メンバーの開発環境に依存しないコード品質の 維持

Slide 10

Slide 10 text

© DMM.com 使用した技術 10 10 色を一つの変数で管理し、グローバル変数に展開して各 コンポーネントから呼び出すように整備 ● 各コンポーネントで使用する 色 を統一的に管理できる ● Figmaから色を抽出する手間 がなくなる

Slide 11

Slide 11 text

© DMM.com 今回行った開発の流れ 11 11 1. サービス企画 2. ワイヤーフレームの作成 3. 必要機能の抽出&着手の優先順位付け 4. プロジェクトの環境構築&準備(フロント&バックエンド&デザイン) 5. デザイン作成 6. 必要機能の再抽出&やる・やらないの決定 7. デイリースクラムで進捗のボトルネックを再整理し、潰す一手を打つ 8. 7を繰り返し、完成を目指す

Slide 12

Slide 12 text

© DMM.com 課題点 12 12 下記の課題点を、プロジェクト初期に想定して対処しました ● チームメンバーの役割が不明瞭になる恐れ ● チームメンバーの得意な技術領域にばらつきがあった ● デザイナーとエンジニアの意思共有が難しい

Slide 13

Slide 13 text

© DMM.com 課題点 13 13 ● チームメンバーの役割が不明瞭になる恐れ ● チームメンバーの得意な技術領域にばらつきがあった ● デザイナーとエンジニアの意思共有が難しい

Slide 14

Slide 14 text

© DMM.com 課題点 14 14 ● チームメンバーの役割が不明瞭になる恐れ ⇒ 重複した作業、意見の衝突が発生するおそれ ⇒ 出戻りによるスケジュール超過 ⇒ 未完成

Slide 15

Slide 15 text

© DMM.com 課題点 15 15 ● チームメンバーの役割が不明瞭になる恐れ 意思決定権のレイヤーを分割して解決(以下は、実際に行ったチーム体制) ● プロダクトオーナー:Aさん(エンジニア) ● スクラムマスター:Bさん(エンジニア) ● フロントエンド:Cさん(エンジニア) ● バックエンド&インフラ:Dさん(エンジニア) ● デザイン:Eさん(デザイナー)

Slide 16

Slide 16 text

© DMM.com 課題点 16 16 ● チームメンバーの役割が不明瞭になる恐れ ● チームメンバーの得意な技術領域にばらつきがあった ● デザイナーとエンジニアの意思共有が難しい

Slide 17

Slide 17 text

© DMM.com 課題点 17 17 ● チームメンバーの得意な技術領域にばらつきがあった ⇒ 開発に必要な画面数が多く、フロントエンドの比重が大きい ⇒ フロントエンドへの重点的な開発リソースの投下が必要 ⇒ メンバーのフロントエンドへの理解力に偏り があった

Slide 18

Slide 18 text

© DMM.com 課題点 18 18 ● チームメンバーの得意な技術領域にばらつきがあった CSSのBEM(Block Element Modifier)記法をコード規約として設定し、 その勉強会を開いて対応。主に、以下の形式でチームの共通認識を作りました ● Block:要素のレイアウトを行う ● Element:要素自体のデザイン ● Modifier:要素にあるデザイン差分の追加

Slide 19

Slide 19 text

© DMM.com 課題点 19 19 ● チームメンバーの得意な技術領域にばらつきがあった ● チームメンバーの役割が不明瞭になる恐れ ● デザイナーとエンジニアの意思共有が難しい

Slide 20

Slide 20 text

© DMM.com 課題点 20 20 ● デザイナーとエンジニアの意思共有が難しい ⇒ デザイナーが仕上げたデザインと実装の実現性の間に齟齬 が生まれる ⇒ 一部デザインの修正作業の発生 ⇒ 出戻りにより、期間内に完成しない

Slide 21

Slide 21 text

© DMM.com 課題点 21 21 ● デザイナーとエンジニアの意思共有が難しい プロダクトオーナーがデザインの助っ人 として参加する ● 2倍の進捗になるため、開発メンバーにスムーズなタスク割り振りが可能 ● デザイナーとデザインでコミュニケーションすることで、 POの目指すゴールを伝えやすくする ● エンジニアの観点から、出戻りの発生しにくい(開発しやすい)デザインの提案 が可能

Slide 22

Slide 22 text

© DMM.com 課題点 22 22 下記の課題点を、プロジェクト初期に想定して対処しました ● チームメンバーの役割が不明瞭になる恐れ ● チームメンバーの得意な技術領域にばらつきがあった ● デザイナーとエンジニアの意思共有が難しい

Slide 23

Slide 23 text

© DMM.com まとめ 23 23 ● ワイヤーフレームの作成段階で、メンバー一人一人が納得するものを作り 上げられた点が大きい ● 開発のゴールをメンバー全員が明確に持てたからこそ、出戻りを一切出さ ずに開発しきることができたといえます