グループアドレスをもとにチームのメンバーを一致させる

Microsoft Teamsのチームにユーザーを追加するときグループアドレスを使用すると、操作した時点のグループアドレスに含まれるユーザーが追加されます。しかし、グループアドレスに含まれるユーザーが変更されてもチームのユーザーは更新されません。

この記事ではPower Automateを使ってグループアドレスに含まれるメンバーを自動的にチームに追加する手順を紹介します。追加手順だけ示しますが、簡単な変更でチームから削除すべきメンバを抽出することもできます。

フローの全体像

実際にはスケジュールトリガで実行するのがいいでしょう。

アクションの設定

作成 グループアドレス

グループアドレス(メールアドレス)を指定します。

グループの一覧

Office365グループコネクタ

「行をフィルターする」に mail eq ‘outputs(‘作成 グループアドレス’)’

作成 グループアドレスのID

first(outputs(‘グループの一覧’)?[‘body’]?[‘value’])?[‘id’]

グループ メンバーの一覧表示

Office365グループコネクタ

グループIDに outputs(‘作成_グループアドレスのID’)

選択 グループアドレスメンバーのユーザーID

元に「グループ メンバーの一覧表示」のbodu/value

マップのkey userID,
値を入力します 「グループ メンバーの一覧表示」のユーザーID

作成 チームのID

メンバーを追加したいチームのIDを入力します

HTTP 要求 V2 を送信する

URIを以下のように設定。グループIDのところに「作成 チームのID」を入れる。

https://graph.microsoft.com/v1.0/groups/{グループID}/transitiveMembers/microsoft.graph.user?$select=id,displayName,userPrincipalName

JSON の解析

Contentに「HTTP 要求 V2 を送信する」の本文、スキーマを以下のように設定。

{
    "type": "object",
    "properties": {
        "value": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "displayName": {
                        "type": "string"
                    },
                    "userPrincipalName": {
                        "type": "string"
                    }
                },
                "required": [
                    "id"
                ]
            }
        }
    }
}

選択 チームのメンバーのIDのみ

元に「選択 チームのメンバーのIDのみ」のbodu value

マップのkey userID
値を入力しますに JSONの解析の Body id

アレイのフィルター処理

グループアドレスメンバーのユーザーID配列から、チームメンバーのユーザーID配列に含まれない要素を抽出する操作をする。

From

body(‘選択_グループアドレスメンバーのユーザーID’)

Filter Queryは以下の通り。

左辺 contains(body(‘選択_チームのメンバーのIDのみ’), item()?[‘userID’])

判定式 「異なる」 (is not equal to)

右辺 true ※数式から記入する

チームにメンバーを追加

最後にMicrosoft Teamsコネクタの「チームにメンバーを追加する」アクションで、「アレイのフィルター処理」の結果で得られるユーザーのGUID配列をチームに追加して完了。

アレイのフィルター処理を書き換えれば、フロー実行の時点でチームに含まれるがグループアドレスに含まれないユーザーを抽出することもできます。

EVと火災

電気自動車は巨大なエネルギーを蓄積した走行用電池を内蔵しているため、火災時に危険性が高いといわれています。ただ、内燃機関はそもそもガソリンなどをエンジン内で燃焼させて動いていること、ガソリンが漏れて引火したら爆発が生じるこから、火災時に深刻な影響を及ぼすのは自動車一般のリスクです。

また、リチウムイオン電池の種類や個別の車種の構造にも由来することに注意が必要です。特に日産リーフは火災の報告が非常に少ないことで知られています。

リーフと火災

残念なことに3代目リーフはバッテリーとの因果関係を否定できない火災が発生しました(東洋経済, 2026/3/27)。日本のメーカーである日産、そのEV開発を支えたAESCには安全に対する深い信頼性を実現するように期待します。

