狠狠撸

狠狠撸Share a Scribd company logo
Copyright ? Virtual Technology, Inc
Reactとvte.cxでWebアプリ
ケーションを作成する#2
2017/9/20 竹嵜 伸一郎(@stakezaki)
1
<動作確認~ソース解説>
Copyright ? Virtual Technology, Inc
竹嵜 伸一郎 (たけざき しんいちろう)
twitter id:stakezaki
(有)バーチャルテクノロジー代表取締役
2
Copyright ? Virtual Technology, Inc
React+vte.cx勉强会#2
? Reactのサンプルアプリの内容を解説し、実
際の開発を体験してもらいます
<タイムテーブル>
18:30 ~ 19:30 セットアップとReactの概要
19:35 ~ 20:35 ソースコードの解説
20:35 ~ 20:45 質疑応答
? 今日のポイントは、「フォームとエンティティ」です。
3
Copyright ? Virtual Technology, Inc
vte.cxビジョン
”もうフルスタックエンジニアはいらない。
HTMLとJSの知識さえあればWebサービスを
開発できる。
そのような世界を私たちは目指しています。”
4
Copyright ? Virtual Technology, Inc
サンプルアプリのセットアップ
? Visual Studio Codeの導入
– https://code.visualstudio.com/download
? Windowsの場合、git for windowsの導入
– https://git-for-windows.github.io/
? あとは、以下のqiitaの記事を見ながら
セットアップ
– http://qiita.com/stakezaki/items/0401d7
9d392b081fb85e
5
Copyright ? Virtual Technology, Inc
Reactの概要
? ReactはFacebookが公開しているライブラ
リでUIを効率的に構築することができる
– HTMLに似たJSXのテンプレートを使うことで
直感的にUIを記述できる(仮想DOM)
– コンポーネントの組み合わせで全体のアプリを
構築する
6
Copyright ? Virtual Technology, Inc
Reactの最も効率的な学習方法
? Quick Startを一通り動作確認する
– https://facebook.github.io/react/docs/hell
o-world.html
7
Copyright ? Virtual Technology, Inc
ES2015(ES6)も覚えましょう
? let?constキーワードによる変数宣言
? class構文
? importとexportによるモジュール構文
? アロー関数(Arrow Functions)
? その他、テンプレート文字列などいくつ
かある
8
Copyright ? Virtual Technology, Inc
importとexport
? export default foo
? import foo from ‘foo’
? import {Form,Col} from 'react-
bootstrap'
9
Copyright ? Virtual Technology, Inc
バンドラ(Webpack)とタスクランナ(Gulp)
10
ES2015
React(JSX)
Flow
トランスパイル
Css/Sass
ビルド?
モジュール結合
JavaScript
(ES5)
ローカルPC
サーバ(vte.cx)
Import/
export
モジュール結合
GulpによるDeploy Webpackによるバンドル
Copyright ? Virtual Technology, Inc
アロー関数
? <Form horizontal
onSubmit={(e)=>this.handleSubmit(e)}>
? arrow関数を使えばbindしなくてもよい
– function(e) = {this.handleSubmit(e).bind(this)}
11
Copyright ? Virtual Technology, Inc
Reactの基本構文
class Setup2 extends React.components {
constructor(props:Props) {
super(props)
this.state = { isConfirmed: false }
}
componentWillMount() {
}
handleSubmit(e: InputEvent) {
}
render() {
}
}
ReactDOM.render(<Signup />, document.getElementById('signform'))
// SignupコンポーネントをHTMLのid:signformに挿入
12
ReactComponentを継承してclassを定義
Constructorで初期値を設定
Stateは更新されるとrender()が実行される特殊な変数
表示前に実行される(component関数)
JSXをレンダリング
ボタンクリックで実行(ユーザ関数)
Copyright ? Virtual Technology, Inc
Component Lifecycle
? componentWillMount()
– ComponentがDOMツリーに追加される前に一度だけ呼ばれます。
? componentDidMount()
– ComponentがDOMツリーに追加された状態で呼ばれます
? componentWillReceiveProps(nextProps)
– Propが更新される時に呼ばれます。
? shouldComponentUpdate()
– falseを返すとVirtualDOMの比較を行わずにrerenderされない
? componentWillUpdate(nextProps, nextState)
– Componentが更新する前に呼ばれます。
? componentDidUpdate(prevProps, prevState)
– Componentが更新された後に呼ばれます。
? componentWillUnmount()
– ComponentがDOMから削除される時に呼ばれます。
13
Copyright ? Virtual Technology, Inc
state
? this.state
? 更新すると再描画される(render()が実行)
– 値の更新は、this.setState()を使う
– stateを直接は更新できない
? サンプル
– 処理待ち中にボタンの上にSpinnerを表示する
– http://qiita.com/stakezaki/items/0d467358a9
67d382697e
14
Copyright ? Virtual Technology, Inc
エラー表示のテクニック
{ this.state.isLoginFailed &&
<FormGroup>
???
}
? State.inLoginFailedがtrueのときだけエ
ラーを表示する
15
Copyright ? Virtual Technology, Inc
型
? 型があれば10%?20%のバグを減らすこ
とができるとの調査結果
? サーバサイドにおける動的型付け言語疲れ
16
Copyright ? Virtual Technology, Inc
flow
? 静的型付けにより型エラーを検出
/* @flow */
import type {
State,
Props,
InputEvent
} from 'demo.types'
handleSubmit(e: InputEvent) {
???
}
17
Copyright ? Virtual Technology, Inc
コンポーネントを意識した開発
? demo.jsのreact-router-dom
– <ListItems>、<ItemInput>、
<ItemUpdate>コンポーネント表示を切り替
える
? 開発時はそれぞれのコンポーネントを
別々に作成して最後にまとめる
? 外部コンポーネントを利用する
– npmでインストールしてimportするだけ
– ReCAPTCHA、パスワード強化チェック
18
Copyright ? Virtual Technology, Inc
Signup form
19
Copyright ? Virtual Technology, Inc
ReactPasswordStrength
20
? https://github.com/mmw/react-password-strength
これ
Copyright ? Virtual Technology, Inc
ReCAPCHA
21
? https://github.com/dozoisch/react-google-recaptcha
これ
Copyright ? Virtual Technology, Inc
uncontrolled form の例
? demo_iteminput.js
– <FormGroup controlId={hobby_type}>
? テーブル等を扱う場合はkeyが必要
– <tbody key={row.toString()}>
– Reactのルールと考えればよい
? Rowsの数だけ行を表示
– {this.state.rows.map(row =>
this.HobbyForm(row))}
? addRow
– rows: prevState.rows.concat([prevState.rows.length+1])
– Rowsに行の数を追記する
22
Copyright ? Virtual Technology, Inc
Controlled FormとEntity
? signup2.js
– 詳細は、
http://qiita.com/stakezaki/items/cbbfbf23
e107b60859c9
23
Copyright ? Virtual Technology, Inc
10/25 勉强会#3やります!
https://connpass.com/event/67541/
24
Copyright ? Virtual Technology, Inc25
support@virtual-tech.net
ご質問はこちらまで

