Web Design

Progressive Web App – tương lai của web apps (P1)

1. Sự bùng nổ của Web apps

Trong chừng hơn 10 năm nay, với sự phát triển mang tính bùng nổ của web, thì các phần mềm nội tại trên máy tính đang dần mất đi sự quan tâm của các nhà phát triển, đặc biệt là các lập trình viên tự học, thích code ra sản phẩm ngay và luôn nhưng không được đào tạo bài bản qua trường lớp ở bậc đại học hay cao đẳng, mà chính bản thân tôi cũng là một trong số đó. Khởi điểm của xu thế bắt đầu khi Google ra mắt nền tảng Gmail trên web – một điều khó ai có thể tưởng tượng tại thời điểm nền tảng email phổ biến bậc nhất ở hiện tại – được công bố. Toàn bộ các thao tác xem, tạo email mới, đính kèm tập tin, v.v… đều được thực hiện trên nền web (và một lần nữa, web chứ không phải wed nhé mấy thánh). Người dùng ngoài việc cần kết nối mạng, thì chỉ cần một trình duyệt là đủ, không cần phải dùng các ứng dụng nội tại chuyên nghiệp để duyệt mail như Outlook hay Thunderbird nữa.

Và Gmail đã khởi xướng ra xu thế ứng dụng trực tiếp trên nền Web: Web-based apps, hay hiện tại chỉ đơn thuần là Web apps. Như bạn có thể thấy, Facebook có ứng dụng riêng biệt cho các nền tảng di động, nhưng với máy tính thì ứng dụng Facebook cho Windows 10 (tức UWP) chỉ mang tính vật vờ. Sự tập trung của họ cho người dùng truy cập trên máy tính vẫn là trang chính: https://www.facebook.com. Hay nhắc tới một sản phẩm khác của Facebook là (Facebook) Messenger với trải nghiệm Web xuất sắc, nhưng ứng dụng UWP cho Windows 10 thì lại “như hạch”, thua kém các phiên bản cho Android và iOS khá nhiều. Và đối với người dùng macOS thì… xin mời vào Web. Trước đây Twitter cũng có ứng dụng chính chủ cho macOS nhưng cũng nằm trong tình trạng vật vờ cho tới lúc bị khai tử vào năm 2017 với thông báo chính thức, xin lược dịch, là “Người dùng macOS nên truy cập Twitter từ trình duyệt”.

Ngoài ra, một số những ứng dụng ở thập kỉ trước chẳng ai dám nghĩ là có thể “bay lên” web được như chỉnh sửa ảnh (đơn giản) thì giờ cũng được cung cấp trên nền web. Mấy ai có thể nghĩ rằng, Google Docs, Sheets và Slides lại tốt tới vậy dù chúng là Web apps? Ngành Web hiện giờ, dù có thể chỉ là những trang Web thuần cung cấp thông tin như VnExpress, Zing, và những bạn mới học web sẽ nghĩ chúng là những trang tĩnh, song sự thật chúng là Web apps đó bạn à, không phải chỉ có những trang mạng xã hội hay cung cấp công cụ chuyên dụng như Pixlr mới là Web apps đâu. Và hiện tại, một phần lớn những trang web lớn đều là Web apps.

Với những ví dụ về những cái tên lớn, gần gũi với bạn như trên, và nhiều trường hợp khác mà tự bản thân của bạn khi nhìn lại thao tác dùng máy tính hàng ngày của mình sẽ thấy, Web apps càng ngày càng đóng vai trò lớn. Tin hay không thì tùy bạn, nếu bạn không chơi những game bắt buộc phải cài bản native trên máy tính, và soạn văn bản ra, thì đa phần các thao tác khác của bạn đều là duyệt web, và trình duyệt là ứng dụng mà ngày nào bạn cũng phải khởi chạy. Vì vậy, với 10 năm trước thì bạn có thể sống mà không cần Web, nhưng bây giờ thì bạn có thể sống như 10 năm trước được không?

2. Web và Native apps cho di động