以下は国交省のリコール不具合情報で調べた情報と報道によるもの。

  • 2021年04月01日 初代リーフ ZE0
    山中で車両から出火した。
    出火元や原因の特定には至らなかった。
  • 2021年08月28日 2代目リーフ ZE1
    大雨によって冠水した車両を駐車場にて保管していたところ出火した。
    原因の特定には至らなかった。
  • 2022年09月21日 2代目リーフ ZE1
    車両から出火した。車両を全焼した。
    外部からの熱源により火災に至ったものと推定
  • 2023年01月06日 2代目リーフ ZE1
    出火箇所と推定されたバッテリーモジュールを分解したが、焼損が激しく、原因の特定には至らなかった。
  • 2025年2月24日 2代目リーフ ZE1
    に鳥取県倉吉市のディーラーで急速充電中に出火。
    日産、鳥取のEV火災 出火原因は灯油こぼしたまま喫煙 車両や充電器以外と確認日刊自動車新聞, 2025/3/26

NFCタグでMicrosoft365を活用する

NFC タグは記録した情報を非接触でスマホに送信できる安価なデバイスです。iPhoneでもAndroidでも、最近のスマホなら近づけるだけでNFCタグの情報を読み取ります。

NFCタグにURLを記録させれば、スマホで特定のURLを開くようにできます。このサイトではTeamsやPowerAppsとクエリパラメータを組み合わせて便利なリンクを作成す手法を紹介してきました。作業現場でユーザーにURLを伝える手段としてQRコードを想定してきましたが、NFCタグも有用な手段です。

NFCタグは容量にバリエーションがあります。入手性の良いNFCタグを紹介します。

チップ容量適する用途製品例単価
NTAG213144バイトサイトURL
少人数のTeams宛先
サンワサプライ
MM-NFCT
120円/個
NTAG215504バイトPowerApps
長いURL
ctunk120円/個
NTAG216888バイトクエリパラメータが長いSwitchBot
NFCタグシール
300円/個

NFCタグへの書き込みは無料のアプリで行えます。NFC Toolsが無料で使いやすい代表的アプリです。

iOS

Android

PowerAppsで作る安価な施設利用記録簿

概要

ダイアル錠とPowerAppsを組み合わせることで、。施設利用者を抜け漏れなく把握します。

紙の使用記録簿を使っているようなケースを想定しています。

想定する問題

不正な利用があっても、行為者を特定できず、効果的な対策ができない。
ルールを厳重にしたところで不正行為者は従わないので、多数の善良な利用者が苦しむが不正利用は抑制できない。

推定真因

  • ルールを知らない
  • やってもバレないと思っている

対策方針

利用者と利用日時を抜け漏れなく把握する。
抜けもれない情報伝達と不正利用者の容疑者絞り込み。

対策具体案

  • 施設の出入り口にダイアル錠を設置して施錠する。例 屋外設置可能なダイアル錠
  • ダイアル錠の暗証番号はPowerAppsのアプリ上で表示する。アプリのアクセス日時とユーザーを記録することで、抜け漏れなく利用者を把握する。
  • 暗証番号はランダムな時期に変更する。
  • 出入り口にQRコードを掲示してPowerAppsに誘導する動線を設ける。

対策の前提

  • すべての利用者がスマートフォンでPowerAppsにアクセスできる。
    • 施設利用者をMicrosoftアカウントで記録するため。
  • ダイアル錠の暗証番号は不定期に変更する。
    • 暗証番号を記憶してアプリを迂回させるのを予防するため。

アプリの設計

アプリには考えうる利用者全員に実行可能なアクセス権を与える。

アプリは3画面構成。各画面の満たす機能を後述する。

パラメータ関数で対象施設を決定する。

1 施設選択画面

パラメタで対象施設を指定できなかった場合に表示する。

施設名の一覧を表示し、選択することで「2 暗証番号表示画面」へ遷移する。

2 暗証番号表示画面

この画面を表示した時点で、アクセスログリストにユーザーと日時、施設名を記録する。

暗証番号の表示と、利用ルールの表示。
施設異常を施設管理者に通報できる。

施設管理者は、管理用画面に移動できる。施設管理者は、施設マスタで指定するManagersに含まれるユーザーとする。

