SlideShare a Scribd company logo
まだ DOM 操作で
消耗してるの?
2015.06.06
(だいたい)新卒エンジニア向け技術交流会 vol.3
まだ DOM 操作で消耗してるの?
!?
こんばんは
hoge17296
です!!!!!
hoto

17296
とうとうプログラマ歴

10 年目に突入
まだ DOM 操作で消耗してるの?
それでも 10 年で
いろいろなものを見てきた
クライアントサイド JS
近代史
∼ 2004 年
• JS は「 Web にちょっと動きを加えるもの」
• 「JSが動かない環境のことも

 考えなきゃダメでしょ!!!」
• リッチなことは Flash でやれ
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
まだ DOM 操作で消耗してるの?
Flash 黄金時代
人生の絶頂
2005 年
まだ DOM 操作で消耗してるの?
Ajax の誕生
• 実は昔からあったけど知られていなかった

XMLHttpRequest が Google Maps によって

再発見されて一躍有名に
• Ajax (Asynchronous JavaScript + XML) という

言葉が生まれる
• しかしまだまだ敷居が高い
2006 年
まだ DOM 操作で消耗してるの?
jQuery の衝撃
• クライアントサイドプログラミングの敷居を

圧倒的に下げた
• DOM 操作
• イベント処理
• クロスブラウザ
• Ajax
$()
あまいあまい
シンタックス
シュガー
jQuery 職人が社会問題に
「これグーグルみたいに

 ギュイーンって感じで

 できるよね?」
まだ DOM 操作で消耗してるの?
...とは言えない
• なまじ jQuery があればそこそこ出来てしまう
• ちょっとググればプラグインが落ちてる
• 出来るような気がしてしまう
• 「出来て当たり前」として要求される
なにがつらいか
すべての DOM の状態管理
• どの DOM が今どんな値を持っているか
• どの DOM から何のイベントが発火するか
• この値が変わったらどの DOM を

書き換えないといけないか
コンポーネントが増えるたび
考えるべきことが
指数関数的に増えていく
プログラミング
一部の優れた職人にしか
成し得ない超絶技巧
そして
2010 年
Single
Page
Application
Single Page Application
• HTML5 の history.pushState によって

URL の動的書き換えが可能に
• ページ遷移という概念を超越した

クライアントサイドプログラミングの極地
例
「SPAで作ってね!!!」
「でも history.back しても前のビューの

 スクロール位置保持してるの当然だし

 情報も更新されてるよね!!!」
もはや
人間業ではない
こんなものが
”当たり前”として
要求される世の中は
絶対に間違っている
俺は
もう
2014 年
まだ DOM 操作で消耗してるの?
React
• Facebook 製の UI ライブラリ
• フレームワークじゃない
• 特徴
• リアクティブプログラミング
• Virtual DOM
もう DOM 操作しなくていい
• 変更があったら HTML 全体を書き換える
• 常に最新の状態の DOM を

レンダリングし続ければいいだけ
• React が内部で diff / patch してくれるから

遅くない
DEMO
http://bit.ly/mtg_timer
「事ある毎に最新の HTML を

レンダリングする」
???
これって昔ページ遷移で
やっていたことじゃないか
シンプルで古い
この概念こそ
正しかった
ぼくたちは
ちょっと歪んでいた
だけだったんだ
まとめ
• ぼくたちは DOM 操作という

苦痛を強いられている
• 麻薬 (jQuery) による対症療法も限界が来ている
• React によってぼくたちは解放される
楽しかったあの頃に戻ろう
まだ DOM 操作で消耗してるの?
まだ DOM 操作で
消耗してるの?

More Related Content

PDF
SIROK技術勉強会 #1 「Reactってなんだ?」
PDF
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
PDF
Web API入門
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
PDF
広告配信のための高速疎ベクトル検索エンジンの開発@WebDBフォーラム2015 #webdbf2015
PDF
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
PPTX
[CEDEC2017] LINEゲームのセキュリティ診断手法
PPTX
XAMLで業務アプリがこんなに変わる!デザイン志向による業務アプリの事例紹介
SIROK技術勉強会 #1 「Reactってなんだ?」
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
Web API入門
ソーシャルゲーム案件におけるDB分割のPHP実装
広告配信のための高速疎ベクトル検索エンジンの開発@WebDBフォーラム2015 #webdbf2015
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
[CEDEC2017] LINEゲームのセキュリティ診断手法
XAMLで業務アプリがこんなに変わる!デザイン志向による業務アプリの事例紹介

What's hot (20)