Như tôi đã nói ở trên, đa phần các nhà phát triển, với xu thế hiện tại, là phát triển phiên bản Web app hướng tới người dùng máy tính, và tạo hẳn hai phiên bản di động cho Android và iOS, dẫu ứng dụng của họ chỉ thuần dữ liệu và ít cần tới native platform APIs trên nền tảng di động. Vì sao vậy? Có nhiều lí do như bên dưới, mà các bạn sẽ có thể tranh cãi với tôi, đặc biệt là các bạn tín đồ iFan chuyên dùng iPhone và iPad:

  • Các trình duyệt Web trên di động không hỗ trợ một số tính năng JavaScript trên trình duyệt máy tính, chẳng hạn như Chrome. Chromium trên Android dẫu gần gũi hơn với Chromium cho Windows, macOS và Linux, song vẫn thiếu đi những tính năng JavaScript chỉ có trên Chromium cho máy tính,
  • Các bộ xử lí trên di động, dẫu chip Apple A có điểm benchmark ngang tầm với những con chip mạnh mẽ trên máy tính, nhưng đó chỉ là các con số và chúng chỉ thực sự có ý nghĩa khi so với các con chip “chung mâm” với chúng là dòng Qualcomm Snapdragon hay Samsung Exynos và gần đây là Huawei Kirin. Còn đối với các con chip trên máy tính, chẳng hạn như MacBook thì hiệu năng thực sự của chúng vẫn còn thua kém nhiều. Bạn hãy thử chạy phiên bản Messenger trên web trên máy tính của bạn và trên iPad, bạn sẽ nhận thấy iPad của bạn vẫn ít nhiều bị lag hơn so với máy tính, dù chip máy tính của bạn có thuộc dòng cũ hơn đi chăng nữa,
  • Ngoài ra, không kể các ứng dụng chỉ thao tác với HttpRequest, các ứng dụng trên di động phổ biến cần phải truy cập vào Camera, và họ thường không chỉ tùy chỉnh về phần giao diện sao cho đặc trưng, mà ta còn phải kể tới việc tùy chỉnh lại các Camera APIs gốc của hệ thống, và dĩ nhiên, họ bắt buộc phải làm native apps cho di động. Còn phần ứng dụng Web trên máy tính chỉ chủ yếu là hiển thị các hình ảnh hay videos vốn được chụp từ thiết bị di động mà thôi, nên họ dùng Web là quá đầy đủ rồi. Nếu làm ứng dụng native tương tự cho máy tính với tính năng chụp ảnh thì có bao nhiêu người dùng? Bạn có bao nhiêu tấm ảnh phong cảnh và selfie chụp từ camera của laptop????

Tuy nhiên, ngoài các ứng dụng cần camera ra nói riêng và các ứng dụng không cần quá nhiều các APIs hệ thống, thì việc phát triển cả ba phiên bản cho một sản phẩm chỉ thuần về Request/Response, chẳng hạn như một ứng dụng chỉ hiển thị ghi chú, sẽ gây tốn kém rất nhiều nguồn lực, như nhân lực, tài lực và quan trọng nhất là thời gian. Và không thể không kể tới việc “chênh lệch”, “so le” về tính năng, chẳng hạn như phiên bản trên Web và iOS nhận được những tính năng mới trước phiên bản trên Android, và cũng ổn định hơn, dễ dẫn tới câu chia tay từ những tín đồ của chú Robot xanh.

Và trong tương lai không xa, sức mạnh của các bộ xử lí trên di động sẽ thu hẹp dần khoảng cách với các bộ xử lí trên máy tính theo hướng tốt hơn nữa, và các trình duyệt trên di động sẽ mạnh hơn nữa, thì số lí do cần tồn tại các phiên bản di động của các ứng dụng thuần về Request/Response vì đó cũng giảm theo. Tất nhiên, nếu bạn làm giám đốc, thì việc cần duy trì hai đội chuyên biệt cho Android và iOS có cần thiết không nếu phiên bản di động của Web app có thể hoạt động nhanh chóng trên trình duyệt di động mà lại cho hiệu quả tương tự, khi mà vấn đề dữ liệu ngoại tuyến đã được giải quyết? Khi bạn cập nhật phần server của bạn, thì bạn chẳng cần quan tâm là người dùng Android hay iOS sẽ nhận cập nhật trước, vì việc HTML serving là thống nhất. Hơn nữa, nếu Web app của bạn cung cấp nội dung dưới hình thức thuê bao, thì việc bạn không thèm cung cấp phiên bản ứng dụng native cho di động trên App Store và Play Store sẽ giúp bạn giữ được toàn bộ tiền từ người dùng mà không phải chia lại 30% (hay hiện tại là 15% đối với những nhà cung cấp lớn) cho Apple và Google.

Tóm lại, Web apps sẽ dần thay thế cho khá nhiều những ứng dụng nội tại không chỉ trên máy tính, và sau này cũng sẽ sang cả mảng di động. Tất nhiên, những ứng dụng chuyên nghiệp như Photoshop hay iMovies sẽ không thể bị thay thế được. Nhưng với các ứng dụng cung cấp nội dung đa phương tiện, hay mua sắm trực tuyến thì hoàn toàn có khả năng. Và để tối ưu hóa trải nghiệm cũng như giải quyết được vấn đề quan trọng nhất: Hoạt động ngoại tuyến, đặc biệt là trên di động, thì bạn sẽ cần tới một nền tảng Web mới: Progressive Web App. Progressive Web Apps, hay PWA, do Google khởi xướng và được chính thức công bố tại I/O 2015. Trước khi đọc tiếp, nếu bạn chưa nghe qua PWA thì xin mời tham khảo tại trang Wikipedia tiếng Anh – và trang này được maintain bởi chính các nhân viên của Google nên các thông tin sơ lược đều chính chủ và chính xác. Và vì sao Progressive Web App lại là tương lai của web apps, xin mời các bạn đón xem bài viết tiếp theo.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.