SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Om Next ~React.js を超えて
2017/03/14
nishi-shinju-clojure#1
@goronao
ハッシュタグ : #nishi-shinju-clojure
自己紹介
• @goronao
• Clojure / Script 歴約二年
• 好きな Project : component / duct / om / reagent
• 最近は job-streamer の保守開発をやってます
https://github.com/job-streamer
Om : React.js の ClojureScript ラッパー +α(om-0.9)
Om Next : Om の後継 (om-1.0)
• 今日はこの流れを前提に Om Next がどの様に
React.js を超えているか話します
※ React.js 自体や周辺の JS ライブラリには触れますが詳述は
しません(出来ません)
Om Next とは
React.js ➡ React.js ➡
cljs+α cljc+α+α
React.js
Om Om Next
Om Next とは
• Om Next の主要な仕様
• UI
• グローバル状態管理
• クライアントサーバアーキテクチャ
• サーバサイドサポート
• Reconciler
UI
• Om Next における React Component 定義
• om.next/defui というマクロで定義する
• React Component + メタデータ
UI
• 赤枠内が React.js のrender 実装
• その他 lifecycle methods(componentDidMount等)も実装可能
UI
• 赤枠内は後述
• React Component 以外に描画データ用のメタ情報を定義できる
UI
• これは単純に React.js のラッパーとしての機能
• React Component のデータ管理に関する問題
• React Component は2種類のデータを持つ
• Props : 親から受け継がれる Immutable なデータ
• State : Component 自体が保持する Mutable なデータ
更新が再描画の条件となる
• State(状態)が複雑性の原因
• React Component それぞれが状態を持つため管理が難しい
• 全体の情報を参照できない
• 自分以外の Component の状態更新
UI
State
State
State State State
State
Props
Props
Props
Props Props
Components
描画
UI
State
State
State State State
State
Props
Props
Props
Props Props
update
Components
UI
State
State
State State State
State
Props
Props
Props
Props Props
update
Components
再描画
UI
State
State
State State State
State
Props
Props
Props
Props Props
update
Components
再描画
グローバル状態管理
• 状態をアプリケーション全体で1つだけ持つ
• グローバル状態はツリー構造を取りこれを参照・更新
• Component はPropsで受け渡されるデータを描画すればよいだけ
• 状態の更新に伴い Component ツリー上の対応箇所を再描画
• React.js の場合
• Redux を組み合わせて実現
• Om(旧) の場合
• グローバル状態管理をサポート
• 再描画する Component を決定するために、状態と Component ツ
リーの対応を定義する cursors という仕組みも導入
グローバル状態管理(Om)
Props
Props
Props
Props Props
Components State
cursors
により対応
Props
cursor cursor cursor
cursor cursor
cursor
Props
Props
Props
Props Props
Components State
PropsMount
描画
グローバル状態管理(Om)
Props
Props
Props
Props Props
Components State
Props
グローバル状態管理(Om)
cursors
によって対応
transact!
cursor
Props
Props
Props
Props Props
Components State
再描画
Props
グローバル状態管理(Om)
cursors
によって対応
cursor
transact!
グローバル状態管理
• Om(旧) の場合
• グローバル状態の導入で状態管理はシンプルに
• 状態と Component ツリーの対応関係を cursors で定義
• しかしグローバル状態と Component が密結合してしまう問題がある
• cursor はグローバル状態のサブセットでありツリー構造を取る
• UI はツリー構造の状態に紐づけられるとは限らない(むしろ稀)
• Om Next の場合
• グローバル状態管理を同様にサポート
• 次に触れるクライアントサーバアーキテクチャによって状態を
Component から分離し上記の問題の解決を図る
クライアントサーバアーキテクチャ
1. クライアントサイドにサーバ(の様なもの)を設ける
• 必要な情報操作(Read, Mutate)はルーター(Parser)にクエリを発
行して対応する処理を実行
• 直接 Component から状態を操作しないため両者の分離が図れる
parser定義(実態は multimethod) read, mutate クエリ
クライアントサーバアーキテクチャ
• Read クエリは UI に定義する
• View に全く関係ないデータは取る意味ない
• グローバル状態からの単純な抜き出しなら Parser の実装不要
クライアントサーバアーキテクチャ
Components State
Query
Read
:products/list
:products/cart
:products/purchase
Parser
Mutate
'cart/add-product
'cart/remove-product
'products/purchase
QueryQuery
Query Query
Query
クライアントサーバアーキテクチャ
Components State
Query
Read
:products/list
:products/cart
:products/purchase
Parser
Mutate
'cart/add-product
'cart/remove-product
'products/purchase
QueryQuery
Query Query
Query
クライアントサーバアーキテクチャ
Props
Props
Props
Props Props
Components State
Query
Parser
Mutate
'cart/add-product
'cart/remove-product
'products/purchase
QueryQuery
Query Query
Query
Props
Read
:products/list
:products/cart
:products/purchase
クライアントサーバアーキテクチャ
2. グローバル状態をグラフ構造で表現する
• グラフ構造を表現するためにはデータの一意性の定義が必要
• これも UI に定義する
• (下記例) product は :product/number で一意
クライアントサーバアーキテクチャ
• 一意性定義を基に Om Next はグローバル状態をグラフ構造に
ノーマライズ
• (下記例) name で一意にノーマライズ
クライアントサーバアーキテクチャ
• 以上 により Component と状態を分離した上で、
グラフ構造の状態と Component ツリーの対応を表現できる
• cursors の状態サブセットによる対応ではなく、
クエリによる状態参照でグラフと Component が紐づく
• UI (Component) はクエリと一意性定義を持つ ... ①
• クエリも UI (Component) への参照を持つ ... ②
①
②
クライアントサーバアーキテクチャ
Props
Props
Props
Props
Props
Components State
Query
Read
:products/list
:products/cart
:products/purchase
Parser
Mutate
'cart/add-product
'cart/remove-product
'products/purchase
QueryQuery
Query Query
Query
Props
transact!
クライアントサーバアーキテクチャ
Props
Props
Props
Props
Props
Components State
Query
Read
:products/list
:products/cart
:products/purchase
Parser
Mutate
'cart/add-product
'cart/remove-product
'products/purchase
QueryQuery
Query Query
Query
Props
クライアントサーバアーキテクチャ
Props
Props
Props
Props
Props
Components State
Query
Read
:products/list
:products/cart
:products/purchase
Parser
Mutate
'cart/add-product
'cart/remove-product
'products/purchase
QueryQuery
Query Query
Query
Props
再描画
クライアントサーバアーキテクチャ
• React.js の場合
• Redux / GraphQL あたりまで組み合わせて実現(ざっくり)
• GraphQL も参照型を持ちグラフ構造が表現可能
• 通常、GraphQL はサーバサイドとの通信に用いる
• Om Next の場合
• サーバサイドもサポートする
サーバサイドサポート
• サーバサイド Parser
• クライアントサイドと同じ構文でサーバサイドにも Parser を定義可能
• 単一のエンドポイントで公開
• エンドポイントの呼び出し定義と、サーバサイド Parser を呼び出す
ルートの定義をする(:remoteキーを含んだマップを返すだけ)
サーバサイドサポート
Components State
Read
:products/list ➡ {:remote true}
:products/cart
:products/purchase
Parser(Client Side)
Mutate
'cart/add-product
'cart/remove-product
‘products/purchase
➡ {:remote true}
Query Query
Query
Read
:products/list
Mutate
'products/purchase
Parser(Server Side)
transact!
サーバサイドサポート
Components StateParser(Client Side)
Mutate
'cart/add-product
'cart/remove-product
‘products/purchase
➡ {:remote true}
Query Query
Query
Read
:products/list
Mutate
'products/purchase
Parser(Server Side)
Props
Read
:products/list ➡ {:remote true}
:products/cart
:products/purchase
自動マージ
サーバサイドサポート
• Om Next の場合
• サーバサイドのRead クエリ結果はグローバル状態へ自動マージ
• Parser とグローバル状態が一元管理されているため、
遅延読み込みや楽観的更新も簡単に実現可能
• React.js の場合
• Redux / GraphQL / Relay を組み合わせて実現(ざっくり)
• 当然サーバサイド (Node.jsなど) も別に用意が必要
Reconciler
• 紹介してきた機能を実現するためには全体の統合が必要
• Om Next でそれを担っているのが Reconciler
• 諸々の定義を渡して生成
• グローバル状態、parser、サーバとの通信方法
• Component ツリー構築時に渡すと後はよきに計らってくれる
Query Server
Reconciler
Components State
Read
Reconciler
Mutate
Read
/api/query
Mutate
React.js / Om / Om Next 比較
• Om Next ~ React.js + Redux + GraphQL + Relay + Node.js?
• 組み合わせを選択しなければならないのはそれ自体 React.js の
Cons ではある(Falcor vs. GraphQL でも同じような議論)
React.js Om Om Next
UI - React.js 同等 React.js 同等
グローバル状態管理 なし
(+Redux が必要)
あり
(ツリー構造)
あり
(グラフ構造)
クライアントサーバ
アーキテクチャ
なし
(+Redux / GraphQL が必要)
なし あり
サーバサイド
サポート
なし
(+Redux / GraphQL
/ Relay / Node.js が必要)
なし あり
Om Next 独自機能
• React.js+周辺ライブラリで実現できない機能も存在する
• JVM でサーバサイドレンダリング
• 俺達には cljc がある!
• ui, parser, reconciler いずれもサーバサイド(JVM)上に実装可能
https://designudge.org/ja/stories/1481369485901_fe99b3b7/
• 描画効率の改善
• Incremental Rendering
• Reconciler が状態とComponentの関係を全て把握(Indexer)
しているためより効率的な再描画が可能
https://anmonteiro.com/2016/09/om-next-internals-incremental-
rendering/
Incremental Rendering
Props
Props
Props
Props
Props
Components State
Query
Read
:products/list
:products/cart
:products/purchase
Parser
Mutate
'cart/add-product
'cart/remove-product
'products/purchase
QueryQuery
Query Query
Query
Props
再描画
Om Next Cons
• Clojurian 以外へのハードル爆上げ
• 学習曲線が急すぎる
• 機能多すぎる
• GraphQL, Relay 等を先に学習しないとアーキテクチャの理解が厳しい
• ロードマップが不明
• もうコンセプトにぶれはなさそう
• Circle CI で使ってるし...
• 状態管理方式の選択
• Component 状態は閉じられているわけではないのでアーキテクチャを
理解しないとこれまで紹介した問題は依然発生する
Om Next の採用シーン
• クライアント側の状態管理が複雑なアプリケーション
• 多様なソース(サーバからのデータ、クライアントオンリーデータ、
Web Storageに保存されたデータ)からのデータを扱う
• それぞれの更新も頻繁に発生
• Om Next では Reconciler が上手く統合してくれる
• CircleCI はまさにこれ
• UI の変更が多いアプリケーション
• Om Next は Component 自身が自分の必要とするデータを宣言してい
るため変更に強い
• (既存の Clojure / Script 資産がある場合...)
まとめ
• Om Next は二つの意味で React.js を超えていると言える
• React.js 単体で実現できない機能(Redux, GraphQL, Relayの責務)
をサポート
• 更にそれらの組み合わせでも実現できない魅力的な機能が存在
• 採用にやや不安はあるものの、最新のフロントエンド界隈の知
識が得られるため学んでおいて損はない
Try Om Next!
ありがとうございました

