ミムチ

Power Automateの「備品購入申請システム開発」シリーズの第3回目ですぞ!

パワ実

第3回目の今回は、備品購入申請システムの「要件定義」と「設計」を、実際にやっていきます。

第2回目では、フローの基本的な仕組みや、変数とデータ型、プログラミングの基本処理3つなど、開発に必要な基礎知識を学びました。

【Power Automate入門】備品購入申請システム#2 ~Power Automateで必要な基礎知識を学ぶ!~第2回目の今回は、Power Automateを開発するために必要となる、フローの基本的な仕組み、変数とデータ型、関数等について学んでいきましょう!...

第3回目の今回は、2回目に学んだ知識を使って、現状の業務の課題整理から、要件定義、フローのアルゴリズム設計、テーブル設計まで、システム開発の「上流工程」を一気にやっていきましょう!

この記事でわかること
  1. 業務の課題を「要件」に言語化する、要件定義の手順
  2. Excelの箇条書きでできる、フローのアルゴリズム設計のやり方
  3. SharePointリストのテーブル設計と、データ型の決め方

Power Automateについて詳しく学びたい方は、ぜひパワ実のPower Automate入門書もご覧ください!

Power Automate入門書を出版しました! パワ実 ついに、私のPower Automate入門書も出版されました! ミムチ 「ゼロから学ぶ」シリーズの第2弾ですぞ! ...

YouTube動画で見たい方は、こちらからどうぞ!

今回実施するところ

このシリーズでは、Power AutomateとPower Appsを使って、申請・承認フローを一から作っていきます。

第3回となる今回は、いよいよ開発の最初のステップ、「要件定義」と「設計」を実際にやっていきます!

現状の業務フローと課題の整理

最初に、今の業務がどのように回っているかを、整理するところから始めます。

現状を把握しないままシステムを作り始めると、途中で「あの機能も必要だった」と手戻りが発生したり、完成してから「欲しかったものと違う」となったりします。

ミムチ

まずは「現状」を絵に描いて、見える化しますぞ!

現状の業務フロー

現状の備品購入申請は、以下のようになっています。

現状の備品購入申請
  1. 申請者は、Excelの申請ファイルを作成し、メールに添付して上司に送る
  2. 上司は添付ファイルを確認して、承認か却下を判断する
    ※金額が30万円未満:課長のみ/30万円以上:課長→部長
  3. 申請ファイルは、共有フォルダに手作業で保管する
ミムチ

メールと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などに、簡単な箇条書きで整理しています。

改善後の業務フロー
  1. 申請者が、備品購入申請アプリで申請内容を入力し、登録する
  2. 申請データが、SharePointリストに登録される
  3. アプリからPower Automateが呼び出される ➡★申請・承認フロー
  4. 申請の添付ファイルは、SharePointドキュメントライブラリーに保存される
  5. 課長にTeamsで承認依頼が届き、承認/却下を登録
  6. 承認/却下の結果がSharePointリストに登録される
  7. 30万円以上であれば、部長にTeamsで承認依頼が届き、承認/却下を登録
  8. 承認/却下の結果がSharePointリストに登録される
  9. 課長、(30万円以上なら)部長の承認/却下の結果が、申請者にメールで通知される

①〜②は、Power Appsの標準機能なので、フローは不要です。

そして以降を担当する、今回必要なPower Automateフローは「1本」だけです。

Power Automateの承認機能には「相手の回答を待つ」仕組みがあるので、申請から承認、記録、通知まで、1本のフローで完結できます。

フローの分け方には色々あり、実際には、最初の承認依頼と2回目の承認依頼を分けたり、ドキュメントの保存部分を別フローにする場合もあります。

パワ実

複数のフローに分けた方が、保守性や再利用性は向上しますが、設計がやや複雑になるため、今回はシンプルに1本のフローで構築していきます。

アルゴリズム設計

それでは、フローの中身を設計していきます。これが「アルゴリズム設計」です。

やることはシンプルで、フローが実行する処理を、上から順番に、箇条書きで書き出すだけです。

私はExcelを使うのをおすすめしています。

