【Power Automate入門】備品購入申請システム#3 ~要件定義とフローの設計をしよう!~
Power Automateの「備品購入申請システム開発」シリーズの第3回目ですぞ!
第3回目の今回は、備品購入申請システムの「要件定義」と「設計」を、実際にやっていきます。
第2回目では、フローの基本的な仕組みや、変数とデータ型、プログラミングの基本処理3つなど、開発に必要な基礎知識を学びました。
第3回目の今回は、第2回目に学んだ知識を使って、現状の業務の課題整理から、要件定義、フローのアルゴリズム設計、テーブル設計まで、システム開発の「上流工程」を一気にやっていきましょう!
- 業務の課題を「要件」に言語化する、要件定義の手順
- Excelの箇条書きでできる、フローのアルゴリズム設計のやり方
- SharePointリストのテーブル設計と、データ型の決め方
Power Automateについて詳しく学びたい方は、ぜひパワ実のPower Automate入門書もご覧ください!
YouTube動画で見たい方は、こちらからどうぞ!
今回実施するところ
このシリーズでは、Power AutomateとPower Appsを使って、申請・承認フローを一から作っていきます。
第3回となる今回は、いよいよ開発の最初のステップ、「要件定義」と「設計」を実際にやっていきます!

現状の業務フローと課題の整理
最初に、今の業務がどのように回っているかを、整理するところから始めます。
現状を把握しないままシステムを作り始めると、途中で「あの機能も必要だった」と手戻りが発生したり、完成してから「欲しかったものと違う」となったりします。
まずは「現状」を絵に描いて、見える化しますぞ!
現状の業務フロー
現状の備品購入申請は、以下のようになっています。

- 申請者は、Excelの申請ファイルを作成し、メールに添付して上司に送る
- 上司は添付ファイルを確認して、承認か却下を判断する
※金額が30万円未満:課長のみ/30万円以上:課長→部長 - 申請ファイルは、共有フォルダに手作業で保管する
メールとExcelと共有フォルダ…どこの職場にもありそうな、よくある業務の形ですな!
課題を洗い出す
次に、この業務フローの中で「どんなことに困っているか」を書き出してみます。

業務フローの絵の上に困りごとを書き込んでいくと、誰が、どの場面で困っているかが見えやすくなります。
- 申請がいま、どこまで進んでいるのか分からない
- 過去の申請を探すのが大変
- メールが埋もれて、承認漏れがあるかも
- 金額によって承認ルートが異なり、毎回確認が必要
- 申請書を手作業で格納するのが大変
実務では、この工程が関係者への「ヒアリング」にあたります。
現場で「いま困っていること」を整理することが、システム開発の最初の一歩です。
改善策を考える
洗い出した課題に対して、それぞれ改善策を考えて、表に整理します。

このように課題と改善策を1対1で並べておくと、「何のためにこの機能を作るのか」が明確になります。
要件定義
ここから要件定義に入ります。
要件定義とは、先ほどの改善策を、「システムへの要望」として具体的に言葉にすることです。
主語と、きっかけと、結果をはっきりさせておくと、あとで実装するときに迷わなくなります。
申請者の要件
まず、申請者の要件から見ていきます。

申請者は「申請の入力」だけすればよくて、あとの承認依頼や、添付ファイルの格納などは、すべて自動化する形です。
承認者の要件と承認ルート
続いて、承認者の要件です。ここで、承認ルートのルールも確定させます。

- 金額が30万円未満:課長のみ
- 金額が30万円以上:課長→部長の2段階
これまで「毎回確認が必要」だったルールを、ここで明文化しました。
この後の設計で、システムがこのルールを自動で判定するようにしていきますぞ!
課題と要件の対応をチェックする
要件定義の仕上げとして、大事なチェックをします。
洗い出した課題が、要件でぜんぶ拾えているか? 課題と要件を対応させながら確認していきます。

5つの課題すべてに、対応する要件があることが確認できました。
この「対応チェック」をやっておくと、要件の抜け漏れを防げますぞ!自分の業務で要件定義をするときにも、最後にぜひやってみてくだされ!
改善後の業務フロー
要件が固まったので、次は「改善後の業務フロー」を描いていきます。
従来のメールとExcelの業務を、Power Apps・Power Automate・SharePoint・Teamsを組み合わせたフローに変えます。

