SlideShare a Scribd company logo
1 of 52
Download to read offline
Introduction to React.js
こんな人が対象
React.jsまわりのワード多すぎて
わかんね
なんでReactなんですか?
jQueryじゃだめなんですか?
React.jsが解決するもの
• コンポーネントという概念を持ち込むことで設
計を改善する
• Virtual DOM採用による設計と速度の両立
• JSフレームワークで問題になりがちなSEOに対
応できる
採用事例
• Facebook
• Instagram
• Yahoo
• Atom Editor(React導入後にVanillaJSで書きな
おした)
• Airbnb
React.jsにまつわるワード
• React Component
• JSX
• Virtual DOM
• Server-Side Rendering
• Flux
React.jsのComponent
jQuery
どこのDOM?
$('#target').click(function() {
$('#output').html(function(i, val) { return val*1+1 });
});
DOMが状態を
持ってしまっている
React.jsvar Counter = React.createClass({
getInitialState() {
return {
count: 0
};
},
onClick() {
this.setState({count: this.state.count + 1});
},
render() {
return (
<div>
<div>count:{this.state.count}</div>
<button onClick={this.onClick}>click!</button>
</div>
);
}
});
DOMの情報もJSで持つ
DOMに対する操作
• DOMとロジックの距離を近づけることでコード
がリーダブルになる
• 実DOMの状態に影響されないのでテスタブルに
なる
• Facebook曰く技術の分離でなく責務で分離した
らこうなるらしい
var Counter = React.createClass({
getInitialState() {
return {
count: 0
};
},
onClick() {
this.setState({count: this.state.count + 1});
},
render() {
return (
<div>
<div>count:{this.state.count}</div>
<button onClick={this.onClick}>click!</button>
</div>
);
}
}); なんかHTMLっぽいのがまざってるんですけど…
ちょっとまて
JSX
• JSの中に HTMLっぽいもの を組み込める
• 事前にコンパイルする必要あり
• 素のJSで書くよりコードが直感的になる
<div className="foo">
<div className="bar">
Hello {this.props.name}
</div>
</div>
React.createElement("div", {className: "foo"},
React.createElement("div", {className: "bar"},
"Hello ", this.props.name
)
)
JSX
JS
• こういったコンポーネントの考え方で設計手法
が確立できた
• ただし設計のためだけにパフォーマンスを犠牲
にできない
• 設計と速度の両立が必要
Virtual
DOM
• JSオブジェクトでDOMを内部で再現する
• データに変更があった場合、Diffを計算し実際の
DOMを部分更新する
• Reactを使う側は特に意識する必要は 基本的 に
ない
• Virtual DOM自体は概念なので実装が色々ある
いろんなVirtual DOM実装
• facebook/react
• Matt-Esch/virtual-dom
• dekujs/deku
• omcljs/om
• Elm
Virtual DOMがあることで
なにが嬉しいの
• jQueryのように自前でDOMに対してパッチを当てなく
ていい
• ユーザは期待するDOMの結果だけを定義すればいい
• しかもいい感じに速い
• 毎回新しくDOMを作って上書きすればコードとDOM
の状態に乖離がなくなる
• ↑これってサーバサイドっぽくね?
引用: http://blog.masuidrive.jp/2015/03/03/react/
Virtual DOMはフロントサイドに富豪
的プログラミングパラダイムをもたらす
• VirtualDomによってJS内でDOMを実現できた
• つまりJSの実行環境があればサーバサイドでDOM
が作れる?
Server-Side
Rendering
• ユーザからリクエストを受けた最初のレンダリン
グのみサーバサイドで行う
• クライアントでDOMを作り始めないので体感速度
が上がる
• リクエストしたタイミングでレンダリングが終わっ
ている、ということはクローラーが認識できる
• つまりSEOに対応できる!
他言語対応もありまぁす
• reactjs/react-python
• reactjs/react-php-v8js
• reactjs/React.NET
• yanns/play-react
• reactjs/react-rails
他言語対応もありまぁす
• reactjs/react-python
• reactjs/react-php-v8js
• reactjs/React.NET
• yanns/play-react
• reactjs/react-rails おっ
React with Rails
• react-railsを使ってRailsにReactを組み込む
• Scaffoldで生成されるようなアプリを再現する
• CRUD
• ルーティング
Demo
https://rails-scaffold-react.herokuapp.com/
外部のReact Components
• Reactable
• TableをReactComponentとして実現できる
• JSオブジェクトを渡すだけでテーブルを表示
• ソート機能などもあり
• react-router
• React.jsでルーティングを実現する
React Componentsの探し方
• React Components
• http://react-components.com/
• React Rocks
• http://react.rocks/
Reactいいじゃん!
Reactサイコー!
Reactのつらみ
• コード量増える(jQuery,Angular.jsと比較)
コード量比較(当社比)
jQuery
$('#target').click(function() {
$('#output').html(function(i, val) { return val*1+1 });
});
var Counter = React.createClass({
getInitialState() {
return {
count: 0
};
},
onClick() {
this.setState({count: this.state.count + 1});
},
render() {
return (
<div>
<div>count:{this.state.count}</div>
<button onClick={this.onClick}>click!</button>
</div>
);
}
});
React.js
コード量比較(当社比)
jQuery
$('#target').click(function() {
$('#output').html(function(i, val) { return val*1+1 });
});
var Counter = React.createClass({
getInitialState() {
return {
count: 0
};
},
onClick() {
this.setState({count: this.state.count + 1});
},
render() {
return (
<div>
<div>count:{this.state.count}</div>
<button onClick={this.onClick}>click!</button>
</div>
);
}
});
React.js
_人人人人_
> 6倍 <
 ̄Y^Y^Y ̄
