この記事について
「AppSheetで備品管理アプリを作ってみた」という記事は正直たくさんあるので、この記事は作り方のガイドを目的としていません。作成手順そのものは公式ドキュメントや先人の記事、もしくは生成AIに聞く方が詳しく早いです。
そのかわりこの記事では、
- AppSheetを初めて触った人間が、どこで詰まって、どこが簡単だったのか
- QRコードでの棚卸しを部内で運用してみてどうだったのか
このあたりの「やってみないとわからなかったこと」に重心を置いています。これから同じことをやろうか迷っている人の判断材料になればうれしいです。
なぜ作ったのか
きっかけは単純でそもそも備品の棚卸しがまともに機能していなかったからです。
備品台帳はあるにはあるのですが更新されておらず、「あの備品どこいった?」「これって誰が使ってるんだっけ?」という備品が多くありました(よく貸し出される備品は決まっていたので日頃から困ることは少なかったです)。
棚卸しをしようにもExcelを開いたPCを片手に一つずつ照合していく作業が重すぎて、結局それっぽくやってうやむやになる...という状態です。
なので今回のゴールは、大げさなシステムを作ることではなく、Excel以上のシステムを導入して棚卸しのハードルを下げて続けられる仕組みにすることでした。
なぜAppSheetを選んだのか
AppSheetにした理由は大きく4つです。
1. ノーコードで作れる + 運用費がかからない
コードを書かずにデータをもとにアプリの画面が半自動で組み上がっていきます。またアプリとして配信することでWebサーバ等を立てる必要がありません。
2. QRコードスキャンができる
今回棚卸しのシステム構築にあたり、QRコードを利用することを事前に決めていました。
(RFIDなどの案もありましたが、導入コストと規模感からQRコードに落ち着きました)
AppSheetでアプリを作成すれば容易にQRコードスキャンの組み込みができます。
3. 裏側がGoogleスプレッドシート
AppSheet は Googleスプレッドシートなどをデータソースにしてアプリを作れます。今ある備品データをそのまま流用できますし、いざとなればこれまで通りスプレッドシートを直接開いて中身を確認・修正できます。
4. 会社のGoogle Workspaceでそのまま使える
業務でGoogle Workspaceを使っているので、追加契約なしで既存のアカウント基盤の上に乗せられる点も選定理由でした。
※ ちなみにこの「Workspaceで使える」ことはメリットであると同時に、後半で書くとおり制約も生みました。
作ったもの(アプリの中身)
やったことをざっくり書くと以下の流れです。ここは「これだけ押さえれば動く」という最小限に絞ります。
-
備品リストのスプレッドシートを用意する
備品名・管理ID・保管場所・状態...といった列を持つごく普通の一覧表です。一旦これさえあればシステムとしては十分です。 -
AppSheetでアプリを自動生成する
そのスプレッドシートをAppSheetに読み込ませると、一覧画面や詳細画面がほぼ自動で出来上がります。運用に則したレイアウト等の修正は必要でしたが、Gemini に「これやりたい」と相談しながら進めればあっけないくらい簡単にアプリが作れました。 -
棚卸し(スキャン)の仕組みを組み込む
棚卸し用のセッションテーブル と セッションに紐づいた備品を溜め込むテーブル を作成しておきます。備品の管理IDをQRコードで読み取れるようにして、「セッション作成 → スキャン → 確認済みにする → 全て確認してセッション完了」という棚卸しフローを作りました。
細かい設定手順は他の記事に譲りますが、QRまわりだけはつまずいた部分があったので具体的に書きます。
QRコード読み取りの組み込み
技術的に一番試行錯誤したのがこのスキャン機能まわりです。
スキャン自体は一瞬でできる
まずQRコードの読み取り自体は簡単でした。Data から管理IDの列の「SCAN?」にチェックを入れるだけです。これだけでその項目をカメラでスキャンして入力できるようになります。
問題はここからで、棚卸しとして実際に使いやすくするための作り込みにハマりました。
つまずき①:貸出中の備品でセッションが完了できない
QRコードだけで棚卸しをしようとすると、棚卸しのタイミングで貸し出されている(手元にない)備品はスキャンしようがないという問題が出てきます。現物がないのでQRを読めず棚卸しのセッションが完了できません。
そこでスキャンだけでなく手入力でも棚卸しできるようにして、貸出中のものは手で処理できるようにしようと考えました。
つまずき②:スキャン→登録ボタン→また戻る…が面倒すぎる
「スキャンする → 登録ボタンを押す → 次のスキャン画面に戻る」を1件ごとに繰り返すのは、100個以上の備品を相手にするとかなりの手間です。
理想はスキャンしたら自動で棚卸し完了 → そのままカメラ(スキャン画面)に戻るという、連続でスキャンし続けられる動きです。
これを実現しようとGeminiに聞いたところ以下の指示をもらいました。
左メニュー Views から、棚卸し履歴_Form の設定を開きます。
以下の2つのトグルを ON にします。
Auto-save(自動保存): ON
Auto-reopen(自動再開): ON
ところが、この通りに設定しても自動でスキャン画面に戻ってきませんでした。
原因:「手入力」と「スキャン」を1つのフォームに混ぜたこと
原因はつまずき①を解決しようとして手入力とスキャンを1つのフォームにまとめることで、②の自動化を壊していたからでした。
どうやら Auto-save を動かすにはいくつか条件があるようでした。
- 入力欄がすべて埋まっていること
- 画面の一番下(最後)にある項目をスキャンで入力すること
※ 試してないですが他にもあるかもしれないです
手入力欄とスキャン欄を同じフォームに同居させたことで「最後の項目をスキャンで埋めたら自動保存」という条件が満たせなくなっていた、というわけです。
解決:フォームを2つに分けた
最終的にたどり着いた答えは目的の違うフォームを1つにまとめず2つに分けることでした。
- 専用のスキャン画面:IDをスキャンしたら「棚卸し済み」を自動で入力してそのまま連続スキャンできる。日常の棚卸しはこれを使う
- 手入力用のフォーム(デフォルトで作られるもの):貸出中などスキャンできない備品を手で処理する
この2つを別々に管理することで、「連続スキャンの快適さ」と「手入力の逃げ道」を両立できました。
AppSheetでは「1つの画面に機能を詰め込みすぎない」「目的ごとにViewを分ける」ことが必要になってきます。ノーコードであるため好き勝手機能を追加できません。1画面で多くの機能を入れようと欲張ると他の機能とぶつかります。
カメラの起動を自動化させるためには設定(左メニューの Settings:歯車マーク)から「Advance forms automatically」を設定する必要もあります。
Settings > Views > View type options > Forms
から「Advance forms automatically」のトグルをONにします。
QRコード運用のリアル
アプリが完成しても、実際にモノにQRを貼って運用するフェーズにはやってみないとわからない手間がありました。
QRの中身は「IDの文字列」だけでOK
まず、QRコードに何を入れるか問題です。結論から言うと備品の管理ID(ただの文字列)を入れるだけで十分でした。
URLを入れたり凝った値を入れたりする必要はなく、シンプルにIDを持たせて、それをアプリ側でスキャンして該当備品を引き当てる、という形で実装できました。
印刷媒体はなんでもいい
QRの印刷は手元にあるもので十分でした。
自分の場合はプリンタ用のラベルシールが手元になく、たまたま部内にフォトプリンタがあったので、フォトプリンタで印刷したものを貼りました。
正直これは在庫の都合でそうなっただけで、普通のラベルシールでもコピー用紙に印刷して貼るのでも目的は果たせそうでした。
シール剥がれ、汚れ、日焼け等、今後運用の中で問題が起きるかもしれないので、要経過観察事項ではあります
サイズは数パターンに規格化した
手間だったのがQRのサイズ調整です。
備品ごとに大きさがバラバラなので、同じサイズのQRだと大きい備品には小さすぎて見つけにくく、小さい備品には大きすぎて貼れないということが起きます。かといって一個ずつ最適サイズを作っていたらキリがありません。
今回はサイズを「大・小」の2種類に規格化して運用することにしました。共有 PC やディスプレイのようなある程度大きいものには大サイズ、変換アダプタ等の細かい備品には小サイズ、という割り切りです。
「そもそもQRを貼れない備品」問題
たとえば共有の衣類のように、シールを貼る場所がない・貼っても剥がれる・そもそも貼りたくないものが出てきます。
こういうものはQRをA4用紙に印刷して別添え(近くに掲示・添付)するという形で対応しました。
規模感
ちなみに今回貼った(置いた)QRは100枚程度です。部内の備品管理なのでそこまで大量というわけではありませんが、備品ごとにQRコードサイズの確認や手貼りしたので地味に時間はかかりました。「個人〜小さいチーム規模なら、手作業でも十分回せる」くらいの感覚でした。
実際に棚卸しをしてみた
QRを貼り終えて、いよいよ本番の棚卸しです。
やる前に思っていたこと
棚卸しを始める前はこんなことを考えていました。
- 貼る位置がバラバラなのでQRを探すのに手間取るのでは?(貼る位置のルールを決めずに進めてしまったため)
- そもそもこれまでまともに棚卸しできていなかったので、どんな形であれ改善するのは確実だろう
- 会社のWorkspaceで運用している都合上、社内LANからしかアプリに繋がらない。スキャンできる端末が1台なのがネックになるかも
結果:思ったより全然速い
実際にやってみて、何より「速かった」というのが感想です。棚卸し & QR貼り付けをやって期間が空いていない(整理されたままだった)のもあると思いますが、30分で70件程度は余裕で完了しました。
これまで「Excelを片手に一つずつ照合」していた頃を思えばかなり楽になりました。もっとも前述のとおりこれまでの棚卸しがまともに機能していなかったので、「AppSheetがすごい」というより「ようやくまともに棚卸しできる状態になった」という側面も正直あります。
それでも定期的に続けられそうな手軽さになったのは間違いありません。
やっぱり出た「QRが見つけづらい」問題
一方で事前に不安だった貼る位置がバラバラで探しづらい問題は、やはり発生しました。備品の正面だったり側面だったり、貼る位置に統一感がないので、スキャンのたびに「QRどこだ?」と探す一手間がかかります。
ここは完全に貼る前に「貼る位置のルール(例:必ず正面右上に貼る)」を決めておくべきだったという反省点です。
QRの貼り間違いも発覚
そして棚卸し中に発覚したのがQRの貼り間違いです。別の備品のQRを貼ってしまっていた、というミスが混じっていました。
100枚を手作業で貼ればどうしても起きるヒューマンエラーで、(今後まとめて貼る予定自体はないですが)貼り付け工程の見直しが必要だと感じています。
端末1台問題は気にしなくてよかった
事前に少し不安だった「社内LANからしか繋がらずスキャンできる端末が実質1台」問題ですが、今回の規模では問題になりませんでした。
複数人で同時に手分けしてスキャン…ということはできませんが、前述のとおり片手間でも30分で70件ほど進むペースだったので、1台で一人がまわしても十分現実的な時間で終わります。「部内の備品100枚程度」という規模感なら端末が1台でもまったく困りませんでした。
もちろん対象がもっと大量の場合や、複数拠点で同時に棚卸ししたいような規模になると話は変わってきます。そのときは端末の追加申請(=アクセスできる端末を増やす)が必要になりますが、小さいチーム規模であれば過度に心配しなくてよいというのが実感です。
今後の課題
一通り運用してみて「次はここを直したい・足したい」というのがいくつか見えてきました。
- 貼る位置のルール化:見つけづらさ・貼り間違いの対策として、貼り付け工程そのものを整備したい
- 新規登録時のQRデザイン生成:備品を新規登録したら管理IDなどを載せたQRラベルをアプリ側で生成・印刷できるようにしたい。今は印刷まわりが手作業なので仕組み化したい
- 予約アプリとのステータス連携:別で予約管理用のアプリを作っているので、「貸出中/予約中」といったステータスを備品管理アプリと連携させたい。これができれば「棚卸し時に貸出中の備品をどう扱うか」もスマートに解決できそう
まとめ
初めてのAppSheetでしたが、備品管理アプリとQRコード棚卸しは十分実用レベルで作れました。
- 作ること自体のハードルは低い。生成AIに相談しながら進めれば、簡単に形にできる
- ただし「使いやすくする」作り込みでは詰まることがある。特に今回のスキャン自動化のように、機能を欲張ると条件同士がぶつかる
- 物理運用(貼る・探す・貼り間違い)には、やってみないとわからない手間があった。特に「貼る位置のルール」は最初に決めておくべきだった
- 小規模・Workspace利用で棚卸しを回したいなら、AppSheetは十分に選択肢になる
同じように備品管理で悩んでいる方の参考になればうれしいです。