PowerAppsで在庫管理アプリを作る方法 入出庫と棚卸しをSharePointで管理

PowerAppsで在庫管理アプリを作る方法 入出庫と棚卸しをSharePointで管理のアイキャッチ

紙やExcelで在庫を管理していると、最新版が分からない、出庫の反映が遅れる、棚卸し差異の理由が追えない、という問題が起きやすいですよね。

PowerApps 在庫管理アプリは、いきなり大きなシステムを作るより、まず入出庫棚卸しをSharePointに残す形から始めると作りやすいです。

現場で使うなら、画面の見た目だけでなく、品目ID履歴数量保管場所をどう扱うかが大事になります。

目次

PowerApps在庫管理アプリの全体像

Man in beanie and vest using a scanner in a warehouse for inventory control.

PowerAppsで在庫管理アプリを作るときは、最初に業務の流れを分けると設計しやすいです。入庫、出庫、棚卸し、確認の役割を分けて、まずは小さく使える範囲から始めます。

在庫管理アプリでできること

PowerAppsで作る在庫管理アプリでは、入庫、出庫、棚卸し、在庫確認を1つの流れにできます。

たとえば、商品を受け取ったら入庫を登録し、現場へ持ち出したら出庫を登録します。

月末や週次の棚卸しでは、実際に数えた数量を入れて、システム上の数量との差を見ます。

紙やExcelの在庫表でも同じことはできますが、更新のタイミングが人によってズレやすいです。

PowerAppsなら、スマホやタブレットから登録できるため、現場で動いたタイミングに近い形で履歴を残せます。

MicrosoftのPower Apps概要では、Power Appsはローコードで業務アプリを作り、さまざまなデータソースへ接続できるプラットフォームとして説明されています。

在庫管理では、この特徴を使って、現場入力と管理者確認をつなげます。

ポイント

在庫管理アプリの目的は、在庫数をきれいに見せることだけではありません。誰がいつ何をどれだけ動かしたかを追える状態にすることです。

入庫 出庫 棚卸しを分ける

在庫管理では、入庫出庫棚卸しを同じ「数量入力」として扱いたくなります。

ただ、運用では意味が違います。

入庫は在庫を増やす処理です。

出庫は在庫を減らす処理です。

棚卸しは、理論上の在庫と実際の数量を合わせる確認です。

この3つを区分せずに保存すると、あとから差異の原因を追いにくくなります。

SharePointリストに保存するときも、MovementType のような列を作り、区分を残しておくと便利です。

区分数量への影響主な利用シーン
入庫在庫を増やす仕入れ、返品、補充
出庫在庫を減らす使用、出荷、持ち出し
棚卸し実数を確認する月末、週次、スポット確認

最初は入庫と出庫だけでもよいですが、棚卸しを後回しにすると、差異が見えたときに原因を追えません。

小さく始める場合でも、棚卸しの記録欄だけは用意しておくのがおすすめです。

QRコードやバーコードで入力ミスを減らす

在庫管理アプリでよく起きる問題は、品目名の入力ミスです。

「ネジ M4」と「M4ネジ」のように表記が分かれると、検索や集計が崩れます。

そこで、品目名ではなく品目IDを軸にします。

棚や商品ラベルにQRコードを貼り、PowerAppsで読み取って品目を特定する形です。

Microsoft LearnのBarcode reader controlは、キャンバスアプリでバーコードやQRコードを読み取るためのコントロールです。

在庫管理では、品目ID、棚番、ロケーションコードを読み取る用途に向いています。

読み取り後は、LookUp で商品マスタから該当品目を探し、品目名や単位を画面に表示します。

手入力に頼りすぎると、少しずつ表記ゆれが増えます。

最初からコード化しておくと、現場入力が安定します。

PowerApps在庫管理アプリの入庫出庫棚卸しを整理した図解

SharePointリストの設計

Industrial worker managing inventory in a warehouse with a clipboard and checklist.

在庫管理では、SharePointリストの作り方があとから効いてきます。現在庫だけを1列で持つより、商品マスタと入出庫履歴を分けて、在庫の動きが追える設計にします。

商品マスタと入出庫履歴を分ける

PowerAppsとSharePointで在庫管理を始めるなら、まずは商品マスタ入出庫履歴を分けます。

Microsoft LearnのSharePoint接続ドキュメントでは、キャンバスアプリからSharePoint Onlineなどへ接続できることが説明されています。

部門内の在庫管理なら、SharePointリストは始めやすいデータソースです。

ただし、1つのリストに全部入れると、後から扱いにくくなります。

商品マスタは「何を管理するか」の一覧です。

入出庫履歴は「いつ、どれだけ動いたか」の記録です。

棚卸し履歴は「実際に数えた結果」です。