3 管理用画面

指定した期間の利用者を一覧する。何日前まで表示するか、日数はユーザーが指定できる。
暗証番号を設定できる。

SharePointリストの設定

1 施設マスタ (MasterFacilities)

全員に読み取り可能のアクセス権限を付与する。
施設管理者に読み書き可能のアクセス権限を付与する。

列名列型説明
タイトル一行テキスト施設名を記入
ID数値
Managersユーザー列(複数)施設管理者のアカウントを指定

2 アクセスログ (Accesslog)

全員に読み書き可能のアクセス権限を付与する。

列名列型説明
タイトル一行テキスト施設名を転記
FacilityID数値施設マスタのIDを指定
CreatedBy (自動)ユーザー記録者=アプリにアクセスしたユーザー
Created (自動)日時アプリにユーザーがアクセスした日時

3 暗証番号マスタ (MasterPINs)

全員に読み取り可能のアクセス権限を付与する。

権限を厳格に運用したいのであれば、PowerAutomateをアプリ管理者アカウントのコネクタを経由してSharePointリスト(読み書きはアプリ管理者のみ権限を有する)を読み取る方式をとる。

列名列型説明
タイトル一行テキスト施設の暗証番号を記入
MasterFacilitiesリストの
タイトル列
参照施設マスタのタイトル列(施設名)を選択させる
MasterFacilitiesリストのID列参照施設マスタのIDを参照する

PowerAppsの詳細

App

App.Fomulas

App.StartScreen

If(IsBlankOrError(gblParamFacility),
SelectFacilityScreen,
ShowPINScreen
)

1 施設選択画面 SelectFacilityScreen

2 暗証番号表示画面 ShowPINScreen

3 管理用画面 ChangePINScreen

サンプルプログラム

日産アリアに乗り換えました

2017年10月の発売当初から日産リーフ2代目に8年乗ってきました。2025年7月に日産アリアに乗り換えました。

車の使い方

  • 平日は通勤で使用。往復で60kmほど。
  • 朝は保育園へ子ども送る。
  • 家族構成は夫婦+小さい子ども2人。
  • 休日はショッピングモールなどに車で出かける。
  • 自宅は集合住宅。駐車場は機械式。共用の普通充電設備あり。

乗り換えのきっかけ

  • 子どもが増えたため。
    • 近場を移動する分にはリーフでも問題ないが、帰省など宿泊を伴う遠出で大荷物を積んでいくときにリーフより広い車内が欲しかった。
    • 子どもが産まれたタイミングから、リーフの3代目は待てなかった。

日産アリアを選んだ理由

  • 電気自動車であること
    • 車内が静か。運転席と後席で普通に会話ができる。
    • 運転が楽。アクセルの踏み込みに即応する加速、低速域から高速域まで力強い加速。
    • エアコンをスマホから起動(乗る前エアコン)などの快適機能がある。ただし、最近この点はハイブリッド車でも対応している車が増えてきた。
    • 排気ガスが出ない。せめて自車だけでも子どもに排気ガスを吸わせないようにしたい。
  • 車内が広いこと
    • 運転席、後部座席ともにゆったりとしている。長距離運転でも快適。
    • 遠出の際に車内で授乳するのに便利。リーフでもできるが、広い分だけアリアの方が快適にできる。
  • 高度な運転支援があること
    • 通勤で使うため、疲れ切っている深夜でも安全に帰宅できることが重要。プロパイロット2.0は高速道路で手放し運転も許可されている。
  • 所有欲を満たさせること
    • 品のある内装。毎日通勤で乗って嬉しい気持ちになれそう。
    • 美しい外観。
  • トラブル時に早期対応できる体制があること
    • 通勤で乗る、小さい子どもと乗ることから、トラブルは即対応したい。日産ディーラーが通勤経路上にあるため、万が一トラブルが生じてもすぐに対応できる。

2代目リーフには大変満足していました。たくさんの思い出が詰まった車なので惜しいですが、人生のステージが進んだので車を乗り換えることにしました。