Contenu connexe

Tendances

Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムYu Nobuoka
 
第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編ksimoji
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザインKazuhiro Hara
 
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例sohta
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点Jun-ichi Sakamoto
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加するYuto Takei
 
Clojure Language Update (2015)
Clojure Language Update (2015)Clojure Language Update (2015)
Clojure Language Update (2015)sohta
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
Gws 20141024 gradle_intro
Gws 20141024 gradle_introGws 20141024 gradle_intro
Gws 20141024 gradle_introNobuhiro Sue
 
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを 開発できる Blazor ― その魅力Jun-ichi Sakamoto
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはJun-ichi Sakamoto
 
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_advancedJjug 20140430 gradle_advanced
Jjug 20140430 gradle_advancedMasatoshi Hayashi
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8masahitojp
 
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basicJjug 20140430 gradle_basic
Jjug 20140430 gradle_basicTakuma Watabiki
 
OSS Product feat. Gradle
OSS Product feat. GradleOSS Product feat. Gradle
OSS Product feat. GradleYasuharu Nakano
 
QML上にOpenGLのカスタムエレメントを表示する
QML上にOpenGLのカスタムエレメントを表示するQML上にOpenGLのカスタムエレメントを表示する
QML上にOpenGLのカスタムエレメントを表示するnobo66
 

