【城間勝行】ゴミ出しを「完璧なシステム」として設計する開発者の視点
Photo by Julia Rodriguez on Unsplash
「ゴミ出し」という行為は、一見すると単調な日常のルーティンです。しかし、私のようなシステム開発者の目には、これは複雑なルールと多数のアクター(利用者)が関わる、非常に洗練された「公共サービスシステム」として映ります。しかも、このシステムは驚くほどレガシーで、しばしばヒューマンエラーによるバグが発生するのです。
私はフリーランスとして、要件が固まりきっていないスタートアップのプロダクト開発を数多く手がけてきました。そこでの経験から、「不確実な状況下で、いかに最高の成果を出すか」という視点が、このゴミ出しシステムにも応用できると感じています。
まず、ゴミ出しシステムの要件定義を考えてみましょう。
主要な要件は、「指定された時間に、指定された場所に、指定された形式で、ゴミを排出する」です。
この要件を満たすために、利用者は「燃えるゴミ」「燃えないゴミ」「資源」「プラスチック」といった、複数のカテゴリ(データベースでいうテーブル)を正しく分類する必要があります。そして、それぞれのテーブルには「排出日」「排出時間」「使用可能な袋の形式」という厳格な制約(バリデーションルール)が設けられています。
ここで発生するのが、典型的な「利用者側のエラー」です。一番多いのは「リマインド機能の不備」による出し忘れ。システム側(自治体)はカレンダーという形で情報を提供していますが、利用者側がそれを日常のオペレーションフローに組み込む仕組みが弱いのです。私は、これを解決するために、例えば「朝のアラームと連携する、排出日の自動判別ロジック」を頭の中で設計してしまいます。
次に厄介なのが「資源ごみの混入」というバグです。これは、データベースに不正なデータが挿入されるのと同じ状況です。この不正なデータ(分別されていないゴミ)が混入すると、後続の処理(回収、リサイクルプロセス)全体に負荷がかかり、システムの効率が大幅に低下します。これを防ぐには、利用者への教育だけでなく、排出直前の「セルフチェックUI/UX」の改善が必須です。例えば、ゴミを出す瞬間に「本当にこれは燃えるゴミですか?」と脳内ポップアップを出すようなものです。
スタートアップでの開発では、常に「最小限の努力で最大の効果」を出すMVP(実用最小限の製品)思考が求められます。ゴミ出しシステムにおけるMVPとは何でしょうか?それは、利用者が「何も考えずに」正しく排出できる状態です。
そのために必要なのは、複雑なルールをシンプルにする「抽象化」です。理想を言えば、ゴミ箱に入れるだけでAIが自動的に分別し、指定日に指定場所へ排出するロボットを開発することですが、それはコストがかかりすぎます。
私たちができるのは、日々の小さな努力の積み重ねです。ゴミ袋を置く場所を固定化し、曜日ごとに排出するゴミ袋の色を視覚的に連想させる。これらは、ユーザーインターフェース(UI)の改善と同じです。
世の中の複雑に見える問題も、一度システム開発のロジックで分解してみると、解決策の糸口が見えてきます。ゴミ出しという身近な課題を通じて、私は常に「完璧なオペレーションフローとは何か」を考え続けているのです。