【カフェで実践】賞味期限間近の商品を自動通知するシステムを実装してもらってみた【Integromat】

2020.12.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

カフェチームの山本です。

カフェのシステム開発にはエンジニアが携わっていますが、それに加えてスタッフやアルバイトの方々が、実際の店舗で運営やオペレーション業務を担当しています。業務のうちいくつかは開発中のシステムの機能として取り込まれていますが、いくつかの作業は取り込まれてなく、手入力や目視での確認が必要な場合があります。

今回は、こうした作業を自動化するためのシステムをスタッフ・アルバイトの方に作成していただきました。Developers.IOではエンジニア本人「やってみた」記事は多くありますが、この記事では普段プログラミングやシステム開発に携わることが少ないスタッフ・アルバイトの方「やってもらってみた」際の作業の流れや気付きについて記載したいと思います。

目的

今回の取り組みの目的としては、以下のことがありました。

  • カフェで使用するシステムを作成することで、いつもの業務を効率化してもらう
  • カフェのアルバイトの方々の中にソフトウェア関係に興味がある方がいるため、その方々にソフトウェア開発の触りを体験してもらう
  • 非プログラマ・エンジニアの方がIntegromatを使用できるそうか、使用する際に詰まりそうなポイントはどこか、を確認する

自動化する作業(対象)

もともとの作業内容

今回対象とした作業は、商品の賞味期限管理にしました。具体的には、賞味期限が近い商品の価格変更や、賞味期限が切れた商品を棚から下げる作業です。このために、店内の商品がいつ賞味期限を迎えるのかを知る必要があります。

今までは、スタッフの方が作成したGoogleスプレッドシートに商品一覧を作成し、賞味期限を登録して、毎週目視でチェックするという作業をしていました。

選定理由

この作業を選んだ理由としては、以下の通りでした

  • カフェのスタッフ・アルバイトの方と話している中で以下のような意見があった
    • 実際に目視で確認している面倒な作業であり、時間がかかっている
    • 賞味期限が近い商品がない場合もあり、自分で調べるのが手間。自動で通知してほしい
  • 比較的な簡単なタスクで、初めてシステムを作成する場合でも作成できそうだった
    • すでにスプレッドシートにデータがあり、そこから条件付きで検索してくれば良い
    • すでにスタッフ・アルバイトの方々が連絡する共用のSlackチャンネルがあり、そこに通知すれば全員に情報伝達できる、という状態だった

やってもらったこと

以下の作業をスタッフ・アルバイトの方に行っていただきました。途中、山本も手伝いで入りましたが、基本的にはスタッフ・アルバイトの方々たちで会話しながら作業していただきました。

要件定義

まず、どういうことが達成されれば良いのか、会話しながら決めていきました。

通知する内容

  • Googleスプレッドシートに入力されている商品のうち、賞味期限までの期間が1ヶ月より短いもの

通知する先

  • Slackのスタッフ・アルバイト連絡用チャンネル

通知するタイミング

  • 毎週金曜日14時(シフトの入れ替わりの時間と重なり、大人数で確認できる時間)

(ツール選定)

SaaS(Google Drive)からSaaS(Slack)をつなぐためのサービスとして、Integromatを使用することにしました。(山本が決めました)

Integromatについては、以前の記事をご参照ください。

【Integromat】Developers IOブログの投稿を友人に通知してみた

実装

(長くなってしまったので、次節に分けます)

テスト

簡単に動作テストを行い、実際にSlackの共用チャンネルに通知が行くことを確認しました。

(運用)

作成したシステムを、実際に使用してもらっています(2020/12/07)。

実装したシステム

基本的にはIntegromatの使い方に沿って実装していきました。以下では、作成したシステムの説明・作成の手順について書きます。

完成システム

Integromatで以下のようなシステムを作成しました。概要としては、スプレッドシートからデータを検索し、取り出したデータ(行)を1つずつSlackに通知する、というものです。

各Moduleの設定は以下の通りです。

  • Google Sheets

  • Slack

(掲載の都合上、チャンネル名を削除しています)

  • スケジューラ設定

作成の手順

Googleスプレッドシートからのデータ取得

まず、表示するべきデータをスプレッドシートから取得するための設定をしてもらいました。

  • 「Connection」のAddを選択し、Googleのアカウントの権限を取得しました
  • 「Spreadsheet」「Sheet」で、データが入っているシートを選択しました
  • シートの1行目がヘッダになっていなかったので、「Table contains header」は「No」を選択しました
  • 必要なデータは最初の方の列に集まっていたので、「Column range」は「A-Z」を選択しました

