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
カンムでの React Native の 歴史と現在 / React Native in Kanmu
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mururu
September 03, 2020
Technology
600
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
カンムでの React Native の 歴史と現在 / React Native in Kanmu
mururu
September 03, 2020
More Decks by mururu
See All by mururu
Go で始める将棋 AI
mururu
1
3.2k
カンム と React Native / Kanmu React Native
mururu
0
4k
Go製のネットワーククライアントに対する継続的 / Fuzzing for network client in Go
mururu
4
2.9k
Building FIDO2 server in Go
mururu
2
7.4k
「ElixirがリアルタイムWebに強い」 というのは本当か?
mururu
13
6.7k
Erlang: Improve the performance of cryptographic functions by AES-NI
mururu
1
290
Treasure Data Summer Intern 2015 Final Report
mururu
0
3.2k
Elixir 1.0
mururu
3
920
Why Elixir
mururu
9
2.1k
Other Decks in Technology
See All in Technology
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
180
人材育成分科会.pdf
_awache
4
300
手塩にかけりゃいいってもんじゃない
ming_ayami
0
610
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
240
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.3k
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
110
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1.3k
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1.3k
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
590
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.3k
20260619 私の日常業務での生成 AI 活用
masaruogura
1
230
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
180
Featured
See All Featured
A better future with KSS
kneath
240
18k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
180
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
320
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
600
How to Talk to Developers About Accessibility
jct
2
240
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
210
How GitHub (no longer) Works
holman
316
150k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
カンムでの React Native の 歴史と現在 Kanmu, Inc. 伊藤 友気 【Kanmu
× Nature】React Native Meetup
2 伊藤 友気 Kanmu, Inc. @mururu @murururu ⾃⼰紹介
3 バンドルカードを作ってます
4 歴史 現在の構成 これから 1 2 3 アジェンダ
歴史 1
6 バンドルカードのはじまり • バンドルカードの前にやっていたプロダクトの反省 から⾃分たちでカードを発⾏するべきだと判断 • 当時の開発チーム • 開発者3⼈(内⼀⼈は兼デザイナー) •
3⼈とも Web の開発経験はあったがネイティブ開 発経験はない
7 バンドルカードのはじまり • 2015年12⽉ 開発開始 • 2016年9⽉ iOS版リリース • 2016年12⽉
Android版リリース
8 なぜ React Native だったのか • ネイティブ開発経験のない少数の開発者で、素早く アプリをそれなりのクオリティでリリースしたかっ た
9 課題① Android 版リリース 開発初期は iOS のみでとりあえず実装してリリース し、Android 版もそこまで⼤きな変更は必要ないと⾒ 込んでいた
実際にはアニメーション系などいくつかクラッシュす る部分の発⽣や、iOS しか対応していないライブラリ なども導⼊してしまっていた プラットフォームによる分岐、機能の変更などによ り、なんとかリリースにこぎつける 後にアプリケーションレベルでのプラットフォームご との分岐は解消 →
10 課題② Android 4.4 系対応 もともと Android 4.4 系で原因特定が難しいクラッ シュが発⽣しがちであった
Android の 64bit 対応のため React Native 0.60 への アップデートを試みた所、Android 4.4 系でのクラッ シュが爆増し断念 4.4 系のサポート終了を決定 終了までの間 Multiple APK にして 64bit対応版/⾮対応 版を別ブランチで管理 →
現在の構成 2
12 現在の構成 • React Native, JavaScript, Flow, Redux, Storybook, Firebase
など • ⽇常のほとんどの開発が React の世界のエコシステ ムの範囲ですんでいる • Expo は使っていない • リリースサイクルはおよそ週1
13 ビルド/リリース周り • 基本的にビルド/リリースはfastlaneで完結させ、CI はBitriseにのせている • lint や Jest でのテストなどは社内の別のプロジェク
トと共通で CircleCI 利⽤ • 開発版の社内への配布は DeployGate を利⽤
14 ビルド/リリース周り
15 API 連携 • JSON Hyper-Schema からAPIクライアントの実装を ⾃動⽣成している • バックエンドのAPIサーバーも同じスキーマからリク
エスト/レスポンスの構造体やバリデーション実装を ⾃動⽣成している
16 デバッグ • react-native-debugger • react-devtools や redux-devtools 相当の機能 •
ネットワークのデバッグ • ネイティブのエレメントの検証など • Flipper に移⾏予定
17 Storybook • いわゆるUIコンポーネントカタログ的にはなっておら ず、コンポーネント開発時にコンポーネントのみを確 認するような⽤途で利⽤している • ほぼ全てのコンポーネント/ページをStorybook化して いる •
Storyshots で Snapshot testing を⾏っている
18 • Sentry • 当初よりエラートラッキングに利⽤ • Firebase Crashlytics • クラッシュレポート
• Firebase で記録しているイベント紐付けられる ので便利 エラートラッカー/クラッシュレポート
19 • Analytics • ⾏動ログは Firebase Analytics で収集 • react-navigation
の遷移イベントをフックにペー ジ遷移のトラッキングなども • Remote Config • 任意のタイミングで表⽰を切り替えたい場合 (ex. アドホックな⽂⾔の変更 • A/B テスト Firebase の他の機能
これから 3
21 TypeScript 移⾏ • 現状は Flow + JavaScript • そろそろ
Flow をサポートしないライブラリも出て きているので、⾝動きが取れなくなる前に TypeScript に移⾏したい • 変換ツールもあるが⼀筋縄では⾏かない感じがして いるので、泥臭い作業になりそう
22 デザイン連携の効率化 • 現状、実装とデザインの⼀致してない部分がある • ⼀貫したUIを素早く効率的に提供できるようにした い • Atomic Design
ベースでコンポーネントをデザイ ナーと共に認識を合わせながら整理している
まとめ 4
24 まとめ • Web の開発者ならば基本的に開発にはすぐ⼊れる • ただしハマったときはネイティブの知識がないとや はりしんどい • バンドルカードは都度ハマりながら進んできました
We are hiring!
おわり