2023アドカレ09:ノーコードツールで改修しながら業務ツールを作るやりかた

疲れててもお金間違いに気付けるツールを作りたい……というより、お金を数えなくてもよくなるといいんですが。
# 何の記事？
これは、[ぐらだけアドカレ2023](https://qiita.com/advent-calendar/2023/c9h11o2)の9日目の記事です。

ノーコードツールで現金集計ツールを自作し、日々改良を重ねている話をします。

# 誰向け？
- 日々、現金集金を数える作業がある人
- ノーコードツールを改良しながら使っていく業務例を見たい人
- ノーコードツール「CELF」について気になっている人
- 最初からしっかり設計して作れそうにない業務を抱えている人
- とりあえずツールを作って動かしてから仕様を追加したい人

# この記事でわかること
- ノーコードツールで日々改良しながら作っていく１事例
- CELFが向いている業務の一例

# この記事では説明しないこと
- CELFの具体的なコーディング方法
- CELFの導入方法や使い方

# あらすじ
弊社では、毎日店舗部門の現金を集計する業務があります。
この業務、私が入社した時点では紙で集金額が来ているものを、コインケースも使わずに電卓を叩いて数えて集計を行っていました。
その為、その頃は電卓の叩き間違いがめちゃくちゃ多く、現金が多い時期は合わない……ということが多発していましたね。辛い。

その後、売上をクラウド上で正確に取得でき、ノーコードツールが導入された為、店舗毎にくるべき金額が来ているかどうかをチェックするツールを作りました。
今現在ももっと楽に集計できないか……と改良を重ねています。
なお、小銭を投げ込んで自動で数えてくれる機械の導入も検討しましたが、電子マネーの普及により現金の総量が減った為、機械を導入しても効率は瓦なさそう……という状況です。
現在は少量の現金を効率よく数える方法を模索している状況です。

# 使ったもの

### CELF
Excelライクで使えるノーコードアプリです。
スプレッドシート上でVBAのような動作を行えます。
VBAと違うのは、スクラッチのような日本語パーツを組み合わせて指示を行う点です。
RPA機能もオプションで付けることができます。

https://www.celf.biz/

# 改良記録
### 最初は金額チェック機能のみ
各店舗の日毎の売上はクラウド上で更新される為、その数字をcsvでDLし、貼り付けて使うことにしました。
とりあえずの為、金額チェックはまだ手動でした。

![初期集計表.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964152/f7681740-ddaf-2bb8-a987-c9dde4560af6.jpeg)


### お金が来ない店舗は現金を0に
店舗によって、in shopに現金を納め、私の元には現金が来ない店舗もあります。
その店舗については現金集計が不要な為、ボタンで数字を削除できるようにしました。
![現金送付ナシ店舗反映.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964152/2cce025c-30bc-0165-333e-34ca5ff4a212.jpeg)


### 店舗毎に金種を確認できるように
店舗毎に金種を確認した後、金額クリアができるボタンを追加しました。
また、確認のチェックをつけると、対象店舗の行のセル色が変わるようにしました。
![金種デリートボタン追加.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964152/bea5cf47-173b-0b31-ded1-a8244d5cf166.jpeg)


### 数えた金種と来るべき金額が合っていたら飛ぶように
店舗毎に金種を確認した後、該当店舗のチェックボックスにカーソルが飛ぶようにしました。
……え、今までは飛ばなかったのかって？　しゅ、手動でセル検索……（
![金額チェックボタンを追加.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964152/bc2e379d-724a-0d8a-d6aa-59634d8296ba.jpeg)

### 当座入金帳の記入参考欄を追加
集計後に口座へ入金する入金票を書くんですが、その際の金種を書く見本欄を作りました。
人間、見間違いもすれば書き間違いもするので、その確率を少しでも下げたかった……。
また、金種計算欄を、金種毎にそれっぽいセル色にしました。
テンキーたかたかやってると違う金種に数字を入れることが多くなったので……。
![金種色＋入金票記入例画面.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964152/c5ef8e53-1bfe-b8db-9435-79ae4b8ea557.jpeg)


### 複数日に対応
単日対応シートを複数出して使っていたのを、月初などの複数日対応できるシートを追加しました。
![複数日のチェック表.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/964152/4ddd0a95-98a7-38e6-d1a0-ec4ff7a9bc71.jpeg)


# 結果
毎日業務はこなさなくてはいけないけれど、少しずつでも楽にしていきたい……という業務をノーコードツールに助けてもらいました。
腰を据えて開発！……とせず、少しずつ楽にできないかな……を積み重ね、少しずつでも効率を上げていけたのでよかったです。

RPAやCELFに向いていると感じた業務や、どうやってRPAを業務に取り入れていったら良いかなども、今度記事にしたいと思います。

# このアプリで解決できたこと
- 金額チェックをアプリが行ってくれることで、お金を数えることに集中できるようになった
- 数えた直後に数え間違いや送金ミスがあれば気付けるようになった
- 手を動かすだけで作業が終わるようになった

機械の得意分野を機械に任せるアプリができたので、人間の作業がとても楽になりました。
数え終わりが可視化されたことで、達成感や進捗状況がわかるのも気に入っています。
今後も、どういった業務を効率化するのが向いているかを考えながら楽にしていきたいです。

# 応用事例
####  金額や数字チェックなどは他にも応用が利きそう
数字が合っているかどうかはやはりPCは得意です。
人間の目だと合っている「と思った」が発生するため、人間が苦手でPCが得意なことはどんどんPCに任せてしまうと良いかと思います。

#### - RPAまで使えば売上データがそのまま反映できそう 

- 他にも使えそうな事例ややってみたいことがあれば書く
- これも見出し機能で目次に載るようにする


# 難しさを感じたところ
#### Excelで使える関数が全て使えるわけではない
CELFはあくまでもExcel"ライク"なツールです。
2023/12/07現在、TEXT関数やEOMONTH関数が使えなかったりします。
Excelならできるのに……！ということができない時は、少し処理フローを考えて使える関数をこねくり回す必要があります。
いい頭の体操にはなるのですが、慣れるまでは上手い解法が思いつくまでに時間がかかります。
とはいえ、データベースやSQLコマンドがそのまま使えたりもするので、多少の回り道になっても、Excelにできることはだいたいできる印象があります。

#### バージョン管理が難しい
CELFは編集したアプリを公開する毎に前回のバージョンを記憶してくれる仕様なのですが、バージョン毎のコメントなどを残せないため、開発メモを残そうとすると別で管理する必要があります。
コミットメッセージを残させてくれ……。ここは今後のアップデートに期待したいです。

#### シート上で計算するか、マクロ上で計算するか、ルールが統一されていないと混乱する
業務アプリの見えている画面上に途中計算を書くか、見えないマクロ上に関数で計算を書いていくか、好みで選べます。その為、他の人が作ったアプリをメンテナンスしようとした時、混乱する恐れがあります。
例えば、何行かのデータをCELF内のデータベースに登録したい場合、ループ処理をする変数をシート上に書くか、マクロ上に入れ込んでしまうか、どちらでも動くものは作れます。
ただし、途中計算を見える場所に書いておくと誰かが消してしまうかもしれませんし、普段使う際に見えなくてもいい数字が見えるのも混乱を招きます。

#### とりあえずで作ったアプリが忙しい時に限って上手く動かなかったりする
「とりあえず」で作り、動作確認やエラーチェックをせずに開発したアプリは、予期せぬ不具合が発生します。それも、忙しい時に限って……。
これはCELFに限らず、ノーコード開発全般に言えることかもしれません。

ノーコードツールもRPAも、「プログラム」です。
プログラムは思った通りに動くものではなく、書いた通りに動きます。
そのため、「思った通りに動いているか」をチェックするための工程が必要だと感じ始めています。

今後はこのアプリのテストコードを書いて、改修する都度テスト実行することを考えていきたいと思います。