新型コロナ対策に伴う非常事態宣言の解除を受け、出社率を段階的に上げている企業も多いですよね。こうした中で課題となってくるのが、出社率をいかにしてコントロールするかです。そこで今回は、出社率を管理するスマホアプリの作り方を紹介します。

出社率をコントロールする方法としては、出社を希望する社員に予定を提出してもらい、定めた出社率を超えないように会社が出社人数を抑制したり、シフトを決めて計画的に出社をしてもらったりすることが考えられます。

今回は出社希望日を提出してもらう方法でアプリを作成します。出社率はExcelシートを使って集計をすればコントロールできそうですが、人数が多かったり、情報が頻繁に更新されたりするほど運用は難しくなります。最近では出社率が管理出来るアプリも数多く利用されていますが、Microsoft 365を活用すればアプリを自社流にカスタマイズして柔軟に運用することも可能なので、ぜひ試してみて下さい。

(1)出社率管理アプリについて

今回の出社率管理アプリは、「予定入力」と「結果表示」の2画面で構成しています。そのため、画面別に2回に分けて説明します。

予定入力画面では、当日から1週間分のカレンダーが表示されます。「在宅」「出社」「休み」のいずれかの区分を選択し、出社の場合は出社理由や業務内容などのコメントを入力します。入力した内容は区分を選択したり、コメントを入力したりしたタイミングで自動的に保存される仕組みです。入力した内容は何度でも修正ができるので、刻々と変化する予定の変更に柔軟に対応可能です。

結果表示画面では各ユーザーから入力された内容を集計し、円グラフや一覧表に出社率を表示します。1週間分の出社率を表示していますので、定めた出社率を超えている日があった場合、あらかじめユーザーに気づかせることができるため、早い調整のアクションを起こせます。以下、予定入力画面から紹介します。

(2)Common Data Serviceでデータソースを作成

本連載ではExcelを用いた例が多いのですが、今回は全社で使用することを想定したアプリですので、大量データの管理や大多数の同時アクセスに耐えられるデータベースが必要となります。そのため、Power Appsからダイレクトに操作が可能なCommon Data Service(以下CDS)を使用します。CDSは、SQLを知らなくてもエンティティ(テーブル)が作成でき、Power Appsアプリから簡単にデータ連携ができるといったメリットがあります。

エンティティはPower AppsのTOPメニューから「データ」、「エンティティ」、「+新しいエンティティ」の順にクリックをしていくと、作成メニューが表示されます。表示名を入力し、データを格納するフィールドを作成していきます。今回のエンティティの内容は下図を参考に設定して下さい。

(3)Power Appsで空のキャンパスを用意

Power Appsを起動して、空のキャンパスを作成します。TOPメニューの「アプリ」から「+新しいアプリ」を選択して、「携帯電話レイアウト」をクリックします。

(4)データソースを追加

用意したキャンパスにデータソースを追加します。追加するデータソースは先程作成したCDSのWorkChkとOffice 365ユーザーです。Office365ユーザーを追加するとユーザー名や所属名を取得できます。

(5)アプリを起動した時の動作を設定

Power Appsではアプリを起動したタイミングで何かしらのアクションを起こすよう、設定をすることができます。今回のアプリでは起動したタイミングでメールアドレス、ログインユーザーのユーザー名と所属を取得して、それぞれ変数をセットするように設定します。

ツリービューからAppを選択して、プロパティOnStartにSet関数をセットします。Set関数を使うと変数を作成して、値をセットすることが出来ます。OnStartの内容は下図を参考に入力をしてみて下さい。

(6)予定入力画面を作成

予定入力画面を作成します。下図のアプリ画像にあるタイトルや背景画像は、挿入メニューにあるラベルや図を編集して作成しています。タイトル下にある日付選択ボタンはラベルのテキストプロパティをそれぞれ「≪」「≫」と設定しています。

プロパティOnSelectに関数を書き込むと、押した時の動作を設定することができます。OnStartで取得した現在日を1日単位で変更できるよう、DateAdd関数を設定しています。日付を表示するラベルやボタンの動作は下図に記載していますので参考にして下さい。

カレンダーは挿入メニューからギャラリーを選択して作成します。ギャラリーを使うとひもづけたデータセットの中身を一覧で表示させることができます。ひもづけるデータセットは、プロパティOnVisibleを使用して、スクリーンを開いたタイミングでコレクションというカタチで作成しています。

ClearCollectを使用するとコレクションが作成できます。今回はCalendarという名称で作成しました。Calendarには0から6の数値がセットされており、ギャラリーにひもづけると0から6の数値が縦に並んで表示されます。日付ラベルはこの値を受け取り、DateAdd関数を使って選択した日付を起点にその値を足していくことで1週間分のカレンダーを表示させています。

日付の書式は「月日(曜日)」としています。設定方法は下図を参考にして下さい。区分選択用のラジオボタンは「在宅」、「出社」、「休み」を選択肢として設定しています。

「ラジオボタンを選択したとき」や「入力フォームにコメントを書き込んだ」タイミングでデータの作成や更新をするにはプロパティOnChangeを使用します。最初に登場するIf文の条件では、「ログインユーザーのメールアドレス」と「ギャラリーで選択した日付」が一致するデータをCDSのWorkChkから検索し、一致するデータがなければ「作成」を、あれば「更新」をする処理に入るよう分岐させています。データの有無はCountIfを使用して一致する件数をカウントし、結果が0であった場合はデータなしと判断しています。

データを作成する場合はPatch関数でDefaultを指定します。中カッコの中身が更新内容です。コロンの左側が列名、右側がセットをする内容です。アプリ起動時に取得したログインユーザーの情報を使用し、Accountにメールアドレス、Nameに氏名、Belongsに所属をセットしています。WorkDayには選択した日付、WorkKbnには選択した区分、Reasonにはコメントをセットしています。

データを更新する場合は、選択した日付データの、区分とコメントのみを更新するようにセットしています。

登録済みのデータを呼び出すにはプロパティDefaultを使用します。LookUp関数で登録済みのデータを検索し、WorkChkにデータが存在すればその値を表示、なければ空白を返しています。

最後に日付ラベルの色を曜日によって変えてみます。色はプロパティColorでコントロールすることができます。選択した日付の曜日をText関数で取得し、Switchを使って条件分岐をさせています。土曜日の場合は青、日曜日の場合は赤、その他の場合は黒で表示されるよう設定しています。

(7)アプリを実行

ここまで設定できたら、早速テストをしてみます。アプリは編集画面からF5キーで起動できます。アプリが起動したらラジオボタンを選択したり、コメントを入力したりしてみましょう。CDSに登録したデータはExcelで確認することができます。

以上、出社率管理アプリの作り方を説明しました。今回はCDSに登録した結果をExcelで確認しましたが、次回はアプリでも登録内容が確認できるように、一覧表やグラフを使った表示の仕方を解説します。

著者プロフィール

○三島正裕

1978年島根県生まれ。ディーアイエスソリューション株式会社所属。クラウドサービスを中心としたシステム提案やアプリケーション開発をする傍ら現在はマイクロソフト製品の活用事例「Office 365徹底活用コラム」を自社サイトで執筆中。