Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh hội nhập quốc tế và nhu cầu tiếp cận văn hóa, ngôn ngữ Nhật Bản ngày càng tăng cao, việc ứng dụng công nghệ thông tin vào hoạt động giáo dục ngoại ngữ trên thiết bị di động trở thành một hướng tiếp cận thiết thực. Qua quá trình tìm hiểu và trải nghiệm thực tế các phần mềm hỗ trợ học tiếng Nhật hiện có trên các kho ứng dụng di động, nhóm tác giả nhận thấy phần lớn các sản phẩm hiện hành vẫn còn nhiều bất cập: tính năng vận hành chưa thực sự ổn định, số lượng từ vựng và bài hội thoại còn hạn chế, giao diện chưa tối ưu hóa cho trải nghiệm người dùng, hoặc thường xuyên bị gián đoạn bởi các nội dung quảng cáo. Nhằm khắc phục những thiếu sót đó, đề tài "Xây dựng ứng dụng học tiếng Nhật trên nền tảng IOS" được thực hiện với định hướng tạo ra một môi trường học tập trực quan, kết hợp phương pháp "vừa học vừa chơi" nhằm nâng cao động lực tiếp thu kiến thức.

Mục tiêu nghiên cứu và phát triển của đề tài được xác định cụ thể như sau:

  1. Xây dựng một ứng dụng di động hoàn chỉnh trên nền tảng iOS phục vụ việc học tiếng Nhật hiệu quả, tích hợp đa dạng hình thức tiếp cận kiến thức (thẻ ghi nhớ flashcards, video bài giảng theo lộ trình, bảng chữ cái Kanji và Hiragana, đọc tin tức).
  2. Xây dựng môi trường giải trí và tương tác cộng đồng thông qua tính năng thi đấu trắc nghiệm (game quiz) giữa các người dùng tại cùng thời điểm, tính năng tự tạo khóa học và quản lý danh mục từ vựng cá nhân, cùng các tiện ích chia sẻ thông tin học tập.

Dựa trên kết quả nghiên cứu kế thừa từ học phần Tiểu luận chuyên ngành, các nhiệm vụ nghiên cứu và triển khai cụ thể của khóa luận bao gồm:

  1. Hoàn thiện và nâng cấp các tính năng nền tảng: Đăng ký tài khoản, đăng nhập hệ thống, thiết kế giao diện người dùng, thêm/sửa/xóa học phần và học các học phần do người dùng tự khởi tạo.
  2. Thiết kế và tích hợp tính năng học tiếng Nhật qua video bài giảng theo lộ trình phân cấp.
  3. Xây dựng tính năng chơi game dạng Quiz tương tác trực tiếp giữa các người dùng trong hệ thống.
  4. Cập nhật và mở rộng hệ thống cơ sở dữ liệu từ vựng mới theo nhiều chủ đề phong phú.
  5. Cập nhật và chuẩn hóa hệ thống bảng ký tự alphabet (bao gồm hệ chữ Hiragana và Kanji) cho ứng dụng.
  6. Xây dựng tính năng đọc và cập nhật tin tức tiếng Nhật giúp người học rèn luyện kỹ năng đọc hiểu.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình phân tích, thiết kế và xây dựng ứng dụng di động hỗ trợ học ngôn ngữ tiếng Nhật; kiến trúc hệ thống ứng dụng di động đa nền tảng kết hợp xử lý thời gian thực.
  • Phạm vi không gian và công nghệ: Nghiên cứu, khảo sát các ứng dụng học ngoại ngữ trên hai hệ điều hành Android (Google Play) và iOS (App Store); triển khai cài đặt, thực nghiệm sản phẩm phần mềm trực tiếp trên hệ điều hành iOS.
  • Phạm vi thời gian: Đề tài được triển khai thực hiện từ tháng 03/2020 đến tháng 07/2020 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

Cơ sở lý thuyết và phương pháp