PDF
RESTful API 入門
PDF
超連射68K 開発日記 -弾幕世代以前の90年代 STG のこと-
PDF
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
PDF
機械学習のための数学のおさらい
PPTX
今からでも遅くない! React事始め
PDF
jqで極めるシェル芸の話
PDF
Hubsカスタマイズ 行動ログ取得やバックエンドの話
PPTX
Sano tokyowebmining 201625_v04
PDF
推薦アルゴリズムの今までとこれから
PDF
はじめてのConfluence!一歩を踏み出そう!
PPTX
Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning
PPTX
C#とILとネイティブと
PPT
CEDEC 2009 Imagire Day 2009
PPTX
このPHP QAツールがすごい!2019
PPTX
Web Intents入門
PPTX
OpenVRやOpenXRの基本的なことを調べてみた
PPTX
ミクシィ 21卒向け Android研修
PDF
すごい constexpr たのしくレイトレ!
PDF
実社会・実環境におけるロボットの機械学習 ver. 2
PPTX
5分で出来る!イケてるconfluenceページ
RESTful API 入門
超連射68K 開発日記 -弾幕世代以前の90年代 STG のこと-
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
機械学習のための数学のおさらい
今からでも遅くない! React事始め
jqで極めるシェル芸の話
Hubsカスタマイズ 行動ログ取得やバックエンドの話
Sano tokyowebmining 201625_v04
推薦アルゴリズムの今までとこれから
はじめてのConfluence!一歩を踏み出そう!
Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning
C#とILとネイティブと
CEDEC 2009 Imagire Day 2009
このPHP QAツールがすごい!2019
Web Intents入門
OpenVRやOpenXRの基本的なことを調べてみた
ミクシィ 21卒向け Android研修
すごい constexpr たのしくレイトレ!
実社会・実環境におけるロボットの機械学習 ver. 2
5分で出来る!イケてるconfluenceページ
Ad

Viewers also liked (10)

PDF
なぜ人は必死でjQueryを捨てようとしているのか
PDF
フロントエンド初学者がSPAに手を出してみた
PPTX
React を導入した フロントエンド開発
PDF
エンジニアが幸せな人生を過ごすための学び方、関わり方、ありかた
PDF
HTML5のAPI群をただひたすらに触ってみた記録
PDF
今どきの若手育成にひそむ3つの思いこみ
PDF
React系(別言語含む)の サーバーサイドレンダリング について考えよう
PDF
JustTechTalk#10 React開発における自動テスト実践
PDF
JustTechTalk#10windowsアプリでのテスト自動化事例
PPTX
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
なぜ人は必死でjQueryを捨てようとしているのか
フロントエンド初学者がSPAに手を出してみた
React を導入した フロントエンド開発
エンジニアが幸せな人生を過ごすための学び方、関わり方、ありかた
HTML5のAPI群をただひたすらに触ってみた記録
今どきの若手育成にひそむ3つの思いこみ
React系(別言語含む)の サーバーサイドレンダリング について考えよう
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10windowsアプリでのテスト自動化事例
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
Ad

Similar to まだ DOM 操作で消耗してるの? (17)

PDF
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
PPT
Client Side Cache
PDF
Chrome Developer Toolsを使いこなそう!
PPTX
HTML5最新動向
PDF
Angularreflex20141210
PDF
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら
PDF
Browser Computing Structure
ODP
関西FirefoxOS勉強会 3rd GIG
PPTX
HTML5&API総まくり
PDF
Web制作勉強会 #2
PDF
JavaScript.Next Returns
PDF
JavaScript 研修
KEY
WordPress プラグイン Infinite Scroll を試してみた
PDF
モダンWeb開発ワークショップ
PDF
jQuery Performance Tips – jQueryにおける高速化 -
PPTX
オフラインファーストの思想と実践
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Client Side Cache
Chrome Developer Toolsを使いこなそう!
HTML5最新動向
Angularreflex20141210
Flashじゃなくて HTML5で ビュンビュン動くサイトを 作ってと言われたら
Browser Computing Structure
関西FirefoxOS勉強会 3rd GIG
HTML5&API総まくり
Web制作勉強会 #2
JavaScript.Next Returns
JavaScript 研修
WordPress プラグイン Infinite Scroll を試してみた
モダンWeb開発ワークショップ
jQuery Performance Tips – jQueryにおける高速化 -
オフラインファーストの思想と実践

More from Yuki Ishikawa (20)

PDF
Introduction to GPU Programming in Python
PDF
新婚旅行を支える技術
PDF
ラマダーン入門
PDF
ステージング環境のつくりかた
PDF
マッカレル de おうちハック
PDF
スタートアップのくせになまいきだ
PDF
JavaScript over HTTP/2
PDF
コンポーネント時代の CSS 設計
PDF
React+fluxを導入した話
PDF
闇の魔術に対する防衛術
PDF
サーバを運用する時代は終わった
PDF
Apple に依存する僕の生存戦略
PDF
gulp芸
PDF
アニメーションしたい
PDF
趣きのある Bot
PDF
Bot に家計を任せる
PDF
時をかけるほと
PDF
( ゚∀゚)o彡° Flux! Flux!
PDF
peco活用術
PDF
Botと対話する
Introduction to GPU Programming in Python
新婚旅行を支える技術
ラマダーン入門
ステージング環境のつくりかた
マッカレル de おうちハック
スタートアップのくせになまいきだ
JavaScript over HTTP/2
コンポーネント時代の CSS 設計
React+fluxを導入した話
闇の魔術に対する防衛術
サーバを運用する時代は終わった
Apple に依存する僕の生存戦略
gulp芸
アニメーションしたい
趣きのある Bot
Bot に家計を任せる
時をかけるほと
( ゚∀゚)o彡° Flux! Flux!
peco活用術
Botと対話する

まだ DOM 操作で消耗してるの?