第 1 章
工具、學習方法與 App 點子

當你拿起本書時,想必是希望建立一個 iOS App,而製作 App 是一個有趣且有益的經驗。我對於多年前第一次做出 App 時的喜悅依然印象深刻,儘管我做的是很簡單且很基礎的 App。

iOS(供iPhone 與iPad 使用的行動作業系統)發布至今已經十多年了,工具、程式語言及其框架在這些年來已有了巨大的變化,因此在深入研究 iOS 程式設計之前,我們先來了解你開發 App 所需要的工具,並且為學習 iOS App 開發做好準備。

開發 App 的所需工具

Apple 比較偏好採用封閉系統,而不是使用開放系統。iOS 只能在Apple 自己的裝置如 iPhone 與 iPad 中運作。和另一個競爭對手 Google 不同的是,Android 系統可以在不同製造商所製作的行動裝置中運作。如果有志成為一個 iOS 開發者的話,表示你需要一台 Mac 才能進行 iOS App 的開發。

1. 需要一台 Mac 電腦

擁有一台Mac 電腦, 是 iOS 程式開發的基本要求。要開發一個 iPhone( 或iPad ) App,你需要準備一台能執行macOS 13.5 版本(或更高版本)的 Mac 電腦。若是你目前只有 PC,最便宜的方案是購買 Mac Mini。在撰寫本書時,Mac Mini 的入門版市售價格是台幣18,900 元,你可以把它接到你的 PC 螢幕即可。我建議你選擇配備Apple M1 晶片的 Mac Mini 基本款,這樣的配備已足夠順利執行 iOS 開發工具。當然,若你有更多預算的話,可以購買更高階的中階版、高配版,或是搭載較佳的運算處理器的 iMac。

2. 註冊一個 Apple ID

你需要一個 Apple ID 才能下載 Xcode,以及閱讀 iOS SDK 文件與其他技術資源。最重要的是,它可以讓你部署App 至 iPhone / iPad 來進行實機測試。