そして、前節の要件定義で決めた「残り賞味期限が30日より短い」という条件で検索するような設定を考えてもらい、以下のように設定してもらいました。

  • 「Filter」に、賞味期限の項目(E列)が"今から30日後よりも前"という設定をしました

ここで、テストとして「Maximum number of returned rows」を10に設定して、モジュール単体で実行(「Run this module only」を選択)してもらいました。

出力結果を見てみると、以下の問題がありました。

  • 賞味期限が空欄の項目も混じっている
  • 賞味期限はたしかに30日後よりも前であるものの、今よりも前の項目も混じっている

ここで、最初の要件定義が少し不足していることがわかったため、以下の要件を追加しました。

  • 賞味期限の欄が空白の場合は除く(Slackに通知しない)
  • 賞味期限が今よりも前の場合は除く(Slackに通知しない)

これに合わせてFilterを前項の「完成システム」の図のように設定を変更してもらいました。最初、3つの条件の組み合わせ方が "and" か "or" のどちらなのか、スタッフ・アルバイトの方々の間で迷っていましたが、話し合って "and" を選択しました。

再度テスト(Run this module only)を実行して、思い通りの出力が得られることを確認しました。

Slackへの通知

表示するべきデータをスプレッドシートから取得するための設定をしてもらいました。内容は「完成システム」のとおりです。

  • 「Connection」のAddを選択し、Slackのアカウントの権限を取得しました
  • 「Enter a channel ID or name」で「Select from List」を選択し、「Channel type」で「Public channel」を選択し、「Public channel」で共用チャンネルを選択しました。

「Text」を設定する段階で表示するメッセージの形式(要件)を以下のように決定しました。

  • "商品名"(2020/10/11)賞味期限確認

これに応じて、以下のようにしてもらいました。

  • 「Text」を、スプレッドシートの出力から、C列(商品名)とE列(賞味期限)を取り出して文字列にするように設定しました

これも単体でテストを行い、Slackにメッセージが送信されることを確認しました。

全体テスト

最後に左下のRun onceを押し、目的通り賞味期限が1ヶ月以内(かつ今よりも後)の商品が、10個Slackに通知されることを確認しました。

スケジューラ設定

10個だけでなくすべての商品が通知されるようにするため、Google Sheetsの設定「Maximum number of returned rows」を空欄に設定しました。

そして、スケジューラを「完成システム」のように設定しました。

(かかった時間)

ツールの使い方の簡単なレクチャー・実装・テストまで1時間程度でできました。

すでにツールを使ったことがある山本が手伝った、ということもありますが、普段プログラミングをしないスタッフ・アルバイトの方々でも十分操作でき、短時間で完成させることができました。

(文章で表すと長くなってしまいますが、実際にはクリックで選択していけば良いので、大きく詰まって進まなくなる、ということはありませんでした。)

まとめ

カフェのスタッフ・アルバイトの方々に、自分たちで使うシステムを作ってもらいました。

また、今回のシステム実装を通して、簡単ながらソフトウェア開発を体験していただきました。

  • 条件の指定の仕方、関数の使い方
  • 最初の考えた要件は不足していることがままある
  • テストして動作を確認しながら実装を進めていく

感想・気づきとか

カフェの開発の流れについて

普段の開発の流れとしては、以下のようです。

  • スタッフの方々がカフェで作業している中で、困っていることが出てくる
  • エンジニアに困っている内容を伝え、エンジニアと相談しながら、仕様を決める
  • エンジニアが実装する
  • スタッフの方々にカフェで試してもらい、エンジニアにフィードバックを送る

カフェの開発は、スタッフ・アルバイトの方の距離が近く、早い開発サイクルが回っていますが、それでも開発の時間がかかってしまったり、エンジニア側のリソースが不足していて、機能が後回しになってしまう場合があります。

カフェのスタッフ・アルバイトの方々が、自分でシステムを作成できれば、エンジニアを待つ必要なくなり、また、実業務に集中でき、さらに必要な機能を考える時間をつくれるようになるかもしれません。実際に、アルバイトの方々が自ら同様のシステムを作成し、カフェで提供しているドリンク・フードの材料の賞味期限(消費期限)の通知を自動化する、ということも取り組んでいました。

また、困っていること・ほしい機能をエンジニアに伝える際にも、要件を1段階深く使えることができるようなサイクルになると良いと思いました。