Đề tài sử dụng mô hình kiến trúc MERN stack mở rộng kết hợp với các công nghệ chuyên biệt cho ứng dụng di động và hệ thống phân tán:

  • React Native: Framework mã nguồn mở do Facebook phát triển, cho phép xây dựng ứng dụng di động Native bằng ngôn ngữ JavaScript. Hệ thống vận hành dựa trên máy ảo JavaScriptCore (hoặc V8 engine trong chế độ debug), kết nối với Native modules thông qua cơ chế React Native Bridge và xử lý đa luồng (Main thread/Native queue, JavaScript thread, Shadow node thread).
  • NodeJS: Nền tảng thực thi JavaScript phía máy chủ xây dựng trên V8 JavaScript Engine của Chrome, hoạt động theo kiến trúc hướng sự kiện (Event-driven) và mô hình vào/ra không chặn (Non-blocking I/O); ứng dụng cơ chế Promise và cú pháp async/await để quản lý các tác vụ bất đồng bộ (Asynchronous).
  • MongoDB: Hệ quản trị cơ sở dữ liệu NoSQL hướng tài liệu (Document-oriented), lưu trữ dữ liệu dưới định dạng JSON/BSON linh hoạt, hỗ trợ cơ chế mở rộng ngang (Horizontal Scalability), đánh chỉ mục tự động trường _id, truy vấn ad-hoc, nhân rộng dữ liệu qua Replica Set (Primary/Secondary nodes), cân bằng tải qua Sharding và lưu trữ tệp tin với GridFS.
  • Redis (Remote Dictionary Server): Hệ thống lưu trữ dữ liệu Key-Value trên bộ nhớ RAM với tốc độ đọc ghi cao; ứng dụng trong việc thiết lập bộ nhớ đệm (Caching), bộ đếm (Counter), hàng đợi tin nhắn (Message Queue), cơ chế xuất bản/đăng ký nhận tin (Pub/Sub); hỗ trợ cơ chế lưu trữ bền vững xuống đĩa cứng thông qua định dạng RDB (Snapshot định kỳ) và AOF (Append Only File).
  • Docker: Công nghệ ảo hóa mức hệ điều hành (Containerization), đóng gói toàn bộ mã nguồn cùng các thư viện phụ thuộc vào container độc lập, đảm bảo tính đồng nhất môi trường khi triển khai trên các hệ thống máy chủ khác nhau.

Phương pháp nghiên cứu được áp dụng trong khóa luận gồm:

  • Phương pháp khảo sát và phân tích hiện trạng: Phân tích ưu điểm và hạn chế của các ứng dụng học tập sẵn có trên thị trường nhằm xác định yêu cầu chức năng cần kế thừa và cải tiến.
  • Phương pháp phân tích và thiết kế phần mềm: Sử dụng mô hình hóa Use Case, thiết kế luồng xử lý dữ liệu và xây dựng lược đồ cơ sở dữ liệu NoSQL.
  • Phương pháp thực nghiệm: Cài đặt mã nguồn, triển khai hệ thống máy chủ và kiểm thử chức năng trực tiếp trên môi trường thiết bị di động iOS.

Nguồn dữ liệu của đề tài bao gồm dữ liệu kế thừa từ Tiểu luận chuyên ngành, tài liệu kỹ thuật chính thức từ nhà phát triển của React Native, NodeJS, MongoDB, Redis, Docker, cùng hệ thống dữ liệu bài học, từ vựng, bảng chữ cái và tin tức tiếng Nhật được biên soạn phục vụ ứng dụng.


Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng kết hợp giữa ứng dụng di động React Native và hệ thống Backend API viết bằng NodeJS:

  • Kiến trúc Client (iOS App): Giao diện người dùng được xây dựng bằng các React Component tương ứng với Native UI; mã nguồn JavaScript được đóng gói thông qua React Native CLI và giao tiếp liên tục với Native code thông qua React Native Bridge bằng các chuỗi thông điệp JSON.
  • Kiến trúc Server & Data Storage: Máy chủ NodeJS tiếp nhận và xử lý các yêu cầu nghiệp vụ từ thiết bị; Redis đóng vai trò tầng đệm dữ liệu truy xuất nhanh và quản lý phòng thi đấu Quiz thời gian thực; MongoDB lưu trữ toàn bộ dữ liệu có cấu trúc của ứng dụng. Môi trường backend được chuẩn hóa và quản lý thông qua các Docker Container.