リスト主な列役割
商品マスタ品目ID、品目名、単位、保管場所、最低在庫管理対象を固定する
入出庫履歴品目ID、区分、数量、日時、担当者、メモ在庫の動きを残す
棚卸し履歴品目ID、理論在庫、実棚数、差異、棚卸し日差異を確認する

この形にすると、商品名を変更しても過去の入出庫履歴を残しやすいです。

マスタ履歴を分けるだけで、運用の見通しがかなり良くなります。

現在庫は履歴から考える

在庫管理アプリを作るとき、現在庫を商品マスタの1列に持たせたくなります。

もちろん、現在庫列を持つ設計もあります。

ただ、すべてを現在庫の上書きで処理すると、なぜ増えたのか、なぜ減ったのかが残りません。

在庫が合わないときに、「誰がいつ動かしたか」を追えないのは痛いです。

そのため、基本は入出庫履歴を追加し、現在庫は集計で考えます。

入庫はプラス、出庫はマイナス、棚卸しは差異確認として扱います。

小規模ならPowerApps側で集計してもよいですが、履歴が増える場合はビューやPower Automate、Power BI、Dataverseなども検討します。

直接上書きだけで進めると、差異の説明が難しくなります。

注意

在庫数は業務判断に使われるため、履歴なしの上書き運用は避けたいです。現在庫列を持つ場合でも、入出庫履歴は別で残しておくと安心です。

品目IDと保管場所を固定する

在庫管理で大事なのは、品目名より品目IDです。

品目名は人が読むための名前なので、表記ゆれが起きやすいです。

一方、品目IDはアプリが品目を特定するためのキーです。

QRコードやバーコードに入れる値も、品目IDにしておくと扱いやすいです。

保管場所も固定しておきます。

「倉庫A」「第1棚」「ライン横」など、現場で通じる粒度にします。

細かくしすぎると入力が重くなりますが、粗すぎると探せません。

最初は保管場所棚番単位最低在庫を商品マスタに持たせるとよいです。

列名型の例ポイント
ItemCode1行テキストQRコードに入れる固定ID
ItemName1行テキスト画面表示用の品目名
Location選択肢保管場所を統一する
Unit選択肢個、箱、kgなど
MinStock数値最低在庫アラートに使う

品目名だけで検索する設計は、最初は楽でも後から苦しくなりやすいです。

PowerApps在庫管理のSharePointリストを商品マスタと入出庫履歴に分ける図解

入出庫画面とQRコード読み取り

Man in beanie and vest using a scanner in a warehouse for inventory control.

データ設計ができたら、現場で迷わず使える画面に落とし込みます。品目検索、QR読み取り、数量入力、保存完了までの流れを短くし、入力ミスを減らします。

一覧画面で対象品目を探す

在庫管理アプリの入口は、品目一覧です。

Galleryに商品マスタを表示し、品目名、品目ID、保管場所、現在庫を見せます。

現場では、一覧が長すぎると探すだけで時間がかかります。

検索ボックス、カテゴリ、保管場所、よく使う品目の絞り込みを用意します。

たとえば、検索ボックスの値で品目名や品目IDを絞り込み、ドロップダウンで保管場所を選べるようにします。

一覧では、現在庫最低在庫も見えると便利です。

最低在庫を下回っている品目には、赤いラベルやアイコンを出します。

ただし、赤い表示を増やしすぎると、どれが本当に重要か分かりません。

警告だらけにならないよう、最低在庫や欠品だけに絞るのがよいです。

ポイント

一覧画面では、すべてを表示するより、今日動かす品目を早く見つけられることを優先します。検索、カテゴリ、保管場所の3つがあると使いやすいです。

QRコードで品目IDを読み取る

QRコードやバーコードを使う場合は、品目IDを読み取り、その値で商品マスタを探します。

画面にBarcode reader controlを置き、読み取った値を変数や入力欄に入れます。

その後、LookUp(Items, ItemCode = 読み取り値) のような考え方で品目を特定します。

読み取った品目名、単位、保管場所を画面に表示すれば、作業者は合っているか確認できます。

読み取り確認数量入力の順にすると、ミスが減ります。

QRコードを使うときは、次のような値を入れると扱いやすいです。

  • 品目IDだけを入れる
  • 棚番だけを入れる
  • 品目IDとロケーションを組み合わせる

最初は品目IDだけがおすすめです。

複雑な値を入れると、アプリ側で分解する処理が増えます。

棚ごとにQRコードを貼る場合は、棚番を読み取り、該当場所の品目だけ表示する使い方もできます。

入庫 出庫 棚卸しを同じ型で扱う

入庫、出庫、棚卸しは意味が違いますが、画面の入力パターンは似ています。

基本は、品目を選び、区分を選び、数量を入力し、保存します。

