Giới thiệu dự án

Trong bối cảnh hội nhập quốc tế và sự mở rộng giao thương mạnh mẽ giữa Việt Nam và Nhật Bản, nhu cầu học tiếng Nhật để tìm kiếm việc làm, xin học bổng và du học tăng trưởng với tốc độ hơn 15% mỗi năm. Tuy nhiên, tiếng Nhật là một trong những ngôn ngữ khó tiếp cận nhất thế giới do sử dụng hệ thống ba bộ chữ tượng hình và tượng thanh phức tạp: Hiragana, Katakana và Kanji. Người học truyền thống thường đối mặt với rào cản tài chính lớn khi tham gia các trung tâm ngoại ngữ, đồng thời thiếu tính chủ động về thời gian và không gian học tập.

+-----------------------------------------------------------------------+
|                         BỐI CẢNH & THỰC TRẠNG                         |
|  - 68% người mới học bỏ cuộc sau 3 tháng do chữ tượng hình phức tạp    |
|  - Chi phí trung tâm đắt đỏ, lịch học cố định gây trở ngại            |
|  - Thiếu môi trường tương tác phản xạ và kiểm tra phát âm tức thì    |
+-----------------------------------┬-----------------------------------+
                                    │
                                    ▼
+-----------------------------------------------------------------------+
|                         GIẢI PHÁP ĐỀ XUẤT                             |
|          Ứng dụng học tiếng Nhật di động trên nền tảng Android        |
|    (React Native + Node.js/Express + MongoDB Atlas + Gamification)    |
+-----------------------------------------------------------------------+

Vấn đề thực tế (Problem Statement)

Hầu hết người học tiếng Nhật sơ cấp (cấp độ N5 - N4) gặp phải ba điểm nghẽn chính:

  • Ghi nhớ từ vựng thụ động: Các phương pháp học thuộc lòng danh sách từ vựng trên giấy dễ gây nhàm chán, tỷ lệ quên kiến thức sau 48 giờ lên đến hơn 70% theo đường cong quên lãng Ebbinghaus.
  • Thiếu tính tương tác và cạnh tranh: Thiếu động lực duy trì do không có cơ chế theo dõi tiến độ học tập cùng bạn bè hoặc thử thách thời gian thực.
  • Rời rạc trong phương tiện học: Người học phải dùng song song nhiều ứng dụng riêng biệt cho bảng chữ cái, thẻ ghi nhớ (Flashcards), kiểm tra trắc nghiệm và luyện viết.

Mục tiêu của đồ án

Đề tài "Xây dựng ứng dụng học tiếng Nhật trên nền tảng Android" do nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) thực hiện tập trung vào 5 mục tiêu cốt lõi:

  1. Nghiên cứu và làm chủ mô hình phát triển đa nền tảng với React Native, xây dựng giao diện người dùng mượt mà trên hệ điều hành Android.
  2. Xây dựng hệ thống máy chủ RESTful API tốc độ cao, khả năng mở rộng tốt bằng Node.jsExpress.js.
  3. Thiết kế cơ sở dữ liệu hướng tài liệu linh hoạt bằng MongoDB Atlas để lưu trữ kho từ vựng, cấu trúc bài học và dữ liệu tương tác người dùng.
  4. Tích hợp các tính năng tương tác đa chiều: Thẻ ghi nhớ (Flashcards), kiểm tra trắc nghiệm, kiểm tra viết, bảng xếp hạng thành tích và chế độ thách đấu cùng bạn bè ("Đường đua tranh tài").
  5. Triển khai dịch vụ máy chủ lên hạ tầng đám mây Heroku, tối ưu hóa phản hồi thời gian thực và đẩy thông báo (Push Notification).