自作の家計簿をGoogleフォームとスプレッドシートで

概要

入力にGoogleフォーム、集計にスプレッドシートを使った家計簿をつくります。各家庭に合わせて内容や費目を修正できます。

目的

PCやスマホの特定アプリ・OSに依存することなく、家族全員で使用できる家計簿を作ります。

入力をできるだけ手間なくすることが最優先の目的です。

集計が支出の総額がわかることが優先であり、費目はだいたいあっていればよいものとします。

支出内容を振り返られるように、支出ごとにメモを残せるようにしたいと思います。

また、入力内容の修正が容易であることも求めます。

作り方

Googleフォームを作成します。上図のように作成します。選択肢と短文回答の形式です。金額は数値入力のみに制約しています。

フォームの回答が入力されるスプレッドシートは以下の構成を想定しています。

A列タイムスタンプ
C列費目
D列金額
E列支払った人
F列備考欄
G列分類(家族 or 個人)

集計用のシートを追加します。集計にはスプレッドシートのクエリ関数を使います。

集計シートのA列には日付を表示しています。以下のように書いています。A3セルが手入力した日付です。A列は次のように書くことで、「2025/7」のような表示になります。

=text(EDATE(A3,1), "yyyy年m月")

集計シートのB2セルとC2セルに「ママ」「パパ」を記入します。B3セルには以下のように記入すると当月の「ママ」かつ「家族」支出の総額が計算されます。

=sum(QUERY('フォームの回答 1'!$A$1:$G,"select D where E='"&B$2&"' and A >= date '" & Text($A3,"yyyy-mm-dd") &"' and A < date '" & Text($A4,"yyyy-mm-dd") &"' and G='家族' order by D desc"))

むすび

GoogleスプレッドシートやMicrosoft Excelにはクエリの集計機能があります。仕事で身に付けた知識を家庭に応用して、快適な家庭運営につなげましょう。

Google Nest Hubによるこども写真の共有とビデオ通話

概要

自宅および祖父母宅でのこども写真共有にGoogleフォトを用いることでGoogle Nest Hubをフォトフレームとする方法を紹介する。同時に祖父母宅へのフォトフレーム共有、自宅-祖父母宅間の簡便なビデオ通話を実現する。

目的

こどもの写真を共有することは、子の成長を感じるのに有用です。我が家でこどもの写真を共有する際の要件を整理しました。

  • 自宅内(ママ・パパ)でこどもの写真を一元的に共有したい。
    • 写真は主にスマートフォンで撮影します。たまにデジタルカメラで撮影したり、写真館で撮影したものが含まれます。
    • ママとパパはスマホは、AndroidとiPhoneで分かれています。
  • 祖父母宅でも最新のこども写真を表示できるようにしたい。
  • 祖父母宅と自宅の間でビデオ通話をできるようにしたい。

実現方法

写真はGoogleフォトにアップロードします。また、共有アルバムに追加します。

自宅および祖父母宅にGoogle Nest Hub Maxを設置します。こどもの写真の共有アルバムを表示する設定とします。

祖父母宅のGoogle Nest Hub Maxには祖父母のGoogleアカウントを紐づけます。自分と祖父母の間でGoogle Meetによる通話を行うことで、Google Nest Hub Maxの通話相手候補に祖父母を表示させます。

結果

写真アルバムの更新はリアルタイムに行われるため、祖父母に喜ばれています。新しい写真が共有されると、祖父母からLINEでリアクションが届きます。

ビデオ通話で動きや声を届けられる点も祖父母に喜ばれました。また、こどもが祖父母と話をしている間に父母はちょっとした家事をこなすなど、リモート託児のようなこともできました。

こども自身も1歳半ごろからGoogle Nest Hub Maxを操作して電話をかけられるようになり、祖父母と話したいときに自分から電話できるようになりました。孫が自分から電話したいといった、と聞くと祖父母はさらに喜びました。

AESCが走行用電池を供給する車種