そのため、同じ画面に区分ボタンを置き、選んだ区分によって表示を変えると作りやすいです。

入庫なら「入庫数」、出庫なら「出庫数」、棚卸しなら「実棚数」と表示します。

入力欄は同じでも、ラベルを変えるだけで現場は迷いにくくなります。

区分ボタンを大きくし、選択中の区分を色で分かるようにします。

保存前には、品目名、区分、数量を確認します。

特に出庫は在庫を減らす処理なので、数量が大きいときは確認を出してもよいです。

誤出庫は現場トラブルにつながりやすいため、出庫時だけ注意表示を出す設計が合います。

PowerApps在庫管理でQRコードを読み取り入出庫を登録する流れの図解

Patchで在庫履歴を保存する

Software developer analyzing code on a tablet in a modern office workspace.

在庫管理アプリでは、保存時に何を残すかがあとから効いてきます。入出庫履歴を1行ずつ追加し、品目ID、区分、数量、日時、担当者を記録します。

履歴追加を基本にする

入出庫履歴を保存するなら、Patchを使ってSharePointリストに新しい行を追加できます。

Microsoft LearnのPatch関数では、データソースのレコードを作成または変更する関数として説明されています。

在庫管理では、入出庫のたびに履歴追加する形が分かりやすいです。

例として、StockMovements というSharePointリストに履歴を追加します。

Patch(
    StockMovements,
    Defaults(StockMovements),
    {
        ItemCode: txtItemCode.Text,
        MovementType: ddMovementType.Selected.Value,
        Quantity: Value(txtQuantity.Text),
        MovedAt: Now()
    }
)

この例では、品目ID、区分、数量、日時を保存しています。

実際には、担当者、保管場所、メモ、入力元画面なども残すと運用しやすいです。

保存する項目は多すぎても入力が重くなりますが、品目ID区分数量日時担当者は残したいです。

現在庫を直接上書きしすぎない

Patchを使えば、商品マスタの現在庫列を直接更新することもできます。

ただし、現在庫だけを更新すると、在庫が変わった理由が見えません。

たとえば、現在庫が100から70になったとき、出庫なのか、棚卸し調整なのか、誤入力の修正なのかが分からなくなります。

そのため、基本は履歴を追加します。

現在庫列を持つ場合でも、履歴追加とセットで更新します。

処理の考え方は次のようになります。

  1. 入出庫履歴に1行追加する
  2. 必要に応じて商品マスタの現在庫を更新する
  3. 保存後に一覧を再読み込みする
  4. 成功通知を表示する

履歴を残すだけでなく、保存が成功したかも作業者に見せます。

保存済みの表示がないと、作業者は二重登録してしまうことがあります。

二重登録を防ぐため、保存ボタンの連打対策も入れておくと安心です。

保存後の通知とエラー表示を作る

保存処理は、成功時と失敗時を分けて考えます。

成功したら「登録しました」と表示し、入力欄をクリアします。

失敗したら「保存できませんでした」と表示し、入力内容を消さないようにします。

現場では通信状態が悪い場所もあります。

保存失敗時に入力内容が消えると、作業者の負担が大きいです。

Power Appsでは、NotifyIfError を使って、成功と失敗を分けて表示できます。

たとえば、保存ボタンの処理では、次のような考え方にします。

IfError(
    Patch(
        StockMovements,
        Defaults(StockMovements),
        {
            ItemCode: txtItemCode.Text,
            MovementType: ddMovementType.Selected.Value,
            Quantity: Value(txtQuantity.Text),
            MovedAt: Now()
        }
    ),
    Notify("保存できませんでした", NotificationType.Error),
    Notify("保存しました", NotificationType.Success)
)

実際のアプリでは、数量が空なら保存しない、0以下なら警告する、出庫数が現在庫を超えたら止める、といったチェックも入れます。

入力チェックは地味ですが、在庫管理ではかなり重要です。

注意

保存処理は「登録できるか」だけでなく、「間違った登録を防げるか」まで見る必要があります。数量、区分、品目IDのチェックは必ず入れたいです。

PowerApps在庫管理でPatch保存する品目ID区分数量日時の図解

運用で失敗しないポイント

Two warehouse workers discussing logistics beside shelving with boxes and containers.

アプリは作って終わりではなく、毎日使われる運用に合わせる必要があります。委任、通知、権限、マスタ変更を最初から決めておくと、あとで作り直しにくくなります。

委任とデータ量を最初から見る

在庫管理アプリは、使い続けるほど履歴が増えます。

最初は数百件でも、毎日入出庫があるとすぐに数千件になります。

Power Appsでは、式やデータソースによって委任できる処理とできない処理があります。

Microsoft Learnの委任の概要では、大きなデータセットを扱うときに、サーバー側で処理できる式を使う重要性が説明されています。