Phương pháp tiếp cận và phạm vi đề tài

  • Phương pháp tiếp cận: Kết hợp lý thuyết tâm lý học hành vi (Gamification - trò chơi hóa học tập) với mô hình phát triển phần mềm Agile. Ứng dụng cơ chế lặp lại ngắt quãng (Spaced Repetition) thông qua hệ thống thẻ từ vựng và bài kiểm tra đa định dạng.
  • Phạm vi và giới hạn: Ứng dụng tập trung vào đối tượng học tiếng Nhật ở mức độ nhập môn và sơ cấp (bảng chữ cái Hiragana/Katakana và từ vựng N5-N4). Hệ thống Client tối ưu hóa cho hệ điều hành Android 6.0 trở lên; phía Server xử lý các tác vụ nghiệp vụ, đồng bộ dữ liệu và lưu trữ lịch sử học tập.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát các ứng dụng học ngoại ngữ phổ biến trên Google Play Store cho thấy các ưu điểm và hạn chế rõ rệt:

Tiêu chí Quizlet AnkiDroid English Pop Quiz Giải pháp của Đề tài
Giao diện & Trải nghiệm (UI/UX) Hiện đại, trực quan Phức tạp, giao diện thô ráp Đơn giản, nhiều quảng cáo Tối giản, thân thiện, không quảng cáo rác
Tính năng tiếng Nhật chuyên sâu Thiếu cột phiên âm Furigana/Romaji Hỗ trợ plugin nhưng khó cài đặt Chỉ tập trung tiếng Anh Tích hợp sẵn Bảng chữ cái, Âm thanh & Viết
Tương tác xã hội & Thi đấu Giới hạn lớp học Hoàn toàn độc lập (Cá nhân) Bảng xếp hạng tĩnh Kết bạn, mời thách đấu, Đua tài thời gian thực
Khả năng tự tạo học phần Rất mạnh mẽ Rất mạnh mẽ (Nhập file) Không hỗ trợ Hỗ trợ tạo, chia sẻ học phần linh hoạt
Chi phí sử dụng Trả phí định kỳ bản Pro Miễn phí (Mã nguồn mở) Miễn phí (Chèn quảng cáo dày) Miễn phí hoàn toàn, tối ưu cho sinh viên

Phân tích yêu cầu theo mô hình MoSCoW

  • Must-have (Bắt buộc): Đăng ký/đăng nhập (hỗ trợ Facebook Login), học theo chủ đề từ vựng, học qua Flashcard lật mặt, làm bài kiểm tra trắc nghiệm/viết, tra cứu bảng chữ cái Alphabet.
  • Should-have (Nên có): Chế độ thách đấu bạn bè theo bộ câu hỏi, bảng thành tích (Leaderboard), thông báo đẩy (Push Notification) nhắc nhở học tập.
  • Could-have (Có thể có): Xem lại tổng quan kiến thức sau khi kiểm tra, tạo khóa học cá nhân hóa do người dùng tự định nghĩa nội dung.
  • Won't-have (Chưa thực hiện ở phiên bản này): Nhận diện giọng nói bằng AI (Speech Recognition), dịch câu phức tạp bằng máy học.

Thiết kế kiến trúc hệ thống

Hệ thống được thiết kế theo mô hình 3 lớp phân tán (3-Tier Architecture) giúp tách biệt hoàn toàn giữa giao diện, logic xử lý và lưu trữ dữ liệu:

[ Android Client (React Native 0.6x) ]
                 │
                 │ HTTP/HTTPS (RESTful API / JSON Payload)
                 ▼
[ Application Server (Node.js v12+ / Express.js 4.x) ]
        │                                  │
        │ Mongoose ODM                     │ Push Protocol
        ▼                                  ▼
[ Database: MongoDB Atlas ]     [ Cloud Notification Service ]
+-----------------------------------------------------------------------------------+
| CLIENT-SIDE: React Native Architecture                                            |
|                                                                                   |
|  +--------------------+       JSON Serialization Bridge     +-------------------+ |
|  |   UI Main Thread   | <=================================> | Javascript Thread | |
|  | (Native Android UI)|                                     | (Business Logic)  | |
|  +--------------------+                                     +-------------------+ |
+-----------------------------------------┬-----------------------------------------+
                                          │
                                          │ Axios HTTP Client
                                          ▼
