Google Spreadsheetだけで作る資材管理システム(概要編)

## 前段
マナビDXQUESTの２つのプログラムの１つである企業協働プログラム

2023年にご一緒させていただいた企業さん(酒造会社)のお悩み、
資材管理(酒瓶)がうまくできていない点で、使用してから記録するのではなく、
商品と資材の組み合わせがわかっているのであれば
業務開始の段階で製造する予定の商品から資材を算出し、記録するという方針で
作ってみたGoogle Spread sheetについてまとめたものです。

本編は概要の説明、Spread Sheet本体や数式については別にまとめております。

https://qiita.com/Kohei_Fujita/items/878d3be3443c34125205

## １．やったこと
現状把握
+ 業務フローの作成
悩みを持つ企業さんとまずさせていただいたことは
事務所からの製造依頼〜製造(お酒をタンクから瓶へ詰める作業など)を
miroを使ってまとめてもらいました。　

実際に書かれたものでは無いですが差し障りのない範囲での再現フローです。
酒瓶はサイズによってリターナル瓶（リユース用にメーカー共通の形状になっているもの、もちろん洗浄、傷などのチェック済みでリユースされる）を使用するので流通経路が違うので別々のシートにされているみたいです。
![AS-IS業務フロー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/f609bc89-b84f-2207-9458-b6ed4dc028ef.jpeg)


  
そこで気付いた点は
**1\.紙（帳票）に瓶の使用数を記載している（工場内の瓶の洗浄担当の方）**　
**2\.デジタル化をしようとされたが上記の帳票を勤務終了後、工場長が入力**  
ただし省力化のためGoogle Spread Sheetへの手入力→Google Formでの入力に変更されたという状況であり
　　
課題としては
**リアルタイムにデータが集まらない**
**工場長の作業負荷が大きい**
ことがわかりました。
  
  そこでアイデアレベルとして、チームとして、