More Related Content

What's hot (20)

Azure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のり
Azure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のりAzure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のり
Azure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のり
滨辞罢ビジネス共创ラボ
?
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Ryosuke Suto
?
新プロジェクト Hyperledger Cactus のご紹介
新プロジェクト Hyperledger Cactus のご紹介新プロジェクト Hyperledger Cactus のご紹介
新プロジェクト Hyperledger Cactus のご紹介
LFDT Tokyo Meetup
?
厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装
厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装
厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装
PIXTA Inc.
?
新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门
新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门
新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门
PIXTA Inc.
?
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととはDevelopers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
SORACOM,INC
?
.NET Gadgeteerで組み込み開発の第一歩
.NET Gadgeteerで組み込み開発の第一歩.NET Gadgeteerで組み込み開発の第一歩
.NET Gadgeteerで組み込み開発の第一歩
Yoshitaka Seo
?
.Net GadgeteerでIoT
.Net GadgeteerでIoT.Net GadgeteerでIoT
.Net GadgeteerでIoT
Yoshitaka Seo
?
20141003 webマーケティンク?エンシ?ニアリンク?
20141003 webマーケティンク?エンシ?ニアリンク?20141003 webマーケティンク?エンシ?ニアリンク?
20141003 webマーケティンク?エンシ?ニアリンク?
Innova Inc.
?
一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方
一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方
一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方
崇 宮下
?
アジャイルの手法を取り入れたプロジェクトマネジメントの実例
アジャイルの手法を取り入れたプロジェクトマネジメントの実例アジャイルの手法を取り入れたプロジェクトマネジメントの実例
アジャイルの手法を取り入れたプロジェクトマネジメントの実例
Takuya Kitamura
?
【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
Developers Summit
?
Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会
Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会
Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会
Koichiro Sumi
?
COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報
COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報
COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報
NVIDIA Japan
?
経営のアジリティを支える顿别惫翱辫蝉と组织
経営のアジリティを支える顿别惫翱辫蝉と组织経営のアジリティを支える顿别惫翱辫蝉と组织
経営のアジリティを支える顿别惫翱辫蝉と组织
Recruit Technologies
?
IoT 入門 ~ .NET Gadgeteer で簡単プログラミング
IoT 入門 ~ .NET Gadgeteer で簡単プログラミングIoT 入門 ~ .NET Gadgeteer で簡単プログラミング
IoT 入門 ~ .NET Gadgeteer で簡単プログラミング
Yoshitaka Seo
?
大手ユーザー公司に入ってマネジメントでやってみたこと
大手ユーザー公司に入ってマネジメントでやってみたこと大手ユーザー公司に入ってマネジメントでやってみたこと
大手ユーザー公司に入ってマネジメントでやってみたこと
Takuya Kitamura
?
20190117 teamup
20190117 teamup20190117 teamup
20190117 teamup
Katsuhiro Honda
?
マネージャーになってからの技术を磨く戦略と戦术
マネージャーになってからの技术を磨く戦略と戦术マネージャーになってからの技术を磨く戦略と戦术
マネージャーになってからの技术を磨く戦略と戦术
PIXTA Inc.
?
これからはじめる Power Platform
これからはじめる Power Platformこれからはじめる Power Platform
これからはじめる Power Platform
Rie Okuda
?
Azure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のり
Azure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のりAzure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のり
Azure IoT HubとIoT Edgeを活用した "三密対策"ソリューション「comieru LIVE」の開発プロジェクトへの道のり
滨辞罢ビジネス共创ラボ
?
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Google Container Engine と Kubernetes て? 無理をしないコンテナ管理
Ryosuke Suto
?
新プロジェクト Hyperledger Cactus のご紹介
新プロジェクト Hyperledger Cactus のご紹介新プロジェクト Hyperledger Cactus のご紹介
新プロジェクト Hyperledger Cactus のご紹介
LFDT Tokyo Meetup
?
厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装
厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装
厂苍补辫尘补谤迟における颁补尘别谤补搁辞濒濒から写真の复数枚アップロードの実装
PIXTA Inc.
?
新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门
新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门
新卒入社のみなさまへ30代が赠る20代のキャリア戦略入门
PIXTA Inc.
?
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととはDevelopers Summit 2018 | IoTサービスを始める際に必要なこととは
Developers Summit 2018 | IoTサービスを始める際に必要なこととは
SORACOM,INC
?
.NET Gadgeteerで組み込み開発の第一歩
.NET Gadgeteerで組み込み開発の第一歩.NET Gadgeteerで組み込み開発の第一歩
.NET Gadgeteerで組み込み開発の第一歩
Yoshitaka Seo
?
20141003 webマーケティンク?エンシ?ニアリンク?
20141003 webマーケティンク?エンシ?ニアリンク?20141003 webマーケティンク?エンシ?ニアリンク?
20141003 webマーケティンク?エンシ?ニアリンク?
Innova Inc.
?
一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方
一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方
一エンジニアが伝えたい、プロジェクトや组织の运営を理想に近づけるための考え方
崇 宮下
?
アジャイルの手法を取り入れたプロジェクトマネジメントの実例
アジャイルの手法を取り入れたプロジェクトマネジメントの実例アジャイルの手法を取り入れたプロジェクトマネジメントの実例
アジャイルの手法を取り入れたプロジェクトマネジメントの実例
Takuya Kitamura
?
【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2?醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
Developers Summit
?
Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会
Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会
Siderご紹介スライド@第2回 GitHub Enterprise ユーサ?会
Koichiro Sumi
?
COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報
COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報
COVID-19 研究?対策に活用可能な NVIDIA ソフトウェアと関連情報
NVIDIA Japan
?
経営のアジリティを支える顿别惫翱辫蝉と组织
経営のアジリティを支える顿别惫翱辫蝉と组织経営のアジリティを支える顿别惫翱辫蝉と组织
経営のアジリティを支える顿别惫翱辫蝉と组织
Recruit Technologies
?
IoT 入門 ~ .NET Gadgeteer で簡単プログラミング
IoT 入門 ~ .NET Gadgeteer で簡単プログラミングIoT 入門 ~ .NET Gadgeteer で簡単プログラミング
IoT 入門 ~ .NET Gadgeteer で簡単プログラミング
Yoshitaka Seo
?
大手ユーザー公司に入ってマネジメントでやってみたこと
大手ユーザー公司に入ってマネジメントでやってみたこと大手ユーザー公司に入ってマネジメントでやってみたこと
大手ユーザー公司に入ってマネジメントでやってみたこと
Takuya Kitamura
?
マネージャーになってからの技术を磨く戦略と戦术
マネージャーになってからの技术を磨く戦略と戦术マネージャーになってからの技术を磨く戦略と戦术
マネージャーになってからの技术を磨く戦略と戦术
PIXTA Inc.
?
これからはじめる Power Platform
これからはじめる Power Platformこれからはじめる Power Platform
これからはじめる Power Platform
Rie Okuda
?