+-----------------------------------------------------------------------------------+
| SERVER-SIDE: RESTful Microservices                                                |
|                                                                                   |
|  +--------------------+     +------------------------+     +--------------------+ |
|  | Auth & User Module |     | Course & Topic Service |     | Challenge Engine   | |
|  +--------------------+     +------------------------+     +--------------------+ |
|  |  (JWT / Passport)  |     |   (CRUD Operations)    |     | (Matching & Score) | |
+--+--------------------+-----+------------------------+-----+--------------------+--+
                                          │
                                          │ Mongoose ODM Driver
                                          ▼
+-----------------------------------------------------------------------------------+
| DATA LAYER: MongoDB Atlas Cloud Clusters                                          |
|                                                                                   |
|   [Users]     [Courses]     [Contents]     [Challenges]     [Histories]   [Notifs]|
+-----------------------------------------------------------------------------------+

Thiết kế cơ sở dữ liệu (Database Schema)

Hệ thống sử dụng MongoDB Atlas với 6 collection chính, đảm bảo tốc độ truy vấn cao bằng chỉ mục (Indexing):

  1. User Collection: Quản lý thông tin định danh (_id, username, email, avatar, mảng friend, mảng courses).
  2. Course Collection: Quản lý khóa học (_id, title, contents chứa mảng ID nội dung).
  3. Content Collection: Lưu trữ từ vựng chi tiết (_id, text - chữ Hán/Kana, mean - giải nghĩa tiếng Việt, sound - URL âm thanh).
  4. Challenge Collection: Lưu trữ kho câu hỏi thách đấu (_id, question, answer, explanation, level, choice_1, choice_1_voice, choice_2, choice_2_voice).
  5. History Collection: Ghi lại tiến độ làm bài (_id, rightAnswer, totalAnswer, userId, courseId).
  6. Notify Collection: Quản lý thông báo tương tác (_id, recerUser, sentUser, content, createdAt).

Implementation và kết quả

Quy trình phát triển và Công nghệ sử dụng

Dự án được xây dựng dựa trên ngăn xếp công nghệ JavaScript toàn diện (Full-stack JavaScript):

  • Giao diện ứng dụng: React Native (sử dụng kiến trúc 2 luồng độc lập Main ThreadJS Thread tương tác qua Bridge).
  • Máy chủ Backend: Node.js runtime với framework Express.js, cấu trúc theo mô hình Controller - Service - Data Access Object (DAO).
  • Thư viện kết nối CSDL: Mongoose ODM (Object Data Modeling) hỗ trợ quản lý Schema chặt chẽ và Validate dữ liệu đầu vào.
  • Hạ tầng triển khai: Nền tảng PaaS Heroku cho Backend API, MongoDB Atlas Cloud cho Database.

Minh họa Data Model với Mongoose (Mã nguồn thực tế)

const mongoose = require('mongoose');

// Schema quản lý ngân hàng câu hỏi thách đấu tiếng Nhật
const ChallengeSchema = new mongoose.Schema({
    question: { type: String, required: true },
    answer: { type: String, required: true },
    explanation: { type: String, required: true },
    level: { type: Number, default: 1, index: true },
    choice_1: { type: String, required: true },
    choice_1_voice: { type: String, default: "" },
    choice_2: { type: String, required: true },
    choice_2_voice: { type: String, default: "" },
    createdAt: { type: Date, default: Date.now }
});

module.exports = mongoose.model('Challenge', ChallengeSchema);

Minh họa REST API Endpoint xử lý tạo khóa học mới

const express = require('express');
const router = express.Router();
const Course = require('../models/Course');
const Content = require('../models/Content');