初代日産リーフZE0から走行用電池を供給してきたAESCがリチウムイオン電池を供給している。公開情報から推測したAESCが走行用電池を供給している車種をまとめた。

車種のリスト

  • Gen4 座間
    三元系ラミネート型
    • 日産リーフ初代 [3]
    • 日産リーフ2代目 [1][3]
    • 日産サクラ [1][3]
    • 三菱eKクロスEV [1][3]
    • 三菱アウトランダーPHEV [1][3]
  • Gen5 茨城
    三元系ラミネート型。エネルギー密度がGen4の1.3倍。[1]
    • ホンダN-VAN e: (2024年に発売予定の商用軽EV[2], 第1棟で生産[4])
    • マツダ (第2フェーズ2025~2027年に投入するEVで使用[4]。第2棟で生産[5])
  • Gen5 イギリス・サンダーランド
    • 日産リーフ3代目[6][7]
  • フランス・ドゥエー 10GWh
    • ルノー5 E-Techエレクトリック [8]
  • 詳細不明
    • BMW [2](米国サウスカロライナ州に新工場を建設する)
    • Renault [2]
    • Mercedes-Benz [2](米国ケンタッキー州に工場を建設中で、そこで生産した電池をメルセデス・ベンツに納める)

出典

  1. https://xtech.nikkei.com/atcl/nxt/mag/at/18/00006/00626/
  2. https://xtech.nikkei.com/atcl/nxt/column/18/01537/00518/
  3. https://www.autocar.jp/post/1117959
  4. https://monoist.itmedia.co.jp/mn/articles/2306/22/news089.html
  5. https://www.reuters.com/article/business/-1000-idUSKBN3040OD/
  6. https://news.kakaku.com/prdnews/cd=kuruma/ctcd=7010/id=108228/
  7. https://news.livedoor.com/article/detail/26489261/
  8. https://toyokeizai.net/articles/-/884181

[PowerApps]入退室管理システム

PowerAppsで部屋の入退室管理システムを作成します。

システムに対する要件

  • 部屋および建物の使用者を管理するシステムである。部屋は必ずひとつの建物に属する。
  • ユーザーは各部屋に対して入室できる。入室した部屋に対して退室できる。入室から退室までの間は、使用中とする。部屋の使用者は、その部屋が属する建物の使用者でもある。
  • 各部屋に対して、ユーザー個人の入室時刻と退室時刻を記録できる。入退出時刻のデータは過去にさかのぼって閲覧できる。
  • 部屋ごとに現在の使用者一覧を表示できる。使用者一覧から簡便に使用者へ連絡ができる。
  • 部屋の使用中の人数が閾値以下になると、退室しようとするユーザーに対して注意喚起を行う。閾値は部屋ごとに設定できる。
  • 建物についても、ユニークな使用者数が閾値を下回ると、退室時に注意喚起がなされる。
  • 退室操作は、他人が行うこともできる。これは退室操作を忘れたユーザーの情報をデータに反映させるため。

データソースの構成

SharePointリストで以下の5つのリストを作成しておきます。各マスタテーブルは、一つ上の階層の値を参照列で関連付けします。

BuildingMaster

列名列の型目的
Title一行テキスト(自動生成)建物名を入れる
ID数値(自動生成)
numUsersToNotify数値建物のユニークな使用者数がこの値以下であれば注意喚起します。
notificationMessage一行テキスト注意喚起で表示するメッセージを指定します。

RoomMaster

列名列の型目的
Title一行テキスト(自動生成)部屋名を入れる
ID数値(自動生成)
BuildingID数値BuildingMasterリストのIDで所属する建物を指定します。
numUsersToAlert数値残り人数が閾値以下のとき、退室に対して注意喚起をするのに用います。
AlertMessage複数行テキスト残り人数が閾値以下のとき、退室に対して注意喚起をするのに用います。
documentURL複数行テキスト部屋に関連する情報をまとめた外部資料へのリンクを示すのに用います。
isActiveはい/いいえ本システムで管理する対象とするかを指定します。

entry_exit_log

ポイントは2つあります。

