M365とTeamsアダプティブカードを使用したチーム運用

今回、こちらのアドベントカレンダーに参加させていただいております

https://adventar.org/calendars/10100

# 初めにこの一年を振り返って

この一年を通して、M365を使用して色々と作りました
業務改善の提案をしたりとしましたが
M365中心で自チーム運用のツールを作成してみて色々な知見が得られました

今回は、自身のチーム用に作成した、報告ツールについて書きたいと思います
    
## 構成はこんな感じ
　チーム運用でＭ３６５を使用したノーコード、ローコードで構築することにして
  　以下のような構成で、運用開始
   
  　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3701343/4af20265-d6b1-8276-2e41-bee24caaa8c8.png)

***
## こだわったこと１ 【画面構成】

実際使用しているアダプティブカードのイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3701343/b74b889b-5365-936d-82de-674268926cc8.png)

入力内容は
・勤怠予定時間
・勤務状況
・勤務場所
・タスク予定（タスク名※1、作業カテゴリ、割合※2）
・コメント

※1：タスクはリーダが事前にメンテナンスしてメンバーへの割り当てを設定しておく
　 基本的には毎日チェック、
　障害発生時は割り当てられたメンバーにタスクが表示されるように自動設定
※2：割合は、一日の作業量を割合で朝夕で1～10まで入力させて、
　夕方の報告後に一日の作業時間に対して時間に算出しなおす
　この方が精神的に入れやすいと思ったので(考えさせたくない)

##  こだわったこと２【予定タスクは複数あるので増減可能に】

ヘッダ行は固定で作成済としておいて
行自体は、カード送信時に対象の件数分テーブル行を作成するようにしておく※
その際に、各行の変数名(id)には、ループの添え字(何番目)かをくっつけるようにしておく
※メンバーが担当してアクティブなものや、保守(障害)発生しているタスクを動的に生成するため

~~~
"id": "taskEx@{items('Apply_to_each_2')}"
~~~

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3701343/fa446078-709b-d655-e35e-5f9de27fafc8.png)

~~~
{
    "type": "TableRow",
    "cells": [
        {
            "type": "TableCell",
            "items": [
                {
                    "type": "Input.ChoiceSet",
                    "choices": @{variables('TaskList')},
                    "placeholder": "追加タスク",
                    "id": "taskEx@{items('Apply_to_each_2')}"
                }
            ]
        },
        {
            "type": "TableCell",
            "items": [
                {
                    "type": "Input.ChoiceSet",
                    "choices": [
                        {
                            "title": "開発",
                            "value": "開発"
                        },
                        {
                            "title": "保守",
                            "value": "保守"
                        },
                        {
                            "title": "調査",
                            "value": "調査"
                        }
                    ],
                    "id": "categoryEx@{items('Apply_to_each_2')}",
                    "spacing": "None",
                    "placeholder": "作業"
                }
            ]
        },
        {
            "type": "TableCell",
            "items": [
                {
                    "type": "Input.Number",
                    "min": 0,
                    "max": 10,
                    "id": "rateEx@{items('Apply_to_each_2')}"
                }
            ]
        }
    ]
}
~~~

***

## こだわったこと３ 【アダプティブカードの28kb制限対応】

アダプティブカードの送信には28kbまでの制限があるため、
項目を増やしたり、コンボボックスに選択肢を多く入れると、すぐに28Kbを超えてしまいます
ただ、アダプティブカードデザイナーで作ると、可読性のためインデントの空白、改行などが多く含まれるため
それを除去するだけでもかなりの圧縮になります
圧縮行わないカード内容の変数を作成して格納して起き、圧縮用の変数に対して、余剰文字を除去した結果を格納して送信することで、28Kb制限をクリアできました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3701343/66213126-fdc4-785e-5494-5627e101c99b.png)

以下のように置き換えして除去してます
~~~
replace(replace(variables('AdCardBase'),decodeUriComponent('%0D'),''),' ','')
~~~

***

## こだわったこと４ 【メンバーへのフィードバック】

１）メンバーが行う、工数算出の手間を軽減
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3701343/4c0b8a6d-3d80-f0a7-a842-7492f0714dee.png)

２）管理のインタフェースとして、SharePointを使用する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3701343/b745b7c0-9bc1-8f8a-6e8e-d4e90551aa95.png)

３）運用に必要な情報の可視化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3701343/671bf965-65b7-1a8c-4585-c90184fca4ab.png)

***

## 日々、運用をしてみて

８月にその成果？をライトニングトーク枠ですがあるコミュニティのイベントで登壇をして
以下がその資料です

<script async class="docswell-embed" src="https://www.docswell.com/assets/libs/docswell-embed/docswell-embed.min.js" data-src="https://www.docswell.com/slide/53GG8E/embed" data-aspect="0.5625"></script><div class="docswell-link"><a href="https://www.docswell.com/s/KanameShiga/53GG8E-2024-08-31-172456">チームリーダーこそPower PlatformとM365を学ぼう by @KanameShiga</a></div>

## この先を考えて

日々、この構成で運用を行っていますが
フィードバックは、メンバーに対して行っていましたが
その日で使用されるものになっている為、今後は蓄積したデータを
活用する方法を模索しています。

***

# 以上、閲覧ありがとうございました。