
“非工程师也想开发应用!”带着这样的想法,笔者尝试利用生成式AI进行自制应用开发(Vibe Coding),但在“发布壁垒”前陷入了困境。
于是,笔者向日本GMO互联网集团的现役工程师石丸智辉先生请教。在Google AI Studio中打造前端,应用命名为“AiLA”,并将开发环境转移到Claude Code。经历多次故障排除后,终于实现了“需管理员批准注册用户才能登录”的审批制登录功能。同时,笔者也学习了Claude Code的计划模式、聊天版Claude的项目功能以及CLAUDE.md的更新维护。
这是一段业余与专业携手合作,充满泥泞但真实的开发纪录……
此前文章链接:

这次,笔者先完成了在本地环境运行的应用,准备进入下一阶段的预发布环境,梳理缺失功能和发布前注意事项。
自行添加功能后,应用逐渐成型
上次采访后,笔者对开发流程有了初步理解,开始独自使用Visual Studio Code对应用进行优化。虽然不会写代码,但依旧通过日语向Claude Code提出需求,运行AI生成的代码,发现问题再让AI修正,反复迭代。
大部分需求都得以实现,应用功能日益丰富。即使自认为功能完善,用户视角下仍发现诸多不足,反复修正。渐渐地,感觉不再是“让AI做”,而是“与AI共同创作”,这种体验非常棒。
具体来说,首先为所有用户制作了个人主页,可以查看自己登记的威士忌历史,并能通过地点和标签筛选。登出和注销按钮从首页移至个人主页底部,避免干扰界面。

管理员界面也做了增强。除了之前实现的审批管理外,新增了封禁违规用户功能,以及允许注销用户在一定期限内恢复的缓冲机制。同时,还添加了公告发布功能,显示在用户界面。

不过,有些问题笔者难以判断。例如,浏览器的“返回”按钮点击后,应用并非返回上一个页面,而是像关闭了应用一样。
向Claude Code咨询后得知,解决浏览器返回问题需要重新设计整个应用的页面跳转机制。目前应用只是单页面内内容切换,未关联浏览器历史。要实现正常返回,需要为每个页面设置独立URL,并同步浏览器历史与应用状态。看似简单的“返回”按钮,背后问题却很复杂。鉴于不确定是否应介入,暂时决定在每个页面放置“返回”和“主页”按钮,先行保留。
今天完成本地开发,先请石丸先生审查代码
本次采访开始时,笔者将石丸先生添加为GitHub项目的协作者。这样不仅能口头说明,还能让他直接查看代码库。

GitHub允许邀请他人加入项目,并设置只读或可写权限。对非工程师来说,邀请他人似乎很正式,但团队开发中这是常规操作。
石丸先生说:“今后团队开发也会通过GitHub邀请成员,分配权限。可以只允许读取,也可以允许写入。根据信任程度分配访问权限。”
首先咨询的是之前搁置的浏览器返回问题。
“浏览器返回是Web应用中常见的讨论点。一般来说,能用返回按钮回到上一页更方便。但在表单输入或支付等复杂状态管理页面,返回可能导致操作重置或数据不一致,难度较大。要彻底解决,需要重新设计页面跳转,关联浏览器历史和应用状态。虽然用户体验重要,但不是最优先事项,未来可考虑实现。”
经过考虑,决定优先完成应用。
此次目标是“完成本地环境开发”。目前应用基本可用,支持登录、威士忌信息登记,管理员审批用户功能也正常。笔者感觉已接近完成。
但目前运行环境仅限于个人电脑的本地环境,使用Firebase模拟器等工具,仅供开发测试,无法直接对外使用。
石丸先生表示:“这次主要确认是否有缺失功能,检查实现和运行中的问题,为下一阶段做准备。”
本地开发时,许多问题可凭冲劲解决,但对外发布则不同。涉及用户权限、数据处理、API调用限制、错误处理等多项隐性检查。
不能盲目信任AI生成的“看似合理”的信息
另一个难题是威士忌的风味信息。应用通过标签图片等识别威士忌品牌、酒精度、产地等,并显示橙子、香草、烟熏等风味。
但核查发现部分风味信息并非来自官方品鉴评论,而是AI基于通用知识生成的推测。虽然用户可自行编辑,问题不大,但作为默认显示信息略显不妥。作为威士忌爱好者,笔者希望能尽量反映官方品鉴数据。
向AI咨询后,得到几种方案:一是除了图像分析外,再单独调用接口获取风味信息,但会增加处理时间和费用;二是预先准备代表性威士忌的风味主数据,注册时从中读取初始值。
石丸先生说:“可以事先准备主数据,比如柳谷先生用CSV格式整理数据,作为项目初始数据。注册时若匹配主数据,则自动填充风味,否则采用其他处理。”

