Câu hỏi tưởng kỹ thuật nhưng thực ra là câu hỏi kinh doanh: khách dùng sản phẩm của Anh Chị ở đâu nhiều nhất.
Quyết theo nơi khách thật sự dùng sản phẩm, không phủ thêm nền tảng vì nghe có vẻ chuyên nghiệp. Token (giá trị thiết kế nền tảng như màu, khoảng cách, chữ) có thể dùng chung một nguồn cho nhiều nền tảng qua bước chuyển đổi tự động. Nhưng component (khối giao diện hoàn chỉnh như nút bấm, form) thì mỗi nền tảng là một khối công việc riêng, chi phí và công bảo trì nhân lên theo số nền tảng Anh Chị thêm vào.
Câu hỏi này thường xuất hiện khi Anh Chị bắt đầu xây dựng design system (hệ thống thiết kế) và nhận ra rằng sản phẩm mình không chỉ có website. Câu trả lời không nằm ở kỹ thuật, nó nằm ở chỗ khách của Anh Chị đang dùng sản phẩm ở đâu và kênh nào đang thật sự tạo ra doanh thu.
Trước khi quyết định, Anh Chị cần phân biệt rõ hai tầng trong design system:
Việc phủ đa nền tảng ở tầng token là hoàn toàn khả thi. Một bộ token trung lập theo chuẩn DTCG có thể xuất ra CSS cho web, biến màu cho iOS, đơn vị dp và sp (đơn vị độ dài chuẩn trên Android) cho Android qua công cụ dựng như Style Dictionary mà không cần chép tay từng giá trị. Component thì không như vậy: mỗi nền tảng là một khối công việc riêng, xây theo đúng công nghệ mà nền tảng đó dùng.
Một nguồn token, nhiều đầu ra nền tảng qua bước dựng biến đổi, giữ nhất quán mà không chép tay từng nơi.
Style Dictionary, Amazon Web Services
Sinh Vũ khuyên Anh Chị phủ cả iOS và Android khi thỏa mãn đồng thời các điều kiện sau:
Lưu ý thêm: iOS và Android có ngôn ngữ nền riêng. Apple có HIG (Human Interface Guidelines, hướng dẫn giao diện của Apple), Android có Material Design. Đây là quy ước mà người dùng từng nền tảng đã quen, không nên bê nguyên giao diện web vào ứng dụng gốc mà bỏ qua các quy ước này.
Trong phần lớn trường hợp Sinh Vũ gặp, sản phẩm số chính vẫn là web hoặc web-app (ứng dụng chạy trên trình duyệt). Ứng dụng di động hoặc chưa có, hoặc có nhưng chưa phải kênh chính. Lúc đó việc phủ ngay cả iOS và Android là đầu tư vào chỗ chưa cần, trong khi nơi cần thì chưa được làm tốt.
Hướng hợp lý hơn: xây token chuẩn và trung lập ngay từ đầu, component web làm trước và làm đúng, component cho nền tảng khác dựng dần khi nhu cầu thật xuất hiện. Làm token tốt từ đầu tốn không nhiều hơn làm token thiếu suy nghĩ, nhưng tiết kiệm rất nhiều công sau này khi mở rộng.
Khi tư vấn và báo giá, Sinh Vũ phân ranh giới rõ ràng: token theo chuẩn DTCG trung lập có thể phủ được nhiều nền tảng, đây là việc nên làm đúng ngay từ đầu dù Anh Chị hiện chỉ có web. Component thì được xây theo đúng công nghệ Anh Chị thật sự dùng, không hứa một bộ chạy khắp nơi. Gói có component đa nền tảng lớn hơn gói một stack vì đó là khối công việc thật, không phải số nhân cơ học.
Câu hỏi Sinh Vũ thường hỏi khách trước khi chốt phạm vi: trong sáu tháng tới, sản phẩm nào sẽ được nhiều người dùng nhất, và đội kỹ thuật có bao nhiêu người dành thời gian thường xuyên cho design system? Câu trả lời đó quyết định phạm vi nền tảng hợp lý hơn bất kỳ lý do kỹ thuật nào.
Chủ đề: Chỉ phủ web hay cần cả iOS và Android cho design system. Cẩm nang Sinh Vũ, sinhvu.com
Bấm chọn từng mục Anh / Chị thấy đúng, rồi bấm in hoặc lưu thành PDF để mang theo.
Nếu Anh / Chị đánh dấu phần lớn ở nhóm dấu hiệu trên, đây là lúc nên trao đổi kỹ hơn. Sinh Vũ có thể cùng Anh / Chị soi lại và đề xuất hướng đi.
Style Dictionary, mã nguồn mở của Amazon. Tài liệu Transforms của Style Dictionary. Apple Human Interface Guidelines. Material Design của Google.
Có, ở tầng token là khả thi. Một bộ token trung lập theo chuẩn DTCG (Design Token Community Group, tổ chức chuẩn hóa token thiết kế) có thể xuất ra CSS cho web, biến màu cho iOS, đơn vị dp và sp cho Android qua công cụ như Style Dictionary mà không cần chép tay. Tuy nhiên component thì không dùng chung được giữa web và ứng dụng gốc, mỗi nền tảng cần một bộ riêng xây đúng công nghệ đó dùng.
Khác đáng kể. Ứng dụng đa nền tảng (cross-platform) như React Native hay Flutter không phải ứng dụng gốc (native) iOS hay Android thuần, nên component có thể dùng chung hơn trong cùng một stack. Nhưng vẫn cần kiểm tra kỹ từng thành phần vì hành vi giao diện trên iOS và Android vẫn khác nhau theo quy ước của từng hệ điều hành.