[Day 15] 里程定位與地圖顯示(一)- 資料讀取

前言 第一個進行的 issue 是「里程定位與地圖顯示」,先用 VS code 來看一下這兩份 CSV(省道與國道)長什麼樣子: 我們現在的目標是,讀取 CSV 檔案,然後將其轉成我們定義好的物件類型。 Git 分支規劃 從 main 分出 develop 再從 develop 分出 feature/parse-csv 分支 於 feature/parse-csv 分支進行開發 資料結構 依據 CSV 欄位,定義我們需要的結構: struct ProvincialMileageMarker { let roadNumber: String // 公路編號 let county: String // 隸屬縣市 let wgs84Lon: Double // 坐標-E-WGS84 let wgs84Lat: Double // 坐標-N-WGS84 let township: String // 隸屬鄉鎮 let location: String // 設置位置 let content: String // 牌面內容 let condition: String // 現況 let direction: String // 牌面方向 } struct HighwayMileageMarker { let roadNumber: String // 國道編號 let county: String // 隸屬縣市 let wgs84Lon: Double // 坐標X-WGS84 let wgs84Lat: Double // 坐標Y-WGS84 let display: String // 牌面內容 let direction: String // 方向與備註 } 資料讀取與顯示 搭配 Combine,建立 RoadDataManager,實作資料背景讀取與在 Day 9 介紹過的 Combine 來自動更新畫面: ...

September 28, 2025 · 3 分鐘

[Day 12] 使用 Azure board 進行專案管理

前言 在 Day 1 的時候有提到,在我剛進公司時,公司正好在導入 Azure DevOps 作為專案管理工具。這讓我有機會從零開始學習如何使用這個工具,並且在實際的工作中應用它,也因此體會到了專案管理工具對於軟體開發的重要性與價值。例如,它能幫助團隊更清楚地了解專案進度、分配任務、追蹤 Bug 等等。在還沒有工具之前,我們可能常常用 Excel、Trello 或甚至是口頭溝通,結果就是「欸,那個功能上次是誰說要做的?」或是「這個 Bug 修好了嗎?」之類的對話層出不窮,資訊非常分散。每一個工作項目都能被清楚地記錄與追蹤,讓整個開發流程變得更有條理;每一個工作項目都能被清楚地記錄與追蹤,讓整個開發流程變得更有條理。而原本今年鐵人賽想單純撰寫 SwiftUI App 的計畫,但想了一下,或許我可以嘗試把我使用 Azure DevOps 的經驗也融入其中,也是個不錯的結合。 什麼是 Azure Boards? Azure Boards 是一個基於網頁的服務,讓團隊可以一起規劃、追蹤和討論整個開發過程的工作,並且支援敏捷式方法。它提供了可自訂的平台來管理各種工作項目,讓團隊能夠有效協作並簡化工作流程。 如果用更白話的方式來說,Azure Boards 就像是「專案進度白板」的進化版。想像你和同事要一起做一個 App,大家會把要做的事情(像是設計畫面、寫程式、修 bug)一條一條寫在便利貼上,貼在牆上,然後每天早上一起討論誰要負責什麼、做完了沒。Azure Boards 就是把這種「便利貼牆」搬到網路上,而且還加了很多自動化和追蹤功能。 舉個實際例子,假設你們團隊要開發一個新的功能,大家可以在 Azure Boards 上建立一個「Issue」,分配給負責的人,設定截止日期,還能隨時更新進度。如果有 bug,直接開一個新的工作項目,標記為「Bug」,讓大家都知道目前有什麼問題需要解決。你可以根據專案規模選擇不同的流程(像是 Basic 或 Agile),小型團隊可以用最簡單的方式管理,大型團隊則能用更細緻的分工。 總結來說,Azure Boards 就是幫助團隊把所有待辦事項、進度、問題都集中管理,讓大家不會漏掉重要的事,也能清楚看到專案的整體進展。 依據團隊與專案的不同,Azure Boards 提供四種流程選擇: Agile:使用敏捷式規劃方法時使用,適合追蹤 User Story,並可選擇性地在面板上追蹤 Bug。 Basic:適合小型團隊或個人專案,簡化工作項目結構,讓管理更直觀。 Scrum:適合正式執行 Scrum。 CMMI:當小組遵循更正式的專案方法時選擇。 詳細可參考微軟說明。 我們公司是使用 Agile 流程,但在這個專案中,我會使用 Basic 流程來進行管理。因為這個專案的規模較小,且我主要是個人開發,所以 Basic 流程就足夠了。如果用 Agile 或 Scrum,會多出像 User Story、Feature、等這些工作項目類型,對我一個人來說反而有點太複雜了,Basic 的三層架構(Epic → Issue → Task)對我來說最直覺。如果想要進一步了解差異,可以參考微軟官方文件。 ...

September 25, 2025 · 2 分鐘

[Day 3] Azure DevOps 設定與 Xcode 專案初始化

Azure DevOps 設定 什麼是 Azure DevOps? Azure DevOps 是微軟提供的開發工具服務平台,整合了版本控制、工作項目追蹤、自動化建置等功能。對於 iOS 開發者來說,它提供了: Azure Repos:Git 版本控制系統 Azure Pipelines:自動化建置和部署工具 Azure Boards:專案管理和工作追蹤 Azure Test Plans:測試管理工具 Azure Artifacts:套件管理系統 Azure DevOps 免費方案 依據官方說明,個人開發者可以享有以下免費額度: 無限量的私人 Git 儲存庫 最多 5 位 Azure DevOps 使用者 每月 1,800 分鐘的 Pipeline 執行時間 2GB 的 Azure Artifacts 儲存空間 這些免費額度對於個人專案來說已經相當充足。 建立 Azure DevOps 帳號 前往 Azure DevOps 官網 點擊「開始使用 Azure」按鈕 使用 Microsoft 帳號登入(如果沒有就註冊)。首次啟用 Azure 帳號時,系統會要求您填寫基本資料,依照畫面指示完成即可。 最後系統會要求綁定信用卡,這主要是為了驗證身分,在免費額度內並不會產生費用。如後續說明,Azure DevOps 的免費額度對個人專案來說綽綽有餘。 建立組織(Organization 登入後,第一步是建立一個組織。 ...

September 16, 2025 · 2 分鐘

[Day 1] 前言

與 iOS 開發的相遇 大家好,我是個從律師轉職的軟體工程師,踏入這個領域不知不覺也快兩年了。回想當初轉換跑道,一切從自學 Python 開始,接著摸索資料庫、API 等後端技術。後來有幸進入 AppWorks School (現已更名為 AiWorks) 接受 iOS App 開發訓練,最終進入金融業的 IT 部門。 進入公司後,我的工作日常相當「精彩」,除了本行的 iOS 專案開發與維護,還得兼顧後端維運、和 SQL 打交道,甚至管理 Splunk、Kong APIM 這些系統。雖然實際能投入在 iOS 開發的時間不如預期,但我對這塊領域的熱情從未減少。親手打造出一個能看、能用、能互動的應用程式,那種從無到有的創造感與成就感,是其他工作難以比擬的。也因此,剛進公司時,對於無法專注在 iOS 開發上,心裡難免有些失落。但現在回頭看,我相信廣泛接觸不同技術對一個軟體開發者來說絕對是不虧的事情。然而,心中那份對 iOS、特別是 SwiftUI 的渴望,依然強烈。 目前公司的專案仍以 Objective-C 與 UIKit 為主,雖然我曾用 SwiftUI 開發並上架過個人 App,但總覺得學得不夠扎實。這次鐵人賽,對我來說正是一個完美的機會,能強迫自己更多了解 SwiftUI 的世界,將那些零散的知識串連起來。 初入 DevOps 世界 在公司任職期間,我有幸參與了 Azure DevOps 的導入過程。坦白說,起初它對我而言,就只是個「新來的工具」:用 Wiki 寫文件、開 Work Items 追蹤任務、等 Pipeline 編譯出 .ipa 檔,然後透過 Pull Request (PR) 進行程式碼審查。每個環節都得遵循特定流程,像是 Pipeline 還需要主管審核才能部署,有時覺得有些繁瑣。 但隨著時間推移,這些經驗讓我逐漸體會到,DevOps 不僅僅是工具的堆砌,它更是一種文化,一種讓開發、測試與部署流程更順暢、更可靠的思維模式。當我看到一個小小的修改,能自動觸發測試、打包、甚至部署到測試環境,我才真正理解自動化所帶來的安心感。 即使現在是一人開發的個人專案,我也相信導入良好的 DevOps 實踐也是一個不錯的嘗試: 版本控制: 使用 Azure Repos 搭配 Git-flow 策略,讓每一次的程式碼異動都有所依循。 自動化測試: 設定 Pipeline 自動執行單元測試,確保程式碼品質。 持續整合: 每次提交程式碼後自動編譯並檢查。 持續部署: 自動將測試通過的版本部署到 App Store Connect。 這次的系列文章,我將結合 SwiftUI 開發與 DevOps 實踐,從建立基礎專案開始,一步步實現自動化的開發流程。 ...

September 14, 2025 · 1 分鐘