Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
リリースから1年経った React Nativeアプリの リファクタリング
Search
takahi5
February 27, 2019
Programming
0
730
リリースから1年経った React Nativeアプリの リファクタリング
2019/2/27
シューマツワーカー主催のイベントにて
takahi5
February 27, 2019
Tweet
Share
More Decks by takahi5
See All by takahi5
仮説検証フェーズの開発 with React Native
takahi5
0
130
React Nativeでアニメーションを頑張る- React Native Meetup #11
takahi5
4
1.5k
React Native x Firebaseの メリットとTips5選
takahi5
1
2.1k
怖くないexpo eject - TECH STAND #2
takahi5
0
2.1k
React Native パフォーマンス最適化 - 2020-10-15 RN Tech Blog
takahi5
1
100
リモートワーク×副業 が中心のチームづくり
takahi5
0
1.3k
React Native + Expoなアプリを リリースして1年を”5分”で振り返る
takahi5
1
310
Other Decks in Programming
See All in Programming
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
150
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
460
Graviton と Nitro と私
maroon1st
0
120
チームをチームにするEM
hitode909
0
350
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
9
5.9k
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
120
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
110
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.8k
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
280
AIエージェントの設計で注意するべきポイント6選
har1101
5
1.6k
Microservices rules: What good looks like
cer
PRO
0
1.6k
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
120
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
75
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
47
Google's AI Overviews - The New Search
badams
0
870
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
400
BBQ
matthewcrist
89
9.9k
Thoughts on Productivity
jonyablonski
73
5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
290
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
23
The Spectacular Lies of Maps
axbom
PRO
1
400
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
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