Tendances (20)

Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステム
 
第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編第9回rest勉強会 ダウンロード・アップロード編
第9回rest勉強会 ダウンロード・アップロード編
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザイン
 
プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例プログラミング言語Clojureのニャンパスでの活用事例
プログラミング言語Clojureのニャンパスでの活用事例
 
Gradle handson
Gradle handsonGradle handson
Gradle handson
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
Gradle布教活動
Gradle布教活動Gradle布教活動
Gradle布教活動
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
 
Windows コンテナを AKS に追加する
Windows コンテナを AKS に追加するWindows コンテナを AKS に追加する
Windows コンテナを AKS に追加する
 
Clojure Language Update (2015)
Clojure Language Update (2015)Clojure Language Update (2015)
Clojure Language Update (2015)
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
Gws 20141024 gradle_intro
Gws 20141024 gradle_introGws 20141024 gradle_intro
Gws 20141024 gradle_intro
 
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
C# で Single Page Web アプリを開発できる Blazor ― その魅力C# で Single Page Web アプリを開発できる Blazor ― その魅力
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
 
REACT & WEB API
REACT & WEB APIREACT & WEB API
REACT & WEB API
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
Jjug 20140430 gradle_advanced
Jjug 20140430 gradle_advancedJjug 20140430 gradle_advanced
Jjug 20140430 gradle_advanced
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8
 
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basicJjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
 