若是你曾經在 App Store 下載過 App,那很明確的,你已經有了一個 Apple ID。若是你之前從來沒有建立過Apple ID,則只要到 Apple 的網站: (https://appleid.apple.com/account) ,跟著步驟來註冊即可。

3. 安裝Xcode

當我們要開發 iOS App 時,Xcode 是唯一需要下載的工具。Xcode 是一個由 Apple 所提供的整合開發環境(Integrated Development Environment,簡稱 IDE),它提供你開發 App所有的工具。Xcode 包含了最新版本的 iOS SDK(Software Development Kit 的縮寫)、一個內建的程式碼編輯器、圖形化使用者介面(User Interface,簡稱 UI)編輯器、除錯(Debug)工具以及其他的工具。最重要的是,Xcode 提供了iPhone(或iPad)的模擬器, 讓你不需要用到實體裝置也能測試你的 App。

當要安裝 Xcode 時,必須開啟你的 Mac 電腦的 Mac App Store 來下載。若是你使用最新版本的 Mac OS,你應該可以在 Mac 電腦下方的 Dock 工具列找到 Apple Store 的圖示,如圖 1.1 所示。如果找不到的話,你可能需要升級到新版的 Mac OS。

圖 1.1. 在Dock 工具列上的App Store 圖示
圖 1.1. 在Dock 工具列上的App Store 圖示

在 Mac App Store 中,搜尋「Xcode」,並點選「Get」按鈕下載,如圖1.2 所示。

圖 1.2. 在App Store 中下載 Xcode
圖 1.2. 在App Store 中下載 Xcode

接著完成安裝程序後,電腦上的 Launchpad 就會出現一個 Xcode 的圖示,如圖1.3 所示。

圖 1.3. 在Launchpad 上的Xcode 圖示
圖 1.3. 在Launchpad 上的Xcode 圖示

撰寫本書內容時,Xcode 是15 版,因此本書會全部使用這個版本來建立相關的範例 App。即使你已安裝過之前版本的 Xcode,我仍建議你升級到最新版本,這樣可以讓你更容易跟著本書的課程來學習。

4. 註冊Apple 開發者計畫(可自行選擇)

進行iOS App 開發時,最常被問到是否需要申請Apple 開發者計畫(Apple Developer Program; https://developer.apple.com/programs/ ),我簡短答覆你:「可自行選擇」。首先,Xcode 已經包含了內建的iPhone 及 iPad 模擬器,你可以在自己的 Mac 電腦上開發及測試 App,而不一定要加入 Apple 開發者計畫。

從 Xcode 7 開始,Apple 改變了有關在實體裝置上建立及執行 App 的政策。在此之前, 你需要支付每年 99 美元,才能夠在實體的 iPhone 或 iPad 部署與執行你的 App。而現在已經不需要先申請 Apple 開發者計畫,就可以在實體裝置上做測試。不過必須要告訴你的是,當你想要嘗試更多先進的功能,例如:在應用程式內購買(In-App Purchase )、推播通知與 CloudKit,你依舊需要申請開發者計畫會員。最重要的是,若是沒有支付 99 美元年費的話,則無法將你的 App 提交至 App Store。

那麼,現在該申請開發者計畫了嗎?Apple 開發者計畫每年要付 99 美元,雖然不是太貴,但是也不是很便宜。當你在閱讀這本書時,很可能你只是一個開發新手,才剛開始要探索 iOS 程式開發而已。本書是針對初學者所撰寫的,我們會從簡單的部分入手,還不會馬上觸及進階的功能,直到你掌握了基本的技巧。

因此,即使你沒有馬上註冊開發者計畫,你還是可以跟著本書絕大部分的內容在實體裝置上測試 App。此刻不妨先節省成本,我會讓你知道何時該申請開發者計畫,屆時我會鼓勵你參加開發者計畫來發布 App 至 App Store 上。

學習App的方式

自 2012 年開始以來,我透過部落格、線上課程以及開設親自授課的工作坊,來進行 iOS 程式教學,我發現學習方法與心態對於「學習是否成功」會有很大的影響。在我說明 Swift 與 iOS 程式開發之前,我需要你調整好正確的學習心態,並了解什麼才是最有效率的程式學習方法。

親自動手寫

關於如何學習寫程式的常見問題之一是:

「學習 iOS 程式的最佳方式為何?」

首先,感謝你閱讀本書。我必須告訴你:「學習程式語言不能只是看書而已」。本書中有 Xcode、Swift 與 iOS App 開發中所有你必須學習的內容。

不過,最重要的是「採取行動」。

若是必須要給這個問題一個答案的話,我會說:「從做中學」,這就是我的教學方法的關鍵。

我來稍微改變一下這個問題:

「學習英文(或任何其他語言)的最佳方式為何?」

「學習騎自行車(或其他各式運動)的最佳方式為何?」

你或許已經知道答案了,我特別喜歡在 Quora )中學習一門新語言的答案:

「依照這個規則重複不斷:每天聽一小時、說一小時、發表一篇日誌。」

- Dario Mars Patible

透過練習來學習,而不是只研究文法。學習程式和學習一種語言非常相似,你需要採取行動,如做一些專案或者練習作業。你必須坐在Mac 前面,進入 Xcode 的世界並寫程式。過程中如果有做錯並不要緊,只要記得閱讀本書時,要開啟 Xcode 來寫程式。

了解學習App 開發的動機

為什麼你需要學習開發 App 呢?是什麼樣的動機讓你願意犧牲週末假日來學習如何寫程式呢?

有些人學習 App 開發是為了錢,這並沒有對錯,你可能想要透過 App 來賺些外快,甚至想把它變成一項真正的生意,這點可以理解,誰不想擁有富裕的生活呢?

不過,至 2022 年8 月,App Store 上已經有 220 萬個 App。將 App 上傳至 App Store, 然後期望一夕致富已經是非常困難的事。當賺錢是你開發 App 的唯一理由時,你可能很快就灰心並放棄,尤其是你看到像這樣的文章:

「現實是售出199 套=總銷售額US$ 209 =淨收益US$ 135(我的淨利)。為了讓 App 能夠上架,我必須要付$99 開發費。過了兩個月又一週之後,我的(稅前)利潤是 $36。」

- James

寫程式是有難度且具挑戰性的事情。我發現那些能夠精通程式語言的人,都富有強烈想開發App 的渴望,並熱衷於學習程式,他們通常會將腦海中所浮現的想法變成真實, 賺錢對他們而言,反而不是第一要關切的事;他們知道這個App 除了可以解決他的問題之外,同時也能帶給其他人好處,有了如此強大的目標後,他們會克服任何障礙來完成, 所以請再次思考一下你的學習程式動機是什麼?

教學相長

「教學相長」是一句古老的諺語,在現代社會上依然適用。然而,你不需要成為一個專家才能教學,我並不是指在大學授課或在正式課堂上面對一群學生來教學的情形。教學不一定要透過這種方式才行,它可以像是和同事或隔壁同學分享你的知識這麼簡單。

試著找到一些有興趣學習 iOS 程式的朋友,當你學到一些新知識時,試著向某人解釋內容。舉例而言,當你完成第一個 App 之後,可告訴你親近的朋友,它是如何運作的,並教導他們如何建立一個 App。

如果你無法找到可以分享的夥伴時怎麼辦呢?別擔心,你可以開始在「medium.com」 medium.com 或者你喜歡的部落格平台上,每天寫部落格文章,以將你所學習的內容加以歸納整理。

這是我在 Appcoda.com 發表了許多的教學文章以及出版我的第一本書後,所發現的最有效率的學習方法。

有時你以為自己已經很了解內容了,但是當你需要向某人解釋觀念或者回答問題時, 你也許會發現自己實際上並沒有完全了解,這會讓你更認真去學習內容。當你在學習 iOS 程式設計時,不妨試試這個方法。

具備耐心

「意志力是面對長遠目標時的熱情與毅力。意志力是耐力的表現,意志力是日復一日對 未來依然堅信不已。不是只有這週、這個月,而是年復一年。用心、努力工作來實現所堅 信的未來。意志力是將生活看作為一場馬拉松,而不是短跑。」

- Dr. Angela Lee Duckworth

我的學生問我:「成為一位好的開發者,需要多少時間?」

要精通一門程式語言,並成為一位很優秀的開發者,通常需要數年之久,絕對不是幾週或幾個月就可以達成。

本書將帶領你開始這個旅程,你將學會 Swift 與 iOS 程式設計的基礎,最後做出自己的 App。也就是說,要成為一位專業的程式設計師,並建立一些不錯的 App,是需要付出時間的。

請具備耐心。對於你的第一個 App,不要把期望設得太高,只要享受這個過程,去建立一些好玩有趣的作品。持續地閱讀及寫程式,最終你將精通這個技術。

發想App好點子

我總是鼓勵我的學生在開始學習 App 開發時,提出自己的 App 點子,這個點子不需要太大,你不需要馬上想出建立下一個Uber 或者改變世界的 App,你只需要由一個很小且可以解決問題的點子來開始即可。

這邊提供你一些例子。

我最常提及的一個經典例子是「Cockpit Dictionary」,它是由飛行員 Manolo Suarez 所開發的 App。他在學習App 程式設計時,已經有了一個 App 的點子,這個點子並不特別, 不過卻可以解決他自己的問題。有成千上萬的航空術語都是使用縮寫形式,即使有超過 20 年飛航經驗的飛行員,也無法記得所有的縮略詞與專業術語。而與其把字典印出來, 他想到建立一個給飛行員使用的簡單 App,然後利用這個 App 來查詢所有的航空術語。這個既簡單又很棒的點子,可以解決他自己的問題,如圖1.4 所示。

圖 1.4. Cockpit 字典
圖 1.4. Cockpit 字典

而另外一個例子是「NOAA Buoy Data」App,雖然這個App 已經從App Store 下架了, 但我依然想以此為例,這個App 的設計是取得國家海洋暨大氣總署(National Oceanic and Atmospheric Administration,簡稱NOAA)的國家資料浮標中心(National Data Buoy Center,簡稱NDBC)的天氣、風與波浪的最新資料。這個App 是由Leo Kin 所開發,他是在手術後的復健過程中想到了這個App,如圖1.5 所示。

「手術之後,我必須穿著護頸器好幾個月。在那幾個月中,我不能移動太多,即使走路 或舉起手臂都很困難。我的物理治療師告訴我必須要儘可能地運動,來讓我逐漸萎縮的肌 肉能夠回復。

有一個島離我的住家很近,我很喜歡去那邊散步。唯一的問題是它只能在退潮的時候 過去,而一旦漲潮,除了游泳之外,便無法回去。由於我的身體很虛弱,我非常害怕被困 在這個島上而無法回去。當我在走路的時候,我總是查詢一下NOAA 的網站,並檢查潮 汐的高低是否讓我有足夠的時間能夠返回。

在某次散步時,我想到建立一個App,即使沒有人會使用這個App 也不要緊,因為它 可以幫助我追蹤潮汐的狀況,讓我能夠及時返家。」

- Leo Kin

你也許對他的 App 不感興趣,但它能夠及時解決他所面臨的問題,或許在那個島上的人們會因為他的 App 而獲得好處。

Figure 1.5. NOAA Buoy Data app
Figure 1.5. NOAA Buoy Data app

擁有一個 App 點子,可以讓你有更明確的學習目標與動機。現在花點時間,在下面寫下三個 App 點子:




UIKit 與 SwiftUI

你應該學習哪個 UI 框架呢?作為初學者,你可能聽過 UIKit 與 SwiftUI 這兩個術語,有些人主張應該學習 UIKit 來進行 App 開發,而有些人則建議你可以略過 UIKit 並直接沉浸在 SwiftUI 中,因為它是 Apple 最新的 UI 框架。

我認為你可能對這些技術術語感到困惑,讓我簡要地概述一下這兩個框架,這樣你就可以清楚地知道優先考慮哪一個。

圖 1.6. 使用UIKit 與介面建構器來建立App
圖 1.6. 使用UIKit 與介面建構器來建立App

首先,這兩個框架都可以讓你建立出色的 App。UIKit 框架是自 iOS 首次發布以來可用的最初 UI 框架。使用UIKit,你可以編寫程式碼來建立行動應用程式 UI,或是使用 Xcode 的介面建構器(Interface Builder )來建立應用程式佈局,不過其缺點之一是與 SwiftUI 相比,UIKit 框架更難學習。

圖 1.7. 使用 SwiftUI 建立 App
圖 1.7. 使用 SwiftUI 建立 App

使用 SwiftUI,你可以使用宣告式(Declarative )Swift 語法來開發 App UI,這表示 UI 程式碼編寫起來更容易且更直覺。和目前的 UI 框架(如 UIKit )相比,你可以使用更少的程式碼來建立相同的 UI。

預覽功能一直是 Xcode 的弱點,雖然你可以在介面建構器(或故事板)中預覽簡單的佈局,但是通常在只有在App 載入到模擬器後,才能預覽完整的 UI,而 SwiftUI 在你編寫程式碼時,透過提供 UI 的即時回饋來改變這一點。例如:當你在表格中加入一個新紀錄時,Xcode 會在預覽畫布中動態更新 UI;此外,在深色模式(Dark Mode)下預覽你的 UI 或進行其他的調整,就像更改選項一樣簡單。這個「即時預覽」功能簡化了UI 開發,並顯著加快迭代過程。

現在,我們來解決核心問題:「作為一個初學者,你應該學習哪一個框架呢?」

你應該要問自己:「為什麼要學習 iOS 程式設計?你的目標是什麼?你是想成為一個專業的 iOS 開發者並獲得工作機會呢?或者你只是有興趣學習新事物來作為一種愛好?」

如果你的目標是在 iOS 開發上建立職業生涯,則我的建議是「這兩個框架都要學習」, 但最好是從 UIKit 開始,因為許多公司仍在使用 UIKit 開發 App。取得 UIKit 技能,將會大幅提高你的就業能力,這也是為何我建議你先熟悉 UIKit,再學習 SwiftUI。

另一方面,如果你把程式設計當成一種愛好,或者只是作為業餘專案來建立一個 App, 則我建議你直接深入研究SwiftUI,它更容易學習,可讓你用更少的程式碼來建立 App。不過,有時你可能會需要使用 UIKit 中的特定 UI 元件,到時候你可以學習如何使用這些特定的 UIKit 元件,如此可以先專注於學習 SwiftUI,等到有需要時再學習UIKit。

本章小結

以上介紹到這裡,請花一些時間在你的Mac 上安裝Xcode,然後集思廣益你的App 點子,並選擇你想要關注的框架。本書會教你所需的技能來建立你自己的App,如果SwiftUI 是你的焦點,則請繼續進入下一章,我們將開始使用Swift 進行程式設計。

準備好開始這趟令人興奮的旅程吧 !


本文摘自《iOS 17 App程式設計實戰心法》(SwiftUI)》一書。如果你想更深入學習Swift程式設計和下載完整程式碼,你可以從 AppCoda網站 購買完整電子版。

results matching ""

    No results matching ""