hacomono TECH BLOG

フィットネスクラブ・スクールなど施設・店舗のための会員管理・予約・決済システム「hacomono」 開発チームの技術ブログ

ノーコードで在庫管理アプリを作ってみたら趣味になった話

この記事は hacomono advent calendar 2023 の19日目の記事です

はじめに

株式会社hacomono IoT部で生産管理をしているこんちゃんです。

生産管理の人です。
コードは書けません。

正確に言うと勉強しては挫折を何度か繰り返しています。
(前職でPythonを使って解析をする機会があり学習サイトで勉強してみましたが、もうほぼ覚えてないレベル)

そんな非SWエンジニアが、ノーコードでがんばってアプリを作ってみた話です。
同じように、コードは書けないけどエクセルやスプレッドシート管理に限界を感じている同志たちの背中を押せればと思い、筆を取りました。


完成したものがこちら

hacomono IoT 在庫管理アプリ Dashboard画面

発注→入庫→出庫と一連の流れで登録できるようになっています。
コードも書けないしAppsheetを触るのも初めての素人でしたが、ここまでのものは作れました。


以下は作ることになった経緯や苦悩がメインです。
どんなところでつまづいたのかも記載していますので、同じ轍を踏まぬよう参考にしていただければ幸いです。


本編の前にまとめ

Appsheetでアプリを作りたい!独学で!と思った時のおすすめの道のりは以下になります。
あくまで私の場合こうだった…という経験論なので、試して違うな・合わないなと思ったら、飛ばしたり戻ったりして試行錯誤してみてください。

先人の知恵を借りる
  1. 公開されているアプリをDLして触ってみる
  2. 上記アプリをいじっては更新し、どの項目を変えるとどういう挙動をするのか確かめる
情報整理
  1. データベースを構築する
アプリ作成
  1. データベースに則りアプリを作る
  2. 不明点はネットの情報を繋ぎ合わせながらトライアンドエラー
  3. 地道に不具合を解消する


なぜアプリを作ることになったのか

前提として、生産管理の仕事は、数字を多く扱います。
中でも在庫管理/入出庫管理は膨大な量の数字を扱います。

弊社はフルリモートという特性上、各個人の家が倉庫のようなものです。
量産初期には個人の自宅に一旦部品を送り、加工をしてからオフィスや工場へ送付する、といった移動も発生します。
更に今年外部協力工場や倉庫が増え、管理する対象はどんどん増えています。

対してそれらを管理する人間は何人いるでしょうか。


ひとりです。


弊社で生産管理は私一人なのです。

まだプロダクト数も多くなく、トータル部品種類も100程度のため何とかなっています。
…とはいえ、あちこちに散らばる部品の管理はそれなりに大変です。

あの部品今いくつあるんだっけ? オフィスへのどこでもドアが欲しい


最初は入出庫が発生したタイミングで各人にGoogleフォームから登録してもらい、自動で専用のスプレッドシートに転記される仕組みを構築しました。

ここで登録されたものが

このシートに自動転記されています

しかし、入出庫が発生するたびに開発メンバーに登録してもらう工数は無視できないレベルでした。
また、誤記や表記揺れもあり、結局私が全て再チェックを実施するルーティーンとなっていました。


どうしたものかと再考していた時期に、PLMのような基幹システムを導入してはどうかと部内で話題が上がりました。
在庫管理もこれに乗っかろうとしたものの、機能・価格ともに今のフェーズで導入するには重すぎることや、過不足なく機能実装しようとするとそれなりにカスタマイズが発生すること、などがあり、流れてしまったのです。


頼みの綱が切れたそんなとき、同僚から「Appsheetでノーコードアプリ開発したらいいじゃん」と言われたのです。

Appsheet、名前は見聞きしたことがあったものの、どんなものかはさっぱり分かりませんでした。

🤔 ノーコードでアプリが作れる…? しかもGoogleならナレッジも豊富だろうしUXもきっと悪くないはず!

🤗 だめだったらやめて他の策を考えればいいか

…と気楽に考えた私は、Appsheetという魔境へと足を踏み入れることになったのでした。


Appsheetとの遭遇

Appsheetを使う手筈を整える中、一抹の不安がよぎります。

🙃 これ…全部英語じゃないか???

Appsheetには日本語verが無く、無理やりGoogle翻訳をかけると相当カオスな文になります。
申し遅れましたが私は英語が苦手です。
こちらも何度も挫折しています。誰かいい勉強法を教えてください。


Appsheetの設定項目を確認する中、更に一抹の不安がよぎります。

🙃 これ…ノーコードとはいうけど式は書くな???

条件式などはこちらが指定してあげないといけません。
冒頭に申しましたように、コードは書けません。


あれだ、流行りのGPTさんに聞いたらコード書いてくれるって聞いたぞ。
きっとAppsheetだってお手のものに違いない!

🙃 GPTめっちゃ嘘つくじゃん

他の言語に比べ、ナレッジが溜まっていなかったのだと思います。
何を聞いても嘘の項目、嘘の操作方法をしれっと教えてくるので、途中から頼ることをやめました。


そうなると自力で勉強して使いこなせるようにならなければいけません。
ひたすらにググりました。

🙃 ネットの海に…情報が…少なすぎる……