ミムチ

特別なツールが要らず、行の追加や並べ替えがすぐでき、実装のときは、そのままチェックリストになりますぞ!

前半:申請受付から添付ファイル保存まで

まず前半、申請受付から添付ファイル保存までを書き出したものが、こちらです。

フローの流れ(~添付ファイル保存)
  1. トリガー:Power Appsからフローを呼び出す(引数:申請ID)
  2. 変数の初期化:保存先フォルダパス
  3. 申請IDをもとに、SharePointから申請データを取得
  4. 添付ファイルを取得し、1件ずつ処理 ★ループ処理
    • ドキュメントライブラリーに保存
    • 添付ファイルテーブルに1行登録

トリガーでは、どの申請かが分かるように、アプリから申請IDを引数として受け取ります

そして④が、前回学んだ「反復」=ループ処理です。

添付ファイルは1件のこともあれば、3件のこともあるので、「1件ずつ繰り返す」形で処理します。

ループの中でやることは、ドキュメントライブラリーへの保存と、添付ファイルテーブルへの記録の2つです。

後半:承認から結果通知まで

続いて後半部分の、承認から結果通知までです。ここにはいくつか「条件分岐」の処理が出てきます。

条件分岐を書く場合は、字下げで「条件の中の処理」を表現しておきましょう。

フローの流れ(承認~結果通知)
  1. 課長にTeamsで承認依頼を送信し、回答を待つ
  2. 課長の結果で分岐 ★分岐
    • 却下の場合 → リストを更新 → 申請者に却下メールを送信 → フロー終了
    • 承認の場合 → リストを更新し、次の処理へ
  3. 金額が30万円以上かで分岐 ★分岐
    • 30万円以上の場合 → 何もせず、次の処理へ
    • 30万円未満の場合 → リストを更新 → 申請者に承認メールを送信 → フロー終了
  4. 部長にTeamsで承認依頼を送信し、回答を待つ
  5. 部長の結果で分岐 ★分岐
    • 却下の場合 → リストを更新 → 申請者に却下メールを送信 → フロー終了
    • 承認の場合 → リストを更新(部長の承認情報)→ 次の処理へ
  6. 申請者に承認メールを送信

④「部長への承認依頼」に来るのは、金額が30万円以上で、課長が承認した申請だけです。

それ以外は、その前の分岐までで、すべて終了しているからです。

分岐の書き方には好みがあり、分岐の中に入れ子のように分岐を入れていく書き方もできます。

しかし、分岐が多くなる場合、入れ子形式ではフローの可読性が悪くなり、あとから修正するのも大変です。

パワ実

今回のように「条件に合わなければ、その場でフローを終了する」形にすれば、分岐の入れ子が深くならず、フローも読みやすくなります。

ぜひ真似してみてください!

データ設計

設計の最後は、データ設計です。

アルゴリズム設計で「リストを更新」「テーブルに登録」と書きましたが、では、どんなテーブルが必要なのか?

まずテーブルの一覧を書き出してから、それぞれの中身を設計していきます。

必要なテーブル一覧

必要なテーブルは、以下の2つです。

それから、テーブルではないので一覧には載せていませんが、添付ファイルの実体(ファイルそのもの)の保存場所として、SharePointのドキュメントライブラリーも使います。

申請IDごとのフォルダを作って、そこにファイルを保存していくイメージです。

申請一覧テーブルのカラム定義

1つずつ全部は解説しませんが、設計の判断ポイントに絞ってお話しします。

ポイント1:申請者と申請部署は「テキスト型」

SharePointにはユーザー型という便利な型もありますが、今回はあえてテキストにしています。

理由は、申請した「時点」の情報を、そのまま記録として残したいからです。

ユーザー型は、Azureに登録された最新のユーザー情報を取得しているため、その後の異動や組織変更で表示が変わってしまうことがあります。

ミムチ

申請書は記録なので、スナップショットとして固定保存する、という考え方ですな。

また、SharePointリストには「登録者」という列が最初から用意されていて、誰が登録したかを自動で記録してくれています。