Facebook曰く
• コードは書く時間より読む時間の方が長いんだ!
• ReactはViewのみを管理するものなので何かし
らのアーキテクチャが必要
Flux
Fluxとは
• アーキテクチャの名前
• 言ってしまえばObserverパターン
• データフローを一方向にすることで複雑性を排
除する
引用: https://facebook.github.io/flux/docs/overview.html
引用: https://facebook.github.io/flux/docs/overview.html
• ユーザからのアクションやサーバからのレスポン
スを受ける
• 構築したデータをDispacherに渡す
• WebAPIとやりとりするのもここ
引用: https://facebook.github.io/flux/docs/overview.html
• Actionからデータと配送先が渡されるので順次
配信する(大体の場合Store)
• 実装上はEventEmitterで良い
• facebook/fluxはこの部分のみ提供する
引用: https://facebook.github.io/flux/docs/overview.html
• モデルみたいなもの
• Dispacherから渡されたデータを保持する
• Dispacherからデータが渡されたらイベントを
発行する
引用: https://facebook.github.io/flux/docs/overview.html
• Storeを監視してデータが変更されたらViewに
反映する
• React.jsが担うのはここ
• ユーザからのアクションをActionに通知する
引用: https://facebook.github.io/flux/docs/overview.html
• データフローを一方向にすることで設計をシン
プルにする
• Fluxの功績はこのパターンに名前を付けたこと
• ここで紹介したFluxはあくまで一例
• Fluxは概念なので実装によって変わる
いろんなFlux実装
• facebook/flux
• yahoo/fluxible
• martyjs/marty
• kenwheeler/mcfly
• deloreanjs/delorean
Fluxを扱ったDemo
http://peranikov.github.io/kpt-react
まとめ
• Reactは速度と設計を両立させるViewのライブ
ラリ
• 生産性を上げるためのものではないし、コード
量は増える
• React単体では扱いにくい。Fluxを併用しよう
参考文献
• ReactとFluxのこと
• https://speakerdeck.com/geta6/reacttofluxfalsekoto
• 一人React.js Advent Calendar 2014
• http://qiita.com/advent-calendar/2014/reactjs
• Introduction To React
• https://speakerdeck.com/hokaccha/introduction-to-react

More Related Content

What's hot

なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかYoichi Toyota
 
iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018Shingo Fukuyama
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?IRI MO
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱いiOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱いniwatako
 
iOS 9 Bootcamp #6 UIKit
iOS 9 Bootcamp #6 UIKitiOS 9 Bootcamp #6 UIKit
iOS 9 Bootcamp #6 UIKitShingo Hiraya
 
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)Kazuhiro Yoshimoto
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?Yuki Ishikawa
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門Kohki Miki
 
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・AndroidアプリハンズオンJavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・AndroidアプリハンズオンKazuhiro Yoshimoto
 
let UIWebView as WKWebView
let UIWebView as WKWebViewlet UIWebView as WKWebView
let UIWebView as WKWebViewTaketo Sano
 
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?Kosuke Ogawa
 
Angular js or_backbonejs
Angular js or_backbonejsAngular js or_backbonejs
Angular js or_backbonejsOmasa Yusaku
 

What's hot (17)

なぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのかなぜ人は必死でjQueryを捨てようとしているのか
なぜ人は必死でjQueryを捨てようとしているのか
 
iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018iOS WKWebViewの魔改造 - iOSDC 2018
iOS WKWebViewの魔改造 - iOSDC 2018
 
まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?まだDOM操作で消耗してるの?
まだDOM操作で消耗してるの?
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱いiOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
 
iOS 9 Bootcamp #6 UIKit
iOS 9 Bootcamp #6 UIKitiOS 9 Bootcamp #6 UIKit
iOS 9 Bootcamp #6 UIKit
 
さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)さわってみようReact.js、AngularJS(1系、2系)
さわってみようReact.js、AngularJS(1系、2系)
 
