Giới thiệu về RowSwift
Chào các bạn, tôi rất vui khi thông báo rằng tôi đã phát hành ứng dụng iOS đầu tiên của mình mang tên RowSwift. Đây là một công cụ phân tích CSV được thiết kế để cung cấp cho bạn những câu trả lời nhanh chóng và các hình ảnh trực quan chỉ với vài lần chạm.
Tại Sao Tôi Xây Dựng Nó
Ý tưởng về RowSwift xuất phát từ một chuyến đi ba tuần, khi tôi hết dữ liệu di động. Bị kẹt với một tệp CSV trên điện thoại, tôi muốn đếm số hàng, tính độ lệch chuẩn và tạo biểu đồ histogram cho một trong các cột. Mặc dù ứng dụng bảng tính Numbers của Apple là một lựa chọn, nhưng tôi thừa nhận rằng kỹ năng làm bảng tính của mình khá kém. Và không có internet, tôi không thể chỉ cần tìm kiếm “cách tính độ lệch chuẩn của cột ba”.
Khi về nhà (sau khi xem xét tệp CSV bằng ngôn ngữ lập trình R), tôi đã nghĩ: tại sao không học những điều cơ bản về phát triển iOS và Swift để xây dựng một công cụ làm điều đó? Một công cụ nhỏ và nhanh chóng cho việc đếm hàng, thống kê và biểu đồ. “Nhỏ” và “nhanh” là những yếu tố quan trọng: tôi muốn một cái gì đó có thể tải một tệp và cung cấp cho tôi thông tin tôi cần trong vài phút.
Dự án nhỏ này đã phát triển thành một sản phẩm lớn hơn. Đến một thời điểm, tôi tự hỏi: Tại sao không hoàn thiện nó và phát hành? Và bây giờ, chúng ta có phiên bản đầu tiên của ứng dụng và một tệp CSV mà tôi vẫn muốn phân tích.
Từ Dữ Liệu đến Thông Tin
RowSwift giúp bạn bắt đầu một cách dễ dàng. Bạn có thể dán dữ liệu, tải tệp từ thiết bị của mình, đọc nó từ một URL hoặc thử một trong các tập dữ liệu mẫu (như hoa Iris cổ điển).
Trong bài viết này, tôi đã sử dụng một tệp CSV từ một tháng mà tôi hiếm khi dùng thẻ tín dụng. Ngay khi tệp được tải, bạn sẽ thấy số lượng hàng và cột, cùng với một bản xem trước các hàng đầu tiên được hiển thị gọn gàng dưới dạng ô. Một thanh lọc nhanh ở đầu giúp tôi tập trung vào các giao dịch, và một lần nhấn lâu vào bất kỳ hàng nào cho phép tôi sao chép nó dưới dạng CSV, JSON, hoặc thậm chí là các cặp khóa-giá trị. Thật tiện lợi nếu tôi cần gửi chi tiết đi nơi khác.
Nhưng sự thú vị thực sự bắt đầu khi tôi chuyển sang tab Hình ảnh.
Hình Ảnh Chi Tiêu
Tôi bắt đầu bằng cách tạo một biểu đồ histogram cho số tiền giao dịch của mình. Với các ô điều chỉnh và tùy chọn chọn giữa tần suất tương đối và phần trăm, tôi nhanh chóng nhận ra rằng hầu hết các giao dịch của tôi đều dưới 27 đô la. Điều này phù hợp với ký ức của tôi: một vài giao dịch nhỏ, không đáng nhớ.
RowSwift cũng tóm tắt mỗi cột số với các thống kê nhanh chóng, chẳng hạn như trung bình và độ lệch chuẩn. Trong tháng chi tiêu đó, trung bình là 24.40 đô la với độ lệch chuẩn là 34. Không tệ lắm.
Để đi sâu hơn, tôi đã chuyển sang tab nhóm. Bằng cách tổ chức các giao dịch theo danh mục, tôi có thể thấy mình đã chi bao nhiêu cho thực phẩm, nhà hàng, vận chuyển và, người chiến thắng rõ ràng, mua sắm. Thủ phạm? Thẻ Pokémon. Không ngạc nhiên.
Tuy nhiên, danh mục thường xuyên nhất không phải là mua sắm mà là nhà hàng, với hơn 50% giao dịch mang nhãn này. Biểu đồ hình tròn dưới đây xác nhận điều đó. Điều mà dữ liệu không nói (trừ khi bạn nhìn vào thương nhân thực tế) là, thực tế, các mục nhập này chủ yếu đến từ các tiệm bánh và quán cà phê đã cung cấp cho tôi sự thúc đẩy ngọt ngào mà tôi cần trong khi lập trình ứng dụng.
Tiếp Theo Là Gì?
RowSwift được sinh ra từ một sự tò mò đơn giản và một mối quan tâm đến việc học cái gì đó mới. Thành thật mà nói, tôi không bao giờ mong đợi sẽ có nhiều niềm vui khi xây dựng nó. Bây giờ ứng dụng đã có mặt trên App Store, tôi dự định tiếp tục thêm vào những kỹ thuật thực tiễn từ thế giới dữ liệu, bao gồm nhiều thống kê hơn như trung vị và độ lệch chuẩn nhóm, biểu đồ phong phú hơn và các tùy chọn xuất đa dạng.
Tại thời điểm viết bài, ứng dụng miễn phí sử dụng và không có quảng cáo.
Những Bài Học Rút Ra
Nhiều quá đi.
Là một người có kinh nghiệm phát triển di động hạn chế (và không có bất kỳ kinh nghiệm nào trên iOS), việc lặn vào một ngôn ngữ mới và các chi tiết của hệ sinh thái Apple vừa thú vị vừa gây khó chịu.
Một trong những thách thức lớn nhất? Thiết kế UI và UX. Là một người dùng iPhone không có nghĩa là tôi biết cách thiết kế cho iOS. Khi tôi quyết định nâng cấp dự án từ “chỉ là một món đồ chơi” thành một ứng dụng thực sự, tôi đã gặp phải một bức tường. Tôi bắt đầu phác thảo ý tưởng trên giấy. Không giúp ích gì; quá trừu tượng và không có màu sắc. Sau đó, tôi đã thử sử dụng Canva và các công cụ thiết kế tương tự, nhưng tất cả những cú nhấp chuột đã gây cản trở. Cuối cùng, tôi quay lại với điều gì đó quen thuộc hơn: Photoshop. Tôi đã thiết kế một bố cục dựa trên ô mà khiến tôi nhớ lại những ngày đầu xây dựng ứng dụng cho Windows 8. Nó cảm thấy đúng. Việc chuyển đổi thiết kế đó sang SwiftUI là bước tiếp theo.
Việc lập trình với SwiftUI diễn ra tốt hơn mong đợi. Có, có rất nhiều tìm kiếm trên Google, rất nhiều việc đọc tài liệu và nhiều cuộc trò chuyện dài với ChatGPT để kiểm tra các ý tưởng, hỏi xem tôi có đang làm theo các phương pháp tốt nhất hay không, giải quyết lỗi và giúp tôi hiểu các thông báo lỗi—nghĩ về “Trình biên dịch không thể kiểm tra kiểu của biểu thức này trong thời gian hợp lý
” vẫn ám ảnh tôi. Tuy nhiên, khi tôi nắm bắt được một vài NavigationStack
, mọi thứ bắt đầu vào guồng.
Con quái vật thực sự là việc tạo ra các biểu đồ. Đó là một mức độ căng thẳng khác. Một nửa thời gian, tôi không chắc chắn liệu điều tôi muốn thực hiện có khả thi trong framework hay không. Và ngay khi tôi nghĩ rằng mình đã hoàn thành—biểu đồ đã hoàn chỉnh, tương tác hoạt động (yay!)—tôi quyết định thêm xuất biểu đồ. Đó là lúc tôi (và ứng dụng) gần như gục ngã. Kích thước sai, màu sắc không đúng, phông chữ quá nhỏ, và dữ liệu bị thiếu. Đó là một thảm họa. Nhưng bằng cách nào đó, mọi thứ đã kết hợp lại với nhau, và tôi đã có thể hoàn thành nó.
Điều này dẫn tôi đến tiếp thị. Ứng dụng đã xong… giờ thì sao? Tôi không lên kế hoạch xa đến vậy. Tôi vẫn đang tìm ra phần này. Tôi đã xây dựng điều này cho thử thách, học hỏi và để đếm các hàng CSV. Nhưng dĩ nhiên, tôi rất muốn ứng dụng giúp ích cho ai đó khác.
Tôi không chắc làm thế nào tôi sẽ quảng bá nó ngay bây giờ, nhưng có thể bài viết này là một bước khởi đầu tốt.
Bạn có thể tải RowSwift tại đây.
Để biết thêm thông tin, hãy truy cập đây.