そのため、結果メールの宛先は、この登録者列から取得します。

申請日も同じで、「登録日」という既存列をそのまま使うので、わざわざ列を作る必要はありません。

ポイント2:金額は「数値型」

アルゴリズム設計で「金額が30万円以上かで分岐」と書きました。

数値として比較するので、テキストではなく必ず数値型にします。

ポイント3:ステータスは「選択肢型」

申請中/一次承認済/最終承認済/却下、の4つから選ぶ形です。

自由入力にすると表記ゆれが起きて、分岐の条件が安定しなくなるので、選択肢で固定します。

ポイント4:課長と部長の承認情報は、それぞれ別の列に

部長の列は、30万円以上の申請のときだけ記録されて、未満のときは空欄のままです。

パワ実

実は、ここはデータベース設計の好みが分かれるところです。

承認者ごとに横へ列を増やしていく形だと、承認者が3人、4人と増えるたびに、列がどんどん横に伸びてしまいます。

そのため、承認者が多い場合や、増える可能性がある場合は、承認情報を別のテーブルに分けることもあります。

今回の承認者は課長と部長の2人で、これ以上増えない前提なので、はじめての方にも分かりやすいよう、1つのテーブルで完結するシンプルな設計にしました

申請添付ファイルテーブルのカラム定義

なぜ添付ファイルを別テーブルにするのでしょうか?

理由は、添付ファイルが「1つの申請に複数」あるからです(例:見積書と仕様書で2件)。

1件の申請に、複数のファイルがぶら下がる「1対多」の関係を表現するために、テーブルを分けて、申請IDで紐づけます。

パワ実

アルゴリズム設計で、添付ファイルを「ループで1件ずつ処理」と書いたのを思い出してください。

ループで1件処理するたびに、このテーブルに1行登録される。設計とデータが、ちゃんと対応しているわけです。

実は、ここも設計の選択肢があるところです。

アプリから申請すると、添付ファイルは一度、SharePointリストの「添付ファイル列」に保存されます。

そのため「そのまま添付ファイル列で管理する」という方法もあります。

ただ、添付ファイル列のファイルは、申請を1件ずつ開かないと中身を確認できず、ファイルだけを一覧で見たり、検索したりすることができません。

一方、ドキュメントライブラリーに保存しておけば、ファイルを一覧で管理できますし、URLを取得して、承認依頼にリンクとして載せることもできます。

そこで今回は、あえてフローでドキュメントライブラリーにコピーして、その保存先をこのテーブルで管理する形にしました。

ミムチ

ファイルURLには、ドキュメントライブラリーのリンクが入るので、承認者はこのリンクから、見積書をすぐ開けますぞ!

さいごに

この記事は、Power Automate入門の「申請・承認フロー開発シリーズ」の3回目で、備品購入申請システムの「要件定義」と「設計」の一連の流れをやっていきました。

流れをおさらいすると、以下のようになります。

  1. 現状の業務フローを絵にして、課題を洗い出し、改善策を考えて、要件定義に落とし込む
  2. 改善後の業務フローを描いて、必要なフローを確認したら、Excelなどに箇条書きで処理の流れを書き出して、アルゴリズム設計をする
  3. 必要なテーブルを洗い出して、列名やデータ型を設計する

この手順は、今回の備品購入申請に限らず、どんな業務の自動化でも同じように使えます。

パワ実

ぜひ、皆さんの業務でも試してみてください。

ミムチ

次回は、開発に入る前のもう1つの準備、開発の「環境」や「ソリューション」について解説しますぞ!

ABOUT ME
パワ実(元Microsoft MVP)
2021年からPower Platformの勉強中。 2023年にIT系・コンサルタントに転職し、仕事でPower Platformを活用したコンサルを行っています。 2025年にMicrosoft MVP for Business Applications 受賞。Power Platformを使っていく中で、知りえた情報をブログ、Youtube、Xで発信しています。 2025年8月~現在は、フリーランスとして、Power Platform系ITコンサルタントとして活動中。 Power Platformに関するご相談は以下のページからお願いします! https://www.powerplatformknowledge.com/contact/