在庫履歴では、全件をアプリに読み込んでから絞るより、日付や品目IDで先に絞る設計が安全です。

たとえば、次のような見方を用意します。

  • 今日の入出庫
  • 今月の入出庫
  • 品目ID別の履歴
  • 保管場所別の在庫
  • 最低在庫を下回った品目

日付品目ID保管場所の列は、絞り込みでよく使います。

最初から検索条件を決めておくと、履歴が増えても扱いやすいです。

全件表示を前提にすると、後から表示速度や委任警告で困りやすいです。

PowerApps在庫管理で委任を意識して日付品目ID保管場所で絞る図解

最低在庫や棚卸し差異を通知する

在庫管理アプリを現場で使うなら、見に行かないと分からない状態を減らします。

最低在庫を下回ったら通知する、棚卸し差異が大きいときだけ管理者へ知らせる、という形です。

Power Automateと組み合わせれば、SharePointリストに行が追加されたタイミングで通知できます。

通知条件は、最初から複雑にしすぎないほうがよいです。

まずは最低在庫大きな差異に絞ります。

通知が多すぎると、誰も見なくなります。

通知過多は運用を弱くします。

在庫管理で使いやすい通知は、次のようなものです。

通知条件例宛先
欠品通知現在庫が0管理者
最低在庫通知現在庫が最低在庫未満発注担当
差異通知棚卸し差異が一定以上現場責任者
未処理通知棚卸し差異の確認が未完了管理者

通知は、すぐ必要なものだけに絞るのがコツです。

マスタ変更と権限を決める

在庫管理アプリで意外と大事なのが、誰が商品マスタを変えられるかです。

品目ID、品目名、単位、保管場所、最低在庫を誰でも変更できると、集計が崩れやすくなります。

現場担当者は入出庫を登録し、管理者は商品マスタを更新し、閲覧者は在庫を見るだけ、という分け方が分かりやすいです。

SharePointリストの権限やアプリ内の表示制御で、担当者管理者閲覧者を分けます。

ただし、複雑なロールや厳密な権限が必要なら、SharePointだけで無理に作り込まないほうがよいです。

Microsoft LearnのDataverse概要では、業務データを扱うためのデータプラットフォームとしてDataverseが説明されています。

品目数が多い、部署をまたぐ、権限が細かい、監査ログが重要、といった場合はDataverseも候補になります。

まずはSharePointで小さく開始し、運用が固まったらDataverse化を検討する流れが現実的です。

補足

SharePointは始めやすさが強みです。一方で、複雑な権限、関連テーブル、多拠点運用、厳密な監査が必要な場合は、Dataverseや既存システム連携も視野に入れると安心です。

PowerApps在庫管理の登録確認通知棚卸し見直しの運用サイクル図解

PowerApps 在庫管理に関するよくある質問

SharePointだけで在庫管理アプリは作れますか?

小規模な部門内の在庫管理なら、SharePointリストだけでも始められます。

商品マスタ、入出庫履歴、棚卸し履歴を分けるだけでも、紙やExcelより管理しやすくなります。

ただし、全社在庫、複雑な承認、厳密な権限、多拠点連携が必要なら、Dataverseや既存システム連携も検討したほうがよいです。

QRコードやバーコードは使えますか?

使えます。

Power AppsのBarcode reader controlを使うと、QRコードやバーコードを読み取れます。

在庫管理では、品目IDや棚番を読み取り、商品マスタから対象品目を探す使い方が向いています。

最初は品目IDだけを読み取るシンプルな形がおすすめです。

現在庫はどう計算すればいいですか?

基本は、入庫をプラス、出庫をマイナスとして扱い、棚卸しで実数との差を確認します。

履歴を残しておくと、現在庫が合わないときに原因を追えます。

小規模ならPowerApps側の集計でも始められますが、履歴が増える場合はビュー、Power Automate、Power BI、Dataverseなども検討します。

棚卸し差異は管理できますか?

管理できます。

棚卸し履歴に、理論在庫、実棚数、差異、差異理由、確認者を保存します。

差異が大きい場合だけ通知するようにすると、管理者が確認しやすくなります。

重要なのは、差異をその場で消すのではなく、理由対応を残すことです。

まとめ

PowerAppsで在庫管理アプリを作るなら、まずSharePointリストで商品マスタと入出庫履歴を分け、QRコードやPatchで現場入力を短くするのが現実的です。

在庫は毎日動くので、最初から履歴委任権限通知を意識して作ると、あとから育てやすくなります。

まずは1つの倉庫、1つの品目カテゴリ、1つの入出庫フローに絞って、在庫管理テンプレートとして使える形から始めてみてください。

よかったらシェアしてね!
目次