SlideShare uma empresa Scribd logo
1 de 74
Baixar para ler offline
/rizafahmi22/rizafahmi
Web dan PWA
Di 2020
/rizafahmi22/rizafahmi
Halo, saya Riza
/rizafahmi22/rizafahmi
Tentang Aplikasi Web
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Berbagi Aplikasi Web
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Berbagi Aplikasi Native
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Tentang Aplikasi Web
/rizafahmi22/rizafahmi
Tentang Aplikasi Web
•Mengembangkan aplikasi web dan peluncuran
(deployment) sangat mudah!
•Lebih mudah disebarkan atau dibagikan
•Bisa diakses di laptop/pc, ponsel, dsb
/rizafahmi22/rizafahmi
Kenapa Web tidak belum menjadi
Prioritas Utama?
/rizafahmi22/rizafahmi
Aplikasi Web itu Lemot?
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Akses ke Perangkat Keras Masih Terbatas
/rizafahmi22/rizafahmi
whatwebcando.today
/rizafahmi22/rizafahmi
Aplikasi Web kurang Memikat
/rizafahmi22/rizafahmi
UX lebih keren di aplikasi mobile
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Kenapa Web belum menjadi Prioritas
Utama?
/rizafahmi22/rizafahmi
Kenapa Web Belum Menjadi Prioritas Utama?
• Aplikasi web cenderung lebih lambat?
• Akses ke perangkat keras terbatas?
• Kurang memikat?
• Aplikasi mobile memiliki UX yang lebih menarik?
/rizafahmi22/rizafahmi
Progressive Web Apps
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Google Memperkenalkan Istilah PWA di 2015
/rizafahmi22/rizafahmi
“Build better experiences across
devices and contexts within a single
codebase.”
Alex Russell
Software Engineer, Google
Frances Berriman
Designer
/rizafahmi22/rizafahmi
Progressive Web Apps
Progresif
Dapat berjalan di berbagai device dan
fungsi bertambah secara progresif.
Performa Bagus
Secepat atau bahkan lebih cepat daripada
aplikasi native.
Mudah Dibagikan
Kemampuan untuk tetap mempertahankan
state ketika tautan dibagikan.
Responsif
Dapat dibuka di berbagai ukuran layar,
baik laptop/pc ataupun ponsel.
App-like
Mirip seperti aplikasi native. Menggunakan
arsitektur app shell, SPA, dl.
Connectivity-agnostic
Dapat berjalan dengan konektifitas yang
terbatas atau bahkan ketika tidak ada
koneksi sama sekali.
/rizafahmi22/rizafahmi
Progressive Web Apps
Installable
Dapat di-install di home screen
dan dapat langsung digunakan.
Selalu Update
Aplikasi selalu up to date ketika
terkoneksi ke internet.
Lebih Memikat
Memberikan pengalaman menarik dengan
fitur seperti push notification.
Mudah Ditemukan
Lebih mudah ditemukan dan mudah
dicari melalui mesin pencari.
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Google
Memperkenalkan PWA
2015
/rizafahmi22/rizafahmi
Google
Memperkenalkan PWA
2015 2017
Android
First-class PWA experience
/rizafahmi22/rizafahmi
Google
Memperkenalkan PWA
2015 2017 2018
Android
First-class PWA experience
Microsoft
Dukungan penuh PWA di
Windows
/rizafahmi22/rizafahmi
Google
Memperkenalkan PWA
2015 2017 2018 Jan,
2019
Android
First-class PWA experience
Microsoft
Dukungan penuh PWA di
Windows
Microsoft
MS Office versi PWA
/rizafahmi22/rizafahmi
Google
Memperkenalkan PWA
2015 2017 2018 Jan,
2019
Mar,
2019
Android
First-class PWA experience
Microsoft
Dukungan penuh PWA di
Windows
Microsoft
MS Office versi PWA
Apple
Dukungan iOS 12.2 untuk
PWA
Android
Play store PWA via
Trusted Web Activity
Google
PWA dapat diinstalasi
dengan Chrome
/rizafahmi22/rizafahmi
PWA di 2020
/rizafahmi22/rizafahmi
93%
dari pengguna internet saat ini dapat
mengakses web
/rizafahmi22/rizafahmi
86%
dari 93% tadi dapat melakukan
instalasi PWA
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Komponen PWA
/rizafahmi22/rizafahmi
Web App Manifest
/rizafahmi22/rizafahmi
{
"short_name": "Weather",
"name": "Weather: Do I need an umbrella?",
"description": "Weather forecast information",
"icons": [{
"src": "/images/icons-192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "/images/icons-512.png",
"type": "image/png",
"sizes": "512x512"
}],
"start_url": "/?source=pwa",
"background_color": "#3367D6",
"display": "standalone",
"scope": "/",
"theme_color": "#3367D6"
} manifest.json
/rizafahmi22/rizafahmi
Service Worker
/rizafahmi22/rizafahmi
if ('caches' in window) {
self.addEventListener('fetch', function (event) {
e.respondWith(
caches.match(event.request).then(function (response) {
if (response) {
return response;
}
return fetch(event.request);
})
);
});
} service-worker.js
/rizafahmi22/rizafahmi
if ('caches' in window) {
self.addEventListener('fetch', function (event) {
e.respondWith(
caches.match(event.request).then(function (response) {
if (response) {
return response;
}
return fetch(event.request);
})
);
});
} service-worker.js
/rizafahmi22/rizafahmi
if ('caches' in window) {
self.addEventListener('fetch', function (event) {
e.respondWith(
caches.match(event.request).then(function (response) {
if (response) {
return response;
}
return fetch(event.request);
})
);
});
} service-worker.js
/rizafahmi22/rizafahmi
Trusted Web Activity
/rizafahmi22/rizafahmi
$ npm i -g @bubblewrapcli
$ bubblewrap init --manifest https://mytwa.com/manifest.json
$ bubblewrap build
$ adb install app-release-signed.apk
/rizafahmi22/rizafahmi
PWA dan Prekembangan Selanjutnya
/rizafahmi22/rizafahmi
Project Fugu
/rizafahmi22/rizafahmi
“Sebuah usaha untuk mendekatkan
jurang pemisah antara platform web
dengan dunia native.”
/rizafahmi22/rizafahmi
Native File API
Face Detection API
const fd = new window.FaceDetector();
const img = document.querySelector('img');
fd.detect(img).then(function(faces) {
faces.forEach(function(face) {
const { top, left, width, height } = face.boundingBox;
const div = document.createElement('div');
div.classList.add('face');
div.style.cssText = `
top: ${top}px;
left: ${left}px;
width: ${width}px;
height: ${height}px;
border: 0.25em solid yellow;
position: absolute;
`;
document.querySelector('body').appendChild(div);
})
});
Face Detection API
const fd = new window.FaceDetector();
const img = document.querySelector('img');
fd.detect(img).then(function(faces) {
faces.forEach(function(face) {
const { top, left, width, height } = face.boundingBox;
const div = document.createElement('div');
div.classList.add('face');
div.style.cssText = `
top: ${top}px;
left: ${left}px;
width: ${width}px;
height: ${height}px;
border: 0.25em solid yellow;
position: absolute;
`;
document.querySelector('body').appendChild(div);
})
});
Face Detection API
const fd = new window.FaceDetector();
const img = document.querySelector('img');
fd.detect(img).then(function(faces) {
faces.forEach(function(face) {
const { top, left, width, height } = face.boundingBox;
const div = document.createElement('div');
div.classList.add('face');
div.style.cssText = `
top: ${top}px;
left: ${left}px;
width: ${width}px;
height: ${height}px;
border: 0.25em solid yellow;
position: absolute;
`;
document.querySelector('body').appendChild(div);
})
});
const fd = new window.FaceDetector();
const img = document.querySelector('img');
fd.detect(img).then(function(faces) {
faces.forEach(function(face) {
const { top, left, width, height } = face.boundingBox;
const div = document.createElement('div');
div.classList.add('face');
div.style.cssText = `
top: ${top}px;
left: ${left}px;
width: ${width}px;
height: ${height}px;
border: 0.25em solid yellow;
position: absolute;
`;
document.querySelector('body').appendChild(div);
})
});
Face Detection API
/rizafahmi22/rizafahmi
let { code, type } = await navigator.credentials.get({
otp: {
transport: ['sms']
}
});
Web OTP API
/rizafahmi22/rizafahmi
const options = {
filters: [{ vendorId: 0x239a }]
};
const device = await
navigator.usb.requestDevice(options);
console.log(
device.productName,
device.manufacturerName
);
Web USB
/rizafahmi22/rizafahmi
Web Serial
if ('serial' in navigator) {
try {
const port = await
navigator.serial.requestPort();
await port.open({ baudrate: 9600 });
this.reader = port.readable.getReader();
this.writer = port.writable.getWriter();
} catch (err) {
console.error('There was an error opening
the serial port:', err);
}
} else {
console.error(
"The Web serial API doesn't seem to be en
abled in your browser."
);
}
/rizafahmi22/rizafahmi
https://goo.gle/fugu-api-tracker
/rizafahmi22/rizafahmi
WebAssembly
/rizafahmi22/rizafahmi
Dukungan Untuk Bahasa Pemrograman
/rizafahmi22/rizafahmi
https://earth.google.com/web/
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
/rizafahmi22/rizafahmi
Progressive Web Apps
/rizafahmi22/rizafahmi
Progressive Web Apps
• Sebuah movement untuk mendorong developer web membangun aplikasi
dengan lebih baik
• Hampir semua orang di dunia dapat mengakses aplikasi web
• Komponen utama PWA: manifest, worker dan TWA
• Project Fugu adalah sebuah upaya menutup jarak dengan pengembangan
aplikasi native
• Web dapat bekerja maksimal dengan bantuan WebAssembly
/rizafahmi22/rizafahmi
Mari jadikan platform Web kembali berjaya!
Terimakasih!
/rizafahmi22
/rizafahmi
/rizafahmi
/rizafahmi
/rizafahmi

Mais conteúdo relacionado

Semelhante a Web dan Progressive Web Apps di 2020

Belajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan VolleyBelajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan VolleyAgus Haryanto
 
Workshop MVP Android Pattern
Workshop MVP Android PatternWorkshop MVP Android Pattern
Workshop MVP Android PatternAhmad Arif Faizin
 
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...DicodingEvent
 
Live coding andorid
Live coding andoridLive coding andorid
Live coding andoridArif Huda
 
Membuat Aplikasi Android Keren
Membuat Aplikasi Android KerenMembuat Aplikasi Android Keren
Membuat Aplikasi Android KerenHangga Aji Sayekti
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLitecreatorb dev
 
Tips Berkreasi Dengan Grafik Vector
Tips Berkreasi Dengan Grafik VectorTips Berkreasi Dengan Grafik Vector
Tips Berkreasi Dengan Grafik VectorSalman Alfarisi
 
Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01
Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01
Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01Ferry Sha
 
Belajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaBelajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaAgus Haryanto
 
Membuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server Docker
Membuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server DockerMembuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server Docker
Membuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server DockerRizkyCrown
 
Trend and how to develop android applications
Trend and how to develop android applicationsTrend and how to develop android applications
Trend and how to develop android applicationsalfach
 
Layout, listview, gridview, and adapter
Layout, listview, gridview, and adapterLayout, listview, gridview, and adapter
Layout, listview, gridview, and adapterGoogle
 
Web gis peta interaktif jumlah penduduk
Web gis peta interaktif jumlah pendudukWeb gis peta interaktif jumlah penduduk
Web gis peta interaktif jumlah pendudukMansur Muchtar
 
Modul praktikum 12 - Android Sudaryatno
Modul praktikum 12 - Android SudaryatnoModul praktikum 12 - Android Sudaryatno
Modul praktikum 12 - Android SudaryatnoYatno Sudar
 
Cara membuat web mengunakan yii
Cara membuat web mengunakan yiiCara membuat web mengunakan yii
Cara membuat web mengunakan yiiMuhammad Efendi
 

Semelhante a Web dan Progressive Web Apps di 2020 (20)

Belajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan VolleyBelajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan Volley
 
haibugs_new
haibugs_newhaibugs_new
haibugs_new
 
Workshop MVP Android Pattern
Workshop MVP Android PatternWorkshop MVP Android Pattern
Workshop MVP Android Pattern
 
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
 
Live coding andorid
Live coding andoridLive coding andorid
Live coding andorid
 
Membuat Aplikasi Android Keren
Membuat Aplikasi Android KerenMembuat Aplikasi Android Keren
Membuat Aplikasi Android Keren
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
 
Tips Berkreasi Dengan Grafik Vector
Tips Berkreasi Dengan Grafik VectorTips Berkreasi Dengan Grafik Vector
Tips Berkreasi Dengan Grafik Vector
 
Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01
Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01
Androidstudio membuataplikasiandroidsedrhana-150112201253-conversion-gate01
 
Belajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android SederhanaBelajar Android Studio - Membuat Aplikasi Android Sederhana
Belajar Android Studio - Membuat Aplikasi Android Sederhana
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Membuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server Docker
Membuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server DockerMembuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server Docker
Membuat Aplikasi dengan Framework Hybrid Flutter dengan Database Server Docker
 
Trend and how to develop android applications
Trend and how to develop android applicationsTrend and how to develop android applications
Trend and how to develop android applications
 
Web api
Web api Web api
Web api
 
UI & UX
UI & UXUI & UX
UI & UX
 
Layout, listview, gridview, and adapter
Layout, listview, gridview, and adapterLayout, listview, gridview, and adapter
Layout, listview, gridview, and adapter
 
Web gis peta interaktif jumlah penduduk
Web gis peta interaktif jumlah pendudukWeb gis peta interaktif jumlah penduduk
Web gis peta interaktif jumlah penduduk
 
Modul praktikum 12 - Android Sudaryatno
Modul praktikum 12 - Android SudaryatnoModul praktikum 12 - Android Sudaryatno
Modul praktikum 12 - Android Sudaryatno
 
Pengenalan Web Modern.pptx
Pengenalan Web Modern.pptxPengenalan Web Modern.pptx
Pengenalan Web Modern.pptx
 
Cara membuat web mengunakan yii
Cara membuat web mengunakan yiiCara membuat web mengunakan yii
Cara membuat web mengunakan yii
 

Mais de Riza Fahmi

Membangun Aplikasi Web dengan Elixir dan Phoenix
Membangun Aplikasi Web dengan Elixir dan PhoenixMembangun Aplikasi Web dengan Elixir dan Phoenix
Membangun Aplikasi Web dengan Elixir dan PhoenixRiza Fahmi
 
Berbagai Pilihan Karir Developer
Berbagai Pilihan Karir DeveloperBerbagai Pilihan Karir Developer
Berbagai Pilihan Karir DeveloperRiza Fahmi
 
Remote Working/Learning
Remote Working/LearningRemote Working/Learning
Remote Working/LearningRiza Fahmi
 
How to learn programming
How to learn programmingHow to learn programming
How to learn programmingRiza Fahmi
 
Rapid App Development with AWS Amplify
Rapid App Development with AWS AmplifyRapid App Development with AWS Amplify
Rapid App Development with AWS AmplifyRiza Fahmi
 
Menguak Misteri Module Bundler
Menguak Misteri Module BundlerMenguak Misteri Module Bundler
Menguak Misteri Module BundlerRiza Fahmi
 
Beberapa Web API Menarik
Beberapa Web API MenarikBeberapa Web API Menarik
Beberapa Web API MenarikRiza Fahmi
 
MVP development from software developer perspective
MVP development from software developer perspectiveMVP development from software developer perspective
MVP development from software developer perspectiveRiza Fahmi
 
Ekosistem JavaScript di Indonesia
Ekosistem JavaScript di IndonesiaEkosistem JavaScript di Indonesia
Ekosistem JavaScript di IndonesiaRiza Fahmi
 
Perkenalan ReasonML
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonMLRiza Fahmi
 
How I Generate Idea
How I Generate IdeaHow I Generate Idea
How I Generate IdeaRiza Fahmi
 
Strategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop SlideStrategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop SlideRiza Fahmi
 
Lesson Learned from Prolific Developers
Lesson Learned from Prolific DevelopersLesson Learned from Prolific Developers
Lesson Learned from Prolific DevelopersRiza Fahmi
 
Clean Code JavaScript
Clean Code JavaScriptClean Code JavaScript
Clean Code JavaScriptRiza Fahmi
 
The Future of AI
The Future of AIThe Future of AI
The Future of AIRiza Fahmi
 
Chrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take AwaysChrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take AwaysRiza Fahmi
 
Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6Riza Fahmi
 
Modern Static Site with GatsbyJS
Modern Static Site with GatsbyJSModern Static Site with GatsbyJS
Modern Static Site with GatsbyJSRiza Fahmi
 
Introduction to ReasonML
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonMLRiza Fahmi
 
Machine learning with py torch
Machine learning with py torchMachine learning with py torch
Machine learning with py torchRiza Fahmi
 

Mais de Riza Fahmi (20)

Membangun Aplikasi Web dengan Elixir dan Phoenix
Membangun Aplikasi Web dengan Elixir dan PhoenixMembangun Aplikasi Web dengan Elixir dan Phoenix
Membangun Aplikasi Web dengan Elixir dan Phoenix
 
Berbagai Pilihan Karir Developer
Berbagai Pilihan Karir DeveloperBerbagai Pilihan Karir Developer
Berbagai Pilihan Karir Developer
 
Remote Working/Learning
Remote Working/LearningRemote Working/Learning
Remote Working/Learning
 
How to learn programming
How to learn programmingHow to learn programming
How to learn programming
 
Rapid App Development with AWS Amplify
Rapid App Development with AWS AmplifyRapid App Development with AWS Amplify
Rapid App Development with AWS Amplify
 
Menguak Misteri Module Bundler
Menguak Misteri Module BundlerMenguak Misteri Module Bundler
Menguak Misteri Module Bundler
 
Beberapa Web API Menarik
Beberapa Web API MenarikBeberapa Web API Menarik
Beberapa Web API Menarik
 
MVP development from software developer perspective
MVP development from software developer perspectiveMVP development from software developer perspective
MVP development from software developer perspective
 
Ekosistem JavaScript di Indonesia
Ekosistem JavaScript di IndonesiaEkosistem JavaScript di Indonesia
Ekosistem JavaScript di Indonesia
 
Perkenalan ReasonML
Perkenalan ReasonMLPerkenalan ReasonML
Perkenalan ReasonML
 
How I Generate Idea
How I Generate IdeaHow I Generate Idea
How I Generate Idea
 
Strategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop SlideStrategi Presentasi Untuk Developer Workshop Slide
Strategi Presentasi Untuk Developer Workshop Slide
 
Lesson Learned from Prolific Developers
Lesson Learned from Prolific DevelopersLesson Learned from Prolific Developers
Lesson Learned from Prolific Developers
 
Clean Code JavaScript
Clean Code JavaScriptClean Code JavaScript
Clean Code JavaScript
 
The Future of AI
The Future of AIThe Future of AI
The Future of AI
 
Chrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take AwaysChrome Dev Summit 2018 - Personal Take Aways
Chrome Dev Summit 2018 - Personal Take Aways
 
Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6Essentials and Impactful Features of ES6
Essentials and Impactful Features of ES6
 
Modern Static Site with GatsbyJS
Modern Static Site with GatsbyJSModern Static Site with GatsbyJS
Modern Static Site with GatsbyJS
 
Introduction to ReasonML
Introduction to ReasonMLIntroduction to ReasonML
Introduction to ReasonML
 
Machine learning with py torch
Machine learning with py torchMachine learning with py torch
Machine learning with py torch
 

Web dan Progressive Web Apps di 2020