1. 引言

水果计算器 (Fruittoeat) 是一款能够根据用户的位置、天气、季节、运动量以及历史摄入信息,计算最适合当前获取的水果的 APP。它的核心功能包括:计算当前最合适的水果,记录历史水果摄入及其营养成分。

2. 想法

我一直是一个不爱吃水果的人,也没有喜欢或者讨厌某种水果的概念。今年年初某一天,我突然意识到自己一个多月没有吃过水果了,然后很想吃点什么水果,去了附近超市看着货架上一堆乱七八糟的水果,纠结了半天也不知道拿什么 。

在我的刻板印象里水果 = 大部分水 + 纤维素 + 糖 + 少的可怜的维生素,并不算什么健康食物?这些营养我完全可以通过嗑维生素片和纤维素粉来补充,但是后来发现每天吃一点水果会明显让让我舒服很多(玄学?)。就像汉堡有菜有肉有淀粉,但是你连续吃一周还是觉得哪里不太舒服。加上之前自己的消化系统出了些问题,于是开始强迫自己每天吃一些水果 🍓。

之前在家的时候,爸妈会买一些水果,基本是买啥我吃啥(问就是随便)。上大学的时候,澡堂旁边有个水果摊,我基本会跟舍友一起买点橘子,因为橘子在床上吃不会弄脏床单,而且不用担心吃不完。除此之外吃的最多的是水果捞和水果挞…… 我猜测很多时候我不想吃的水果的心里,很大程度是选择太多了,纠结要吃什么会潜意识里让自己很焦虑。 就像自己经常看外卖软件看了半小时不知道吃啥,心态崩了直接去麦当劳 🍟…

这些观察促使我尝试做一个 APP 来帮我决定每天吃什么水果,这样的话我去超市直接拿它让我吃的就好了。基于这个想法,我制作了这个 APP。

3. 特性

APP 的核心功能就是计算最佳水果和历史记录。这里主要介绍功能,因为后续的一个计划是开源算法然后支持用户自定义算法,到时候会另外再详细讲解算法部分。

3.1 计算最佳水果

现在计算的原理是根据不同因素为水果打分,最后做一个加权排序,为用户推荐排序靠前的水果。

现在用于计算的因素有:

  • 位置: 优先推荐当地作物
  • 天气: 根据温度、湿度及天气推荐
  • 季节: 鼓励时令水果
  • 运动: 根据卡路里消耗和水果糖分含量
  • 多样性: 鼓励尝试不同种类的水果
  • 营养成分: 鼓励营养均衡的水果选择
  • 随机性: 随机推荐任意水果

用户也可以根据自己的喜好选择使用哪些因素。比如根据天气和季节计算的最佳水果是番茄,根据温度和湿度计算的最佳水果是苹果 🍎:

用户也可以选择自己的水果池子,如果你实在讨厌某种水果,可以把它排除在外(图1:比如我讨厌木瓜,柚子,菠萝和树莓)。

当随机性因素被启用的时候,算法随机推荐排名靠前的 K 个水果其中的一个,用户也可以设置 K 的大小(图2)。如果随机到的水果不喜欢或买不到,可以通过“摇一摇”功能换一个 🫨。

3.2 历史记录

另一个主要功能是用户可以点击右上角的按钮添加记录,可以选择添加的时间以及数量(图1)。然后在趋势页面可以看到自己最近吃了什么,以及通过水果获取的营养摄入(图2,3)。

我自己最喜欢的一个地方是仿照 Github 做的进度面板,可以追踪自己最近吃了什么水果。

3.3 其他

除了核心功能以外我还做了一些小彩蛋 🪺,比如每天可以获得新的图标(图1,2),以及支持极简界面风格,如果不喜欢太花里胡哨的界面(图3)。

同时应用也适配了 Apple watch 和 Watch widget ⌚️:

4. 总结

对我来讲,制作这个 APP 的过程就像拼一个电子乐高,过程还是很享受的。基本是在下班或者周末的空闲时间写一两个小时,用这种方式把自己的注意力转移到具体的事情上,断断续续做了五六个月,算是一种精神疗愈 🍂。

使用过程中,记录功能其实会更加驱使我增加吃水果的频率(这个是自己没想到的)。然后在超市直接根据计算去选择买什么,也大大减少了我的选择困难。因为是自己第一次写 APP,最后的结果还是很满意的。

现在最大的问题是算法并不是很科学,没有经过任何科学的验证。但我感觉我并没有太多精力去搞这个(毕竟不是营养学家 😬),所以我计划做一个接口可以让用户做自己的算法。这是未来主要想做的事情。