一つ目に、利用者を特定する情報としてUPNを一行テキスト列で記録することです。一行テキスト列はテキストなのでPatch関数での記述が簡単なこと、委任が可能なことが重要です。

二つ目に、部屋や建物など関連する項目のIDを数値ですべてもっておくことです。これにより同じ部屋の利用者、同じフロアの利用者といった集計を簡便に行えます。

列名列の型目的
Title1行テキスト(自動生成)
ID数値(自動生成)
Start時刻部屋の使用開始日時
End時刻部屋の使用終了日時
isActiveはい/いいえ部屋を使用中か否かを示す
RoomID数値部屋を一意に特定します。
BuildingID数値建物を一意に特定します。
UserPrincipalName一行テキスト部屋を使用するユーザーを示します。UPNを文字列で設定します。
Created Byユーザー (自動生成)部屋を使用するユーザーを示します。
Modified Byユーザー(自動生成)レコードを書き換えたユーザーを示します。これがCreated Byと異なる場合、他人が操作したとわかります。

画面構成

  • 建物選択
    登録された建物を一覧表示します。一覧から建物をひとつ指定します。
  • 建物内の部屋選択
    指定した建物内の部屋を一覧表示し、個々の部屋の使用開始と使用終了を登録できます。部屋をひとつ選択し、部屋の使用者一覧画面に遷移できます。また、建物内の使用者一覧を表示する画面に遷移することができます。
    Paramでこの画面に直接アクセスできるようにします。
  • 建物内の使用者一覧
    指定した建物内の使用者を一覧表示します。個々の使用者に対して簡便に連絡を取ることができます。
  • 部屋の使用者一覧
    指定した部屋の使用者を一覧表示します。個々の使用者に対して簡単に連絡できます。指定した部屋の使用開始または使用終了を登録できます。
    操作者は自分以外の使用者について使用終了できます。このとき使用者終了されたユーザーに通知を行うほか、使用者自身が使用終了するときと同じ処理を行います。
    Paramでこの画面に直接アクセスできるようにします。
  • 使用終了への注意喚起
    部屋の使用終了操作をしたときに、部屋または建物の残り使用者数が閾値以下になる場合は、この画面に遷移します。ただし、操作者が最後の一人であった場合を除きます。
    この画面では使用終了にあたり注意喚起のメッセージを表示します。また、残りの使用者へ簡単に連絡できます。また、直前の画面(建物内の部屋選択または部屋の利用者一覧)へ戻ることができます。
  • 部屋使用終了の案内
    部屋の使用終了操作をしたときに、操作者が最後の一人であった場合は、この画面に遷移します。部屋の使用終了の手順を案内します。
    さらに、建物全体で最後の一人であった場合は、建物使用終了の案内画面へ遷移できます。
  • 建物使用終了の案内
    建物の使用終了の手順を案内します。

2代目日産リーフZE1の7年目車検を終えて

2017年10月の納車から7年の月日が経ちました。2代目リーフを新型リーフと呼んでいたのも今は昔。2025年3月ごろには3代目リーフが登場するのではないかと噂されています

以下では7年間リーフに乗って得られたデータを紹介します。

走行距離は10万9千kmになりました。EVならでは視点としては、ブレーキパッドは交換していません。回生ブレーキが主に動作するためです。EVはランニングコストが低いというとき、ガソリン代だけでなく消耗品にかかる費用が少ない点も忘れてはならないでしょう。

急速充電は1,000回ほど、普通充電も200回を超えています。電池の劣化は初期の9割のところで進行が緩やかになり、その後はかなりゆっくりとした劣化が進行しています。航続距離にしても、満充電スタートで高速道路を使って240kmくらい。納車された日に下道で270km近く走れたので、10%から15%低下しているのは体感通りです。

リーフの車上で確認できる情報として、いまだにセグメント低下は生じていません。初代リーフが5年も経つと2セグ3セグ欠けていたのとは大違いです。2017年に製造された電気自動車ですらこのレベルなのですから、いわんや最新のEVをや。