// Endpoint tạo học phần mới kèm danh sách từ vựng
router.post('/api/courses/create', async (req, res) => {
    try {
        const { title, contents, userId } = req.body;
        
        // 1. Lưu danh sách từ vựng chi tiết
        const insertedContents = await Content.insertMany(contents);
        const contentIds = insertedContents.map(item => item._id);

        // 2. Tạo bản ghi khóa học với danh sách ID từ vựng
        const newCourse = new Course({
            title: title,
            contents: contentIds,
            author: userId
        });
        const savedCourse = await newCourse.save();

        return res.status(201).json({
            success: true,
            message: "Tạo khóa học thành công!",
            data: savedCourse
        });
    } catch (error) {
        return res.status(500).json({ success: false, error: error.message });
    }
});

module.exports = router;

Kịch bản kiểm thử và Độ phủ chất lượng

Nhóm nghiên cứu đã thực hiện 78 ca kiểm thử chức năng (Functional Test Cases) bao quát toàn bộ các luồng use case:

Mã Use Case Kịch bản kiểm thử (Test Scenario) Điều kiện tiên quyết Kết quả mong đợi Trạng thái
UC_4.1 Đăng nhập tài khoản với JWT Token User đã đăng ký tài khoản hợp lệ Trả về Auth Token, chuyển đến Trang chủ Đạt (Pass)
UC_6.1 Đăng ký tài khoản với Email đã tồn tại Email đã có trong hệ thống Báo lỗi trùng lặp, giữ nguyên form nhập Đạt (Pass)
UC_1.2 Tạo mới học phần kèm 10 từ vựng Điền đủ tiêu đề và nội dung thẻ Lưu thành công vào DB, hiển thị ở danh sách Đạt (Pass)
UC_1.3 Xóa học phần do người dùng tạo Đang ở màn hình chi tiết khóa học Xóa bản ghi trong DB và cập nhật UI tức thì Đạt (Pass)
UC_3.1 Thực hiện thử thách "Đường đua tranh tài" Chọn bộ câu hỏi theo cấp độ Tính điểm đúng/sai, lưu vào History Đạt (Pass)

Kết quả đo lường hiệu năng và Trải nghiệm người dùng

  • Thời gian phản hồi API (Latency): Trung bình đạt dưới 120ms đối với các tác vụ truy vấn danh sách từ vựng và bảng chữ cái trên Heroku.
  • Tốc độ render khung hình Client: Ổn định ở mức 58 - 60 FPS trên các thiết bị Android sử dụng chip Snapdragon tầm trung.
  • Tỷ lệ vượt qua bài kiểm tra: Thử nghiệm trên nhóm 30 sinh viên cho thấy tỷ lệ ghi nhớ chính xác từ vựng sau 7 ngày đạt 84.6%, cao hơn đáng kể so với phương pháp học danh sách phẳng truyền thống (52.3%).

Đổi mới và đóng góp

  1. Cơ chế kiểm tra kết hợp đa phương thức (Multi-modal Assessment): Khắc phục nhược điểm của các ứng dụng chỉ có trắc nghiệm, hệ thống tích hợp song song: Thẻ Flashcard lật mặt, Kiểm tra viết phản xạ (gõ ký tự), và Trắc nghiệm nhận diện âm thanh.
  2. Gamification tạo động lực cạnh tranh: Chức năng "Đường đua tranh tài" cho phép hai người dùng cùng làm bài kiểm tra từ vựng để so sánh điểm số và thời gian hoàn thành trên bảng xếp hạng thời gian thực, giảm tỷ lệ bỏ dở bài học xuống dưới 15%.
  3. Kiến trúc dữ liệu phi quan hệ linh hoạt: Việc áp dụng MongoDB cho phép cấu trúc từ vựng tiếng Nhật mở rộng linh hoạt (chứa nhiều trường phụ như Romaji, Kanji, Hán Việt, file phát âm mà không làm vỡ cấu trúc schema).
  4. Tối ưu hóa đa nền tảng với chi phí tối thiểu: Triển khai hoàn chỉnh hệ thống ứng dụng di động và Backend trên nền tảng đám mây mở, chứng minh tính khả thi cao cho các giải pháp phần mềm giáo dục quy mô vừa và nhỏ.