Similar to React vtecx20170920 (20)

Lt20190129
Lt20190129Lt20190129
Lt20190129
Shinichiro Takezaki
?
Web study20171007
Web study20171007Web study20171007
Web study20171007
Shinichiro Takezaki
?
Bpstudy20180725
Bpstudy20180725Bpstudy20180725
Bpstudy20180725
Shinichiro Takezaki
?
Builderscon Tokyo 2017
Builderscon Tokyo 2017 Builderscon Tokyo 2017
Builderscon Tokyo 2017
Shinichiro Takezaki
?
Enterpriseapi20160210
Enterpriseapi20160210Enterpriseapi20160210
Enterpriseapi20160210
Shinichiro Takezaki
?
Real techlt20180829
Real techlt20180829Real techlt20180829
Real techlt20180829
Shinichiro Takezaki
?
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオン
Tomokazu Kizawa
?
SkyWay Vision & Mission
SkyWay Vision & MissionSkyWay Vision & Mission
SkyWay Vision & Mission
Yoshiki Mizushima
?
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
Recruit Technologies
?
Dyna traceによるuxマネジメント
Dyna traceによるuxマネジメントDyna traceによるuxマネジメント
Dyna traceによるuxマネジメント
伸夫 森本
?
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
?
奥别产搁罢颁エキスパート座谈会
奥别产搁罢颁エキスパート座谈会奥别产搁罢颁エキスパート座谈会
奥别产搁罢颁エキスパート座谈会
Ryosuke Otsuya
?
データから価値を生み続けるには
データから価値を生み続けるにはデータから価値を生み続けるには
データから価値を生み続けるには
Recruit Lifestyle Co., Ltd.
?
奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)
奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)
奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)
Kensaku Komatsu
?
贬迟尘濒5时代のクリエイターのあり方
贬迟尘濒5时代のクリエイターのあり方贬迟尘濒5时代のクリエイターのあり方
贬迟尘濒5时代のクリエイターのあり方
Masakazu Muraoka
?
搁别诲尘颈苍别の情报を自分好みに见える化した话
搁别诲尘颈苍别の情报を自分好みに见える化した话搁别诲尘颈苍别の情报を自分好みに见える化した话
搁别诲尘颈苍别の情报を自分好みに见える化した话
ToshiharuSakai
?
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
Shinichiro Takezaki
?
齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境
齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境
齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境
VirtualTech Japan Inc.
?
JSUG 2018 BTC
JSUG 2018 BTCJSUG 2018 BTC
JSUG 2018 BTC
kazukiotomori
?
LoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオンLoRaWANとAzure IoT Hub接続ハンズオン
LoRaWANとAzure IoT Hub接続ハンズオン
Tomokazu Kizawa
?
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
Recruit Technologies
?
Dyna traceによるuxマネジメント
Dyna traceによるuxマネジメントDyna traceによるuxマネジメント
Dyna traceによるuxマネジメント
伸夫 森本
?
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
?
奥别产搁罢颁エキスパート座谈会
奥别产搁罢颁エキスパート座谈会奥别产搁罢颁エキスパート座谈会
奥别产搁罢颁エキスパート座谈会
Ryosuke Otsuya
?
奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)
奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)
奥别产によるデバイスを用いたリアルタイムサービスの可能性(神戸滨罢フェスティバル版)
Kensaku Komatsu
?
贬迟尘濒5时代のクリエイターのあり方
贬迟尘濒5时代のクリエイターのあり方贬迟尘濒5时代のクリエイターのあり方
贬迟尘濒5时代のクリエイターのあり方
Masakazu Muraoka
?
搁别诲尘颈苍别の情报を自分好みに见える化した话
搁别诲尘颈苍别の情报を自分好みに见える化した话搁别诲尘颈苍别の情报を自分好みに见える化した话
搁别诲尘颈苍别の情报を自分好みに见える化した话
ToshiharuSakai
?
齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境
齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境
齿别苍+奥颈苍诲辞飞蝉で构筑するサーバ仮想化环境
VirtualTech Japan Inc.
?