流れを順番に見ていきます。
① アプリで新規申請を登録
申請者は、Power Appsで作った「備品購入申請アプリ」から、品目名や数量、金額などを入力して申請します。
② データソースに自動で登録
申請データが、SharePointリストに自動で登録されます。
Power AppsはSharePointリストをデータソースとして直接読み書きできるので、この登録はアプリの標準機能だけで完結します。
メール本文やExcelに書いていた情報が、最初からデータベースに入る。
これだけでも大きな改善ですね!
③ Teamsで課長に承認依頼の通知
アプリで申請を登録したタイミングで、Power Automateのフローが実行され、課長にTeamsで承認依頼を通知します。
課長は、届いた依頼から内容を確認して、承認か却下を選ぶだけで、メールを探す必要はありません(課題3の解消)。
④ Teamsで部長に承認依頼の通知
金額が30万円以上の場合は、課長の承認のあと、部長にもTeamsで承認依頼が届きます。30万円未満なら、課長の承認だけで完了です。
「この申請は部長まで回すんだっけ?」という確認を、人がやる必要はもうありません。
金額を見て、システムが自動でルートを判定してくれます(課題5の解消)。
⑤ データソースを自動で更新/⑥ 申請者にメール通知
必要な承認ルートでの処理が完了したら、承認・却下の結果やコメントがSharePointリストに自動で更新され、最後に申請者へ結果がメールで通知されます。
人がやるのは「申請の入力」と「承認の判断」の2つだけです。
人が判断する必要がない部分を自動化していくのが、業務効率化のポイントですな!
必要なフローを洗い出す
いま見た流れを箇条書きで整理して、「どこに、何のフローが必要か」を確認します。
私の場合は、OneNoteやExcelなどに、簡単な箇条書きで整理しています。
- 申請者が、備品購入申請アプリで申請内容を入力し、登録する
- 申請データが、SharePointリストに登録される
- アプリからPower Automateが呼び出される ➡★申請・承認フロー
- 申請の添付ファイルは、SharePointドキュメントライブラリーに保存される
- 課長にTeamsで承認依頼が届き、承認/却下を登録
- 承認/却下の結果がSharePointリストに登録される
- 30万円以上であれば、部長にTeamsで承認依頼が届き、承認/却下を登録
- 承認/却下の結果がSharePointリストに登録される
- 課長、(30万円以上なら)部長の承認/却下の結果が、申請者にメールで通知される
①〜②は、Power Appsの標準機能なので、フローは不要です。
そして③以降を担当する、今回必要なPower Automateフローは「1本」だけです。
Power Automateの承認機能には「相手の回答を待つ」仕組みがあるので、申請から承認、記録、通知まで、1本のフローで完結できます。
フローの分け方には色々あり、実際には、最初の承認依頼と2回目の承認依頼を分けたり、ドキュメントの保存部分を別フローにする場合もあります。
複数のフローに分けた方が、保守性や再利用性は向上しますが、設計がやや複雑になるため、今回はシンプルに1本のフローで構築していきます。
アルゴリズム設計
それでは、フローの中身を設計していきます。これが「アルゴリズム設計」です。
やることはシンプルで、フローが実行する処理を、上から順番に、箇条書きで書き出すだけです。
私はExcelを使うのをおすすめしています。
特別なツールが要らず、行の追加や並べ替えがすぐでき、実装のときは、そのままチェックリストになりますぞ!
前半:申請受付から添付ファイル保存まで
まず前半、申請受付から添付ファイル保存までを書き出したものが、こちらです。
- トリガー:Power Appsからフローを呼び出す(引数:申請ID)
- 変数の初期化:保存先フォルダパス
- 申請IDをもとに、SharePointから申請データを取得
- 添付ファイルを取得し、1件ずつ処理 ★ループ処理
- ドキュメントライブラリーに保存
- 添付ファイルテーブルに1行登録
トリガーでは、どの申請かが分かるように、アプリから申請IDを引数として受け取ります。
そして④が、前回学んだ「反復」=ループ処理です。
添付ファイルは1件のこともあれば、3件のこともあるので、「1件ずつ繰り返す」形で処理します。
ループの中でやることは、ドキュメントライブラリーへの保存と、添付ファイルテーブルへの記録の2つです。
後半:承認から結果通知まで
続いて後半部分の、承認から結果通知までです。ここにはいくつか「条件分岐」の処理が出てきます。
条件分岐を書く場合は、字下げで「条件の中の処理」を表現しておきましょう。
- 課長にTeamsで承認依頼を送信し、回答を待つ
- 課長の結果で分岐 ★分岐
- 却下の場合 → リストを更新 → 申請者に却下メールを送信 → フロー終了
- 承認の場合 → リストを更新し、次の処理へ
- 金額が30万円以上かで分岐 ★分岐
- 30万円以上の場合 → 何もせず、次の処理へ
- 30万円未満の場合 → リストを更新 → 申請者に承認メールを送信 → フロー終了
- 部長にTeamsで承認依頼を送信し、回答を待つ
- 部長の結果で分岐 ★分岐
- 却下の場合 → リストを更新 → 申請者に却下メールを送信 → フロー終了
- 承認の場合 → リストを更新(部長の承認情報)→ 次の処理へ
- 申請者に承認メールを送信
分岐の書き方には好みがあり、分岐の中に入れ子のように分岐を入れていく書き方もできます。
しかし、分岐が多くなる場合、入れ子形式ではフローの可読性が悪くなり、あとから修正するのも大変です。
今回のように「条件に合わなければ、その場でフローを終了する」形にすれば、分岐の入れ子が深くならず、フローも読みやすくなります。
ぜひ真似してみてください!
データ設計
設計の最後は、データ設計です。
アルゴリズム設計で「リストを更新」「テーブルに登録」と書きましたが、では、どんなテーブルが必要なのか?
まずテーブルの一覧を書き出してから、それぞれの中身を設計していきます。
必要なテーブル一覧
必要なテーブルは、以下の2つです。