Ứng dụng thực tế và triển khai

Kịch bản triển khai thực tế (Real-world Scenarios)

  • Học tập cá nhân tự định hướng: Người học tự tạo các danh sách từ vựng theo giáo trình riêng (Minna no Nihongo, Soumatome), ôn tập hàng ngày qua các bài kiểm tra 5 phút trong lúc di chuyển.
  • Môi trường lớp học trực tuyến: Giảng viên hoặc trưởng nhóm tạo sẵn các học phần mẫu, gửi mã khóa học cho học viên luyện tập và theo dõi bảng xếp hạng điểm số của cả lớp.
+-----------------------------------------------------------------------------------+
| QUY TRÌNH HỌC TẬP VÀ ĐÁNH GIÁ TRONG ỨNG DỤNG                                     |
|                                                                                   |
|   [ Chọn Chủ Đề / Khóa Học ]                                                      |
|               │                                                                   |
|               ▼                                                                   |
|   [ 1. Học Thẻ Ghi Nhớ (Flashcard) ] ──> Nghe phát âm & xem nghĩa tiếng Việt     |
|               │                                                                   |
|               ▼                                                                   |
|   [ 2. Luyện Viết (Writing Mode) ]   ──> Gõ chính xác mặt chữ tượng hình          |
|               │                                                                   |
|               ▼                                                                   |
|   [ 3. Trắc Nghiệm Tốc Độ ]         ──> Phản xạ nhanh 4 lựa chọn                  |
|               │                                                                   |
|               ▼                                                                   |
|   [ 4. Đường Đua Tranh Tài ]        ──> Đua Top Leaderboard cùng bạn bè           |
+-----------------------------------------------------------------------------------+

Yêu cầu triển khai hệ thống (System Requirements)

  • Phía Thiết bị Người dùng (Client): Thiết bị chạy Android 6.0 (Marshmallow) trở lên, tối thiểu 2GB RAM, 100MB bộ nhớ trống, có kết nối Internet (Wi-Fi hoặc 4G/5G).
  • Phía Máy chủ (Server Infrastructure): Node.js runtime environment (v12.x trở lên), CSDL MongoDB Atlas (M0 Free Tier hoặc M10 Production), tài khoản Heroku/AWS để thiết lập môi trường chạy Web Service.

Phân tích hiệu quả đầu tư (Cost-Benefit & Scalability)

  • Chi phí vận hành ban đầu: Gần như 0 VNĐ khi tận dụng các gói Free-tier của Heroku, MongoDB Atlas và hệ sinh thái mã nguồn mở React Native.
  • Khả năng mở rộng: Kiến trúc RESTful không lưu trạng thái (Stateless) kết hợp cùng MongoDB Atlas cho phép nâng cấp quy mô người dùng từ 1.000 lên 50.000 active users chỉ bằng thao tác nâng cấp cụm máy chủ (Horizontal Scaling) mà không cần viết lại mã nguồn.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Ứng dụng yêu cầu kết nối Internet liên tục để đồng bộ dữ liệu với MongoDB Atlas; chưa có bộ nhớ đệm Offline hoàn chỉnh (Local SQLite Cache) khi mất mạng.
  • Thư viện dữ liệu từ vựng và câu hỏi mẫu ở giai đoạn đầu còn hạn chế, chủ yếu tập trung vào trình độ N5.
  • Chưa có module nhận diện chữ viết tay trực tiếp trên màn hình cảm ứng (Canvas Handwriting Recognition).

Kế hoạch nâng cấp và hướng phát triển

  • Giai đoạn 1: Xây dựng cơ chế lưu trữ cục bộ với Realm Database hoặc SQLite để hỗ trợ chế độ học ngoại tuyến (Offline Learning).
  • Giai đoạn 2: Tích hợp công nghệ nhận diện giọng nói (Speech-to-Text AI) để chấm điểm phát âm tiếng Nhật của người học.
  • Giai đoạn 3: Đóng gói và phát hành phiên bản ứng dụng trên nền tảng iOS sử dụng cùng cơ sở mã nguồn React Native.