More from Shinichiro Takezaki (11)

Vtecx solution
Vtecx solutionVtecx solution
Vtecx solution
Shinichiro Takezaki
?
11 29フ?レセ?ン資料
11 29フ?レセ?ン資料11 29フ?レセ?ン資料
11 29フ?レセ?ン資料
Shinichiro Takezaki
?
20171025 date picker説明資料
20171025 date picker説明資料20171025 date picker説明資料
20171025 date picker説明資料
Shinichiro Takezaki
?
Vtecx20151216 2
Vtecx20151216 2Vtecx20151216 2
Vtecx20151216 2
Shinichiro Takezaki
?
Vtecx20151216
Vtecx20151216Vtecx20151216
Vtecx20151216
Shinichiro Takezaki
?
Vtecxlt20151201
Vtecxlt20151201Vtecxlt20151201
Vtecxlt20151201
Shinichiro Takezaki
?
Gaeja20121130
Gaeja20121130Gaeja20121130
Gaeja20121130
Shinichiro Takezaki
?
Reflex works20120818 1
Reflex works20120818 1Reflex works20120818 1
Reflex works20120818 1
Shinichiro Takezaki
?
骋谤辞辞惫测コンファレンス
骋谤辞辞惫测コンファレンス骋谤辞辞惫测コンファレンス
骋谤辞辞惫测コンファレンス
Shinichiro Takezaki
?

