Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
リリースから1年経った React Nativeアプリの リファクタリング
Search
takahi5
February 27, 2019
Programming
800
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
リリースから1年経った React Nativeアプリの リファクタリング
2019/2/27
シューマツワーカー主催のイベントにて
takahi5
February 27, 2019
Transcript
31 slides
リリースから1年経った React Nativeアプリの リファクタリング 2018.2.27 株式会社maricuru CTO 和田崇彦 1 @takahi5
2 和田崇彦(ワダタカヒコ) twitter: @takahi5 DeNAでソシャゲ・コミュニティ系アプリ立ち上げ ↓ 花嫁向けコミュニティサービスmaricuruの立ち上げ
maricuruとは 3 花嫁向け コミュニティアプリ
4 システム構成
5 techブログやってます(Expo推し) https://tech.maricuru.com
6 リリースから1年...順調に成長中♪ アクティブユーザー数 2017/12 βリリース 2018/3 正式リリース
maricuruの開発リソース 7 フルタイムx1 副業x6 フルタイムx1 フルタイムx2
ドヤはここまで ここからは自戒を込めて 8
9 • 初めてのReact Nativeアプリ • スピード重視という言い訳
10 • テストはない • 見た目と処理が一体化したコンポーネント • お作法がバラバラ
最近 11 • 副業中心にReact Nativeの経験値の高いメンバーが増えた スムーズな立ち上げのためコード整備が必要 React Nativeのノウハウ⬆ いざリファクタリング!
建て替え or お掃除 12
大掃除 or ゴミ拾い 13
来たときよりもキレイに! 14
ゴミ拾い?何がゴミなのか? 15 ①明らかにゴミ(負債)なもの → UIとロジックが密結合したコンポーネントたち ②ゴミかどうか判断しにくいもの → コーディングのお作法
UIとロジックが密結合したコンポーネントたち 16 • 再利用性が悪い • reduxちゃんと使えていない
17 Container Components (俗に言うコンテナ) Presentational Component (俗に言うコンポーネント) ロジックに関与 見た目を担当 Reduxと状態をやりとりする
状態を持たない propsを受け取るだけ コンテナとコンポーネント
18 Redux Scene (Container的なもの) Component APIを呼び出してる Stateを持っている Reduxを抱えてる Stateを持ってたり Reduxを抱えてたり
再利用性が悪い テストしにくい 現状
19 Redux Scene (Container的なもの) Component APIを呼び出してる Stateを持っている Reduxを抱えてる Stateを持ってたり Reduxを抱えてたり
propsのみ リファクタリング Componentをstatelessに redux-thunkで副作用をactionに移動 APIを呼び出し (redux-thunk)
コンポーネントのリファクタ方針 20 • 新機能はコンテナ/コンポーネント意識して • 既存機能は順次対応
ゴミかどうか判断しにくいもの コーディングのお作法 21
ESLint導入 22 • ルールはairbnb準拠で • lint-stagedでcommit時にチェック
ESLintがチェックしてくれること 23 PropTypesをちゃんと定義しているか けっこう大変 将来的にTS化も見据えて頑張り所
ESLintがチェックしてくれること 24 functionの順番(sort-comp) 見通しがよくなる
ESLintがチェックしてくれること 25 先に定義すること(no-use-before-define) stylesは上に書く?下に書く? 統一できてよい
ESLintを導入してみて 26 • エラーの嵐 • それなりに慣れが必要
ESLintの運用ルール 27 • 困ったら遠慮なくlint-disable • 慣れている人がプルリク時にサポート
反省, 学び 28 • ESLintはじめから入れておけばよかった ◦ 導入の手間は少ない ◦ お作法の勉強にもなる
まとめ 29 • 方針 ◦ ゴミ拾いの精神でコツコツと • やったこと ◦ コンテナとコンポーネントの区別
◦ ESLintでコーディングルール統一
いま思うと... 30 • ある程度の規模のプロジェクトを見ておけばよかった ◦ OSSのプロジェクトを見る ◦ 副業で他プロジェクトに携わる OSSプロジェクト事例: https://tech.kitchhike.com/entry/7-opensource-react-native-app-in-github
31
More Decks by takahi5
See All by takahi5
仮説検証フェーズの開発 with React Native
takahi5
0
170
React Nativeでアニメーションを頑張る- React Native Meetup #11
takahi5
4
1.6k
React Native x Firebaseの メリットとTips5選
takahi5
1
2.3k
怖くないexpo eject - TECH STAND #2
takahi5
0
2.2k
React Native パフォーマンス最適化 - 2020-10-15 RN Tech Blog
takahi5
1
120
リモートワーク×副業 が中心のチームづくり
takahi5
0
1.5k
React Native + Expoなアプリを リリースして1年を”5分”で振り返る
takahi5
1
340
Other Decks in Programming
See All in Programming
ActionController meets Protocol Buffers
sorah
1
800
Spec-driven Development with AI
simas
PRO
0
2.3k
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
320
Kawaiicon: Kubernetes, it's no longer cool, but let's secure it anyway!
barnbarn
0
130
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
230
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
200
Secure Your Coding Agent Like It’s Malware (v1.5) 🇬🇧 @Code.talks 2026
richargh
0
140
LLM 101
dalinaum
0
480
止まらない比較を止める — 余帰納法で無限ストリームを比べる
tarao
0
110
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
290
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
250
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
GraphQLとの向き合い方2022年版
quramy
50
15k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
610
Site-Speed That Sticks
csswizardry
13
1.6k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
640
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
300
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
610
Scaling GitHub
holman
464
140k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
340
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
Six Lessons from altMBA
skipperchong
29
4.6k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
300