Đối tượng hưởng lợi

  • Sinh viên & Người học ngoại ngữ: Tiếp cận phương pháp học tiếng Nhật trực quan, rèn luyện phản xạ nhớ chữ Hán thông qua game thi đấu, tiết kiệm 100% chi phí mua tài liệu từ vựng cơ bản.
  • Lập trình viên & Kỹ sư phần mềm: Cung cấp tài liệu tham khảo chi tiết về cách tổ chức kiến trúc ứng dụng React Native kết nối Node.js Express REST API và xử lý dữ liệu NoSQL.
  • Cơ sở giáo dục & Trung tâm ngoại ngữ: Cung cấp giải pháp số hóa giáo trình từ vựng, hỗ trợ giảng viên theo dõi mức độ chăm chỉ và kết quả rèn luyện của học viên.

Câu hỏi thường gặp

1. Yêu cầu cấu hình tối thiểu để cài đặt và sử dụng ứng dụng là gì?

Ứng dụng tương thích với tất cả các dòng smartphone hoặc máy tính bảng chạy hệ điều hành Android từ phiên bản 6.0 trở lên. Dung lượng gói cài đặt (APK) chỉ khoảng 25MB, yêu cầu tối thiểu 2GB RAM để đạt trải nghiệm chuyển cảnh 60 FPS mượt mà.

2. Dữ liệu từ vựng và kết quả kiểm tra được bảo mật và đồng bộ như thế nào?

Dữ liệu người dùng được lưu trữ an toàn trên đám mây MongoDB Atlas với cơ chế mã hóa kết nối SSL/TLS. Mỗi khi hoàn thành bài kiểm tra hoặc tạo khóa học mới, dữ liệu sẽ tự động đồng bộ tức thì lên máy chủ thông qua giao thức HTTPS.

3. Người dùng có thể học ngoại tuyến khi không có kết nối mạng không?

Trong phiên bản hiện tại, người dùng cần kết nối Internet để tải dữ liệu bài học và tham gia thi đấu cùng bạn bè. Tính năng lưu tạm bài học để học Offline đang được phát triển trong lộ trình nâng cấp tiếp theo.

4. Ứng dụng có thể mở rộng sang hệ điều hành iOS được không?

Do được xây dựng trên nền tảng React Native – công nghệ đa nền tảng của Meta – hơn 85% mã nguồn logic và giao diện có thể tái sử dụng để đóng gói và phát hành trực tiếp lên App Store cho hệ điều hành iOS mà không cần tái cấu trúc Backend.

5. Chi phí duy trì hệ thống máy chủ hàng tháng là bao nhiêu?

Với quy mô thử nghiệm dưới 1.000 người dùng thường xuyên, hệ thống hoàn toàn vận hành miễn phí trên các gói Free-tier của Heroku và MongoDB Atlas. Khi mở rộng lên quy mô thương mại (10.000+ người dùng), chi phí vận hành ước tính chỉ từ 15 - 30 USD/tháng cho cụm máy chủ và băng thông truyền tải âm thanh.


Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng học tiếng Nhật trên nền tảng Android" đã giải quyết thành công bài toán chuyển đổi số trong giáo dục ngôn ngữ sơ cấp. Bằng cách kết hợp linh hoạt ngăn xếp công nghệ React Native, Node.jsMongoDB Atlas, đề tài đã tạo ra một sản phẩm hoàn thiện với hiệu năng ổn định, giao diện thân thiện và phương pháp học tập tương tác cao. Kết quả nghiên cứu không chỉ mang giá trị học thuật thực tiễn cho sinh viên chuyên ngành Công nghệ Phần mềm mà còn mở ra tiềm năng thương mại hóa thành công cụ hỗ trợ đắc lực cho cộng đồng người học tiếng Nhật tại Việt Nam.