Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IndexedDB, Worker, Server-side Rendering そしてフロン...
Search
OKUNOKENTARO
August 28, 2016
Technology
15
2.6k
IndexedDB, Worker, Server-side Rendering そしてフロントエンドの未来
GRAND FRONTEND OSAKA 2016にて発表した登壇資料です。
OKUNOKENTARO
August 28, 2016
Tweet
Share
More Decks by OKUNOKENTARO
See All by OKUNOKENTARO
トレタO/X アーキテクチャ移行記 Next.js App Router化への道のり / TORETA TECH UPDATE 1
okunokentaro
5
11k
Podcastを継続する技術 / refactoradio-240119
okunokentaro
1
160
Webアプリケーション設計の第一歩は ディレクトリの整理から / Encraft 1
okunokentaro
34
10k
JSONとJSON Schemaを改めて理解する / tokyo_study
okunokentaro
9
2.3k
それでもどうしてRecoilを使うのか / Harajuku.ts Meetup Recoil
okunokentaro
19
5.5k
TypeScriptは10年でこんなに進化しました / TechFeed Experts Night 11
okunokentaro
6
1.7k
Hasura.io RDBをサクサク作る方法はARやO/RMだけじゃなくなりました/hasura-io
okunokentaro
5
640
コードには型アノテーションよりも要件アノテーションを増やせ!/harajukuts2
okunokentaro
14
6.2k
10年と3ヶ月でWebサービスを作った話 / Piyogrammer Conference 2021
okunokentaro
2
1k
Other Decks in Technology
See All in Technology
FODにおけるホーム画面編成のレコメンド
watarukudo
PRO
2
280
AWS re:Invent 2024 recap in 20min / JAWSUG 千葉 2025.1.14
shimy
1
100
デジタルアイデンティティ人材育成推進ワーキンググループ 翻訳サブワーキンググループ 活動報告 / 20250114-OIDF-J-EduWG-TranslationSWG
oidfj
0
550
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
16k
re:Invent2024 KeynoteのAmazon Q Developer考察
yusukeshimizu
1
150
TSのコードをRustで書き直した話
askua
3
290
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
200
メールヘッダーを見てみよう
hinono
0
120
Godot Engineについて調べてみた
unsoluble_sugar
0
430
My small contributions - Fujiwara Tech Conference 2025
ijin
0
1.5k
深層学習と3Dキャプチャ・3Dモデル生成(土木学会応用力学委員会 応用数理・AIセミナー)
pfn
PRO
0
460
東京Ruby会議12 Ruby と Rust と私 / Tokyo RubyKaigi 12 Ruby, Rust and me
eagletmt
3
890
Featured
See All Featured
A designer walks into a library…
pauljervisheath
205
24k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Six Lessons from altMBA
skipperchong
27
3.6k
Docker and Python
trallard
43
3.2k
It's Worth the Effort
3n
183
28k
Visualization
eitanlees
146
15k
Designing Experiences People Love
moore
139
23k
The Cost Of JavaScript in 2023
addyosmani
46
7.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Transcript
IndexedDB, Worker, Server-side Rendereing そしてフロントエンドの未来 Aug 28, 2016 / GRAND
FRONTEND OSAKA 2016 @armorik83
奥野 賢太郎 @armorik83 フロントエンドエンジニア ng-kyoto代表
• フロントエンド界隈で最近聞くワード • 今後学びやすくするために広く浅く紹介 • フロントエンドの本質とは • 未来はどうなるのか? • 未来を受け入れるためには?
今日する話
最近気になるワード
最近気になるワード • PWA • GraphQL • Server-side Rendering
• Progressive Web Apps・ • ウェブとアプリの両方の利点を兼ね備える • Google I/O 2016でも多くの時間を割かれた
PWA
• ネットワーク接続に依存しない • オフラインでも動作 • 常に最新の状態に保たれる • Progressive Enhancement・ •
機能は性能ごとに段階的に強化される • 低性能の端末でも最新端末でも利用できる PWAの特徴
• Web Components • Service Worker • IndexedDB PWA界隈でよく聞く用語
• UIの部品化 • jQuery, Bootstrapなどがあった • Web標準のUI部品化に関する規格 • 現在はまだWorking Draft
• 現時点で実装しているのはChromeのみ • PolyfillとしてライブラリPolymerが利用可能 • https://shop.polymer-project.org/ Web Components
• Custom Elements・ • 既存にはない新しいHTML要素を定義できる • Templates・ • <template>タグ •
Custom Elementsの雛形となるHTMLを定義 • Shadow DOM・ • DOMをカプセル化・ • CSSのスコープをShadow DOM内に限定 • 外部の干渉を防ぐ 主な仕様
• Web Workerの一種・ • 他には • Shared Worker・ • Audio
Worker・ など Service Worker
• 処理をメインとは別のスレッドに移す • バックグラウンドでの実行を可能に • UIを担当するメインスレッドの処理を 中断・遅延させずに実行できるという利点 • Web WorkerからDOMにはアクセスできない
そもそもWeb Workerとは
• Network Proxy・ • HTTPレスポンスを横取りできる • オフライン時の挙動を制御 • サーバ側の更新有無による適切なアクション •
Cache API・ • キャッシュされたリソースを用いて オフラインでも動作する • Push API・ • Push通知の表示、制御が行える Service Workerの特徴
• ブラウザ内で扱える永続化用のインタフェースAPI • インデックスやトランザクションを扱える • スキーマに関してversionという概念がある • APIは低級 • Dexie.jsなどのライブラリを介したほうが扱いやすい
IndexedDB
• Googleが運営するBaaS • 基本機能 • リアルタイムに更新されるNoSQLデータベース • OAuthなどの扱いやすい認証機構 • JSやAndroid,
iOSに向けられたSDK • 豊富なドキュメント • PWA開発でFirebaseを組み合わせる例も見かける Firebase
✔ PWA • GraphQL • Server-side Rendering 最近気になるワード
• クエリ言語 • Facebookによって開発 • 仕様書を公開 • RFCドラフト • W3Cによるものではないが注目の仕様
GraphQL
• REST API・ • 複数のエンドポイント • /user, /photo, /comment...・ •
HTTPリクエスト頻発 • 結果の表示順が不明 • オールインワンのエンドポイントでは? • リクエストは1回 • 重いのでユーザ体験が低下 現代のエンドポイント
• JSONに似た形式でクエリを記述 • クエリ構造と同形式のデータ構造で返ってくる • 描画に必要な情報を無駄なく取得 • Relay・ • ReactやGraphQLを横断的に扱えるフレームワーク
• Facebook社のInstagramはRelayで開発 GraphQLの特徴
• SPAの欠点 • 空のHTML内にJSフレームワークがDOMを生成 • 生成には時間がかかる • 初期ビューは可能な限り高速に表示すべき • SEOの観点での懸念
• フロントエンドが生成するDOMはクロールできない なぜServer-side Rendering
• バックエンドでHTMLを生成してから返す • DOM生成コストの短縮 • 生成内容がバックエンドの時点で確定している • クローリング対象となる • 現代の需要に対して答えるための側面が強い
• 未来感は無いがトレンド Server-side Rendering
フロントエンドの本質
• 出力 • バックエンドからのデータをユーザに提供したい • 入力 • バックエンドに送り永続化したい フロントエンドの本質
• バックエンドからのデータをユーザに提供 • 大量のデータ • 適切な粒度で画面に描画 • マークアップによる整合性 • デザインによる視認性
• コンポーネント指向という考え方 出力の本質
• クライアントでの入力 • フィールドへの入力 • クリックでの保存 などなど… • バックエンドに送り永続化 •
エンドポイントに適した形式へのデータ変換処理 • 前時代では考えられない厚さの JavaScript中間レイヤー 入力の本質
JavaScriptが書けるかどうか
ではない
• Observerパターン • Flux・ • CQRS/ES・ • リアクティブプログラミング • 与えられるまで何もするな
• 与えられたら常に正しい反応をしろ • 他が何をしているか知る必要はない データフローの適切な扱い
• ブラウザのDOM描画からの解放 • Server-side Rendering・ • 仮想DOM • React Native,
NativeScript・ • DOMを作りたいわけじゃない • 送られてきたデータをユーザに表示したいだけ • DOMの生成手段がなんなのか • その表示先がPCブラウザか、モバイル上か • もはや問題ではない 描画の抽象化
• 最新のWeb標準の仕様をどこまで追えるかのスキル • 自分が全部の仕様を追えなくてもいい • 追えてる人を見つけられるかのスキル • 変化を恐れないスキル Web標準への学習意欲
未来もJavaScriptなのだろうか
• フクシア • Googleが開発中のオープンソースOS • Linuxカーネルを使っていない • 2016年8月15日にひっそりと公開 • Flutter・
• インタフェース用フレームワーク • Dart・ • ポストJavaScriptを目的に設計された言語 Fuchsia
Dart?
None
Thank you! Aug 28, 2016 / GRAND FRONTEND OSAKA 2016
@armorik83