自己维护数据库之前没想过,但这确实是提升用户体验、减少AI幻觉的好方法,也能节省API调用费用。虽然短期内难以实现,但计划未来逐步推进。
AI审核揭示发布前的诸多问题
功能基本完成后,进入发布准备阶段。
遵循石丸先生建议,向Claude Code询问:“请检查当前应用实现情况,调查是否有缺失或应实现的功能。”
Claude Code开始搜索源码,读取文件结构,确认实现内容。终端显示grep、ls等命令,AI在调查“当前缺少什么”。
不久,Claude Code列出发布前需确认的10项内容,其中4项标记为“紧急(安全和成本相关)”。对非专业者来说颇为震惊,但在石丸先生指导下逐项处理。

具体包括API密钥管理、外部API调用限制、Firebase数据访问权限规则等发布必查项目。部分细节涉及安全隐患,文章未公开。石丸先生提醒,发布前审核还应确认哪些信息可公开,哪些应保密。
“应用开发中,除了做好安全措施,还要避免随意泄露内部实现细节,减少攻击线索。发布内容与保密内容的平衡很重要。”
看到AI提出的多项问题,容易想“一次全部修复”,但这很危险。
石丸先生指出,批量修复会导致难以判断哪个修改引发问题,测试复杂,Git历史难以追踪。重要修复应逐条处理、确认、提交。
“批量修复会增加质量保障难度。建议每次只处理一项,确认后提交。AI给出多条建议时,也应逐条核实。”
这对非工程师来说是Vibe Coding常见的难点。AI给出大量改进建议,容易让人误以为全都必须做,但关键是分辨“当前必须做”“以后做”“暂时不做”。
Claude Code的建议中,有些适合预发布阶段处理,有些本地开发时即可修正。笔者无法判断,继续向Claude Code提问:
- “请用非工程师能懂的方式说明。”
- “当前处于本地开发阶段,是否应立即处理?”
- “优先处理只需修改源码的项。”
- “请将建议内容记录为备忘。”

这样一来,AI的回答变得更易理解。相比简单告知“危险,请修复”,更能明确原因、优先级和时机。
石丸先生强调:“与AI交流时,表达和提问技巧非常重要。若不理解AI输出,不要盲目执行,应请求‘用初学者能懂的方式解释’。不确定是否立即处理时,问‘本地开发阶段是否需要’。这些是值得记住的实用技巧。”
外观无变化,发布前质量稳步提升
最终,笔者将部分改进交由Claude Code完成。
例如,防止错误时页面空白的处理,内部代码整理等。对用户界面影响不大,但提升了应用稳定性和可维护性。
这种“外观无明显变化但内部优化”的工作,非工程师难以感知。按钮增多或界面美化容易见效,但错误处理、代码拆分、重复代码清理等看不见,发布前却尤为重要。
完成后,笔者全面操作应用确认无异常,最后提交并推送代码,标志本地开发阶段告一段落。

这次体验让笔者认识到,AI不仅能辅助实现功能,发布前的审核同样重要。临近发布时,向AI询问“缺什么”“风险点”“当前优先事项”非常关键。
但切记不能盲目接受AI所有建议,一次性全部修改风险大。遇到不懂的术语要请AI解释,确认是否应立即处理。修改后要测试并提交。虽然枯燥,但这是区分“盲目依赖AI”和“合理利用AI”的关键。
笔者坦言,如果没有石丸先生指导,自己可能会选择“全部交给AI处理”。但现在通过不断提问,逐渐理解AI的建议,虽然进度缓慢,却感到学习成效,令人欣慰。
下一回,将进入预发布环境部署阶段。把本地运行的应用部署到云端,调整Firebase和API密钥等配置,迈入“从制作到发布”的关键阶段。
(第9回待续)
作者简介:柳谷智宣

IT与商业领域撰稿人,拥有26年职业经验,涉猎数字设备、Web服务、消费品及企业产品。近年来专注于AI、SaaS和数字化转型领域。日常撰写大量稿件,已离不开生成式AI辅助工作。


