AI Có Thực Sự Hiểu Về Khả Năng Tiếp Cận? Thử Nghiệm Code Với Gemini!
Lê Lân
0
AI Và Khả Năng Tạo Ứng Dụng Android Tiếp Cận: Trải Nghiệm Thực Tế Với Gemini
Mở Đầu
Trong thời đại AI ngày càng phát triển, nhiều người lo ngại rằng công nghệ sẽ thay thế hoàn toàn công việc của con người, đặc biệt là trong lĩnh vực lập trình. Tuy nhiên, liệu AI có thể tạo ra các ứng dụng đáp ứng đầy đủ yêu cầu tiếp cận cho người dùng khuyết tật hay không?
Trên thực tế, nhiều lập trình viên vẫn giữ tinh thần hoài nghi về khả năng của AI tạo mã nguồn đúng chuẩn tiếp cận (accessibility). Một trong những lý do chính là chất lượng dữ liệu huấn luyện – phần lớn dựa trên mã nguồn hiện tại vốn chưa đảm bảo tiếp cận. Bài viết này sẽ giới thiệu một cuộc thử nghiệm thực tế đánh giá khả năng của trợ lý AI Gemini trong việc tạo ra một ứng dụng Android có tính tiếp cận cao. Từ đó, chúng ta hiểu rõ hơn về điểm mạnh, hạn chế của AI trong lĩnh vực này và nhận diện những cải tiến cần thiết.
Giới Thiệu Ứng Dụng Thử Nghiệm
Mục Tiêu Ứng Dụng
Ứng dụng được yêu cầu có chức năng chính là giúp người dùng quản lý danh mục len và kim đan với các tính năng:
Thêm len và kim đan
Xem danh sách và chi tiết từng món
Hỗ trợ các phương thức điều hướng thay thế như thiết bị chuyển mạch, bàn phím, lệnh bằng giọng nói
Hỗ trợ đọc màn hình (screen readers)
Tương thích với cả chế độ dọc và ngang, cùng kích thước phông chữ lớn
Tuân thủ các nguyên tắc thiết kế Material3 mới nhất
Phiên Bản Ứng Dụng
Tác giả đã thực hiện hai lần tạo ứng dụng bằng Gemini:
Lần 1: Android Studio Meerkat (phiên bản ổn định)
Lần 2: Narwhal 2025.1.1 Canary 2 (bản thử nghiệm mới hơn)
Phiên bản thứ hai có nhiều cải tiến về mặt tiếp cận so với bản đầu tiên.
Quá Trình Tạo Mã Và Đánh Giá Khả Năng Tiếp Cận
Lệnh Yêu Cầu (Prompt) Gửi Đến Gemini
Can you generate UI screens for an app, in which user can keep track of their yarn stash and knitting needles per size and type? It should contain the following screens:
- Home screen, where user can add both yarn and needles,
- A list screen for yarn,
- A details screen for individual yarn,
- A list screen for knitting needles,
- A details screen for knitting needles.
The information to store about yarn consists of following: Brand name, yarn name, colorway, yardage in meters, weight of skein, amount of skeins, picture.
Information for knitting needles consists of the following: Brand name, knitting needles size in mm, type (single pointed, double pointed, circular). The type should be a dropdown.
The app screens should be accessible for users with alternative navigation (switch device, keyboard, voice navigation), as well as screen readers, and it should work well in both vertical and landscape orientations, as well as with larger font sizes. It should follow all Material3 best practices.
Đánh Giá Đầu Ra Của Gemini
Phiên Bản 1
Content Descriptions: Các yếu tố tương tác đều có thuộc tính contentDescription
Focus Management: Hỗ trợ điều hướng bằng bàn phím và thiết bị chuyển mạch
Keyboard Support: Các dropdown có thể mở/đóng bằng bàn phím
Button Focusability: Các nút bấm có khả năng nhận focus
Tuy nhiên, có một vấn đề nghiêm trọng là việc thêm quá nhiều contentDescription gây ra sự trùng lặp thông tin hoặc làm mất nội dung quan trọng, khiến trải nghiệm người dùng trợ năng trở nên khó chịu hoặc vô dụng.
Phiên Bản 2
Cấu trúc ngữ nghĩa rõ ràng, thuận lợi cho screen readers
Chuẩn hóa nội dung văn bản: Tất cả văn bản hiển thị đều nằm trong tài nguyên stringResource
Hỗ trợ điều hướng bàn phím và giọng nói tối ưu hơn
Tương thích với kích thước phông chữ lớn và màu sắc có độ tương phản tốt
Khả năng tạo cây truy cập (accessibility tree) chính xác thông qua Compose
Phân Tích Giao Diện Người Dùng (UI)
Các Vấn Đề Từng Gặp Trong Phiên Bản Đầu
1. Content Description Quá Nhiều
Ví dụ: Nút bấm có cả văn bản "View Yarn" và contentDescription = "View yarn stash".
Màn hình đọc sẽ đọc cả hai, gây trùng lặp, làm người dùng mệt mỏi khi dùng screen reader.
Trường hợp với Text component, phần contentDescription còn ghi đè nội dung text thực tế, ví dụ “Yarn brand” thay vì tên thương hiệu cụ thể.
2. Không Cuộn Được Khi Nội Dung Khổng Lồ
Khi tăng kích thước chữ, các màn hình không có chức năng cuộn, dẫn đến nội dung bị cắt bỏ ngoài màn hình.
3. Vấn Đề Với Focusable
Card(
modifier = Modifier
.clickable { ... }
.focusable()
)
Cả clickable và focusable đều thêm phần tử vào thứ tự focus, gây double-focus khi điều hướng bằng bàn phím, làm trải nghiệm sử dụng rất bất tiện.
Cải Thiện Phiên Bản 2
Icon có contentDescription, nhưng nút chứa icon đã có văn bản nên phần icon được đặt contentDescription = null để tránh trùng lặp.
Gỡ bỏ focusable dư thừa khỏi các phần tử đã có clickable.
Các lỗi lớn về tiếp cận đã được giảm thiểu đáng kể.
Quá Trình Kiểm Thử Tiếp Cận
Thiết Bị Và Công Cụ Sử Dụng
Thiết bị: Pixel 7 Pro
Ứng dụng hỗ trợ:
Accessibility Scanner
TalkBack (đọc màn hình)
Switch Access (điều khiển thiết bị qua thiết bị chuyển mạch)
Physical Keyboard (bàn phím vật lý)
Voice Access (điều khiển bằng giọng nói)
Kích thước font chữ lớn
Phạm Vi Kiểm Thử
Thực hiện một bộ kiểm thử thủ công giới hạn, tập trung vào các yếu tố chính của tiếp cận.
Đánh giá tính tương thích với các công nghệ hỗ trợ.
Phiên bản 2 của ứng dụng đáp ứng tốt các yêu cầu cơ bản, tuy chưa hoàn hảo nhưng đã tránh được những sai sót có thể làm người dùng tiếp cận gặp khó khăn nghiêm trọng.
Kết Luận Và Quan Điểm Cá Nhân
Sau hai vòng thử nghiệm sử dụng Gemini để tạo ứng dụng Android, tác giả nhận thấy:
Lần đầu tiên kết quả rất kém, nhiều lỗi làm giảm chất lượng tiếp cận nghiêm trọng.
Lần thứ hai có nhiều cải tiến rõ rệt, đáp ứng hầu hết các yêu cầu tiếp cận cơ bản.
Việc AI có thể tự nâng cấp chất lượng mã sinh ra trong thời gian ngắn vẫn là một ẩn số, chưa rõ do cập nhật phiên bản hay tính ngẫu nhiên.
Sự tiến bộ này mở ra hy vọng rằng trong tương lai, AI có thể hỗ trợ tạo ra các ứng dụng không chỉ nhanh mà còn đáp ứng đầy đủ tiêu chuẩn tiếp cận. Tuy nhiên, cần phải có thêm nhiều thử nghiệm với các công cụ AI khác để đánh giá chính xác hơn.
Rất mong các đồng nghiệp hoặc chuyên gia có kinh nghiệm với phiên bản Gemini hoặc các AI khác chia sẻ thêm thông tin và kinh nghiệm!
Lưu ý: Bài viết tập trung vào một phần mềm tạo mã được thử nghiệm ở thời điểm hiện tại, kết quả có thể thay đổi theo phiên bản và cập nhật mới của các AI.