Bạn muốn tự tạo ra ứng dụng của chính mình? Thật tuyệt vời, tạo app là một niềm vui và giúp bạn có thêm kinh nghiệm thật bổ ích. Tôi vẫn còn nhớ cảm giác vui sướng khi lần đầu tiên tạo nên một app khoảng nhiều năm về trước, mặc dù ứng dụng đó của tôi mới chỉ rất đơn giản và cơ bản. 

Trước khi chúng ta đi sâu vào lập trình iOS, hãy cùng thảo luận một chúchút về những công cụ cần thiết để xây dựng một app và chuẩn bị tư duy cho việc học phát triển app iOS nhé. 

Tìm hiểu thêm khóa học lập trình iOS Swift 12 buổi và Swift mobile 6 tháng tại Techmaster Việt Nam

Các công cụ

Apple đã chọn một môi trường hệ thống khép kín hơn là một hệ thống mở. iOS chỉ có thể chạy trên các thiết bị của Apple như iPhone và iPad. Điều này không giống với đối thủ của họ, Google, rằng Android được phép chạy trên các thiết bị di động từ nhiều nhà sản xuất khác nhau. Là một nhà phát triển iOS đầy tham vọng, điều này có nghĩa là bạn sẽ cần một máy Mac mới có thể phát triển app được. 

1. Sở hữu một máy Mac

Việc có một máy Mac là yêu cầu cơ bản đối với việc phát triển iOS. Để phát triển một app cho iPhone (hoặc iPad), bạn cần phải có một máy Mac cùng với một bộ xử lý nền Intel chạy trên macOS phiên bản 10.13.4 (hoặc mới hơn). Nếu bây giờ bạn đang có một PC, phương án rẻ nhất là mua một máy Mac Mini. Theo như cuốn sách này, giá bán lẻ của một entry model là 499 đô Mỹ. Bạn có thể nối nó với màn hình máy PC của bạn. Model cơ  bản của Mac mini đi kèm một bộ xử llý 1.4GHz dual-core Intel Core i5 và bộ nhớ 4GB. Nó phải đủ tốt để chạy các công cụ phát triển iOS một cách trơn tru. Tất nhiên nếu bạn có ngân sách lớn hơn thì hoàn toàn có thể lấy model lớn hơn hoặc một máy iMac với khả năng xử lý tốt hơn. 

"Thế còn Hackintosh thì sao? Liệu đây có phải là lựa chọn thích hợp nếu bạn không có máy Mac? Tôi nghe nói rằng chúng ta có thể sử dụng máy này để chạy Mac trên thiết bị Windows. Mặc dù bạn có thể đã nghe một vài trường hợp sử dụng máy Hackintosh để phát triển iOS thành công, tuy nhiên đây không phải là phương pháp được khuyến khích. Nếu bạn nghiêm túc muốn học phát triển iOS và đủ khả năng chi trả chi phí trả trước thì Mac là một khoản đầu tư cần thiết."

2. Đăng ký ID Apple

 Bạn sẽ cần một ID Apple để tải Xcode, truy cập tài liệu SDK của iOS và các tài nguyên kỹ thuật khác. Quan trọng nhất là nó sẽ cho phép bạn triển khai ứng dụng của mình lên iPhone/iMac thật để thử nghiệm. 