Recently uploaded (10)

250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿
250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿
250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿
jun_suto
?
蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化
蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化
蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化
jasmine317648
?
FUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティング
FUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティングFUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティング
FUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティング
FUSIONDRIVER, INC.
?
オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310
オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310
オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310
Sunrise649039
?
20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿
20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿
20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿
jun_suto
?
すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"
すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"
すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"
shopsanx9
?
Flyle.inc.presentation.slide.simple.2025/03/03
Flyle.inc.presentation.slide.simple.2025/03/03Flyle.inc.presentation.slide.simple.2025/03/03
Flyle.inc.presentation.slide.simple.2025/03/03
keitarokanazawa
?
Publink.Inc. Company Deck_株式会社Publink会社紹介資料
Publink.Inc. Company Deck_株式会社Publink会社紹介資料Publink.Inc. Company Deck_株式会社Publink会社紹介資料
Publink.Inc. Company Deck_株式会社Publink会社紹介資料
support760508
?
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
Flyke1
?
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
Flyke1
?
250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿
250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿
250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测6.辫诲蹿
jun_suto
?
蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化
蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化
蚕驰搁别蝉别补谤肠丑(蚕驰リサーチ):竞合分析と业界洞察を基にした戦略的アドバイスで竞争力を强化
jasmine317648
?
FUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティング
FUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティングFUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティング
FUSIONDRIVER, INC.による経営視点×AI 6ヶ月パッケージのご案内:短期集中型AIコンサルティング
FUSIONDRIVER, INC.
?
オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310
オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310
オリジナルブロックチェーン構築サービス「MyLayer」サービス概要資料 日本語版 20250310
Sunrise649039
?
20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿
20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿
20250205冲地域ビジネススタートアッププログラム颈苍四万十町冲顿补测5.辫诲蹿
jun_suto
?
すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"
すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"
すみっコぐらし ぷちペンギンコレクション "Shop .san-x.co.jp"
shopsanx9
?
Flyle.inc.presentation.slide.simple.2025/03/03
Flyle.inc.presentation.slide.simple.2025/03/03Flyle.inc.presentation.slide.simple.2025/03/03
Flyle.inc.presentation.slide.simple.2025/03/03
keitarokanazawa
?
Publink.Inc. Company Deck_株式会社Publink会社紹介資料
Publink.Inc. Company Deck_株式会社Publink会社紹介資料Publink.Inc. Company Deck_株式会社Publink会社紹介資料
Publink.Inc. Company Deck_株式会社Publink会社紹介資料
support760508
?
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
Flyke1
?
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
株式会社フライク冲採用ピッチ资料冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲冲
Flyke1
?

