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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takahi5
February 27, 2019
Programming
790
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
More Decks by takahi5
See All by takahi5
仮説検証フェーズの開発 with React Native
takahi5
0
160
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
110
リモートワーク×副業 が中心のチームづくり
takahi5
0
1.4k
React Native + Expoなアプリを リリースして1年を”5分”で振り返る
takahi5
1
330
Other Decks in Programming
See All in Programming
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
160
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
160
Jetpack Compose Mechanisms
skydoves
2
700
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
R8 の設定見直しでアプリサイズ削減
andpad
0
200
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
460
気持ちぃ〜角丸 Squircle
ryu1013
0
220
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
140
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
190
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
480
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
230
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
150
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
A better future with KSS
kneath
240
18k
A Modern Web Designer's Workflow
chriscoyier
699
190k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
560
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
WCS-LA-2024
lcolladotor
0
870
Claude Code のすすめ
schroneko
67
230k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
540
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
730
Transcript
リリースから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