LY Corporation Tech Blog

支持 LY Corporation 和 LY Corporation Group (LINE Plus, LINE Taiwan and LINE Vietnam) 服務,宣傳技術和開發文化。

2024 iPlayground Apple Developer Conference

研討會資訊

介紹

iPlayground是一個從 2018 年開始專為蘋果軟體開發者設計的研討會,主題涵蓋 iOS、iPadOS、macOS、watchOS、visionOS等蘋果生態系App應用開發、程式語言Swift和Objective-C、以及 UI/UX 設計的經驗分享。

前一次的iPlayground是2020年了,整整四年前,中間歷經疫情的關係停辦許久,疫情生活/工作模式的改變也讓許多線下活動紛紛改為線上舉辦,少了實體面對面交流的機會。

今年受到廣大開發者的熱情呼喚以及主辦單位的重燃熱血,再次讓iPlayground復活,使國內Apple開發者社群能夠重新有舞台可以與舊雨新知交流分享各自的專業知識與經驗。


(Photo by iPlayground 2024主辦單位)

議程介紹

Why SwiftUI? Why TCA?

講者為台灣iOS開發者社群知名Podcast節目及開發者週報wealk self主持人,任職公司團隊有著三年100%使用SwiftUI+TCA的開發經驗

指令式程式設計 vs 宣告式程式設計

UIKit與SwiftUI,是指令式程式設計與宣告式程式設計兩種不同設計範型的差異

要學習SwiftUI,必須要改變觀點,越不受過往UIKit開發的經驗影響,學習新框架的過程會越順利

同時,未來在學習其他現代化的宣告式框架,如Flutter、Jetpack Compose等,觀念上也比較容易銜接

畫面呈現結果是由狀態所定義,程式邏輯便能專注在管理各種狀態之間的轉換

SwiftUI Preview額外附加價值

為了在開發過程能夠確認各種狀態的Preview效果,必須先把所有狀態的假設都先準備好,而這準備過程就是在重新檢視設計

Apple便使用SwiftUI Preview來幫助Developer與Designer共同協作設計Apple Watch App,加速溝通及開發速度

為了讓程式碼能夠能容易使用Preview,會強迫開發過程將模組切分的更結構化,狀態管理更分明,也因此自然變得更容易測試

程式碼可讀性更高,也讓Code Review更容易

TCA架構與SwiftUI的搭配

The Composable Architecture架構能夠幫助SwiftUI的狀態更易於集中管理,最大的好處便是複雜的專案規模也能夠容易撰寫測試

Composable的特性易於將大型複雜功能拆分為可組合的小元件,能夠幫助團隊分工

該框架有著優秀的外部依賴管理Swift Dependency,即便不使用TCA架構,也能夠獨立使用此框架

小型元件結構化也有利於使用AI輔助工具做出suggestion

數碼遊牧及遠端工作的利與弊

講者為香港人,從2019開始數位遊牧的遠端工作生活,旅程遍佈東南亞、日本、台灣等地

規律工作時間

遠端工作超時工作是常態,很容易在起床睡前都還在工作,為此需要為自己制定時間表,追蹤每天的工作時間,養成規律的工作作息時間

固定辦公桌

咖啡店等開放場所比較難有固定座位,長期下來每天都要重新配置工作設備(螢幕、鍵盤、滑鼠、各式外接設備等)蠻浪費時間,建議還是要找有固定辦公桌的工作場所,如租用個人專用共享空間

居家辦公

通勤是上班族的惡夢,假設每天上下班花費1.5小時,每週5天約7.5小時,每月約33.75小時,等於一年花費約400小時在通勤上

居家辦公能更省下這些通勤時間的浪費,做更多的創造

與家人或伴侶的溝通

如最近颱風假小孩放假你卻要上班,在家中也常有不同類型的干擾,因此需要與家人或伴侶溝通建立規則,如設定不可打擾的時間及工作區域等

並多花時間與家人對話,互相支持

建立當地社交網路

為了消除遠距工作的孤獨感,鼓勵多積極參加當地活動,擔任學校志工,與商會、同好交流都是很好的活動

結交國際朋友

數位遊牧的工作型態能夠探索不同文化、走出舒適圈、強化語言能力、應對各種生活挑戰、尋找各種新機會,這些經歷對於創作類工作更是很有幫助

公司Team Building

鼓勵採取遠端工作的公司能夠定期舉辦Team Building,幫助跟同事保持良好關係,促進團隊之間的信任

畢竟隔著螢幕與網路,還是缺乏了些溫度

定期Team Building能夠增加團隊凝聚力,並提升溝通效率

參加Conference

掌握資訊及人脈

掌握最新知識與趨勢

拓展人脈,為未來創造可能性

旅遊及休息

這才是開始數位遊牧生活的初衷

安排旅遊、享受生活,能夠幫助探索新靈感,並重燃工作熱情

意想不到的財富自由密碼

以國際客戶為收入來源,在低成本的地點生活

利用生活成本差異,可以增加儲蓄,提早達成財富自由

用 App 讓台語「潮」起來:芋圓字典的開發經驗談

台語應該也要有一個語言學習 App

講者不想讓台語沒落下去,為了台語的的傳承,親手做了一個 iOS App 並加以推廣。

開發理念

  • 改變大眾對台語的認知
  • 多一個愛上台語的理由
  • 讓生活充滿台語
  • 普及台語的文字

為了方便推廣,講者使用了比較可愛的 UI 來吸引使用者,然後便利的功能也是不可少的,支援了許多功能:

做了這麼多努力,講者登上了 App store 教育類型免費 App 的排行榜第一名。

經營模式

此外,講者還提到他是如何經營推廣他的 App

  • 以文字為主
  • 主力經營 Threads(13.8K 追蹤)
  • 表現不錯的文會貼到 X (2.3K) 跟其他平台
  • 臉書社團也很重要

主題設定

  • 以本土語言為主軸延伸各類話題
  • 找回母語的經驗談:台語詞彙
  • 學文字的重要性:台語內容分享

其他撇步

  • 定期發文,日更為佳:說不定下一篇就是爆文
  • 理想是什麼?大聲講出來!:說出自己希望社會是什麼樣子
  • 演算法: threads 留言互動, X 轉發數

透過了目標設定、開發設計、經營推廣 App,講者最終達成了他的目標「推廣台語」。

用 AI 幫助開發 Apple Watch App 實戰分享

這個主題的講者是一位相當年輕,還在念國小的小朋友,分享他自己如何利用 AI 工具的輔助來協助開發一款獨立的且完整的 Apple Watch App – 九歲記帳。

這是一個相當具有啟發性的分享,可以讓我們重新檢視我們看待開發這件事情的角度。

更專注於問題本身

講者從自身的需求出發,定義問題、利用手邊可以使用的資源提出解決方案,再利用人工智慧輔助的方式來完成開發解決方案。

人工智慧輔助開發的普及讓越來越多的人可以嘗試完成過去可能需要相對多資源及知識背景經驗才能達到的目標,而這個也佐證了這樣的觀點,讓產品開發人員可以更專注於清楚的定義問題本身,讓人工智慧來協助編寫程式的部分。

由於講者本身主力使用有限制的免費版人工智慧輔助開發產品,這類的產品多半有每日免費額度的限制,這也促使講者在資源有限的情況下精煉提示詞。

更低成本更快速的迭代

從最小可行性產品的觀點出發,這位講者的分享其實預示著未來可能的開發流程,利用人工智慧的輔助,快速建構出可行的產品面世,再透過不斷與人工智慧的對話來快速迭代。

新一代的開發者有了人工智慧的協作可說是如虎添翼,我們也得持續學習努力呢  

那些年在面試學會的東西

不見得實用,也不見得要記得

「Delegate 跟 Notification 差在哪」、「Notification 是在哪個 Thread 執行 action」、「Process 跟 Thread 有什麼差別」、「什麼是 Blocking I/O、non-Blocking I/O」、「Arguments 跟 Parameters 差在哪」、「Function 跟 Method 差在哪」、「為什麼我們要這麼關心 memory leak」、「KVO 跟 Data binding 的差別」、「為什麼 UITableView 滑動的時候
NSTimer schedule 的 Action 沒有執行」、「Objective-C 裡
load, initialize 的差別是什麼」、「為什麼 0.1 + 0.2==0.3 為 false」

這一個段落,講者連續用好幾個問句的投影片,讓我們身歷其境般的經歷了一段簡短的面試,透過這幾個問句的投影片,讓我們快速地了解到,他這段時間的面試經驗中,最常被問到的是哪幾個問題? 其實這些問題都是 iOS App 工程師面試中很常出現的問題,有些是在實作過程中也很常用到的觀念甚至是會踩到的坑,短短的幾張投影片道出他這段時間面試的心路歷程。

接下來是演算法

「寫個費式數列來看看」、「Binary Search, Binary Search tree, Binary tree」、字串搜尋 28. Implement strStr() 實作 strStr(haystack: String, needle: String) -> Int 找到 needle 在 haystack 第一次出現的位置。」

演算法的部分也都是經典考題,從他詼諧的語氣中,不難想像他這段時間到底經歷了什麼...

還沒 onboard 之前都是假的

透過這兩個經驗,他知道只有真的到公司報到任職後,才算是真的求職成功,在此之前,都只是在面試流程中而已

結語

這個議程讓我們吸取了一些面試的經驗談,學到了蠻多不錯的面試經驗,講者的呈現方式十分幽默風趣,聽君一席話,勝面十場試。

結語

這一次的iPlayground據主辦單位表示不靠任何外部贊助商,只靠門票收入撐起場地及講師等所有支出,目測參加人數大約150~200人,除了社群常見的老面孔之外,也看到許多年輕新生代加入。

行動裝置及穿戴裝置發展至今已經是人手必備的終端裝置了,也許不見得人人都會使用電腦,但人人都會隨時隨刻使用智慧型手機或平板,包含高齡老年族群以及孩童族群, 科技產品能有如此高的普及率是過去難以想像的。

儘管近年AI崛起讓科技發展有許多重大變革,日常生活的所有應用仍然會透過行動裝置作為主要終端來運行。

因此,開發App應用可以輕易觸及廣大的使用者族群,開發工具環境的演進也越來越容易上手,加上AI輔助降低學習曲線及門檻,相信這些都是App開發生態圈能夠穩定發展,並持續吸引新生代開發者加入的原因。

感謝LINE公司贊助報名費用,LINE非常鼓勵工程師能參加各種技術研討會,精進知識並掌握外界趨勢,與社群交流促進更多火花,激發更多的點子並將其實現,透過科技的應用讓日常生活能夠更便利。

感謝iPlayground主辦單位,讓身為App開發者的我們能夠重新在實體看見社群的熱度,看見新生代年輕開發者的無窮潛力,重拾感動及選擇進入App開發領域的初衷。

期待iPlayground這次成功復活的經驗能夠讓接下來每年度都能順利舉辦。

See you next time!