iOS WebView App
iOS WebView AppiOS WebView App
iOS WebView App
 
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
 
20120609
2012060920120609
20120609
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門
 
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・AndroidアプリハンズオンJavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
JavaScript(AngularJS・React.js)で作る iOS・Androidアプリハンズオン
 
let UIWebView as WKWebView
let UIWebView as WKWebViewlet UIWebView as WKWebView
let UIWebView as WKWebView
 
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
 
20120128
2012012820120128
20120128
 
Angular js or_backbonejs
Angular js or_backbonejsAngular js or_backbonejs
Angular js or_backbonejs
 

Similar to Intoroduction to React.js

Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmchuck h
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamentalTakuya Kumagai
 
Create android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React NaticeCreate android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React NaticeGMO-Z.com Vietnam Lab Center
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできることkamiyam .
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門Kazuhiro Yoshimoto
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Akira Inoue
 
React.jsでHowManyPizza
React.jsでHowManyPizzaReact.jsでHowManyPizza
React.jsでHowManyPizza松田 千尋
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScripteiji sekiya
 
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)Recruit Lifestyle Co., Ltd.
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテストYoichiro Sakurai
 
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57Toshiaki Maki
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2Moto Yan
 
React + Reduxで作る対話AI
React + Reduxで作る対話AIReact + Reduxで作る対話AI
React + Reduxで作る対話AIKentaro Tada
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークsairoutine
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発tak-nakamura
 
HTML5の前のJavaScript入門
HTML5の前のJavaScript入門HTML5の前のJavaScript入門
HTML5の前のJavaScript入門Hiroki Toyokawa
 

Similar to Intoroduction to React.js (20)

Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
 
Web development fundamental
Web development fundamentalWeb development fundamental
Web development fundamental
 
Create android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React NaticeCreate android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React Natice
 
WebStormでできること
WebStormでできることWebStormでできること
WebStormでできること
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
React.jsでHowManyPizza
React.jsでHowManyPizzaReact.jsでHowManyPizza
React.jsでHowManyPizza
 
JavaScript 研修
JavaScript 研修JavaScript 研修
JavaScript 研修
 
マークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScriptマークアップ講座 04 jQuery - JavaScript
マークアップ講座 04 jQuery - JavaScript
 
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
レガシーと向き合い技術スタックを代謝する(ElasticBeanstalk / Vue.js)
 
javascript を Xcode でテスト
javascript を Xcode でテストjavascript を Xcode でテスト
javascript を Xcode でテスト
 
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2
 
React + Reduxで作る対話AI
React + Reduxで作る対話AIReact + Reduxで作る対話AI
React + Reduxで作る対話AI
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
HTML5の前のJavaScript入門
HTML5の前のJavaScript入門HTML5の前のJavaScript入門
HTML5の前のJavaScript入門
 
Reactのおさらい
ReactのおさらいReactのおさらい
Reactのおさらい
 
Reduxについて
ReduxについてReduxについて
Reduxについて
 

More from Yuto Matsukubo

がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!Yuto Matsukubo
 
明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理Yuto Matsukubo
 
Go/gRPCはじめました
Go/gRPCはじめましたGo/gRPCはじめました
Go/gRPCはじめましたYuto Matsukubo
 
非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話Yuto Matsukubo
 
GCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析するGCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析するYuto Matsukubo
 
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたいYuto Matsukubo
 
Rubyistを誘うScalaの世界 2.0
Rubyistを誘うScalaの世界 2.0Rubyistを誘うScalaの世界 2.0
Rubyistを誘うScalaの世界 2.0Yuto Matsukubo
 
Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界Yuto Matsukubo
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話Yuto Matsukubo
 

More from Yuto Matsukubo (10)

がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!がんばれテックリード!JIRA芸人篇!!
がんばれテックリード!JIRA芸人篇!!
 
明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理明日から使える気になるGo言語による並行処理
明日から使える気になるGo言語による並行処理
 
Go/gRPCはじめました
Go/gRPCはじめましたGo/gRPCはじめました
Go/gRPCはじめました
 
非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話非エンジニア向け技術セミナーをした話
非エンジニア向け技術セミナーをした話
 
GCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析するGCPでSplatoonの戦績を分析する
GCPでSplatoonの戦績を分析する
 
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
「オブジェクト指向設計実践ガイド」を読んだので誰かに意見聞きたい
 
Rubyistを誘うScalaの世界 2.0
Rubyistを誘うScalaの世界 2.0Rubyistを誘うScalaの世界 2.0
Rubyistを誘うScalaの世界 2.0
 
Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界Rubyistを誘うScalaの世界
Rubyistを誘うScalaの世界
 
はじめてのTDD
はじめてのTDDはじめてのTDD
はじめてのTDD
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
 

Intoroduction to React.js