SlideShare a Scribd company logo
/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

More Related Content

PDF
Membangun Aplikasi Web dengan Elixir dan Phoenix
PDF
Berbagai Pilihan Karir Developer
PDF
Remote Working/Learning
PDF
How to learn programming
PDF
Rapid App Development with AWS Amplify
PDF
Menguak Misteri Module Bundler
PDF
Beberapa Web API Menarik
PDF
MVP development from software developer perspective
Membangun Aplikasi Web dengan Elixir dan Phoenix
Berbagai Pilihan Karir Developer
Remote Working/Learning
How to learn programming
Rapid App Development with AWS Amplify
Menguak Misteri Module Bundler
Beberapa Web API Menarik
MVP development from software developer perspective

More from Riza Fahmi (20)

PDF
Ekosistem JavaScript di Indonesia
PDF
Perkenalan ReasonML
PDF
How I Generate Idea
PDF
Strategi Presentasi Untuk Developer Workshop Slide
PDF
Lesson Learned from Prolific Developers
PDF
Clean Code JavaScript
PDF
The Future of AI
PDF
Chrome Dev Summit 2018 - Personal Take Aways
PDF
Essentials and Impactful Features of ES6
PDF
Modern Static Site with GatsbyJS
PDF
Introduction to ReasonML
PDF
Machine learning with py torch
PDF
Introduction to Tensorflow.js
PDF
Machine Learning for Web Developers
PDF
async/await Revisited
PDF
Deploying Your Favorite Web App To AWS Lambda with Apex up
PDF
AWS Lambda with ClaudiaJS
PDF
Presentation Strategy for Developer
PDF
Web Development with NodeJS
PDF
Why NodeJS
Ekosistem JavaScript di Indonesia
Perkenalan ReasonML
How I Generate Idea
Strategi Presentasi Untuk Developer Workshop Slide
Lesson Learned from Prolific Developers
Clean Code JavaScript
The Future of AI
Chrome Dev Summit 2018 - Personal Take Aways
Essentials and Impactful Features of ES6
Modern Static Site with GatsbyJS
Introduction to ReasonML
Machine learning with py torch
Introduction to Tensorflow.js
Machine Learning for Web Developers
async/await Revisited
Deploying Your Favorite Web App To AWS Lambda with Apex up
AWS Lambda with ClaudiaJS
Presentation Strategy for Developer
Web Development with NodeJS
Why NodeJS
Ad

Recently uploaded (11)

PPTX
Implementasi Microservices pada Manufaktur
PPTX
BERPIKIR KOMPUTASI UNTUK SMP KELAS 8 INFORMATIKA
PPTX
Materi_Array_Karakter_String untuk kelas XI sma.pptx
PPTX
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
PPTX
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
PPT
pengantar-sistem-informasi manajemen.ppt
PPTX
Slide_Diskusi_Modul_5_Pembelajaran_Mendalam.pptx
PPTX
BERPIKIR KOMPUTASIONAL UNTUK KELAS 7 SMP
PPTX
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
DOCX
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
DOCX
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
Implementasi Microservices pada Manufaktur
BERPIKIR KOMPUTASI UNTUK SMP KELAS 8 INFORMATIKA
Materi_Array_Karakter_String untuk kelas XI sma.pptx
Peranan AI dalam Dunia Pendidikan dan Industri Aplikasinya
PEMAHAMAN MAPEL KODING DAN KECERDASAN ARTIFICIAL
pengantar-sistem-informasi manajemen.ppt
Slide_Diskusi_Modul_5_Pembelajaran_Mendalam.pptx
BERPIKIR KOMPUTASIONAL UNTUK KELAS 7 SMP
PERANCANGAN DAN PENGEMBANGAN VIDEO GAME SEBAGAI MEDIA TERAPI DEPRESI
Keutuhan Aplikasi Konsep dan Praktik dalam Upaya menciptakan aplikasi Anti Vi...
Antivirus Versi.FULL.JALiN.KB.PRO Keutuhan Aplikasi Konsep dan Praktik dalam ...
Ad

Web dan Progressive Web Apps di 2020