「クラウドでフードロス問題解決に貢献」をGoogle Cloudで考えてみた

# はじめに
この記事は「Google Cloudを使って気になる社会問題解決の貢献を考える」というお話です。

　毎年約５００万トンのフードロスが発生しています。これは東京スカイツリー（約４トン）の１２５倍です、相当な量ですね。そのなかの約半分は家庭から発生しています[^1]。フードロス問題を解決するために、家庭をターゲットに改善を図ると効果が大きそうです。家庭におけるフードロスの主な原因は、食べ残しで、食材の買いすぎと言えると思います[^2]。スーパーマーケットの特売や旬の食材に心を奪われ、つい買いすぎてしまうことはよくありますよね。うまく使い切れればよいですが、食べきれなかったり、傷んで使えなかったり、難しいです。

# 献立アプリで解決
　この問題を解決するためには、食べきれる必要なだけの食材をコンスタントに買い続けることができたら良いと思います。これは多くの人にとって簡単なことではありませんね。なぜなら、学校給食のように栄養やバラエティを考えた先々の献立を考えておかなければなりませんが、そのための知識・経験・時間が十分に必要になり難しいです。
　そこで、家庭の献立をアプリで提供することで問題を解決していくことを考えます。それもまた簡単なことではありませんが、実現していけるポテンシャルが整っていると思います。アプリに必用なのは、①個々の家庭に合わせた献立を立てること、②献立に合わせて必要な食材の種類と量を提示すること、③使い続けてもらうためにフィードバックを得て献立や機能自体も改善し続けることだと思います。それでは、今どきのシステムを使って、どのように実現していけるか見て行きましょう。

# システムアーキテクチャ
　最初にシステムのユースケースとアーキテクチャを考えてみます。利用者は家庭で食事の用意を担当する親とします。利用者はスマホでWebページへアクセスし、家族構成などの属性を登録します。アプリは、利用者の買い物間隔に合わせて、例えば１週間分の献立と食材を提示します。
　システムアーキテクチャは図1の構成を考えます。利用者に合わせた献立を組み立て、その食材情報と合わせて提示する機能を実装します。インターフェースは、スマホ向けのWebページとして開発し、サーバサイドは、利用者とその属性、献立を登録する利用者データベース、レシピと食材を事前登録しているレシピデータベース、利用者に合わせた献立をバッチ処理で組み立てるエンジンが並びます。

図1 Google Cloudを使ったシステムアーキテクチャ
![reduces_food4.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534891/8fc455ed-1833-3c89-b757-865513922647.png)

　新しいサービスなので正解が分からないことを踏まえ、リーンスタートアップのMVP(Minimum Viable Product)の概念[^3]を参考に、小さく始めて利用者のフィードバックを得ながらシステムを拡張させていきたいです。そのためのアーキテクチャには、柔軟にスケールすること、構築/拡張の手間がかからず費用も小さく始めれることが必要です。そこで、スケーラブルなクラウドで、サーバーレスのサービスを選択しています（Cloud Run[^4]、Datastore[^5]、Big Query[^6]）。
　この構成は、利用者の増減に合わせて自動的にサーバーがスケールアウト・スケールインすることに加え、利用者のリクエストを処理する時間だけ課金が発生します。そのため、試行錯誤を繰り返していく初期の利用者が少ないときは費用を小さく抑えることができます。また、サーバーレス構成のため、サーバーをメンテナンスする必要がなく、運用の手間がかからないため、小さな開発チームでスタートすることができます。
　利用者と対話しながら機能を整え成長してくると、よりサービスを良くしていくために色々なことが考えられます。例えば、機能が増えてきているので、操作性を向上させるためにインターフェースにスマホアプリを追加したいと思います。スマホアプリの開発にはMBaaSのプラットフォームがクラウドで用意されています(Firebase[^7])。また、利用者の属性に合わせた献立の提供は、最初は人の力でできるかもしれませんが、かなりの労力になってきますので、ＡＩに肩代わりさせていきたいです。こちらも、クラウドにはＡＩのプラットフォームが用意されていますので(Vertex AI[^8])、たまったデータをもとに機械学習を使ってモデルを作り、これを成長させていくことで、人力だけに頼ることなくサービスが有用なものとしてスケールしていけます。
　さらに、事業の拡大についても、他の事業者と連携して、健康/食育といった付加価値を提供したり、他の献立サイトと連携してメニューを拡充させたり、食材を自宅へ届けるサービスを始めたり、クラウド上のシステムだと、そんな他サービスとの連携も行いやすいです。

# まとめ
　フードロスの問題で大きな割合を占めている家庭食材のムダをアプリで解決する方法を考えました。先々の献立を作るという楽しいけど大変なことをアプリが助け、適量な食材を提示することで買いすぎを抑えて問題を解決します。実現のポイントは、今どきのアプリケーションアーキテクチャを使うと、小さくサービスを立上げ成長させていくことができること、そしてスマホアプリやAI機械学習のプラットフォームを活用すること、そして他サービスとの連携も含めてスケールに合わせたコンテンツの質を高めていくことです。小さく始めて、スカイツリー数本分のフードロスを抑えることを目標にしたいですね。


[^1]: [農林水産省　食品ロス量（令和2年度推計値）](https://www.maff.go.jp/j/press/shokuhin/recycle/220609.html)
[^2]: [クレライフ　食品ロスの実情と対策の基本（食品を捨てる理由）](https://kurelife.jp/media/foodloss/001/)
[^3]: [ウィキペディア 実用最小限の製品（MVP(Minimum Viable Product)）](https://ja.wikipedia.org/wiki/%E5%AE%9F%E7%94%A8%E6%9C%80%E5%B0%8F%E9%99%90%E3%81%AE%E8%A3%BD%E5%93%81)
[^4]: [Google Cloud Cloud Run（サーバレスコンテナアプリ実行サービス）](https://cloud.google.com/run)
[^5]: [Google Cloud Datastore（サーバレスNoSQLデータベース）](https://cloud.google.com/datastore)
[^6]: [Google Cloud BigQuery（サーバレスデータウェアハウス）](https://cloud.google.com/bigquery/)
[^7]: [Google Firebase（モバイル開発プラットフォーム）](https://firebase.google.com/)
[^8]: [Google Cloud Vertex AI（ＡＩ機械学習プラットフォーム）](https://cloud.google.com/vertex-ai)