情報の絶対数が圧倒的に少ないのです。
また、始めたてはどんなキーワードで検索すれば欲しい情報がヒットするのかわからないことが往々にしてあります。
それっぽいのは引っかかるけど欲しいのはこれじゃない…ということがスプレッドシートなどに比較して圧倒的に多かったです。


ここでやめておけば良かったのに、それでもコミュニティのQ&AやYouTubeのノウハウ動画、ブログ記事などを参考にしながらどうにか勉強をスタートしました。


天下のGoogleサービスなのに何でこんなに情報が少ないんでしょう。 やはり言語の壁でしょうか。


Appsheetと格闘する日々

情報が少ないため、トライアンドエラーを繰り返していると時間がどんどん溶けていきます。
最初の一歩として簡単なアプリを自分で作ろうとしましたが、エラーの連続で断念。

まずは先人が公開している在庫管理系アプリをいじってみることにしました。
結果的にはこれが功を奏し、どの設定項目にどんな文言を入れたらどんな動きをするのか、というところが少しずつ見えてきました。

あー そーゆーことね 完全に理解した(わかってない)の図

その後、先人のアプリの機能を削る形で、部品を登録するだけのアプリを作ってみました。
どのシートを削除するとどのシートに影響が出るのか、といったところを確認しつつ修正していきました。
部品登録の部分のみ残ったものを、実際に登録作業をしてみることで対応するスプレッドシートへの転記具合などを確認しました。


上記先人のアプリを自分の業務要望に合うよう修正しつつそれっぽいものをリリースできたのは、Appsheetを本格的に勉強しはじめてから4ヶ月ほど経った頃でした。



それっぽいだけで使えないアプリ爆誕

記念すべき最初のアプリ

やっとの思いでリリースしたアプリは、何となく使えはするものの、直感的に分かりづらかったり誤操作を誘発する動線になっていたりと、初めて使う人にはだいぶ優しくないものでした。

何より困ったのが、いちから自分で作っていないので、何の設定項目・式がどこに紐づいて影響しているかがわからなくなり、気軽に改修できなくなってしまったことです。
ここが使いづらい、と思い修正すると、何をいじってもエラーが出ます。
そしてそのエラーがなぜ出ているのか原因が突き止められない…ということの繰り返しでした。


ここで気づいたのが、データベース化の大切さです。
Appsheetを開いても、テーブルとテーブルがどんな関係になっているかがパッと見ても分かりません。


そこで、draw.ioという作図ツールを利用し、各テーブルの内包項目と関係性、LABELとKEYの明記、名称の定義や、ややこしい数式も記載することにしました。
現状(最終形)と合わせておくだけで、次回改修をかけるときに格段にとっかかりやすくなります。

データベース

作っている最中で追加や削除はよくあるため、最初から上図のようにきれいに作る必要はありません。
私は最初はコピー用紙に手書きでああでもない、こうでもないと書き殴り、あとからdraw.ioに落とし込みました。


一応Appsheet内にもRelationshipsが確認できるページはあるのですが、テーブルやスライスが増えて複雑化するほど見づらくなるため、上図のようにデータベースとして作成しておくほうが良いと考えます。

Appsheet内のRelationships なにがなんだか



改良版のリリース

そんなこんなで、結局イチからアプリを再度作成することにしました。

量産用に購入した部品でも開発や保守用に払い出すことがあるため、用途の項目を追加したり、似たような名前の資材があると混乱するので画像登録できるようにしたり…と、なるべく痒い所に手が届くような修正も加えました。

式の過不足や設定項目の意味を今度こそしっかり理解しながら、なんちゃってではない、自社に合った在庫管理アプリ。

出来上がったとき、「こ、これはすごいものを作ってしまった…!」と本気で思いました。

資材一覧から選択すると、詳細や入出庫履歴も見れる

使い勝手は上々ですが、色々と欲しい機能を詰め込んだおかげでたまにバグが発見されます。
(私の能力不足も多分にある)

それに対して別の機能を実装することで解決したり、実はあまりいらない機能だったと思い直して削除したりと、日々改良を行ないつつ愛用しています。



ノーコードアプリ開発という手段

Appsheet以外にも、ノーコードでアプリを作る手段はいくつもあります。
正直、私は他のツールと比較せずにAppsheet決め打ちで開発を始めてしまいました。
人によってツールの使いやすさやこだわりがあると思うので、検索して色んなツールを比較するのも良いと思います。

私はAppsheetを使う中で、挫折どころかだんだん楽しくなり、休日も触るようになり結果として趣味のひとつになってきています
ネットに情報が少ないため自分でトライアンドエラーを繰り返す必要性が高いことから、成功したときの達成感が大きいこともあるかもしれません。
(早くリリースしたい気持ちとの戦い)


あのとき同僚は何の気なしにAppsheetを勧めてくれたのだと思いますが、うまいことハマりました。
感謝しています。


自社のフェーズが変わり、再び基幹システムを入れる動きが出るまでは、自前アプリを改良しながら在庫管理/入出庫管理をしていこうと思います。


そして情報が少ないとはいえ、開発をする上で先人たちの知恵には本当に助けられました。
覚書もかねて、自分でもナレッジ蓄積と公開をこっそり考えています。


株式会社hacomonoでは一緒に働く仲間を募集しています!
採用情報や採用ウィッシュリストも是非ご覧ください!