Gumi Việt Nam là công ty công nghệ thông tin có vốn đầu tư 100% đến từ Nhật Bản, là một công ty Outsource chuyên phát triển các website và ứng dụng cho di động SmartPhone, ngoài ra còn c
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
LẬP TRÌNH ỨNG DỤNG iOS
Thực tập sinh : Võ Minh Đôn
TP Hồ Chí Minh, tháng 6 năm 2022
Trang 2LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp ứng dụng di động nói chung và lập trình ứng dụng trên nền tảng iOS nói riêng là một bộ phận không thể thiếu của ngành công nghiệp phần mềm Với tốc độ phát triển vô cùng mạnh mẽ, ngành lập trình ứng dụng di động đã và đang là nhân tố kích thích sự phát triển của công nghệ thông tin thế giới, cả về phần cứng và phần mềm
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ Ngành công nghiệp phát triển ứng dụng trên nền tảng iOS tại Việt Nam đã và đang phát triển mạnh mẽ dựa trên nhu cầu sử dụng các thiết bị của Apple của người Việt ngày càng gia tăng Người Việt ta rất chuộng iPhone bởi vì tính dễ dùng, mượt mà và thể hiện đẳng cấp Hơn nữa, người dùng iPhone sẽ có xu hướng sử dụng các ứng dụng trả phí do sự quản lý ứng dụng chặt chẽ trên Appstore của Apple và việc hệ điều hành iOS hạn chế việc cài đặt ứng dụng không rõ từ nguồn bên ngoài
Ngành lập trình ứng dụng iOS được sinh ra là do nhu cầu sử dụng các ứng dụng để phục
vụ công việc và giải trí trên thiết bị iPhone Và giới trẻ sẽ là nguồn nhân lực quan trọng cho việc phát triển của ngành ứng dụng di động sau này Vì lý do này, em quyết định chọn lập trình ứng dụng iOS làm định hướng cho việc học tập của mình
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như muốn được tham gia làm game trong một môi trường chuyên nghiệp, em có dự định là sẽ thực tập trong hè Vì vậy, em quyết định chọn Gumi Việt Nam - một môi trường lý tưởng, thân thiện, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này
Trang 3Đặc biệt cảm ơn anh Lê Khánh Sơn, đã training về Swift và iOS, hướng dẫn, giúp đỡ cho
em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm quen với môi
trường mới; cảm ơn chị Mã Hồng Yến Linh, đã training về nội quy công ty, hỗ trợ em rất nhiều
về các vấn đề về thực tập; cảm ơn chị Trần Thị Mỹ Hạnh đã chỉ dẫn em về cách làm báo cáo, lên kế hoạch, những kỹ năng không thể thiếu; cảm ơn các anh Lý Thành Long, anh Nguyễn
Hoàng Nhật, anh Thạch Kỳ Sanh và anh Vũ Đình Thuận đã kiểm tra kiến thức, training thêm
cho em những điểm còn thiếu sót và giúp đỡ em trong suốt quá trình thực tập
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Võ Minh Đôn Thành phố Hồ Chí Minh, ngày 10 tháng 6 năm 2022
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
Table of Contents
Chương 1: Giới thiêu công ty thực tập 6
1 Giới thiệu công ty Gumi Việt Nam 6
2 Cơ cấu tổ chức 7
Chương 2: Nội dung thực tập 8
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2 Nghiên cứu kỹ thuật 8
2.1 Các công nghê làm việc 8
2.2 Tìm hiểu ngôn ngữ Swift 8
2.3 Lập trình ứng dụng iOS với Swift và UIKit 9
3 Thực hiện project 10
4 Lịch làm việc 10
Chương 3: Chi tiết về project 14
1 Giới thiệu về project Nenga 14
1.1 Công nghệ sử dụng 14
1.2 Các tính năng chính 14
1.3 Thực hiện 17
1.4 Kế hoạch 17
2 Giới thiệu về project ShimaumaPrint 17
2.1 Công nghệ sử dụng 17
2.2 Các tính năng chính 18
2.3 Thực hiện 20
2.4 Kế hoạch 20
TÀI LIỆU THAM KHẢO 21
Trang 6Chương 1: Giới thiêu công ty thực tập
1 Giới thiệu công ty Gumi Việt Nam
Được thành lập vào năm 2012 Gumi Việt Nam là công ty công nghệ thông tin có vốn đầu tư 100% đến từ Nhật Bản, là một công ty Outsource chuyên phát triển các website và ứng dụng cho di động SmartPhone, ngoài ra còn cung cấp các dịch vụ được tạo ra trên nền tảng VR/AR
Số năm kinh nghiệp trong lĩnh vực bán hàng dịch vụ: 8 năm
Chiến lược phát triển:
- Tầm nhìn: Gumi mong muốn trở thành người bạn đồng hành hàng đầu của các
tổ chức và doanh nghiệp trong việc cung cấp các giải pháp, các sản phẩm công nghệ có tính sáng tạo, tính ứng dụng cao nhằm thúc đẩy hoạt động kinh doanh phát triển hiệu quả
- Sứ mệnh: Trong suốt quá trình hoạt động, Gumi Việt Nam luôn nỗ lực với mục tiêu cao nhất là mang lại sự hài lòng cho khách hàng với phong cách làm việc chuyên nghiệp Luôn đảm bảo tính chính xác, kịp thời của dự án Ngoài ra Gumi Việt Nam luôn tiên phong trong các xu hướng công nghệ mới góp phần vào sự nghiệp công nghiệp hoá, hiện đại hoá đất nước trong quá trình hội nhập với nền kinh tế thế giới
- Liên tục đào tạo nhằm phát triển nguồn nhân lực, tăng cường đầu tư trang thiết
bị kỹ thuật và công nghệ thi công hiện đại, nghiên cứu và ứng dụng các
Trang 7phương thức quản lý hiệu quả, chuyên nghiệp, tiên tiến nhất nhằm đám ứng yêu cầu của khách hàng, đối tác
2 Cơ cấu tổ chức
Gumi Việt Nam là sự kết hợp giữa sức trẻ, tri thức và đội ngũ các quản lý gồm nhiều kỹ sư công nghệ thông tin được đào tạo bài bản từ các trường học danh tiếng trong nước và nước ngoài, có kinh nghiệm lâu năm trong lĩnh vực xây dựng phần mềm:
- Ban giảm đốc: Shogo Harada
- General Manager: Phạm Quí Toàn
- Administrative Manager: Bùi Huyền My
- Các bộ phận Marketing, hỗ trợ khách hàng, bộ phận phát triển ứng dụng
Trang 8Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình ứng dụng iOS” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình ứng dụng di động trên nền tảng iOS và tham gia dự án thực tế dưới sự hướng dẫn của mentor, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường phát triển ứng dụng chuyên nghiệp
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triên (như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…
Kết quả : Hiểu thêm về công ty Gumi Việt Nam, quá trình thành lập và phát triển Có
thêm các kỹ năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2 Nghiên cứu kỹ thuật
2.1 Các công nghê làm việc
Thời gian : 4 ngày
Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc
Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các công
cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như Slack – công cụ sử dụng trong làm việc nhóm, Nulab backlog – công cụ sử dụng để quản lý tiến độ công việc, Xcode – môi trường phát triển tích hợp để lập trình ứng dụng iOS, Sourcetree – công cụ để quản lý mã nguồn
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên
Kết quả : Hiểu rõ được các công cụ sẽ được sử dụng, dễ dàng kết hợp các công cụ với
nhau để tạo ra luồng xử lý công việc hiệu quả
2.2 Tìm hiểu ngôn ngữ Swift
Thời gian : 5 ngày (1 tuần)
Nội dung : Được training về các kỹ thuật lập trình bằng ngôn ngữ Swift, những kiến
thức quan trọng cho việc tối ưu trên iOS
Trang 9- Lập trình hướng đối tượng
Các kiến thức cơ bản về lập trình hướng đối tượng như khái niệm, các đặc tính như tính kế thừa, tính đóng gói, tính ảo hóa, tính đa hình Các ứng dụng nâng cao với ngôn ngữ Swift
- Optional :
Swift là một trong những ngôn ngữ an toàn nhất trong lập trình, nắm được optional và unwrap optional sẽ tối ưu được hệ thống và tránh được nhiều lỗi phát sinh trong quá trình chạy ứng dụng
- Quản lý bộ nhớ
Thực tập sinh sẽ được hướng dẫn về cách cấp phát, quản lý bộ nhớ sao cho tối ưu, tránh rò rỉ bộ nhớ, một trong những phần rất quan trọng trong lập trình ứng dụng trên điện thoại, vì bộ nhớ trên điện thoại không thể lớn như trên máy tính được
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả :
- Nâng cao kỹ năng lập trình với ngôn ngữ Swift
- Có được những kiến thức quan trọng cho việc lập trình ứng dụng di động sau này
- Ngoài ra còn được biết thêm một số quy tắc trong việc viết code sao cho đúng chuẩn, dễ đọc, dễ hiểu
2.3 Lập trình ứng dụng iOS với Swift và UIKit
Nội dung: Các kiến thức về UIKit, sử dụng các thư viện bên thứ 3 từ Cocoapods,
Swiftpackage manager, Carthage, cách sử dụng Xcode để có thể tạo ra một ứng dụng iOS
- Kiến thức về UIKit
Hiện nay UIKit và SwiftUI là 2 thư viện chính để lập trình giao diện iOS tuy nhiên cho đến hiện tại SwiftUI vẫn chưa được sử dụng phổ biến và còn đang dần được cải thiện nên có rất ít dự án thực tế sử dụng thư viện này
Nắm được phương pháp sử dụng UIKit giúp người lập trình hiểu được cấu trúc xây dựng giao diện của thư viện, các thành phần cấu thành giao diện cơ bản của một màn hình
- Cocoapods, Swiftpackage manager, Carthage:
Trang 10Đây là các công cụ quản lý thư viện từ bên thứ 3 được thêm vào Xcode được sử dụng phổ biến của các lập trình viên iOS
- Realm, Core data
Đây là những hệ quản trị cơ sở dữ liệu thường dùng trong các ứng dụng iOS được
sử dụng để lưu trữ dữ liệu trên di động
Thực hiện :
- Tham gia đầy đủ các buổi trainning
- Làm các bài tập thực hành xây dựng giao diện của một số màn hình trong dự án
có sẵn, lập trình logic cho những xử lý liên quan đến giao diện, lưu trữ dữ liệu và quản lý mã nguồn bằng Sourcetree…
- Tìm kiếm tài liệu trên mạng để tìm hiểu thêm
3 Thực hiện project
Sau 3 tháng được training và làm bài tập thực hành, thực tập sinh đã nắm vững được những kiến thức về iOS Sau tháng thứ 3, thực tập sinh được tiếp cận với dự án thực tế dưới sự hướng dẫn của mentor
Chi tiết đồ án sẽ được nói ở phần sau
4 Lịch làm việc
Mức
độ hoàn thành
Nhận xét của người hướng dẫn
1
- Tìm hiểu về công
ty, cách tổ chức của công ty, nội quy công ty
- Làm quen với các
Chị Nguyễn Thị
Mỹ Hạnh, Chị Mã Hồng Yến Linh
Trang 11công cụ làm việc trong công ty
- Học cách trao đổi, làm việc qua email
2
- Tìm hiểu ngôn ngữ lập trình Swift
- Tìm hiểu về Xcode
- Tìm hiểu về Coding convention
- Dùng ngôn ngữ Swift làm các bài tập cơ bản
- Tìm hiểu về quản
lý Library trong ứng dụng
- Xây dựng một số màn hình đơn giản
Anh Lê Khánh Sơn
4
- Tìm hiểu về json, cách đọc và gửi dữ liệu json,
Anh Lê Khánh Sơn
5
- Tìm hiều về Realm, Core Data, User Default
- Tìm hiểu về các thư viện bên thứ 3 hay được sử dụng như Firebase, Alamofire
- Lưu trữ dữ liệu trên ứng dụng và sử
Anh Lê Khánh Sơn
Trang 12dụng Alamofire để gửi request
6 => 9
Giai đoạn Trainee:
- Tiếp tục tìm hiểu về UIKit và xây dựng một số màn hình phức tạp giống như trong dự án
- Sử dụng Sourcetree, git flow để quản lý
Anh Lý Thành Long, anh Vũ Đình Thuận, anh Lê Khánh Sơn
10=>12
- Sử dụng thư viện Alamofire để gọi api
- Lưu dữ liệu đã lấy xuống cơ sở dữ liệu Realm
- Sử dụng Firebase Crashlytics để quản
lý quản lý các báo cáo về crash ứng dụng theo thời gian thực
- Cải thiện ứng dụng
từ các đóng góp của mentor
Anh Lý Thành Long, anh Lê Khánh Sơn, anh
- Trau dồi thêm kiến thức về iOS
- Bảo cáo cuối đợt
Anh Lê Khánh Sơn
Trang 13thực tập
Hiện tại
Giai đoạn Staff:
- Xây dựng, quản lý, bảo trì dự án dưới
sự quản lý của Leader
Anh Lý Thành Long
Trang 14Chương 3: Chi tiết về project
1 Giới thiệu về project Nenga
Project trong giai đoạn trainee: Nenga là một ứng dụng thiết kế và đặt mua các loại thiệp khác nhau trên ứng dụng di động Từ những bức ảnh của bản thân được lưu trong thư viện kết hợp với các loại template mẫu, sticker, các kí tự, lời chúc có sẵn…Ta sẽ tạo
ra được một tấm thiệp theo ý thích và đặt mua chúng
o Sử dụng Cocoapods làm công cụ quản lý thư viện bên thứ 3
o Sử dụng thư viện Alamofire để xử lý request, SDProgressHUD để làm màn hình loading
Trang 16Ở màn hình này người dùng sẽ chọn ảnh từ ứng dụng Photos của di động để dùng trong tấm thiệp và chọn Stickers để dán lên thiệp đồng thời cũng lưu lại những Sticker đã chọn vào Database
Quản lý đa ngôn ngữ:
Trang 17Trong ứng dụng có 3 ngôn ngữ là tiếng Việt, tiếng Nhật và tiếng Anh Tuỳ thuộc vào ngôn ngữ của điện thoại mà ứng dụng sẽ hiển thị ngôn ngữ phù hợp
đỡ lẫn nhau
Kết quả:
o Hoàn thành hầu hết những yêu cầu được đặt ra từ mentor
o Có tích hợp đa ngôn ngữ cái mà ứng dụng gốc không có
o Hiểu được cách thức làm việc của các member trong dự án
2 Giới thiệu về project ShimaumaPrint
Project trong giai đoạn fresher: ShimaumaPrint là ứng dụng cho phép người dùng sử dụng ảnh của bản chỉnh sửa và đặt mua ảnh theo nhu cầu, với các chức năng chính như chọn size giấy in, loại giấy in, chỉnh sửa ảnh, in ảnh có mốc thời gian
2.1 Công nghệ sử dụng
Các công nghệ được sử dụng trong dự án:
o Sử dụng UIKit và RxSwift để thiết kế giao diện và logic
o Sử dụng mô hình MVVM kết hợp Clean Architecture làm kiến trúc ứng dụng
o Sử dụng Cocoapods làm công cụ quản lý thư viện bên thứ 3
o Sử dụng thư viện Alamofire để xử lý request, Firebase để quản lý báo cáo crash và log event, Kingfisher để thao tác với ảnh, Quick & Nimble để test…
Trang 18o Sử dụng Realm làm Database
2.2 Các tính năng chính
Màn hình đăng nhập, đăng kí, chọn size giấy:
Ở màn hình này người dùng sẽ đăng nhập hoặc đăng kí tài khoản sau đó có thể bắt đầu chọn size giấy để tạo ảnh
Màn hình chọn ảnh, chỉnh sửa ảnh:
Ở màn hình này người dùng sẽ chọn những tấm ảnh đã có sẵn ở thư viện, tuỳ chỉnh chế độ in, khung ảnh và cắt ảnh tuỳ ý
Trang 19
Màn hình chọn bìa giấy, màn hình order:
Trang 20
Ở màn hình chọn bìa người dùng có thể chọn mẫu bìa giấy phù hợp tương ứng với giá tiền và có thể tuỳ chọn tính năng tối ưu màu sắc cho ảnh sau đó đi đến màn hình đặt hàng và tiến hành thanh toán
2.3 Thực hiện
Được thực hiện bởi các thành viên của team D2C cùng các thành viên khác ở Nhật Bản:
o Leader: Lý Thành Long
o IT comtor Leader: Trần Phan Thanh Phương
o Nguyễn Hoàng Nhật: (Senior iOS Developer)
o Lê Khánh Sơn (Middle iOS Developer)
o Vũ Đình Thuận (Junior iOS Developer)
o Lê Duy Khang (Intern iOS Developer)
o Võ Minh Đôn (Intern iOS Developer)
2.4 Kế hoạch
Thời gian: Từ tháng 12 đến nay Nội dung: Tham gia trực tiếp vào dự án và làm task dưới sự hướng dẫn của mentor, tuân thủ kỷ luật, chủ động giao tiếp với các thành viên khác trong công việc, học hỏi và chia sẻ kiến thức với các thành viên khác, sửa lỗi hay tính năng theo yêu cầu của khách hàng và hiểu rõ quy trình làm việc
Kết quả:
o Hiểu rõ quy trình làm việc và giao tiếp với các thành viên khác
o Nắm chắc được công cụ và kiến thức sử dụng
o Hoàn thành tốt các công việc được giao
o Đọc hiểu các yêu cầu của khách hàng dễ dàng