それから、テーブルではないので一覧には載せていませんが、添付ファイルの実体(ファイルそのもの)の保存場所として、SharePointのドキュメントライブラリーも使います。
申請IDごとのフォルダを作って、そこにファイルを保存していくイメージです。
申請一覧テーブルのカラム定義
1つずつ全部は解説しませんが、設計の判断ポイントに絞ってお話しします。

ポイント1:申請者と申請部署は「テキスト型」
SharePointにはユーザー型という便利な型もありますが、今回はあえてテキストにしています。
理由は、申請した「時点」の情報を、そのまま記録として残したいからです。
ユーザー型は、Azureに登録された最新のユーザー情報を取得しているため、その後の異動や組織変更で表示が変わってしまうことがあります。
申請書は記録なので、スナップショットとして固定保存する、という考え方ですな。
ポイント2:金額は「数値型」
アルゴリズム設計で「金額が30万円以上かで分岐」と書きました。
数値として比較するので、テキストではなく必ず数値型にします。
ポイント3:ステータスは「選択肢型」
申請中/一次承認済/最終承認済/却下、の4つから選ぶ形です。
自由入力にすると表記ゆれが起きて、分岐の条件が安定しなくなるので、選択肢で固定します。
ポイント4:課長と部長の承認情報は、それぞれ別の列に
部長の列は、30万円以上の申請のときだけ記録されて、未満のときは空欄のままです。
実は、ここはデータベース設計の好みが分かれるところです。
承認者ごとに横へ列を増やしていく形だと、承認者が3人、4人と増えるたびに、列がどんどん横に伸びてしまいます。
そのため、承認者が多い場合や、増える可能性がある場合は、承認情報を別のテーブルに分けることもあります。
今回の承認者は課長と部長の2人で、これ以上増えない前提なので、はじめての方にも分かりやすいよう、1つのテーブルで完結するシンプルな設計にしました。
申請添付ファイルテーブルのカラム定義

なぜ添付ファイルを別テーブルにするのでしょうか?
理由は、添付ファイルが「1つの申請に複数」あるからです(例:見積書と仕様書で2件)。
1件の申請に、複数のファイルがぶら下がる「1対多」の関係を表現するために、テーブルを分けて、申請IDで紐づけます。
アルゴリズム設計で、添付ファイルを「ループで1件ずつ処理」と書いたのを思い出してください。
ループで1件処理するたびに、このテーブルに1行登録される。設計とデータが、ちゃんと対応しているわけです。
実は、ここも設計の選択肢があるところです。
そこで今回は、あえてフローでドキュメントライブラリーにコピーして、その保存先をこのテーブルで管理する形にしました。
ファイルURLには、ドキュメントライブラリーのリンクが入るので、承認者はこのリンクから、見積書をすぐ開けますぞ!
さいごに
この記事は、Power Automate入門の「申請・承認フロー開発シリーズ」の3回目で、備品購入申請システムの「要件定義」と「設計」の一連の流れをやっていきました。
流れをおさらいすると、以下のようになります。
- 現状の業務フローを絵にして、課題を洗い出し、改善策を考えて、要件定義に落とし込む
- 改善後の業務フローを描いて、必要なフローを確認したら、Excelなどに箇条書きで処理の流れを書き出して、アルゴリズム設計をする
- 必要なテーブルを洗い出して、列名やデータ型を設計する
この手順は、今回の備品購入申請に限らず、どんな業務の自動化でも同じように使えます。
ぜひ、皆さんの業務でも試してみてください。
次回は、開発に入る前のもう1つの準備、開発の「環境」や「ソリューション」について解説しますぞ!