Hệ thống cơ sở dữ liệu MongoDB được thiết kế gồm 7 collection chính:

Tên Collection / Bảng Mục đích lưu trữ và mô tả dữ liệu
User Lưu trữ thông tin định danh và tài khoản của người dùng hệ thống.
Avatar Lưu trữ thông tin và đường dẫn các hình ảnh đại diện do người dùng tải lên.
Room Quản lý thông tin phòng chơi đối kháng dạng Quiz, bao gồm câu hỏi và câu trả lời.
Course Lưu trữ danh mục khóa học (học phần) và từ vựng do từng cá nhân người dùng tự tạo.
Topic Chứa thông tin các chủ đề bài học chuẩn hóa kèm theo đường dẫn (link) video bài giảng.
Vocabulary Lưu trữ toàn bộ dữ liệu từ vựng tiếng Nhật thuộc các chủ đề (Topic) và khóa học (Course).
History Ghi nhận lịch sử làm bài và tiến trình học tập theo hình thức Quiz của người dùng.

Hệ thống phân tích và đặc tả chi tiết 19 Use Case chức năng phục vụ các phân hệ:

Nhóm phân hệ chức năng Danh sách Use Case cụ thể
Quản lý người dùng UC1: Register, UC2: Login, UC3: Logout, UC17: View information, UC18: Update avatar, UC19: Update username
Quản lý học phần cá nhân UC6: Add course, UC7: Remove course, UC8: Update course, UC9: View course, UC10: Flashcards, UC11: Learn vocabulary
Học theo chủ đề & Đa phương tiện UC12: Topic, UC13: View detail, UC14: Learn topic, UC15: View video, UC16: View news
Tương tác Game Quiz UC4: Join room, UC5: Learn by quiz (Learn Topic, Vocabulary)

Hệ thống giao diện được thiết kế gồm 15 màn hình chuẩn hóa: Màn hình chính (chưa đăng nhập / đã đăng nhập), Màn hình đăng ký, Màn hình đăng nhập, Giao diện bảng ký tự alphabet, Giao diện học phần video, Giao diện xem tin tức, Giao diện hồ sơ (profile) người dùng, Giao diện chọn chủ đề chơi game, Giao diện danh sách học phần đã tạo, Giao diện chi tiết học phần, Giao diện học theo học phần đã chọn, Giao diện danh sách chủ đề từ vựng, Giao diện chi tiết từ vựng theo chủ đề, Giao diện học từ vựng theo chủ đề bằng cách chơi game.


Nội dung chính theo từng chương

Chương 1: Tổng quan

Chương 1 giới thiệu bối cảnh thực tiễn, nêu rõ động lực nghiên cứu bắt nguồn từ mong muốn xây dựng một phần mềm học tiếng Nhật khắc phục các nhược điểm của các ứng dụng hiện có. Tác giả xác định mục tiêu xây dựng ứng dụng trên iOS kết hợp phương pháp "vừa học vừa chơi", làm rõ phạm vi khảo sát ứng dụng trên App Store và Google Play, đồng thời xác lập phương pháp nghiên cứu dựa trên việc kế thừa và nâng cấp các kết quả từ tiểu luận chuyên ngành.

Chương 2: Khảo sát hiện trạng

Chương 2 thực hiện khảo sát chi tiết 3 ứng dụng học tập đang lưu hành trên thị trường nhằm đánh giá ưu và nhược điểm thực tế:

