我想寫手機程式,但我不知道該選iOS還是Android
以市佔率來講Android大勝,但為何iOS的平均薪水較高?
其實標題有點不切實際,因為iOS與Android的陣營多半相當明顯。
像筆者就是果粉,家裏幾乎都是蘋果的產品,連Apple Time Capsule 網路硬碟都買了。如果各位是還沒有寫過手機程式,心中懷著疑問進來的。多半最後還是會去嘗試寫Android。
為什麼?原因很簡單,因為沒有Macbook Pro。
所以在這裡也不諱言,本文其實是打算分析優劣,讓更多人進入iOS開發者的行列。
這裡先幫大家釐清一下單詞,Android為手機的三星、HTC等手機的作業系統,
iOS則是iPhone / iPad的作業系統,所以一般我們會稱自己是 Android (APP) 開發者 / iOS (APP) 開發者。
另外一提,雖然Windows的市佔率在「一般」使用者是高於蘋果的筆電Mac系列滿多,但是以程式開發者、工程師來講,蘋果的筆電Mac系列的市佔率非常高。原因是因為Mac系列的作業系統MacOS跟Linux系列環境是同源出來的(類Unix系統),所以用MacOS開發比較不會有正式環境與開發環境有差別的問題,造成部署上的困擾。所以常常會發現去程式技術研討會,參加者有3/4以上都是開Macbook在做筆記。
在MacOS也可以開發Android,所以除非為了開發微軟體系的程式,不然有一台Macbook Pro 會是不錯的選擇。
延伸閱讀:
Linux是什麼?從網站開發到物聯網無所不在的OS作業系統介紹。
另外再補充一個大家可能會有興趣的議題:
有網站就不需要APP?放棄APP也放棄了超高價值的融入生活的再行銷方式
想成為開發者嗎?我們也有完整的線上教學課程喔!
iOS 13 - Swift手機程式開發,使用APP與網站互動
現在寫手機APP有很多種方式,這裡先從原廠開始講起。
如果各位已經有一點概念,大概會有聽過Native(原生) APP這個詞。這指的就是使用原廠提供的開發工具開發APP,iOS就是使用Xcode,Android就是使用Android Studio。
兩個平台上使用的"程式語言"並不相同,所以一般而言如果一家公司在兩個平台都要上架APP。通常必須要有兩個工程師做開發,一個(iOS)寫的是Objective-C / Swift,另一個(Android)寫的是JAVA / Kotlin。
你說能不能一個人搞定兩個?當然可以,不過加班加到死也沒什麼好處。就算兩個都會寫,多半也是只負責一個案子,要不然就只是簡單的維護而已。
除了所謂的Native APP,還有WebView App。所謂的WebView APP其實就是瀏覽器。
這種APP的概念很簡單,因為無論是iOS還是Android,預設都有瀏覽器UI元件可以使用(一般統稱為WebView),也就是可以在APP裡面任何的地方都可以很輕鬆的裝上瀏覽器,瀏覽HTML網頁。
所以有人就想到說,乾脆把整個做好的網站放進去好了。反正網站本來就是做響應式的,所以也不用特別調整。
因此可以做到一種程式碼(HTML / CSS / JavaScript)寫兩種APP,節省時間與人力。
不過因為瀏覽器其實就是一個完整的程式,所以會拖累APP速度與流暢度,就像是在APP裡面又開了一個APP。因此通常時間預算充足的話還是傾向用原生的開發方式。畢竟一般人在手機上多半還是開APP而非開手機版網頁。(Facebook, Youtube 的APP應該都常駐在大家的手機裡吧!)
當然,現在所謂的原生(Native)的定義有點被模糊了,像是Facebook的架構React Native、Google的Flutter。主要是利用iOS 與 Android的裡面內建的JavaScript引擎,該引擎提供了JavaScript與原生Swift或是Java溝通的一個管道。所以可以直接使用JavaScript控制原生的UI元件或是其他功能,而不用透過WebView。
這樣的開發方式有相當多的好處,例如網頁前端與手機APP可以共用函式庫,部分程式寫一次就可以。但是實際上還是有滿多限制與風險的。例如兩大平台的UI設計理念其實頗有差異。如果沒有要做到UI畫面與UX使用者體驗一模一樣,確實不太難用一套程式碼達成雙平台。但是如果APP要有一至性的話,多半其實都還是要針對個平台做大量的客製化。整體來說負擔比原生開發重的機率還滿高的。畢竟本來就是用第三方框架迂迴達成的,我們要在這上面再修正,就很容易發展出疊床架屋的感覺的程式。(隔了一層,所以註定無法解決根源問題。)
另外,非原廠認可的連接方式都有可能因為版本修改而衝突,例如如果蘋果想要的話,隨時都可以停用第三方套件的功能。禁止、或是原廠推出一樣的功能,導致第三方套件就此退場的故事其實在程式開發的歷史上並不罕見。
另外值得一提的,雖然一般來說用React寫APP指的就是React Native,但是實際上React 也可以做成網頁版跑在WebView上面,雖然筆者沒有仔細地玩過,但是熱門框架 Ionic 在官網上就很直接的推行這種方式的APP,也不失是一種選擇。
直到目前不曉得大家有沒有感受到原生開發的優點,接下來要開始提出幾個開發iOS的優點。
1. 你需要一台Macbook才能開發
這時你會想說,這就是我不想開發Mac的主要原因啊,怎麼會是優點呢?
要解釋這就要說到基本的商業邏輯了。因為PC市佔率高Mac很多,所以大多數人都會選擇Android。
因此Android人才比起iOS飽和的許多。這是很單純的供需原理。選工作就是要選有入門門檻的,
這樣被取代的機率會低很多,儘管這門檻只價值40,000元。
但以台灣人強調CP值的個性,就算能理解也大概沒多少人買吧。
(國外的開發者大會幾乎都是人手一台 15" Macbook Pro)
2. 喜好比較CP值的人會覺得買iPhone很不值得
比較CP值不是錯,但是如果你的客戶很喜歡看規格,喜歡買便宜堪用的產品。以目前台灣普遍的氛圍,APP就應該是免費的。然後你的薪水想要50k以上?除非老闆做慈善吧。(當然這是以純付費購買為主,Android可以做嵌入式搭配硬體來賣,那就是另外一回事了。)
你會想說可以置入廣告,不過能靠廣告賺到錢你的群眾要非常的大。如果只有1k或是10k的下載量。大概一直到下架你都收不到廣告費。(通常是達到99鎂才會發放,而且發放的是支票,提領需要自己付跨國匯款費約500+台幣)
一般的統計資料都還是明顯的顯示iOS的使用者比較願意掏錢購買APP或是在APP上花錢。除非你的APP商業邏輯是需要大量的免費使用者,例如通訊軟體。不然iOS APP會是比較能賺到錢的。
3. Android裝置版本太多,相容性很令人苦惱。
iPhone / iPad的版本用手指數都還數得出來,蘋果也會很強硬的讓舊機型退場。Android就不一樣了,現在應該是橫跨了Android 4 ~ 7,然後有10幾家不同公司不同的的規格。再加上連CPU都還有分Intel或是ARM,想要測驗過所有裝置根本就不可能。
寫iOS就輕鬆多了,不太需要在意這麼多事,工作不需要這麼複雜。版本多會導致API會有很多版本,新的功能不能使用,開發上面要考量的很多,複雜性變高。
4. Swift 很好上手。
在以前,開發iOS感覺是很困難的一件事,主要是因為Objective-C用了一種很詭異的方式來寫函式。但現在的Swift就比較直觀很多,跟其他的程式語言沒什麼分別。筆者認為入門難度大概跟JavaScript差不多。
當然Android的優點也很多,我們也可以舉幾個例子。
1. 使用JAVA
JAVA作為一個穩定的語言已經很多年了,雖然常有人調侃他說他還活著是因為Android系統的興起,不過事實上只要是像航空業、金融業這樣的大型企業,多半還是使用JAVA,畢竟轉換系統的成本太高。
不過這裡筆者要特別提醒,現在Framework當道,儘管使用的是同一種程式語言,API與程式邏輯還是差異很大。
並不比換一種程式語言要來得簡單多少。
(筆者是先會Android才嘗試要寫JSP,最後JSP還沒真的學會就已經相當熟練Ruby On Rails了)
2. 製作客製化硬體產品
Android在嵌入式裝置相當的熱門,像是在計程車座位後面的小電視,或是新興的餐廳管理系統POS機(點餐印發票),各式各樣的專門機器都是使用Android系統,因為iOS系統並不開放給其他廠商使用。
所以一般如果你開發了一台比較複雜的多功能機器,你能選的商用免費系統只有Android 、Linux。而Linux在開發圖形化UI介面處理得並不是很好,以Android來說會在開發上會比較容易些。
3. 市場大
其實無論是國內外,Android還是大宗。所以談到市佔率的話,當然還是要Android。
不過正如同上面iOS的優點,以產值來說的話,Android市場真的有想像中的優嗎?而且其實影響市場大小的因素有很多,不同國家的對事情的看法常常差異很大。
像是讀英文,在亞洲等於考試,但在歐洲是等於生活。
4. 什麼作業系統都可以開發
這點iOS就完全比不上了,只能在Mac上開發是滿令人覺得麻煩。
因此以結論而言,開發Android可能會是大部分人的正解。
但如果你想讓生活簡單點又能多賺些錢,買一台Macbook Pro成為iOS開發者會是你一個很好的選擇。
如果有興趣加入iOS開發的行列,歡迎參加我們的課程喔!
線上課程:iOS 13 - Swift手機程式開發,使用APP與網站互動
最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!