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
明日から始めたくなる、フロントエンドのチーム開発における設計のすゝめ
Search
taga3s
November 03, 2024
0
19
明日から始めたくなる、フロントエンドのチーム開発における設計のすゝめ
学生チーム開発ノウハウ共有カンファレンス2024での登壇資料です。
taga3s
November 03, 2024
Tweet
Share
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Fireside Chat
paigeccino
33
3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
820
Documentation Writing (for coders)
carmenintech
65
4.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
Unsuck your backbone
ammeep
668
57k
Bash Introduction
62gerente
608
210k
Rails Girls Zürich Keynote
gr2m
93
13k
How GitHub (no longer) Works
holman
310
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
2k
Done Done
chrislema
181
16k
Embracing the Ebb and Flow
colly
84
4.5k
Transcript
明日から始めたくなる、 フロントエンドのチーム開発における 設計のすゝめ 学生チーム開発ノウハウ共有カンファレンス @理工展
自己紹介 Seiya TAGAMI ・Waseda Law B3 ・Web開発がメイン ・大学1年にプログラミングに出会い、ずっと ハマっている GitHub
ID: taga3s
トーク10分で伝えたいこと ・初心者が集まったチーム開発でも、ベーシックな設計を取り入れること でスムーズに開発が行えたこと ※設計を取り入れ、チーム開発してみたことがない方向けの内容なの で、あしからず
前置き
どんなチーム開発だったか? ・ハッカソンで即席で集められたメンバー4人での開発 ・ほとんどがWeb開発初心者 ・「Reactって何?」「TypeScriptって何?」な状況
どんなチーム開発だったか? ・最終的に作ったもの: - ゲーミフィケーションにより習慣化を促進するWebアプリ
チームでやりたかったこと (1)きちんと動くものを作りきりたい (2)学びを多く吸収できる機会にしたい (3)話し合いで出てきた良い機能案は積極的に取り入れたい
チームに課せられた制約 (1)Web開発初心者が多めであり、コーディング以外にも慣れていない ことが多くあった (2)私たちが目指す完成形まで持っていけるかという不安
どうしたら期限内で、 完成まで持っていけるか?
色々な施策を取り入れた ・スキーマ駆動な開発 ・設計・デザインパターンの適用 ・Github Actionsを用いた自動化 ・フロントエンドツールチェインの活用 ・Github Projectの利用 ・公式ドキュメントをみんなで読み、キャッチアップ
設計を取り入れるまでの思考過程
ソフトウェア設計の目的や価値 > ソフトウェアアーキテクチャの目的は、求められるシステムを構築・保守す るために必要な人材を最小限に抑えること である。 Clean Architecture 達人に学ぶソフトウェアの構造と設計 第2章 >
ソフトウェアは「ソフト」になるように考案されたものだ。マシンの振る舞い を簡単に変更することを目的としたもの である。 Clean Architecture 達人に学ぶソフトウェアの構造と設計 第2章
チームでやりたかったこと(再掲) 変更のしやすさ コードの柔軟性 (1)きちんと動くものを作りきりたい (2)学びを多く吸収できる機会にしたい (3)話し合いで出てきた良い機能案は積極的に取り入れたい
チームに課せられた制約(再掲) 省エネで コードに集中できる環境づくり (1)Web開発初心者が多めであり、コーディング以外にも慣れていない ことが多くあった (2)私たちが目指す完成形まで持っていけるかという不安
設計を取り入れてみよう
実際にどんなことをしたの?
ディレクトリ設計: Features Directory 機能単位でディレクトリを分ける設計手法 → コードベースの凝縮や その間の疎結合を実現するのに有効
よかったこと ・メンバーの作業時の認知負荷が軽減された ・ある機能が他の機能への影響するということを抑制できた ・タスクの振り分けが行いやすく、コンフリクトもほとんど発生しなかった
API通信設計: Repository Patternの適用 データアクセスとロジックとの分離を図る → データソースへのアクセス方法を抽象化し、 呼び出し側での操作を容易に
各種データに対応したリポジトリを作成 呼び出し側で、関数経由でデータ操作
よかったこと ・データソースがAPI経由なのか、Web Storageなのか等気にすること なく、呼び出し側でロジックを記述できた ・バックエンドの実装がまだ進んでいなくとも、モック用のRepositoryに 切り替えることで、フロントエンドはそのまま開発を進めることができた
API通信設計: Factory Patternの適用 ファクトリ関数を用いて、オブジェクトを作成する → データの整合性を保つのに有効
ファクトリ関数を作って、 各種データに対応したファクトリ層を配置 必要に応じて、値チェックも行う
よかったこと ・整合性の保たれたデータを提供することで、不安なく実装を進められた ・データアクセス / オブジェクト生成・値チェック / UI という責務を意識し た階層化が行えたため、見通しが良くなった
まとめ
学んだこと ・設計を取り入れることは、チーム開発を円滑に回していくために効果的 な作業の1つである ・メンバーに対して設計の意図の共通認識を作るための時間を確保する べき ・まずは試せそうな箇所から気軽にやってみる
明日からあなたのチームのフロントエンドに設計 を取り入れてはいかが?
ご清聴ありがとうございました!