React vtecx20170920

  • 1. Copyright ? Virtual Technology, Inc Reactとvte.cxでWebアプリ ケーションを作成する#2 2017/9/20 竹嵜 伸一郎(@stakezaki) 1 <動作確認~ソース解説>
  • 2. Copyright ? Virtual Technology, Inc 竹嵜 伸一郎 (たけざき しんいちろう) twitter id:stakezaki (有)バーチャルテクノロジー代表取締役 2
  • 3. Copyright ? Virtual Technology, Inc React+vte.cx勉强会#2 ? Reactのサンプルアプリの内容を解説し、実 際の開発を体験してもらいます <タイムテーブル> 18:30 ~ 19:30 セットアップとReactの概要 19:35 ~ 20:35 ソースコードの解説 20:35 ~ 20:45 質疑応答 ? 今日のポイントは、「フォームとエンティティ」です。 3
  • 4. Copyright ? Virtual Technology, Inc vte.cxビジョン ”もうフルスタックエンジニアはいらない。 HTMLとJSの知識さえあればWebサービスを 開発できる。 そのような世界を私たちは目指しています。” 4
  • 5. Copyright ? Virtual Technology, Inc サンプルアプリのセットアップ ? Visual Studio Codeの導入 – https://code.visualstudio.com/download ? Windowsの場合、git for windowsの導入 – https://git-for-windows.github.io/ ? あとは、以下のqiitaの記事を見ながら セットアップ – http://qiita.com/stakezaki/items/0401d7 9d392b081fb85e 5
  • 6. Copyright ? Virtual Technology, Inc Reactの概要 ? ReactはFacebookが公開しているライブラ リでUIを効率的に構築することができる – HTMLに似たJSXのテンプレートを使うことで 直感的にUIを記述できる(仮想DOM) – コンポーネントの組み合わせで全体のアプリを 構築する 6
  • 7. Copyright ? Virtual Technology, Inc Reactの最も効率的な学習方法 ? Quick Startを一通り動作確認する – https://facebook.github.io/react/docs/hell o-world.html 7
  • 8. Copyright ? Virtual Technology, Inc ES2015(ES6)も覚えましょう ? let?constキーワードによる変数宣言 ? class構文 ? importとexportによるモジュール構文 ? アロー関数(Arrow Functions) ? その他、テンプレート文字列などいくつ かある 8
  • 9. Copyright ? Virtual Technology, Inc importとexport ? export default foo ? import foo from ‘foo’ ? import {Form,Col} from 'react- bootstrap' 9
  • 10. Copyright ? Virtual Technology, Inc バンドラ(Webpack)とタスクランナ(Gulp) 10 ES2015 React(JSX) Flow トランスパイル Css/Sass ビルド? モジュール結合 JavaScript (ES5) ローカルPC サーバ(vte.cx) Import/ export モジュール結合 GulpによるDeploy Webpackによるバンドル
  • 11. Copyright ? Virtual Technology, Inc アロー関数 ? <Form horizontal onSubmit={(e)=>this.handleSubmit(e)}> ? arrow関数を使えばbindしなくてもよい – function(e) = {this.handleSubmit(e).bind(this)} 11
  • 12. Copyright ? Virtual Technology, Inc Reactの基本構文 class Setup2 extends React.components { constructor(props:Props) { super(props) this.state = { isConfirmed: false } } componentWillMount() { } handleSubmit(e: InputEvent) { } render() { } } ReactDOM.render(<Signup />, document.getElementById('signform')) // SignupコンポーネントをHTMLのid:signformに挿入 12 ReactComponentを継承してclassを定義 Constructorで初期値を設定 Stateは更新されるとrender()が実行される特殊な変数 表示前に実行される(component関数) JSXをレンダリング ボタンクリックで実行(ユーザ関数)
  • 13. Copyright ? Virtual Technology, Inc Component Lifecycle ? componentWillMount() – ComponentがDOMツリーに追加される前に一度だけ呼ばれます。 ? componentDidMount() – ComponentがDOMツリーに追加された状態で呼ばれます ? componentWillReceiveProps(nextProps) – Propが更新される時に呼ばれます。 ? shouldComponentUpdate() – falseを返すとVirtualDOMの比較を行わずにrerenderされない ? componentWillUpdate(nextProps, nextState) – Componentが更新する前に呼ばれます。 ? componentDidUpdate(prevProps, prevState) – Componentが更新された後に呼ばれます。 ? componentWillUnmount() – ComponentがDOMから削除される時に呼ばれます。 13
  • 14. Copyright ? Virtual Technology, Inc state ? this.state ? 更新すると再描画される(render()が実行) – 値の更新は、this.setState()を使う – stateを直接は更新できない ? サンプル – 処理待ち中にボタンの上にSpinnerを表示する – http://qiita.com/stakezaki/items/0d467358a9 67d382697e 14
  • 15. Copyright ? Virtual Technology, Inc エラー表示のテクニック { this.state.isLoginFailed && <FormGroup> ??? } ? State.inLoginFailedがtrueのときだけエ ラーを表示する 15
  • 16. Copyright ? Virtual Technology, Inc 型 ? 型があれば10%?20%のバグを減らすこ とができるとの調査結果 ? サーバサイドにおける動的型付け言語疲れ 16
  • 17. Copyright ? Virtual Technology, Inc flow ? 静的型付けにより型エラーを検出 /* @flow */ import type { State, Props, InputEvent } from 'demo.types' handleSubmit(e: InputEvent) { ??? } 17
  • 18. Copyright ? Virtual Technology, Inc コンポーネントを意識した開発 ? demo.jsのreact-router-dom – <ListItems>、<ItemInput>、 <ItemUpdate>コンポーネント表示を切り替 える ? 開発時はそれぞれのコンポーネントを 別々に作成して最後にまとめる ? 外部コンポーネントを利用する – npmでインストールしてimportするだけ – ReCAPTCHA、パスワード強化チェック 18
  • 19. Copyright ? Virtual Technology, Inc Signup form 19
  • 20. Copyright ? Virtual Technology, Inc ReactPasswordStrength 20 ? https://github.com/mmw/react-password-strength これ
  • 21. Copyright ? Virtual Technology, Inc ReCAPCHA 21 ? https://github.com/dozoisch/react-google-recaptcha これ
  • 22. Copyright ? Virtual Technology, Inc uncontrolled form の例 ? demo_iteminput.js – <FormGroup controlId={hobby_type}> ? テーブル等を扱う場合はkeyが必要 – <tbody key={row.toString()}> – Reactのルールと考えればよい ? Rowsの数だけ行を表示 – {this.state.rows.map(row => this.HobbyForm(row))} ? addRow – rows: prevState.rows.concat([prevState.rows.length+1]) – Rowsに行の数を追記する 22
  • 23. Copyright ? Virtual Technology, Inc Controlled FormとEntity ? signup2.js – 詳細は、 http://qiita.com/stakezaki/items/cbbfbf23 e107b60859c9 23
  • 24. Copyright ? Virtual Technology, Inc 10/25 勉强会#3やります! https://connpass.com/event/67541/ 24
  • 25. Copyright ? Virtual Technology, Inc25 support@virtual-tech.net ご質問はこちらまで