朝、瓶詰めする商品が決まった段階で使う資材(今回は瓶のみ、資材は他にもラベルや王冠などもあるのですが・・・）を把握出来るようにすることで
  
作業量としては
　昼の作業中の瓶の破損分、不具合品の除去分だけを追加で登録するだけで良いようにし
資材発注を
　昼間の間に実施でき、すこしでも早く資材発注が可能
という、今までの最速で翌日になってから数量が把握できる形からの変更を提案してみました。  

### AS-IS
![瓶管理方法(AS-IS).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/5d7500ee-bc5b-0f9e-ddbb-37e66f82bc8f.jpeg)

### TO-BE
![瓶管理方法(TO-BE).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/ab8499c4-a2bd-808e-4b73-b51ad15db8e0.jpeg)

  
この場合、企業様側でリアルタイムに破損分や不具合品などの除去も含めた完全な在庫数を把握したいと思われた場合は要求をみたさないのですが
企業様側との話し合いの中であくまで在庫数のおおよそ把握だけで厳密性を求めなくても
良いということで、瓶を用意する作業中での破損や傷などの不具合品の考慮をしなくても
良いということもわかりました。  

### システム作成作業（前準備）
### データマネジメント
そこで商品(日本酒)と資材(瓶)の関係をまとめていくことになり、協働企業さまより商品ー資材の対比をいただいたのですが人間が扱うことと考慮したシートであるため、資材管理を扱う仕組みとするために、以下の点の修正を行いました。  
#### 機械可読性
Google SpreadsheetやExcelだけであれば別にそのままでも問題ないケースも多くありますが
以下のような項目の手直しを実施しました。

**余白、不要な表題の削除**  
印刷や人が見る時の見やすさのためのスペースがあるので、下図の黄色で示す部分
表題の上、最も左の行の横のスペースを除外した。

![Screenshot 2024-11-21 21.08.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/adb25fd0-58af-2fe8-7177-1d6d2caf0fda.png)

**表題の漏れ、抜けをなくす**
おそらくマスターを作るときに気づいてあとから追加したようなデータで
表題が抜けていたり（下図左）表題自体が抜けているケース（下図右）などを
修正しました。
 ![Screenshot 2024-11-21 21.30.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/41bc4e94-4377-46b3-004f-4a4c5e6c20d5.png)
 
**副(サブ)表題をなくする**
例えば下の左の表のように取引先の社名と住所を、取引先という大きな表題でくくるような人間が見る分にはわかりやすく、よく使う方法ですが機械可読性という観点ではよろしくなく修正を行いました。
![Screenshot 2024-11-21 21.37.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/f6937270-a2e9-bbe8-a653-eb06e071b02d.png)
  
**マージ(複数セルを一つにする）をなくす**
すでに述べた副表題をなくすでもすでに行われていましたが、Google SpreadsheetやExcelでは見やすくするためよく行われるセルのマージですが、これも機械可読性の観点からよろしくなく、なくすように修正を実施しました。
![Screenshot 2024-11-21 21.38.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/6cb41bf3-a778-ee0d-95b5-84baf1bc5d14.png)

 
 #### マスターデータの整理  
**表記ブレを避ける** 
コードに半角、全角が混ざるなど、また数字の中に文字が入るなどすると機械が読む場合やアプリで使う場合にうまくいかなくなるため修正を実施しました。
![Screenshot 2024-11-23 00.06.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/921190b0-b9cb-4991-5eb8-c14fdec13971.png)
   
**「いずれか(or)」などという表記を避ける**  
同じ項目で　or、　・、　/　などで複数の指示がされているケース, 
人間であればそれを見て条件を考えて都度使い分けるのですが、
![Screenshot 2024-11-23 00.14.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/9281fd1a-13fb-220c-a932-2658fd9a0af5.png)

コンピュータなど機械ではそれが難しいので正しく使い分け
条件毎にデータを作る必要があります。
![Screenshot 2024-11-23 00.18.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/14bd589a-463e-dce1-d33a-2352699f1f02.png)
使い分けのため、上図では商品コードについてはサブコード付きとそうでないものが
混載している。これで良いのかの問題点はあると思いますが参考まで
  
**マスターデータの混在を避ける**  
第二正規形では、部分関数従属性をなくします。
https://products.sint.co.jp/topsic/blog/database-normalization
と難しい表記ですが以下のような場合、同じ取引先の情報が変わった場合、
多くのデータを修正しなくてはいけなくなるので商品と取引先それぞれのマスターに分けておくこととが必要になります。
![Screenshot 2024-11-23 00.23.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/91728e1a-ba01-1332-34a5-d9aa9747adef.png)


**足りないデータの追加**   
**どこまでデータが必要か？**
この辺は作りかけであったり、マスターを作る中で追加でデータを登録したほうが良いのでは？と思われる点について追加や調査を行いましたが、どこまで必要とされるかなど非常に難しく時間があればちゃんと詰めていく項目です。（すみません、不要なデータがあったり、不足があったりするかもしれません、この辺は経験のある方はなんでそんなデータ集めてるの？ってなるかもしれません。。。）


### システム作成作業
#### 数式を使い、簡易データベースのような形に　　
マクロ(App Script)なども考えましたが企業様で今後扱うためにハードルを上げないようにGoogle Spreadsheetで数式を使っての簡易DB化を考えました。
詳細な数式の構成は別にまとめております。

想定シナリオは、以下のように**棚卸しで一旦シートごと切り替え**を考えました。  
**（ただこれは使いづらさが伴い、本案が企業側にとって魅力的に見えなかったと思われます）**
![Screenshot 2024-11-11 11.53.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/7f3efb9e-2092-a913-13a2-bb408467128d.png)
　
マクロ(Google App Sript(GAS))を使うのは、
後日のメンテなどの負担もあり、**使わない方針**とし
出庫データなど一時的にしか保管出来ず、数式の元の数値が変わると変わってしまうので、適宜 **値のみコピー** を行うこととした。
**(こちらもマクロ、GASなどメンテナンスの負担は減るものの日常の操作が煩雑になるため、企業側に取っては魅力的でなかったのかもしれません）**

![Screenshot 2024-11-11 11.54.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/26ab6f93-383b-0843-f566-55a17822c004.png)

BI的にデータを見られるが編集は出来ないようにするためにGoogle Spreadsheetだけにある **Importrange** 関数を用いて、表示用データを別のSpreadsheet上に表示させるようにし、そのSpreadsheetからは元のデータを触れないようにしています。

![Screenshot 2024-11-11 11.54.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552279/ce0153b0-8567-4378-05ca-b1b60770ac1a.png)


## ２．振り返り
:smile:**良かった点**
　・安価にできた
 　　（それこそGoogleドライブの範囲内であれば無料、ただ企業情報をそのような形で  
   　　扱ってよいのか？は疑問点である。）
　　　
　・商品製造前の朝の段階で資材の使用量が把握できるので、　
　　追加手配など昼の勤務時間の間にできる（はず？）
 　　　
**:confounded:改善点**
　・数式を使うため、初心者向けではない  
 
　・そのための十分な説明などのケアができていなかった。  
 
　・例えばSaaSアプリなどのほうが、数式などは考えなくて良いので楽に導入できる、 
 　　しかし将来的に集まった資材(瓶）の消費状況を用いて自社データの分析などを考えると  
   　　データを集めることは必要と考えるが、そのあたりを突っ込んで企業さまと  
    　　お話するべきだったと反省する点です。
     
## ３．最後に
デジタル化、省力化とは言っても使っていただけてなんぼの話になるので
簡単に使えること（現時点での社内でのデジタル習熟度に合わせた）
アプリの中身がブラックボックス化になってしまう（理解できない）こと
さらには集めたデータの分析などの将来性のバランスが非常に難しく、
またこちらの考えだけを押し付けてしまった感もあり
本来は対面でじっくりお話すれば防げるようなことで
リモートの限界かつ私の力不足だったと思います。
その点では企業側には良い提案ではなかったかなって思っており反省点です。

## 謝辞
まずはこのような報告を書くことをご承諾いただけました
協働企業先の黒澤酒造様に感謝いたします。
協働としては「最後に」でも書かせていただいた通り当方反省点ばかりですが
長野らしいお酒を醸したいという思い、今後も継続できますようささやかではございますが本報告が一助になればと思っております。

また協働でご一緒させていただいたチームメンバーの方々にも突っ走ってばかりの私を独走を暖かく許容していただきありがとうございました。