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
持続可能な開発のためのVueコンポーネント設計とコーディングガイドラインの策定
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
gree_tech
PRO
October 25, 2024
Video
Technology
1
870
持続可能な開発のためのVueコンポーネント設計とコーディングガイドラインの策定
GREE Tech Conference 2024で発表された資料です。
https://techcon.gree.jp/2024/session/Short-Session-3
gree_tech
PRO
October 25, 2024
Tweet
Share
Video
More Decks by gree_tech
See All by gree_tech
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
3.2k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
34
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.5k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
240
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
220
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
1.6k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
340
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
370
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
260
Other Decks in Technology
See All in Technology
配列に見る bash と zsh の違い
kazzpapa3
1
150
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.4k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
110
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
200
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
260
20260204_Midosuji_Tech
takuyay0ne
1
160
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.5k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
380
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
OpenShiftでllm-dを動かそう!
jpishikawa
0
110
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Into the Great Unknown - MozCon
thekraken
40
2.3k
Designing for Performance
lara
610
70k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
220
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
57
50k
Tell your own story through comics
letsgokoyo
1
810
Music & Morning Musume
bryan
47
7.1k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
82
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Transcript
持続可能な開発のための Vueコンポーネント設計と コーディングガイドラインの策定 REALITY株式会社 ソフトウェアエンジニア 猿田尚輝
2 DevOps チーム所属 REALITY株式会社 ソフトウェアエンジニア 猿田尚輝 #サウナ 🧖/ #日本酒 🍶/
#講談🪭/ #Tarkov🔫 昨年7月より REALITY 社にて内定者アルバイトを開始。今年 4月に グリー株式会社に入社し、 REALITY 株式会社に配属される。 クラウドインフラ周りの改善活動が現在の業務のメイン。
3 本セッションはこちらの Blog 記事の内容をベースとしています https://note.com/reality_eng/n/nbf883a2b62e2
目次 1 REALITY における Web フロントエンド コード改善のための取り組み 4 問題意識の共有とチームでの合意形成 参考実装の作成とコーディングガイドラインの策定
2 b a
1 REALITY における Web フロントエンド 5
「なりたい自分で生きていく 」をコンセプトとした メタバースプラットフォーム 3D アバターを用いたリアルタイムコミュニケーション サー ビスとして iOS / Android
向けアプリとして提供 1 REALITY におけるWebフロントエンド 6
REALITY における Web フロントエンド ユーザー向け画面 (アプリ内WebView) 1 REALITY におけるWebフロントエンド 7
社内向け管理画面
Web フロントエンド開発における 課題 8 1 REALITY におけるWebフロントエンド Web フロントエンド開発を専門とするエンジニアの 不在・
サーバエンジニア による開発 ⇒Web フロントエンド部分の コード品質が担保されていない
2 コード改善のための取り組み 9
コード改善のための取り組み 10 問題意識の共有とチームでの 合意形成 参考実装の作成とコーディングガイドライン の策定 2 コード改善のための取り組み
11 2 コード改善のための取り組み a 問題意識の共有とチームでの合意形成
2 2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成 12 問題意識: 素朴な Vue コンポーネント
2 2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成 13 問題意識: 素朴な Vue コンポーネント
userId を入力
2 2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成 14 問題意識: 素朴な Vue コンポーネント
User を取得
2 2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成 15 問題意識: 素朴な Vue コンポーネント
User を表示
16 持続可能な開発のための Vueコンポーネント? 🤔 2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成
2 UI Infrastructure Application Domain ビジネスルールのレイヤーと、ユーザー‧外 部システムとのインターフェースとなるレイ ヤーとに分離することで、ビジネスルールに 関するコードをそれ以外のコードに対する変 更から守る
ベースとしたい考え方 : Onion Architecture 2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成 17
Webフロントエンドのコードの役割の⼤別 18 a. ユーザーインタラクション b. データの表示への反映 c. 外部へのリクエスト送受信 d. データの加工
2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成
各役割とアーキテクチャとの関係 2 UI Infrastructure Domain Application a.ユーザーインタラクション b.データの表⽰への反映 19 2
コード改善のための取り組み / 問題意識の共有とチームでの合意形成
各役割とアーキテクチャとの関係 2 UI Infrastructure Domain Application c.外部へのリクエスト送受信 20 2 コード改善のための取り組み
/ 問題意識の共有とチームでの合意形成
各役割とアーキテクチャとの関係 2 UI Infrastructure Application d.データの加工 Domain 21 2 コード改善のための取り組み
/ 問題意識の共有とチームでの合意形成
コンポーネントの役割 2 UI Infrastructure Application Domain 22 a.ユーザーインタラクション b.データの表⽰への反映 2
コード改善のための取り組み / 問題意識の共有とチームでの合意形成
それ以外の役割 2 Application Domain UI Infrastructure 23 d.データの加工 c.外部へのリクエスト送受信 2
コード改善のための取り組み / 問題意識の共有とチームでの合意形成
チームに提案(⼊って1ヶ⽉半くらいの頃) 24 2 コード改善のための取り組み / 問題意識の共有とチームでの合意形成 当時作成したドキュメントの冒頭部分。ドキュメント全体のボリュームは 12,000字程度。
25 b 参考実装の作成とコーディングガイドラインの策定 2 コード改善のための取り組み
2 2 コード改善のための取り組み / 参考実装の作成とコーディングガイドラインの策定 26 参考実装: 先ほどのコードに適用するなら
2 2 コード改善のための取り組み / 参考実装の作成とコーディングガイドラインの策定 27 参考実装: 先ほどのコードに適用するなら ユーザーインタラクション のためのメソッド
2 2 28 参考実装: 先ほどのコードに適用するなら データ取得のための関数 コード改善のための取り組み / 参考実装の作成とコーディングガイドラインの策定
コーディングガイドラインの策定 29 2 コード改善のための取り組み / 参考実装の作成とコーディングガイドラインの策定 ・Web フロントエンド開発で最低限守りたいラインを項目として作成 ・Badパターンとそれをどう直すべきかの Goodパターンを並べて記載
実際のガイドラインの項⽬の⼀例 MUST (レビューで⾒つけたら指摘してほしいもの) • 命名規則⼀般 (UpperCamelCase/lowerCamelCase) • 変数宣⾔では var は使わず、
const や let を使う • as の使⽤をできる限り避ける • any の使⽤をできる限り避ける • JS ネイティブの Date オブジェクトを使⽤しない SHOULD (ベストプラクティスとしてなるべく取り⼊れたいもの) • 値が存在しないことを⽰すときには null より undefined を使う • switch ⽂で条件分岐の考慮漏れを防ぐ 30 2 コード改善のための取り組み / 参考実装の作成とコーディングガイドラインの策定
ガイドラインを導⼊することの効果 31 ・Pull Request レビュー時の 指摘ポイントの明確化 ->「ガイドラインにこう書いてあるので 」と指摘できるようになった ->担保できる最低限の品質 を決定することができた
・Web フロントエンドのコードに関する ベースラインの決定と底上げ 2 コード改善のための取り組み / 参考実装の作成とコーディングガイドラインの策定
ガイドライン導⼊についてのチームの声 32 ・コーディングガイドラインができたことで、 Web フロントエントエンドにつ い て最低限満たすべきラインができた ・TypeScript をちゃんと書こうという意識が高まった ・PR
をレビューする際に as や any についての 指摘をしやすくなった 2 コード改善のための取り組み / 参考実装の作成とコーディングガイドラインの策定
まとめ 33 ・参考実装とコーディングガイドラインを作成して実装方針をチームに導入する ・コーディングガイドラインを導入してコード品質のベースラインを定められた ・持続可能な開発のために UIとビジネスロジックを分離する
None