在网上看到一篇关于使用AI开发的编程经历,分享给大家
作者是如何在没有 iOS 开发经验的情况下,借助 AI(如 Claude 3 模型)成功开发并发布《震感》iOS 应用。
正文开始
2022 年 11 月,ChatGPT 诞生并迅速引发全球关注。过去两年间,生成式 AI 发展飞速,不论在模型层还是应用层,都有了显著的进展。
大部分人应该都体验过 ChatGPT,或者其他类似的生成式 AI 产品。你可能不仅仅是在闲聊,甚至在工作中也使用 AI 辅助工具来提高效率。毫无疑问,AI 将带来巨大的变革,未来与 AI 合作很可能成为每个人的必备技能。
这两年,我一直在关注 AI 技术的发展。每当新模型发布时,我都有过惊喜和失望的情绪波动。这种情绪周期的变化,时常让我感到一阵阵兴奋,又或是觉得期望与现实之间有差距。
AI 发展观察者的情绪周期(由 Claude 绘制)
直到几个月前,Claude 3 Sonnet 模型发布(现在已经是 3.5 Sonnet),我意识到它的巨大潜力。于是,我决定挑战自己,尝试看看 AI 是否能够帮助我完成一直以来的梦想——开发一款 iOS app。
Claude 模型能力对比
iOS开发:我决定入坑
这些年,尽管我一直关注 iOS 应用,但从未接触过 iOS 开发。我对 iOS 开发的了解几乎为零。知道有 Swift、Objective-C,也听说过 Xcode,但实际操作过的机会几乎没有。
Xcode 和 Swift
几年前,由于工作和学业的原因,我学过一些 Python,虽然我现在并不算专业的 Python 工程师,但我能写一些简单的脚本,解决工作中的小问题,也对数据库和网络请求等基本概念有所了解。所以,虽然完全没有 iOS 开发经验,我还是决定尝试做一款简单的地震信息 app(暂称《震感》)。
你可能能猜到,选择这个主题的原因非常随意。作为 2008 年大地震的亲历者,我对地震信息有着特殊的关注。现有的地震信息 app,要么界面丑,要么体积过大,我一直不太满意。
编码前:明确目标,规划框架
明确了做地震信息 app 后,我还需要解决一堆基础问题:
-
我该使用什么编程语言来开发? -
需要下载什么工具?如何开始? -
App 的界面该怎么设计?需要哪些页面? -
我可以投入多少时间? -
如何将 app 发布到 App Store?
通过查阅资料和询问 AI,我得出了以下结论:
-
我决定使用 Apple 推荐的 SwiftUI 来开发原生 iOS app,不用第三方框架,尽量减少依赖,方便 AI 能利用官方文档。 -
我需要下载 Xcode,这是开发 iOS 应用的必备工具。 -
我参考了 Apple 的 人机界面指南,尽量使用原生控件,省去复杂的界面设计。 -
我能接受累计投入 1 个月周末时间来完成这个项目。 -
我需要每年支付 688 元注册 Apple Developer 账号,用于提交 app 到 App Store。
梳理思路,从零开始
注册了 Apple Developer 账号,下载了 Xcode,我面临的第一个问题是:“如何开始?”
我对 iOS 项目结构、代码组织等一无所知。于是,我让 Claude 帮我生成一个简单的 SwiftUI 项目(比如 Hello World),并一步步指导我运行。虽然我对 SwiftUI 代码完全看不懂,但它成功运行了。
接下来,我让 Claude 讲解了 iOS app 的基本结构,了解了应用的图标、页面组织和基础配置等内容。经过多次沟通,我初步掌握了 iOS app 的框架。
一款最简单的 iOS App 结构
细节:和AI一起逐步实现
与 AI 合作开发 iOS app 并不简单。如果你直接对 AI 说:“帮我做一个地震信息 app”,它肯定只会给你一大堆代码,并说“搞定”。但如果你把问题一步步细化,AI 才能帮你逐步解决。
例如,《震感》的主界面需要一个地图和地震事件列表。
震感 App 主界面
我给 Claude 提示:“请在主页面显示地图,使用原生组件和 SwiftUI 语法。”拿到代码后,我将其粘贴到 Xcode 中,运行查看效果。如果地图显示不完整,我就继续与 AI 沟通:“我希望地图占据整个屏幕,请修改代码。”
如果遇到 Xcode 报错,我会将错误信息反馈给 AI,要求它帮我分析并修复问题。
总之,开发一个 app,需要将问题拆解成一个个小任务,与 AI 的多轮对话才能实现预期功能。
后端的挑战
随着开发的深入,我意识到《震感》并非纯粹的本地应用,它需要从网络获取实时地震数据,这就需要后端服务。
这时,我开始向 AI 请教如何搭建后端服务。最终,我选择了 Cloudflare 提供的无服务器产品,这样可以避免搭建复杂的云服务器,也能以较低的成本实现后端功能。
震感 App 后端架构示意图
借助 AI 加速开发
和 AI 一起开发时,常常会遇到代码报错或功能无法实现的情况。此时,我会通过搜索引擎查找相关资料,并把新获取的信息输入给 AI 更新其知识库。
此外,我还会与 AI 转换角色,自己扮演测试工程师,通过反馈日志来加速解决问题。
项目迭代:AI成为产品经理
完成了最初的功能后,我便将整个项目交给 AI 来协助迭代。在 Claude 的 Project 功能下,我上传了整个代码库,并让 AI 深入了解项目结构,这让后续迭代更加高效。
震感 app 的 Claude Project 配置截图
在不断优化迭代中,我通过 Git 管理代码,并将其上传到 Claude Project,让 AI 更加精准地帮助我做项目迭代。
震感 app 经过约 50 小时的努力,完成了第一个版本,并顺利上架 App Store。随后的迭代也在不断推进中。
macOS 版本震感 app
总结:和AI编程的感受
AI 在这个过程中的帮助无处不在。它不仅是我的编程助手,也逐渐成为了我的设计师、产品经理,甚至是我的测试工程师。
与 AI 合作开发应用,不仅让我更高效地完成任务,还让我在开发过程中深刻感受到 AI 的潜力。未来,AI 很可能成为每个人编程的好伙伴,帮助我们实现从创意到落地的整个过程。
我也期待 AI 在未来带来更多创新,帮助更多人完成他们的编程梦想。
本文由 mdnice 多平台发布