Ứng dụng khảo sát Ưu điểm ghi nhận Nhược điểm và hạn chế
English Pop Quiz Chủ đề và từ vựng đa dạng, phân chia theo cấp độ; học theo dạng quiz giải trí; hoạt động offline không cần kết nối mạng Internet. Số lượng chủ đề hạn chế (chỉ 12 chủ đề); ít tính năng mở rộng; tông màu khó nhìn; xuất hiện nhiều quảng cáo (phải chờ tải quảng cáo 15 giây sau mỗi lượt chơi).
Quizlet Hỗ trợ học từ vựng bằng thẻ ghi nhớ (flashcards); cho phép tự biên soạn từ vựng; hỗ trợ nhiều ngôn ngữ khác nhau. Không cung cấp lộ trình học tập cụ thể; các tính năng nâng cao yêu cầu trả phí (phải nâng cấp tài khoản Quizlet Plus).
Takoboto: Japanese Dictionary Dữ liệu từ vựng phong phú; hỗ trợ đầy đủ các bảng chữ Kanji, Hiragana, Katakana; chức năng tra cứu tiện lợi. Giao diện hiển thị bằng tiếng Anh gây khó khăn cho người không biết tiếng Anh; thiết kế giao diện thiếu thẩm mỹ, khó thao tác; không có tính năng phát âm.

Kết luận rút ra từ khảo sát: Tác giả xác định các tiêu chí cần tiếp thu cho ứng dụng mới bao gồm thiết kế giao diện đơn giản, dễ thao tác và cơ chế trò chơi dễ hiểu; đồng thời cần loại bỏ tình trạng lạm dụng quảng cáo và khắc phục sự thiếu hụt về lộ trình học tập.

Chương 3: Cơ sở lý thuyết

Chương 3 trình bày hệ thống lý thuyết nền tảng phục vụ phát triển ứng dụng:

  • So sánh chi tiết giữa ứng dụng Native và Hybrid về mặt hiệu năng xử lý, khả năng can thiệp phần cứng và chi phí bảo trì; phân tích kiến trúc nội tại của React Native (Bridge, Threading model, cơ chế Live Reload).
  • Nền tảng NodeJS: Phân tích cơ chế Non-blocking I/O, mô hình xử lý bất đồng bộ, phân tích vấn đề callback hell và cách giải quyết bằng Promise và cú pháp async/await.
  • Cơ sở dữ liệu MongoDB: Đặc trưng NoSQL hướng tài liệu, khả năng mở rộng (High Scalability, High Availability), các tính năng truy vấn ad-hoc, nhân rộng (Replica set), cân bằng tải (Sharding) và lưu trữ tệp qua GridFS; phân tích ưu điểm linh hoạt cấu trúc và nhược điểm tiêu tốn RAM cũng như độ trễ 60 giây khi ghi dữ liệu từ RAM xuống đĩa.
  • Công nghệ Docker: Quá trình phát triển từ máy chủ vật lý, ảo hóa phần cứng (Virtualization) đến ảo hóa mức hệ điều hành (Containerization); các câu lệnh quản trị CLI cơ bản (docker pull, run, images, rmi, ps, rm, start, exec).
  • Hệ thống Redis: Cấu trúc dữ liệu Key-Value trên RAM, các kiểu dữ liệu (STRING, LIST, SET, HASH, SORTED SET), các ứng dụng thực tế (Caching, Counter, Pub/Sub, Queues) và hai cơ chế lưu trữ bền vững RDB và AOF.

Chương 4: Phân tích và thiết kế ứng dụng

Chương 4 tập trung vào quá trình kỹ thuật phần mềm:

  • Mô hình hóa yêu cầu người dùng (User) đối với các phân hệ học tập và giải trí.
  • Thiết kế cơ sở dữ liệu: Xây dựng lược đồ cơ sở dữ liệu và định nghĩa chi tiết cấu trúc 7 collection (User, Avatar, Room, Course, Topic, Vocabulary, History).
  • Đặc tả chi tiết 19 Use Case hệ thống kèm theo các luồng sự kiện (đăng nhập, học từ vựng, tạo phòng quiz, xem video, xem tin tức).
  • Thiết kế giao diện chi tiết cho 15 màn hình chức năng trên thiết bị di động iOS, quy định rõ các thuộc tính hiển thị và sự kiện tương tác của từng phần tử UI.

Chương 5: Cài đặt và kiểm thử

