iPlayground 2025 圓滿落幕了。作為今年的講者之一,我想分享這次從準備到演講的完整心得,以及身為講者看到的一些觀察。
一場符合並超出預期的活動
首先要稱讚一下今年的主辦團隊。福氣哥今年辦 iPlayground 已經是第四屆了,算是經驗老道。從前幾年的大規模(雙軌 500+ 人),到去年的小規模(單軌 100+ 人),再來是今年的中規模(單軌 300 人),每次的規模拿捏都很到位。
今年的票價是歷屆最高的,但入場人數也達到接近 300 人的規模。在現在這個 Mobile 開發逐漸式微的時代,能有這樣的參與度真的很不容易。
畢竟現在的狀況是:
- 資金、資源、關注度都移到了 AI 身上
- 許多 iOS 開發者看苗頭不對,紛紛轉向後端、網頁前端
- 企業願意在移動端投資的資本越來越少
- 相關的徵才和投資都沒有以往那麼積極
套句老朋友說的:「工程師就是高階軍火,在有仗可打的時候才會顯得稀缺。」
在這樣的大環境下,iPlayground 還能繼續辦下去,真的要感謝主辦團隊的堅持,以及所有贊助商的支持。
從被邀稿到確定講題
受寵若驚的邀稿
那是在我剛開始新工作 onboard 的第一個月,收到了好朋友 DinDin 的訊息。他說籌備團隊內部討論時,有人對我 2020 年講的「隨機數」題目印象深刻,想邀請我今年再來分享。
我真的是受寵若驚。
被邀稿代表你過去的分享被認可,這種感覺很特別。但同時壓力也來了——既然是被邀請的,我一定要好好想個題目,不能辜負這個機會。
選題的過程
當時我對好幾個題目都很有興趣,大概列了五個候選:
- SwiftUI 進階應用:包含自定義 Layout、Preference Key 等進階技巧
- iOS 效能優化:從 Instruments 使用到實際案例分析
- Local LLM 在 iOS 的應用:如何在設備上運行大語言模型
- Combine vs Swift Concurrency:兩種非同步方案的比較與選擇
- App 架構演進:從 MVC 到 TCA 的思考歷程
我問了好幾個朋友的意見,也考慮了幾個因素:
技術趨勢:
- AI 是現在最熱門的話題
- Local LLM 正在快速發展
- 這個方向的中文資料還不多
個人興趣:
- 我最近正在研究這個技術
- 有實際的 side project 在做
- 對這個主題有熱情
聽眾價值:
- 大家可能聽過 ChatGPT API,但不一定知道可以跑在本地
- 實作細節有分享價值
- Demo 效果應該會不錯
最後我決定講 Local LLM 在 iOS 的應用。
準備議程的過程
技術研究階段(約 1 個月)
首先當然是要把技術搞懂。我研究了幾個主要的框架:
llama.cpp
- C++ 寫的,效能最好
- 有 iOS 的 binding
- 社群活躍,更新快
GGML
- llama.cpp 的底層引擎
- 支援量化模型
- 可以在 CPU 上高效運行
MLX
- Apple 自己的機器學習框架
- 對 Apple Silicon 優化
- 但文件較少
最後我選擇了 llama.cpp,因為它的社群支援最好,而且有完整的 Swift 範例。
接著是模型選擇。我測試了幾個模型:
- Llama 2 7B:太大,iPhone 跑不太動
- Phi-2:Microsoft 的小模型,2.7B 參數,效果不錯
- TinyLlama:1.1B 參數,速度快但智能有限
最後選擇 Phi-2 的量化版本(Q4_K_M),在效能和品質間取得平衡。
內容設計階段(約 2 週)
確定技術方案後,開始設計演講內容。我的結構是:
Part 1:為什麼要用 Local LLM?(5 分鐘)
- 隱私考量:敏感資料不用上傳
- 離線可用:沒網路也能用
- 成本控制:不用付 API 費用
- 即時回應:沒有網路延遲
Part 2:技術架構(10 分鐘)
- llama.cpp 簡介
- 模型量化的原理
- iOS 整合方式
- 記憶體管理策略
Part 3:實作細節(15 分鐘)
- 如何載入模型
- 如何進行推論
- 如何處理串流輸出
- 如何優化效能
Part 4:Demo 展示(5 分鐘)
- 實際 App 展示
- 回應速度測試
- 離線功能驗證
Part 5:挑戰與未來(5 分鐘)
- 遇到的技術難題
- 效能瓶頸分析
- 未來發展方向
簡報製作階段(約 1 週)
我的簡報設計原則:
- 視覺簡潔:每頁只有一個重點
- 程式碼清晰:使用語法高亮,關鍵部分標註
- 適度動畫:重要概念用動畫強調
- 實際截圖:用真實的 Xcode、Instruments 截圖
這次我特別用心做了幾個動畫:
- 模型量化的過程視覺化
- 推論流程的步驟展示
- 記憶體使用的即時圖表
演練階段(約 1 週)
第一次演練:對著鏡子
- 時間嚴重超時(講了 50 分鐘)
- 講話太快,緊張明顯
- 有些專有名詞不確定怎麼唸
第二次演練:錄影自己看
- 發現很多口頭禪(「然後」、「就是」)
- 有些地方講得不夠清楚
- 時間控制進步了(45 分鐘)
第三次演練:找朋友聽
- 朋友給了很寶貴的意見
- 有些技術術語需要解釋
- Demo 部分可以更互動
最終版本:
- 控制在 40 分鐘(保留 Q&A 時間)
- 語速適中,咬字清晰
- 技術深度與易懂性平衡
活動當天的體驗
報到與準備
活動當天早上,我提早到了會場。看到工作人員已經在忙碌地準備,福氣哥和 DinDin 在確認各種細節。
講者休息室備有咖啡和點心,氣氛輕鬆。我趁機和其他講者聊了聊,發現今年的講者陣容真的很強:
- 有在 Apple 工作的資深工程師
- 有知名 open source 專案的維護者
- 有創業成功的技術 leader
- 也有很優秀的年輕開發者
能和這些人並列,我感到很榮幸,也有點壓力。
上台前的緊張
輪到我上台前 30 分鐘,我開始緊張了。雖然已經演練很多次,但面對幾百人還是會緊張。
我做了幾個深呼吸,在心裡默念了幾次開場白,檢查了 demo app 能不能正常運作。
DinDin 過來拍拍我的肩膀:「放輕鬆,你準備得很充分了。」
演講過程
站上台的那一刻,燈光打下來,我看到台下坐滿了人。
開場時聲音有點顫抖,但講了幾句後就進入狀況了。我發現只要專注在內容上,專注在想要傳達的訊息上,緊張感就會慢慢消失。
印象深刻的幾個時刻:
- 講到隱私保護時,看到很多人點頭表示認同
- 展示程式碼時,有人在拍照記錄
- Demo 展示時,看到大家專注的眼神
- 提到效能優化時,有人舉手提問
整個過程大概 38 分鐘,保留了 12 分鐘給 Q&A。
Q&A 環節
這是最讓我緊張的部分,因為不知道會被問什麼。但實際上問題都很有品質:
Q1:「模型更新怎麼處理?」 這是個好問題。我說明了可以透過 over-the-air update 機制,讓使用者下載新模型,而不用更新整個 app。
Q2:「在舊款 iPhone 上的效能如何?」 我坦承 iPhone 11 以前的機型會比較慢,建議這些機型可以降級使用更小的模型,或是提供雲端 API 作為備案。
Q3:「有沒有考慮用 CoreML?」 這是個技術性問題。我解釋了 CoreML 和 llama.cpp 的差異,CoreML 更適合做推論優化,但 llama.cpp 的彈性更高。
這些問題都很棒,也讓我重新思考了一些技術細節。
其他講者的精彩分享
今年的議程真的是眾星雲集,每一場都很精彩。幾個我印象特別深刻的:
SwiftUI 的進階技巧
有位講者深入講解了 SwiftUI 的 Layout protocol,展示了如何做出複雜的自定義版面。那些範例程式碼寫得非常漂亮,讓我學到很多。
Swift Concurrency 的陷阱
另一位講者分享了 async/await 的一些常見錯誤和最佳實踐。我自己也踩過幾個坑,看到他整理得這麼清楚,覺得很受用。
App 架構設計的演進
有位創業的講者分享了他們 app 從 MVVM 演進到 TCA 的過程,包含遇到的困難和解決方案。這種實戰經驗的分享最有價值。
Vision Pro 開發經驗
今年也有講者分享 Vision Pro 的開發心得。雖然我還沒有實際接觸,但聽他的分享,對空間運算有了更具體的想像。
社群交流的價值
Break Time 的價值
每次 iPlayground 我最期待的,其實是 break time。這是認識新朋友、和老朋友敘舊的最好時機。
這次我:
- 認識了幾位剛入行的 iOS 開發者
- 和幾年沒見的老朋友聊了近況
- 收到了幾個關於演講的回饋
- 交換了幾個有趣的技術想法
有位聽眾跟我說,他之前一直不知道可以在 iOS 上跑 LLM,聽完我的演講後決定回去試試看。這種回饋真的讓人很有成就感。
晚宴的輕鬆氛圍
活動結束後的講者晚宴,氣氛更加輕鬆。大家卸下了講者的身份,就是一群喜歡 iOS 開發的朋友在聊天。
我們聊了:
- 各自的職涯規劃
- 對 iOS 開發未來的看法
- AI 對我們工作的影響
- 有沒有想轉換跑道
這些對話讓我發現,原來不只是我在思考這些問題,大家都在面對相同的焦慮和期待。
講者的收穫與成長
技術上的收穫
準備過程強迫自己深入: 為了把 Local LLM 講清楚,我必須比自己學習時更深入地理解它。有些細節之前模模糊糊,為了準備演講就得搞懂。
Q&A 帶來新思考: 聽眾的問題讓我注意到一些之前沒想到的場景和問題。比如舊款機型的支援、模型更新機制等,這些都成為我後續改進的方向。
和其他講者的交流: 和其他講者聊技術,會發現很多不同的思路和解決方案。這種peer learning的價值很高。
表達能力的提升
更清晰的結構: 準備演講的過程,訓練了我如何把複雜的技術組織成清晰的結構。這個能力在工作中的技術分享、文件撰寫都很有幫助。
更精準的表達: 如何在有限時間內把重點講清楚,如何用淺顯的比喻解釋艱深的概念,這些都是很寶貴的訓練。
更從容的台風: 雖然上台前還是會緊張,但和第一次比起來已經從容很多。這種面對大眾演說的經驗,是在工作中很難獲得的。
人脈的拓展
認識更多同行: 作為講者,會有更多人主動來交流。這次認識了好幾位之前只在社群媒體上看到的朋友,也建立了一些新的連結。
業界的visibility: 在會議上分享,會提高在業界的能見度。後來有幾個公司的人來找我聊,甚至有 recruiter 看了演講後主動聯繫。
開源專案的貢獻者: 演講後,有幾個人對我的 demo 專案有興趣,加入了開發。這讓專案發展得更快,也認識了更多厲害的開發者。
給未來想成為講者的你
如果你也想在 iPlayground 或其他研討會分享,我有幾個建議:
投稿建議
1. 不要覺得自己不夠格 很多人覺得要當「大神」才能分享,其實不是。新手的視角、踩坑的經驗、小議題的深入探討,都是很有價值的內容。
2. 選你真正有興趣的題目 準備演講很花時間,如果不是真心有興趣的題目,很難堅持下去。而且你的熱情會感染聽眾。
3. 從小題目開始 不用一開始就挑戰很大的主題。一個小議題講得深入透徹,比大題目講得浮光掠影更有價值。
4. 準備充分的範例 實際的程式碼、demo、案例研究,遠比理論講解更有說服力。
準備建議
1. 提早開始準備 至少提前一個月開始準備。技術研究、內容設計、簡報製作、演練,每個階段都需要時間。
2. 多次演練 對著鏡子練、錄影自己看、找朋友當聽眾,每次演練都會發現新的問題。
3. 控制好時間 寧可講少一點,也不要超時。超時會壓縮到 Q&A 時間,也會影響下一位講者。
4. 準備 Plan B Demo 可能會出問題(Murphy’s Law),準備好錄影或截圖作為備案。
上台建議
1. 開場很重要 前 30 秒決定了聽眾的注意力。一個有趣的開場、一個切身的問題、一個驚人的數據,都是不錯的開場方式。
2. 和聽眾互動 適時問問題、做小調查、邀請討論,這些互動會讓演講更生動。
3. 講故事比講道理有效 技術分享不是學術論文,適當加入故事、案例、個人經驗,會讓內容更容易吸收。
4. 享受這個過程 緊張是正常的,但也要試著享受這個分享的過程。你的熱情會感染聽眾。
對未來的展望
iOS 開發的未來
雖然現在 Mobile 開發不再是最熱門的領域,但我相信 iOS 開發仍然有它的價值:
設備端 AI 的興起: 像我這次分享的 Local LLM,就是一個新的方向。未來會有更多 AI 功能在設備端運行。
隱私保護的重視: Apple 一直很重視隱私,這也是 iOS 的優勢。在隱私意識高漲的時代,這個優勢會更明顯。
生態系的完整性: iPhone、iPad、Mac、Apple Watch、Vision Pro,整個生態系的整合,仍然是 iOS 開發的獨特價值。
品質的要求: iOS 用戶對 app 品質的要求較高,這代表優秀的 iOS 開發者仍然有市場價值。
iPlayground 的未來
希望 iPlayground 能夠繼續辦下去,成為台灣 iOS 社群的年度盛事。
也希望更多人願意投稿、分享、參與。社群的活力來自每個人的貢獻。
結語
這次擔任 iPlayground 講者的經驗,對我來說是很寶貴的成長。
從準備到演講,從技術研究到表達訓練,從緊張上台到從容分享,每個階段都是學習。
更重要的是,我感受到了社群的溫暖。無論是主辦團隊的用心、聽眾的專注、講者間的交流,都讓我覺得,這個社群值得我們繼續投入。
如果你也喜歡 iOS 開發,也想分享你的經驗,不要猶豫,投稿吧!
我們明年再見!
感謝:
- 感謝福氣哥和籌備團隊的辛苦籌辦
- 感謝 DinDin 的邀稿
- 感謝所有來聽演講的朋友
- 感謝所有讓 iPlayground 持續下去的人
大軍 2025-09-07