OSS Product feat. Gradle
OSS Product feat. GradleOSS Product feat. Gradle
OSS Product feat. Gradle
 
QML上にOpenGLのカスタムエレメントを表示する
QML上にOpenGLのカスタムエレメントを表示するQML上にOpenGLのカスタムエレメントを表示する
QML上にOpenGLのカスタムエレメントを表示する
 

En vedette

Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話Ikuru Kanuma
 
10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
 10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot 10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
10 Things You Didn’t Know About Mobile Email from Litmus & HubSpotHubSpot
 
How to Earn the Attention of Today's Buyer
How to Earn the Attention of Today's BuyerHow to Earn the Attention of Today's Buyer
How to Earn the Attention of Today's BuyerHubSpot
 
25 Discovery Call Questions
25 Discovery Call Questions25 Discovery Call Questions
25 Discovery Call QuestionsHubSpot
 
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...HubSpot
 
Class 1: Email Marketing Certification course: Email Marketing and Your Business
Class 1: Email Marketing Certification course: Email Marketing and Your BusinessClass 1: Email Marketing Certification course: Email Marketing and Your Business
Class 1: Email Marketing Certification course: Email Marketing and Your BusinessHubSpot
 
Behind the Scenes: Launching HubSpot Tokyo
Behind the Scenes: Launching HubSpot TokyoBehind the Scenes: Launching HubSpot Tokyo
Behind the Scenes: Launching HubSpot TokyoHubSpot
 
HubSpot Diversity Data 2016
HubSpot Diversity Data 2016HubSpot Diversity Data 2016
HubSpot Diversity Data 2016HubSpot
 
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...HubSpot
 
What is Inbound Recruiting?
What is Inbound Recruiting?What is Inbound Recruiting?
What is Inbound Recruiting?HubSpot
 
3 Proven Sales Email Templates Used by Successful Companies
3 Proven Sales Email Templates Used by Successful Companies3 Proven Sales Email Templates Used by Successful Companies
3 Proven Sales Email Templates Used by Successful CompaniesHubSpot
 
Add the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-ThonAdd the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-ThonHubSpot
 
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったことRecruit Technologies
 
Experience E-Commerce with SAP Hybris With the rise of globalization and intr...
Experience E-Commerce with SAP Hybris With the rise of globalization and intr...Experience E-Commerce with SAP Hybris With the rise of globalization and intr...
Experience E-Commerce with SAP Hybris With the rise of globalization and intr...YASH Technologies
 
Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...
Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...
Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...Michal Kreczmar
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかIchito Nagata
 

