紙で申請を出す居酒屋店員のシフト希望と管理業務をちょっとスマートにする


この記事は「[Qiitaエンジニアフェスタ2021](https://qiita.com/official-events/64ff6ba4e653a822fce9)」の参加記事です。

こんにちは、某居酒屋チェーンの店員をしています。新橋店です。

> ![](https://i.gyazo.com/c6eb5bc47f4b72f985fd8231ba72a5ab.jpg)

（コロナ禍の休業要請などで中々シフトに入れていませんが、）

うちの店舗では、 **シフトの希望を出す時に店長に紙のシフト希望表を提出**しています。
この辺りに関連する **居酒屋でのシフト決め業務を少しでも改善出来ないかと思って仕組みを作ってみた**話になります。

## 紙でのやり取りが多い居酒屋現場

居酒屋現場は今だに紙の業務が多いです。

> ![スクリーンショット 2021-08-25 23.36.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/d1c3f3d1-e153-7ec1-08bf-5df60be3c722.png "スクリーンショット 2021-08-25 23.36.53.png")

パソコンを普段から利用している人もスタッフには少ない（印象）ですし、スマホなどを仕事中に触るのも社員さん以外は使えません。

料理メニューのマニュアルなども紙になっていたりと、改善出来そうな部分は多い印象です。

## LINEは準公式な使われ方

本社スタッフなどは業務用のチャットツールなどを利用している模様ですが、現場スタッフ通しのコミュニケーションはLINEグループが活用されています。

LINE Worksなどではなく通常のLINEです。

> ![スクリーンショット 2021-08-25 23.22.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/0d2fa616-0109-c32d-ecdb-4eb59307a358.png "スクリーンショット 2021-08-25 23.22.50.png")

出せそうな部分を抜粋してみましたが、普通に業務的な内容も扱われています。

ということで **LINEはアナログ現場の人たちでも利用しているデジタルツールということで、LINEをうまく活用して仕組みを作ってみたい**と思いました。

## 店長業務のシフト管理はかなりの工数

シフトを決める業務は以下のような流れに分けられるかなと思います。
思いますと書いてるのは僕は下っ端なので店長の業務を見えている範囲で予想している話になります。

> ![スクリーンショット 2021-08-25 23.42.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/4225d49c-58e9-b047-a041-3221630f2282.png "スクリーンショット 2021-08-25 23.42.44.png")

- 1. 紙の希望を集めて
- 2. 紙の情報をパソコンに入力してデジタル情報に
- 3. エクセルで色々な変数を元にシフトを決める

なんとなくですが、`色々な変数`の部分がかなり大変そうではあります。
（人の能力、人の相性など変化し続けるものもありそう）

これらを自動化していけたら良いなぁと構想は広がりますが、
**まずは紙で出しているシフト希望の収集とデジタル化する部分をちょっとでもスマート化したい**と思いました。

載せた写真が実際のシフト希望票ですが、書き方も人によって少しブレがあったりと、なかなか見分けるのも大変な気がしています。

## シフトの希望提出LINE Botを作成

紙が良い人とLINEで送れる人が両方いるかなと思っています。


脱線ですが、今まで何個かLINE Botを作ったことがありましたが、本当に業種で居酒屋のものを選択するのは初めてかもしれません。

> ![スクリーンショット 2021-08-25 23.45.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/7d88dbe2-1d30-8ea0-f0c7-df11af259853.png "スクリーンショット 2021-08-25 23.45.54.png")

### スタッフは、シフトの写真を撮って送信

スタッフ側は写真を撮ってBOTに送信します。

> ![スクリーンショット 2021-08-25 23.50.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/c22425ee-87c3-c36e-9c1f-911edfa18940.png "スクリーンショット 2021-08-25 23.50.41.png")

シフトを手入力でLINEに送る機能も作れそうなのですが、それはそれで入力がめんどくさい気もするので要検討です。

### 店長は、誰がシフトを提出したかが分かる

店長は確認コマンドが使えます。

> ![スクリーンショット 2021-08-25 23.53.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/6f7d52d9-334d-9cc3-3e5d-cbbf107a5b98.png "スクリーンショット 2021-08-25 23.53.41.png")

誰が提出していないかも分かりやすいので、管理漏れもだいぶ減ります。

### DirectCloud-BOXのAPIで写真を載せる

LINEのAPIだけだと写真などのファイル情報を扱うことが出来ないため、ファイルのストレージ出来るサービスを組み合わせるのがちょうど良いです。

Node.jsでLINE Botの作成をしていますが、参考記事などをもとにNode.jsからの[ファイルアップロード](https://directcloud.jp/api_reference/detail/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC/File#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89)を実装しています。

> [Google ドライブ に保存された請求書を、定期的にDirectCloud-BOXへバックアップする](https://qiita.com/TakeshiNickOsanai/items/a353951f08c7c947eda5#%E9%9B%91%E6%84%9F)
> []()

アップロードされた写真データは、Web版でも確認できます。

難しかったのはそもそものAPIの使い方で、トークン発行時点からはまってました。

form-dataでやらないといけないんですよね。。。


```bash
$ npm init -y
$ npm i axios form-data
```


```js
'use strcit';

const axios = require('axios');
const FormData = require("form-data");

const BASE_URL = `https://api.directcloud.jp`;
const URL = `${BASE_URL}/openapi/jauth/token?lang=eng`

const main = async () => {
    const bodyFormData = new FormData();
    bodyFormData.append('service', 'xxxxx');
    bodyFormData.append('service_key', 'xxxxx');
    bodyFormData.append('code', 'xxxxx');
    bodyFormData.append('id', 'xxxxx');
    bodyFormData.append('password', 'xxxxx');

    const res = await axios.post(URL, bodyFormData, {
        headers: bodyFormData.getHeaders()
    });
    console.log(res.data);
};

main();
```


## 今後作りたい機能

- LINE Botからリマインドを自動化
	- 毎月25日頃までにシフト希望を出そうという話になっているので、その頃にスタッフにシフト希望を出すように自動リマインドをさせたい
- エクセルまで自動転機
	- PRAとかも使いたい

ほんとはOCRとかもやりたいけど、なかなかハードル高いですよね。


## 実際に試してみてどうだった？

残念ながら現時点ではちゃんと試せてないです。
緊急事態宣言になって、僕がそもそもシフトを入れられてないし、お店も休業したりをしています。

早く試せる日が来るのが楽しみです。

店長の業務やみんなの業務がちょっといい感じになるといいなと思っています。