Submit Search
Upload
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
•
0 likes
•
671 views
LINE Corporation
Follow
LINE DEVELOPER DAY 2017 C-15
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 17
Recommended
Phoenixを使った案件でリリースまでに起きた問題と対応
Phoenixを使った案件でリリースまでに起きた問題と対応
ndruger
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
Ryu Shindo
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
Mitsue-Links
React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発
yuichi kubota
Line Creators Studio Android With Kotlin
Line Creators Studio Android With Kotlin
LINE Corporation
PWAがたぶんくる
PWAがたぶんくる
Ryu Shindo
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
Naoki Shibata
WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション
WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション
力也 伊原
Recommended
Phoenixを使った案件でリリースまでに起きた問題と対応
Phoenixを使った案件でリリースまでに起きた問題と対応
ndruger
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
Ryu Shindo
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
Mitsue-Links
React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発
yuichi kubota
Line Creators Studio Android With Kotlin
Line Creators Studio Android With Kotlin
LINE Corporation
PWAがたぶんくる
PWAがたぶんくる
Ryu Shindo
Sl study 20150804-soft-layer-apibasic-shibata
Sl study 20150804-soft-layer-apibasic-shibata
Naoki Shibata
WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション
WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション
力也 伊原
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
プロトタイピングでしあわせになろうよ
プロトタイピングでしあわせになろうよ
Yoshiki Kojima
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
Koichiro Sumi
小さく早い改善がスマホのサービス開発を変える
小さく早い改善がスマホのサービス開発を変える
Hiroto Igarashi
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iPride Co., Ltd.
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
React way at_eight
React way at_eight
Hideharu Okuma
こだわりのkintone
こだわりのkintone
Yusuke Amano
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
Keisuke Imai
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae
HTML5 によるロボット制御
HTML5 によるロボット制御
Honma Masashi
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
20170705 apiをつくろう
20170705 apiをつくろう
CData Software Japan
Lychee Redmine最新機能紹介とLycheeの未来について
Lychee Redmine最新機能紹介とLycheeの未来について
agileware_jp
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
Masakazu Muraoka
Sharoid Service Menu
Sharoid Service Menu
sharoid
20160621 KDL_monacaソリューションセミナー
20160621 KDL_monacaソリューションセミナー
kdl_yamanaka
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
アシアル株式会社
スマホ向けWebアプリ開発で使えるフロントエンド高速化手法
スマホ向けWebアプリ開発で使えるフロントエンド高速化手法
Eiji Kodama
JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
LINE Corporation
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
LINE Corporation
More Related Content
Similar to Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
CData Software Japan
プロトタイピングでしあわせになろうよ
プロトタイピングでしあわせになろうよ
Yoshiki Kojima
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
Koichiro Sumi
小さく早い改善がスマホのサービス開発を変える
小さく早い改善がスマホのサービス開発を変える
Hiroto Igarashi
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iPride Co., Ltd.
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
Imamura Masayuki
React way at_eight
React way at_eight
Hideharu Okuma
こだわりのkintone
こだわりのkintone
Yusuke Amano
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
Keisuke Imai
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
Kentaro Matsumae
HTML5 によるロボット制御
HTML5 によるロボット制御
Honma Masashi
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
Koichiro Sumi
20170705 apiをつくろう
20170705 apiをつくろう
CData Software Japan
Lychee Redmine最新機能紹介とLycheeの未来について
Lychee Redmine最新機能紹介とLycheeの未来について
agileware_jp
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
Masakazu Muraoka
Sharoid Service Menu
Sharoid Service Menu
sharoid
20160621 KDL_monacaソリューションセミナー
20160621 KDL_monacaソリューションセミナー
kdl_yamanaka
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
アシアル株式会社
スマホ向けWebアプリ開発で使えるフロントエンド高速化手法
スマホ向けWebアプリ開発で使えるフロントエンド高速化手法
Eiji Kodama
Similar to Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
(20)
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
プロトタイピングでしあわせになろうよ
プロトタイピングでしあわせになろうよ
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
[GrapeCity Web TECH FORUM 2018]レガシーからの移行 - 株式会社日本プロテック
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
小さく早い改善がスマホのサービス開発を変える
小さく早い改善がスマホのサービス開発を変える
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
React way at_eight
React way at_eight
こだわりのkintone
こだわりのkintone
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
ニコニコ動画iOSアプリの UX・マネタイズ・技術の話
HTML5 によるロボット制御
HTML5 によるロボット制御
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
20170705 apiをつくろう
20170705 apiをつくろう
Lychee Redmine最新機能紹介とLycheeの未来について
Lychee Redmine最新機能紹介とLycheeの未来について
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
Sharoid Service Menu
Sharoid Service Menu
20160621 KDL_monacaソリューションセミナー
20160621 KDL_monacaソリューションセミナー
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
スマホ向けWebアプリ開発で使えるフロントエンド高速化手法
スマホ向けWebアプリ開発で使えるフロントエンド高速化手法
More from LINE Corporation
JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
LINE Corporation
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
LINE Corporation
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
LINE Corporation
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extension
LINE Corporation
The Magic of LINE 購物 Testing
The Magic of LINE 購物 Testing
LINE Corporation
GA Test Automation
GA Test Automation
LINE Corporation
UI Automation Test with JUnit5
UI Automation Test with JUnit5
LINE Corporation
Feature Detection for UI Testing
Feature Detection for UI Testing
LINE Corporation
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享
LINE Corporation
LINE 技術合作夥伴與應用分享
LINE 技術合作夥伴與應用分享
LINE Corporation
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣
LINE Corporation
日本開發者大會短講分享
日本開發者大會短講分享
LINE Corporation
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享
LINE Corporation
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes
LINE Corporation
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧
LINE Corporation
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE Corporation
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享
LINE Corporation
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗
LINE Corporation
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Corporation
Keynote - LINE 的技術策略佈局與跨國產品開發
Keynote - LINE 的技術策略佈局與跨國產品開發
LINE Corporation
More from LINE Corporation
(20)
JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extension
The Magic of LINE 購物 Testing
The Magic of LINE 購物 Testing
GA Test Automation
GA Test Automation
UI Automation Test with JUnit5
UI Automation Test with JUnit5
Feature Detection for UI Testing
Feature Detection for UI Testing
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享
LINE 技術合作夥伴與應用分享
LINE 技術合作夥伴與應用分享
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣
日本開發者大會短講分享
日本開發者大會短講分享
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務
Keynote - LINE 的技術策略佈局與跨國產品開發
Keynote - LINE 的技術策略佈局與跨國產品開發
Recently uploaded
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Recently uploaded
(14)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Reactにflowtypeを組み合わせることで、我々は何を楽にできたか
1.
2.
ReactにFlowtypeを組み合わせることで、 我々は何を楽にできたか Masami Yonehara
3.
自己紹介 米原 斉美 (@h_demon) LINE
Fukuoka株式会社 開発室 UITチーム フロントエンド全般を担当。 Iターンで2年前に福岡に来ました。
4.
• 我々は何に苦労していたのか • Flowtypeでどの過程が 保証できるのか •
まとめ Agenda
5.
我々は何に苦労していたのか • 以前、React +
Fluxの大規模開発で失敗。 • 複数画面のモバイル用Webアプリ。 • 無限にでるバグ • そもそも動かない • UIが破綻する • APIがエラーを返す
6.
Business Logic 我々は何に苦労していたのか Web API Client-side Storage UI UI Web
API Client-side Storage
7.
Business Logic 我々は何に苦労していたのか Web API Client-side Storage UI UI Web
API Client-side Storage
8.
Business Logic 我々は何に苦労していたのか Web API Client-side Storage UI UI Web
API Client-side Storage
9.
Business Logic 我々は何に苦労していたのか Web API Client-side Storage UI UI Web
API Client-side Storage
10.
今回作ったチャットツールの構成 • 1画面だけのWebチャットクライアント • React
+ Flux Utils • Redux風の設計 • Single State • Reducerはstateを受け取り、stateを返す
11.
Action Creator Store Reducer Components pass state interaction Comp Comp Comp pass state pass props dispatch
12.
Action Creator Store Reducer Components pass state interaction Comp Comp Comp pass state pass props dispatch type P
= { text: string }; const MyComponent = (props: P) => <div>{props.text}</div>;
13.
Action Creator Store Reducer Components pass state interaction Comp Comp Comp pass state pass props dispatch type S
= { /* Stateの型を定義 */ }; type A = { /* Actionの型を定義 */ }; const someReducer = (state: S, action: A): S => { // 新しいstateを作って返す return newState; };
14.
Action Creator Store Reducer Components pass state interaction Comp Comp Comp pass state pass props dispatch type A
= { type: “add”, payload: {…} } | { type: “remove”, payload: {…} }; … // action: Aで渡されたとする if (action.type == “remove”) { // “add”のpayloadを前提にしたコード }
15.
Action Creator Store Reducer Components pass state interaction Comp Comp Comp pass state pass props dispatch type S
= { +messages: $ReadOnlyArray<string> }; const initialState: S = { messages: [“hello!”] }; // Error initialState.messages.push(“hi”);
16.
まとめ • Flowtypeで実行時エラーを防ぐのが楽に。 • Flux(or
Redux)のフローの多くの部分は、 Flowtypeで静的に型の整合性が保証できる。 • できない部分もある!
17.
Thank you
Editor's Notes
私は今回、LINE占いというプロジェクトで簡単なチャットツールを作りました。 そのツールの詳細は
まず今回の発表の背景をお話します。 以前私は、あるサービスでReactとFluxの大規模開発を経験しました。それはモバイル用のWebサービスで、トップ画面があり、コンテンツの画面があり、情報を入力するフォームの画面があり、というようなよくある構成のサービスです。 わりと大きな規模のサービスだったのですが、 原因としては、 特にあるエンジニアが担当する画面から、別のエンジニアが担当する画面へ、クライアント側で情報を渡すような場面で多くバグがでました。
この件をもっと抽象化してみたいと思います。 クライアントをビジネスロジックに対する情報の入出力という観点から抽象化すると、こんな図で説明できると思います。 入力と出力ともに主に2つの種類が考えられます。UIと、Web API Client-side Storageです。これは主に、UIとして見えるものかそうでないか、という観点で分けています。
動かない、というのはいろんなパターンがありますが、UIが描画されない、破綻するというのは多いと思います。
また、サーバがバリデーションエラーを返すこともあるでしょう。それはビジネスロジック層の出力が、APIが要求する入力の条件に合致していないことで起きます。
また、ビジネスロジック層の中で実行時エラーが起きるということもあるでしょう。 何が言いたいかというと、多くの場合はこのような要素同士の入出力の要求が合致しないときに、サービスが止まるような問題が起こりうるということです。