En vedette (16)

Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話
 
10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
 10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot 10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
10 Things You Didn’t Know About Mobile Email from Litmus & HubSpot
 
How to Earn the Attention of Today's Buyer
How to Earn the Attention of Today's BuyerHow to Earn the Attention of Today's Buyer
How to Earn the Attention of Today's Buyer
 
25 Discovery Call Questions
25 Discovery Call Questions25 Discovery Call Questions
25 Discovery Call Questions
 
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
Modern Prospecting Techniques for Connecting with Prospects (from Sales Hacke...
 
Class 1: Email Marketing Certification course: Email Marketing and Your Business
Class 1: Email Marketing Certification course: Email Marketing and Your BusinessClass 1: Email Marketing Certification course: Email Marketing and Your Business
Class 1: Email Marketing Certification course: Email Marketing and Your Business
 
Behind the Scenes: Launching HubSpot Tokyo
Behind the Scenes: Launching HubSpot TokyoBehind the Scenes: Launching HubSpot Tokyo
Behind the Scenes: Launching HubSpot Tokyo
 
HubSpot Diversity Data 2016
HubSpot Diversity Data 2016HubSpot Diversity Data 2016
HubSpot Diversity Data 2016
 
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
Why People Block Ads (And What It Means for Marketers and Advertisers) [New R...
 
What is Inbound Recruiting?
What is Inbound Recruiting?What is Inbound Recruiting?
What is Inbound Recruiting?
 
3 Proven Sales Email Templates Used by Successful Companies
3 Proven Sales Email Templates Used by Successful Companies3 Proven Sales Email Templates Used by Successful Companies
3 Proven Sales Email Templates Used by Successful Companies
 
Add the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-ThonAdd the Women Back: Wikipedia Edit-a-Thon
Add the Women Back: Wikipedia Edit-a-Thon
 
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと
 
Experience E-Commerce with SAP Hybris With the rise of globalization and intr...
Experience E-Commerce with SAP Hybris With the rise of globalization and intr...Experience E-Commerce with SAP Hybris With the rise of globalization and intr...
Experience E-Commerce with SAP Hybris With the rise of globalization and intr...
 
Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...
Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...
Wideo: więcej, szybciej, lepiej. Jak cyfrowa rewolucja zmienia rynek treści w...
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
 

Similaire à Om Next ~React.jsを超えて

多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発tak-nakamura
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Akira Inoue
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )ロフト くん
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたItaru Kitagawa
 
React es2015
React es2015React es2015
React es2015t-onizawa
 
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編ksimoji
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Microsoft Azure Japan
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architectureIssei Hiraoka
 
Thin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikamThin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikamToshiaki Maki
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~normalian
 
codeless/serverless develop
codeless/serverless develop codeless/serverless develop
codeless/serverless develop Tomoyuki Obi
 
JAZUG クラウドデザインパターンのコードを覗く
JAZUG クラウドデザインパターンのコードを覗くJAZUG クラウドデザインパターンのコードを覗く
JAZUG クラウドデザインパターンのコードを覗くTakekazu Omi
 

Similaire à Om Next ~React.jsを超えて (20)

Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
Study Intro Backbone
Study Intro BackboneStudy Intro Backbone
Study Intro Backbone
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
 
React es2015
React es2015React es2015
React es2015
 
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
 
Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編Smart Store サーバーレスアーキテクチャ編
Smart Store サーバーレスアーキテクチャ編
 
20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture20190514 Smart Store - Azure servlerless architecture
20190514 Smart Store - Azure servlerless architecture
 
Thin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikamThin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikam
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
テスト
テストテスト
テスト
 
Angular2
Angular2Angular2
Angular2
 
Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
 
codeless/serverless develop
codeless/serverless develop codeless/serverless develop
codeless/serverless develop
 
JAZUG クラウドデザインパターンのコードを覗く
JAZUG クラウドデザインパターンのコードを覗くJAZUG クラウドデザインパターンのコードを覗く
JAZUG クラウドデザインパターンのコードを覗く
 

Dernier

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 

Dernier (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Om Next ~React.jsを超えて