Chương 5 trình bày việc hiện thực hóa các module chức năng trên môi trường thực tế: cài đặt cấu hình Docker cho máy chủ backend NodeJS, thiết lập kết nối cơ sở dữ liệu MongoDB và Redis; xây dựng ứng dụng di động React Native và tiến hành kiểm thử các luồng chức năng (xác thực người dùng, tải dữ liệu bài học, đồng bộ dữ liệu phòng thi đấu Quiz và hiển thị tin tức) trên môi trường iOS.

Chương 6: Kết luận

Chương 6 tổng kết các kết quả đạt được của đồ án so với nhiệm vụ thiết kế ban đầu; đánh giá các ưu điểm về tính năng và giao diện, đồng thời nêu rõ các mặt hạn chế còn tồn tại và đề xuất định hướng phát triển tiếp theo cho hệ thống.


Kết quả và đóng góp

  • Kết quả kỹ thuật chính:
    • Hoàn thiện ứng dụng học tiếng Nhật trên nền tảng iOS sử dụng kiến trúc MERN stack kết hợp Redis và Docker.
    • Xây dựng thành công 19 chức năng Use Case, hỗ trợ người dùng tiếp cận tiếng Nhật qua nhiều hình thức: học từ vựng theo chủ đề, học qua Flashcards, xem video lộ trình, đọc tin tức và tra cứu bảng chữ cái (Hiragana, Kanji).
    • Triển khai thành công tính năng phòng thi đấu trắc nghiệm (Game Quiz) cho phép các người dùng tham gia so tài kiến thức trực tiếp tại cùng một thời điểm.
    • Cung cấp tính năng cá nhân hóa cho phép người dùng tự tạo các khóa học và danh mục từ vựng riêng biệt.
  • Đóng góp của đề tài:
    • Tích hợp đa dạng các phương thức học tập và giải trí trong cùng một giải pháp ứng dụng di động duy nhất, giải quyết tình trạng phân mảnh tính năng của các phần mềm trước đây.
    • Khắc phục các nhược điểm phổ biến từ các ứng dụng khảo sát: không chèn quảng cáo gây phiền toái, cung cấp lộ trình học tập rõ ràng, xây dựng giao diện tiếng Việt thân thiện và dễ sử dụng.
    • Đóng vai trò là tài liệu thực nghiệm tham khảo về việc triển khai framework React Native kết hợp với hệ sinh thái NodeJS, MongoDB, Redis và Docker.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế của đề tài:
    • Ứng dụng hiện tại mới chỉ được thiết kế, cài đặt và kiểm thử chuyên biệt trên nền tảng iOS, chưa phát hành phiên bản đồng bộ cho hệ điều hành Android.
    • Hệ thống chưa tích hợp tính năng phát âm âm thanh bản ngữ cho toàn bộ kho từ vựng và câu đố trong ứng dụng.
    • Kho dữ liệu ngữ pháp và bài tập nâng cao vẫn còn ở mức cơ bản, chưa bao quát đầy đủ các cấp độ chuyên sâu.
  • Hướng nghiên cứu và phát triển tiếp:
    • Mở rộng triển khai ứng dụng trên nền tảng Android nhằm khai thác tối đa khả năng đa nền tảng của framework React Native.
    • Tích hợp thêm tính năng phát âm giọng đọc chuẩn bản ngữ cho từng từ vựng và câu hội thoại.
    • Bổ sung và cập nhật thêm kho dữ liệu từ vựng, ngữ pháp theo các cấp độ chứng chỉ tiếng Nhật quốc tế.
    • Tối ưu hóa hiệu năng xử lý phòng đấu Game Quiz khi số lượng người dùng kết nối đồng thời tăng cao.

Giá trị tham khảo