Nếu bạn tải một app từ App Store thì chắc chắn bạn đã phải có một ID Apple. Trong trường hợp bạn không tạo ID Apple trước đó thì bạn phải làm điều đó luôn. Chỉ cần truy cập website (https://appleid.apple.com/account) và làm theo hướng dẫn để đăng ký. 

3. Cài đặt Xcode

Để bắt đầu phát triển app iOS, Xcode là công cụ duy nhất mà bạn cần tải về. Xcode là một môi trường phát triển tích hợp (IDE) được cung cấp bởi Apple. Xcode cung cấp tất cả những thứ bạn cần để bắt đầu phát triển ứng dụng của bạn. Nó đã bao gồm phiên bản mới nhất của iOS SDK (viết tắt của Software Development Kit), trình chỉnh sửa mã nguồn tích hợp, trình chỉnh sửa giao diện người dùng đồ họa (UI), các công cụ chữa lỗi và nhiều hơn nữa. Quan trọng nhất là Xcode đi kèm với một trình giả lập iPhone (và iPad) do đó bạn có thể thử nghiệm app của mình mà không cần đến thiết bị thật. 

Có hai cách để cài đặt Xcode: 1. Tải về qua Mac App Store. 2. Tải thủ công từ website cho các lập trình viên của Apple. 

Tải Xcode từ Mac App Store

Để tải Xcode, khởi động Mac App Store trên máy Mac của bạn. Nếu bạn đang dùng phiên bản Mac OS mới nhất thì nên mở Mac App Store bằng cách click chuột vào biểu tượng trên màn hình. Nếu không tìm thấy thì bạn cần phải nâng cấp Mac OS của mình. 

App Store trên màn hình
App Strore trên màn hình

Trong Mac App Store, chỉ cần gõ "Xcode" và click vào nút "Get" để tải về.

Tải Xcode

Khi hoàn thành cài đặt, bạn sẽ thấy Xcode trong

Launchpad 

Xcode trong Launchpad

Tại thời điểm viết bài này, phiên bản Xcode mới nhất là 10.0. Trong suốt bài viết này chúng ta sẽ sử dụng phiên bản Xcode này để tạo các app demo. Ngay cả khi bạn đã cài Xcode trước đó rồi thì tôi vẫn khuyên bạn nên nâng cấp lên phiên bản mới nhất, điều này sẽ giúp bạn làm theo các hướng dẫn dễ dàng hơn. 

Tải Xcode từ website của lập trình viên 

Thông thường bạn có thể tải Xcode từ Mac App Store, đây là cách thường được khuyên dùng cho những người mới bắt đầu. Nếu vì bất kỳ lý do nào mà bạn không muốn sử dụng Mac App Store thì bạn có thể tải Xcode 9 thủ công. Bạn phải đăng nhập vào website của lập trình viên Apple, (http://developer.apple.com/register/), chọn công cụ tải xuống rồi click vào Tải Xcode 10 GM 

Khi tệp được tải xuống thành công thì click đúp vào và cài đặt nó là được. 

4. Đăng ký Chương trình lập trình viên Apple (Tùy chọn)

Một câu hỏi phổ biến về việc phát triển một app iOS là liệu bạn có cần đăng ký Chương trình lập trình viên của Apple hay không (https://developer.apple.com/programs/)? Câu trả lời ngắn gọn là tùy chọn. Đầu tiên, Xcode đã bao gồm một trình giả lập iPhone và iPad tích hợp. Bạn có thể phát triển và thử nghiệm app của mình trên Mac mà không cần đăng ký chương trình này. 

Bắt đầu từ Xcode 7, Apple đã thay đổi chính sách liên quan đến các quyền cần thiết để xây dựng và chạy app trên các thiết bị. Trước đó, công ty đã yêu cầu bạn trả 99 đô Mỹ một năm để triển khai và chạy app trên một iPhone hoặc iPad. Bây giờ thì chương trình hội viên không còn cần thiết nữa. Mọi người đều có thể thử nghiệm app của mình trên một thiết bị thực mà không cần đăng ký vào chương trình lập trình viên Apple. Cũng phải nói rằng nếu bạn muốn dùng thử một số tính năng nâng cao như mua trong app, đẩy thông báo hoặc CloudKit, bạn vẫn cần phải đăng ký chương trình hội viên. Điều quan trọng nhất là bạn không thể gửi app của mình lên App Store mà không trả phí thành viên hằng năm. 

Do đó, bạn có nên đăng ký chương trình này hay không> Chương trình lập trình viên Apple trị giá 99 đô Mỹ một năm. Đây không phải số tiền lớn tuy nhiên cũng không phải rẻ. Vì bạn đang đọc cuốn sách này nên có lẽ bạn là người mới bắt đầu và mới chỉ bắt đầu khám phá về phát triển iOS. Bài viết này là dành cho những người mới bắt đầu. Đầu tiên chúng ta sẽ bắt đầu với những thứ đơn giản trước. Bạn không cần phải khai thác các tính năng nâng cao cho đến khi nắm chắc những kỹ năng cơ bản. 

Do đó, mặc dù bạn không đăng ký vào chương trình ấy thì bạn vẫn có thể theo dõi hầy hết nội dung để xây dựng và thử nghiệm trên thiết bị của mình. Bây giờ, để tiết kiệm, tôi sẽ cho bạn biết khi nào thì bạn cần đăng ký vào chương trình. Đến lúc ấy bạn sẽ được khuyến khích tham gia vì bạn đã sẵn sàng công bố ứng dụng lên App Store rồi/ 

Phương pháp học tập 

Tôi đã dạy lập trình iOS từ năm 2012 thông qua blog, các khóa học online và hội thảo trực tiếp. Những gì mà tôi tìm thấy được chính là phương pháp học tập và tư duy tạo nên khác biệt giữa thất bại và đạt được thành công. Trước khi chúng ta thảo luận về lập trình Swift và iOS tôi muốn giúp bạn trang bị tư duy đúng đắn và hiểu về phương pháp hiệu quả nhất để học lập trình. 

Đừng ngại làm việc khó

Một trong những câu hỏi phổ biến nhất về việc học code đó là:

Cách tốt nhất để học lập trình iOS là gì?

Đầu tiên là nhờ việc đọc cuốn sách này. Tuy nhiên tôi cũng phải nói để hiện hiểu rằng bạn không thể học lập trình chỉ dựa vào việc đọc một cuốn sách. Quyển sách này có mọi thứ mà bạn cần để học Xcode, Swift và phát triển aapp iOS. 

Nhưng điều quan trọng vẫn là hành động

Nếu phải trả lời câu hỏi trên thì tôi sẽ nói "Học từ thực hành" Đây chính là cốt lõi trong phương pháp dạy của tôi. 

Để tôi thay đổi câu hỏi một chút:

Cách tốt nhất để học Tiếng Anh là gì (hoặc một ngoại ngữ khác)?

Cách tốt nhất để học đạp xe là gì (hoặc bất kỳ môn thể thao nào khác)? 

Bạn dường như đã biết câu trả lời rồi. Tôi đặc biệt thích câu trả lời này trên Quora về việc học một ngôn ngữ mới: 

" Theo dõi lộ trình: nghe 1 giờ một ngày, nói 1 giờ một ngày, viết 1 chuyên mục tạp chí.

- Dario Mars Patible" 

Bạn học bằng cách thực hành, không phải chỉ học ngữ pháp. Học lập trình cũng rất giống với học một ngôn ngữ. Bạn cần phải hành động. Bạn phải làm việc trên một dự án hoặc một số bài tập. Bạn phải ngồi trước máy Mac của mình, phải đắm mình vào Xcode và viết code Swift. Không quan trọng bạn mắc bao nhiêu lỗi trong cả quá trình, chỉ cần nhớ mở Xcode và code trong khi đọc bài viết này. 

Động lực 

Tại sao bạn muốn học phát triển app? Động lực nào thúc đẩy bạn hi sinh những ngày cuối tuần và các kỳ nghỉ để học cách code? 

Một số người bắt đầu học phát triển app chỉ bởi vì kiếm tiền. Điều này không có vấn đề gì cả. Bạn có thể muốn xây dựng công ty ứng dụng để kiếm thêm thu nhập và dần chuyển nó thành một công ty toàn thời gian. Điều này hoàn toàn có thể hiểu được. Ai mà không muốn sống một cuộc sống giàu có chứ? 

Tuy nhiên tính đến tháng Ba năm 2018 mới có hơn 2,1 triệu ứng dụng trên App Store. Thực sự rất khó để đưa một ứng dụng lên App Store và hi vọng sẽ kiếm được một khoản tiền tiền dài hạn. Bạn sẽ dễ dàng nản lòng hoặc thậm chí là bỏ cuộc nếu tiền là lý do chính để bạn xây dựng app, đặc biệt là khi bạn bắt gặp những bài báo như thế này: 

  • Tôi đã kiếm được bao nhiêu tiền trên App Store 
    Sau đó thực tế
    199 đơn vị cũ = 209 đô Mỹ doanh thu = 135 đô Mỹ tiền thu được. Vậy để có ứng dụng trên App Store, tôi cần trả 99 đô Mỹ phí nhà phát triển. 
    Vậy sau 2 tháng và 1 tuần lợi nhuận (trước thuế) của tôi là 36 đô Mỹ
    - James

 Lập trình là một công việc khó và đòi hỏi nhiều thử thách. Tôi thấy những người thành thạo ngôn ngữ là những người có niềm đam mê lớn với việc xây dựng app và nhiệt tình học lập trình. Họ thường có ý tưởng trong đầu và muốn chuyển nó vào các app thực. Kiếm ra tiền không phải là mối quan tâm hàng đầu của việc học. Họ biết những app có thể giải quyết những vấn đề của chính họ và cũng sẽ có lợi cho người khác. Với mục đích mạnh mẽ như vậy trong tâm trí thì họ có thể vượt qua mọi trở ngại xuất hiện. 

Vì vậy, hãy suy nghĩ lại lý do vì sao bạn muốn học lập trình. 

Tìm cho mình một người bạn 

Có một câu nói cũ: "Cách học tốt nhất chính là dạy học" Tuy nhiên câu nói này vẫn hữu dụng ở thì hiện tại. Bạn không cần phải trở thành một chuyên gia để dạy. Tôi không nói đến việc xây dựng một bài giảng ở trường đại học hay việc dạy một nhóm học sinh ở một lớp học chính thức. Việc dạy học không phải lúc nào cũng diễn ra như vậy. Chỉ đơn giản là chia sẻ kiến thức của mình với một đồng nghiệp hay một người bạn cùng lớp ngồi bên cạnh bạn mà thôi. 

Hãy tìm một ai đó hứng thú với việc học lập trình iOS, khi bạn học được thứ gì mới thì hãy cố gắng giải thích những tài liệu với bạn của bạn. Ví dụ, sau khi xây dựng app đầu tiên, bạn hãy dạy bạn của bạn cách nó hoạt động và cách anh ấy/cô ấy cũng có thể tạo một app như bạn. 

Nếu bạn không thể tìm được bạn để chia sẻ những gì bạn học được thì sao? Đừng lo lắng, hãy bắt đầu một blog trên medium.com (hoặc bất cứ nền platform nào mà bạn thích), hãy viết một bài đăng blog mỗi ngày và ghi lại mọi thứ bạn học được ở trên đó. 

Đây là một trong những cách học hiệu quả nhất và tôi đã học được rất nhiều trong khi đăng những bài hướng dẫn trên appcoda.com cũng như phát triển cuốn sách đầu tiên của tôi. 

Có đôi lúc bạn nghĩ rằng bạn hiểu các tài liệu rất rõ. Nhưng một khi bạn cần phải giải thích khái niệm này cho người khác và phải trả lời các câu hỏi, bạn có thể sẽ nhận ra rất có thể bạn đã không hiểu rõ những tài liệu ấy như mình tưởng. Điều này sẽ thúc đẩy bạn nghiên cứu các tài liệu thậm chí là khó hơn.

Hãy kiên nhẫn 

Grit là sự đam mê và kiên nhẫn đối với những mục tiêu rất dài hạn. Grit cần có sức chịu đựng bền bỉ. Grit đang gắn bó với tương lai của bạn từ ngày này sang ngày khác, không chỉ một tuần, không chỉ một tháng mà là hàng năm. Và làm việc chăm chỉ để biến tương lai đó thành hiện thực. Grit là cuộc sống giống như một cuộc chạy đua marathon chứ không phải là một cuộc chạy nước rút. 

- Theo Tiến sĩ Angela Lee Duckworth 

Một số sinh viên của tôi đã hỏi "Phải mất bao lâu để trở thành một lập trình viên giỏi?" 

Phải mất thời gian để thành thạo lập trình và trở thành một lập trình viên giỏi, điều này thường mất hằng năm trời. Không phải hằng tuần, không phải hằng tháng mà là hằng năm. 

Cuốn sách này sẽ giúp bạn bắt đầu hành trình này. Bạn sẽ học tất cả những điều cơ bản về lập trình Swift và iOS và thậm chí là xây dựng một app. Thế nên phải cần rất nhiều thời gian và thực hành để trở thành một lập trình viên chuyên nghiênghiệp. 

Hãy kiên nhẫn. Đừng đặt kỳ vọng quá cao vào app đầu tiên. Chỉ cần tận hưởng quy trình, tạo ra thứ gì đó đơn giản và vui vẻ, hãy cứ đọc và code hằng ngày, bạn sẽ thành tạo các kỹ năng thôi. 

Tìm ý tưởng app của riêng bạn

Tôi luôn khuyến khích sinh viên của mình tìm tòi đưa ra ý tưởng app của riêng họ khi bắt đầu học phát triển app. Ý tưởng này không cần lớn. Bạn cũng không cần phải xây dựng một app Uber thứ hai hoặc đưa ra một ý tưởng mới thay đổi thế giới. Bạn chỉ cần bắt đầu với những ý tưởng nhỏ giải quyết được vấn đề là đủ. 

Để tôi đưa bạn một cặp ví dụ sau: 

Một ví dụ kinh điển mà tôi thường nhắc đến là Từ điển Cockpit. Đây là một app được xây dựng bởi Manolo Suarez, là một phi công chuyên nghiệp. Ông đã có một ý tưởng app trong khi đang học lập trình app. Ý tưởng không khác lạ lắm nhưng giải quyết được vấn đề của chính ông. Có hàng chục ngàn thuật ngữ hàng không ở dạng viết tắt, ngay cả đối với một phi công kinh nghiệm hơn 20 năm cũng không thể nhớ hết được tất cả những từ viết tắt và các thuật ngữ kỹ thuật. Thay vì sử dụng từ điển in, ông đã nghĩ đến việc xây dựng một app tiện dụng dành cho phi công để tra cứu tất cả những loại thuật ngữ hàng không trên. Đây là một ý tưởng đơn giản, tuy chưa phải là ý tưởng vĩ đại nhưng có thể giải quyết được vấn đề của chính ông ấy. 

Từ điển Cockpit

Một ví dụ khác nữa là NOAA Buoy Data. Ứng dụng này cho biết những dữ liệu mới nhất về thời tiết, gió và sóng từ National Oceanic and Atmostpheric Administration's (NOAA) National Data Buoy Center (NDBC). Ứng dụng này được phát triển bởi Leo Kin, anh đã nảy sinh ý tưởng app trong quá trình phục hồi sau phẫu thuật. 

"Sau phẫu thuật, tôi phải đeo nẹp cổ trong khoảng ba tháng. Trong suốt ba tháng này tôi không thể chuyển động nhiều, đi lại khó khăn và thậm chí là khó giơ tay. Bác sĩ trị luật vật lý khuyên tôi nên đi lại nhiều nhất có thể, tôi có thể tập thể dục để cải thiện lại cơ bắp chân bị teo. 

Tôi thực sự rất thích đi bộ đến một hòn đảo gần nơi tôi đang sống. Nhưng vấn đề duy nhất là tôi chỉ có thể làm như vậy khi thủy triều xuống, còn lúc thủy triều lên thì không có cách nào có thể trở về nhà ngoại trừ bơi. Vì thể chất của tôi rất yếu, tôi rất sợ bị mắc kẹt trên đảo không có đường về. Trong khi đi bộ, tôi thường truy cập website của NOAA để kiểm tra thủy triều cao hay thấp và liệu tôi có đủ thời gian để đi bộ đến đảo và quay lại hay không. 

Trong một lần đi bộ như vậy, tôi nảy ra ý tưởng xây dựng một app. Cho dù không ai sử dụng app này đi chăng nữa thì đây cũng không phải là vấn đề, vì app này giúp tôi theo dõi thủy triều và quay về nhà đúng giờ" 
- Leo Kin 

Ứng dụng của anh ấy có thể không gây hứng thú đối với bạn nhưng nó giải quyết được vấn đề mà anh ấy đang phải đối mặt. Có lẽ mọi người trên đảo cũng sẽ được hưởng lợi từ ứng dụng đó. 

Ứng dụng NOAA Buoy Data

Việc có riêng ý tưởng app của mình sẽ giúp bạn có một mục tiêu cụ thể và thúc đẩy bạn không ngừng học tập. Bây giờ bạn hãy giành chút thời gian và viết ra ba ý tưởng app xuống dưới đây: 

  1. ...............................................................................................................................................................................................................................................
  2. ...............................................................................................................................................................................................................................................
  3. ...............................................................................................................................................................................................................................................

Kết luận

Chấm dứt phần mở đầu. Hãy cứ dành thời gian để cài đặt Xcode trên máy Mac và tìm ý tưởng app riêng của bạn. Mặc dù tôi có thể không dạy bạn xây dựng một app giống hệt nhưng bạn vẫn sẽ học được những kỹ thuật code cần thiết để xây dựng app riêng của chính mình. 

Chúng ta sẽ bắt đầu lập trình với Swift ở chương tiếp theo nên hãy chuẩn bị sẵn sàng nhé!