Đề tài là tài liệu tham khảo hữu ích cho:

  • Sinh viên chuyên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp liên quan đến phát triển ứng dụng di động đa nền tảng (Mobile Application Development).
  • Lập trình viên có nhu cầu tham khảo mô hình kết hợp thực tế giữa React Native với hệ thống Backend sử dụng NodeJS, MongoDB, Redis và triển khai qua Docker.
  • Những người phát triển ứng dụng trong lĩnh vực công nghệ giáo dục (EdTech) theo định hướng Gamification (ứng dụng trò chơi hóa trong học tập).
  • Phần phân tích kiến trúc React Native (Bridge, Threading model), cơ chế bất đồng bộ của NodeJS, kỹ thuật lưu trữ Redis (RDB/AOF) và quy trình thiết kế 19 Use Case cùng 7 collection cơ sở dữ liệu là các nội dung mang giá trị tham khảo kỹ thuật cao.

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

1. Đề tài sử dụng những công nghệ và framework nào để xây dựng ứng dụng di động và hệ thống backend? Ứng dụng di động trên nền tảng iOS được xây dựng bằng framework React Native (ngôn ngữ JavaScript). Hệ thống backend sử dụng nền tảng NodeJS, cơ sở dữ liệu NoSQL MongoDB, hệ thống lưu trữ bộ nhớ đệm và điều phối dữ liệu Redis, cùng công nghệ đóng gói môi trường ảo hóa Docker.

2. Cơ sở dữ liệu MongoDB của ứng dụng gồm những collection (bảng dữ liệu) nào? Cơ sở dữ liệu gồm 7 collection chính: User (thông tin người dùng), Avatar (ảnh đại diện upload), Room (thông tin phòng chơi quiz, câu hỏi, câu trả lời), Course (khóa học và từ vựng do người dùng tự tạo), Topic (chủ đề bài học kèm link video), Vocabulary (dữ liệu từ vựng của topic và course), và History (lịch sử học tập theo dạng quiz của người dùng).

3. Tác giả đã rút ra bài học kinh nghiệm gì sau khi khảo sát các ứng dụng English Pop Quiz, Quizlet và Takoboto? Tác giả xác định cần kế thừa các điểm mạnh gồm giao diện đơn giản, dễ thao tác và cơ chế trò chơi trực quan, dễ hiểu; đồng thời cần khắc phục triệt để các hạn chế của các ứng dụng cũ như việc lạm dụng quảng cáo (ở English Pop Quiz), thiếu lộ trình học tập cụ thể (ở Quizlet) và giao diện khó dùng, thiếu phát âm (ở Takoboto).

4. Chức năng tương tác Game Quiz giữa các người dùng hoạt động dựa trên các use case và bảng dữ liệu nào? Tính năng này được vận hành dựa trên Use Case 4 (Join room) và Use Case 5 (Learn by quiz / Learn Topic, Vocabulary), lưu trữ và xử lý dữ liệu trực tiếp thông qua hai collection là Room (quản lý câu hỏi, câu trả lời trong phòng đấu) và History (lưu lại kết quả và lịch sử làm bài của người dùng).

5. Các hạn chế chính và đề xuất phát triển tiếp theo của tác giả là gì? Các hạn chế gồm việc chưa hỗ trợ tính năng phát âm từ vựng, chưa triển khai phiên bản trên Android và kho ngữ pháp cần mở rộng thêm. Hướng phát triển được đề xuất là bổ sung âm thanh phát âm, mở rộng dữ liệu bài học ngữ pháp và xây dựng phiên bản ứng dụng chạy trên hệ điều hành Android.


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 IOS" do sinh viên Nguyễn Trung Nghĩa và Đặng Ngọc Tuấn thực hiện đã nghiên cứu và phát triển thành công một giải pháp hỗ trợ học ngoại ngữ toàn diện trên thiết bị di động. Bằng việc kết hợp hiệu quả nền tảng React Native với NodeJS, MongoDB, Redis và Docker, ứng dụng đã cung cấp 19 chức năng thực tiễn, nổi bật với khả năng học qua video, flashcards, đọc báo và đấu trí trắc nghiệm tương tác thời gian thực. Đề tài thể hiện quy trình phân tích, thiết kế hệ thống và kiểm thử phần mềm chặt chẽ, đóng góp một tài liệu tham khảo kỹ thuật có giá trị cho lĩnh vực phát triển phần mềm di động giáo dục.