月別アーカイブ: 2022年11月

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

2017年10月に納車された2代目日産リーフZE1の5年目車検を済ませました。まだ数年は乗ろうと考えています。

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

5年間の走行距離は7万7千kmでした。急速充電を821回、普通充電を46回しました。アパート住まいですので基本は急速充電、ホテルやショッピングモールで普通充電を使うこともある程度です。

EVの購入時に最も心配となる走行用電池の劣化についても、それなりのレベルに抑制されています。ZE1の発表当時に言われた「1年1万km走行しても10年で劣化10%以内」とはいかないもの、9割近い容量が残っています。80%充電から高速道路を走行して200kmくらいは走行できる感触です。体感レベルで新車の時より1割強は短くなっていますが、そもそも200kmをぶっ通しで走ることはないので不便になった感じはしません。

走行用電池の経年劣化と走行距離の推移

EVといえば電気で走る分だけガソリンよりランニングコストが低いと宣伝されます。私のケースではZESP2という大盤振る舞いのおかげで5年間の充電費用が13万4千円でした。毎月の走行距離とガソリン価格を記録してあるので、比較すると35万円ほど安上がりになった計算です。燃料費のほかに、消耗品類にお金がかからないという点も良いです。エンジンオイルはありませんし、回生ブレーキで消耗しないのでブレーキパッドは交換していません。

2代目日産リーフは5年経ってもまだまだ使い物になります。初代の電池劣化が激しかったのとは大違いです。とりあえず次の車検まで2年間は乗るつもりです。

Power AutomateでTeamsのチャネルのリンクからチャネルIDとチームIDを取得する

Power Automateでチャネルへの投稿を自動化したい場合、チャネルIDとチームIDが必要です。この二つのIDをユーザーが取得しやすい「チャネルのリンク」から取り出す方法を紹介します。

Teamsのチームの各チャネルには直接チャネルにアクセスできるURLがあります。このURLはTeamsのチャネル名の右にある三点ボタンからメニューを開き「チャネルへのリンクを取得」を選択することで取得できます。ここで得られるURLには、チャネルIDとチームIDが含まれています。したがって、「チャネルのリンク」を入力として、「チャネルID」文字列と「チームID」文字列を出力とするフローを組むことができます。

フローの全体像

Power Automateのフローは以下の通りです。各処理の中身は後述します。

各アクションの解説

チャネルのリンク
データ操作の作成アクションです。「チャネルへのリンクを取得」で取得したURLを与えています。このアクションの代わりに、トリガーで入力するようにしたり、Power Appsから渡すようにしておくと活用しやすいでしょう。

URIデコード
データ操作の作成アクションです。入力には、作成アクション「チャネルのリンク」の出力を用いて「decodeUriComponent(outputs('チャネルのリンク'))」のように指定します。
「チャネルへのリンクを取得」で取得したURLは本来URIで使用できない文字列をエンコードした形式になっています。これを本来の文字列に直す変換操作であるURIデコードを行います。

URIを配列に分ける
データ操作の作成アクションです。入力には、作成アクション「URIデコード」の出力を使って式を「split(outputs('URIデコード'),'/')」と指定します。
チャネルのリンクは、以下のような構造をしています。「/」で文字列を分割すれば、5番目がチームID、6番目のgroupID=以降がチャネルIDであることがわかります。なお、0番始まりで数えている点に注意してください。

https://teams.microsoft.com/l/channel/{チャネルID}/{チャネル名}?groupId={チームID}&tenantId={テナントID}

チャネルID
データ操作の作成アクションです。入力には、作成アクション「URIを配列に分ける」の出力を使って式を「outputs('URIを配列に分ける')[5]」と指定します。
末尾が@thread.tacv2という文字列だと思います。

テキストの位置の検索
テキスト関数のテキストの位置の検索アクションです。入力の「テキスト」には、作成アクション「URIを配列に分ける」の出力を使って式を「outputs('URIを配列に分ける')[6]」と指定します。また、入力の「検索テキスト」に「groupId=」と指定します。
「outputs(‘URIを配列に分ける’)[6]」で取得した文字列から「groupId=」の位置を割り出し、後段の操作でこの文字列よりも後ろの部分を抜き出します。

部分文字列
テキスト関数の部分文字列アクションです。入力の「テキスト」には、作成アクション「URIを配列に分ける」の出力を使って式を「outputs('URIを配列に分ける')[6]」と指定します。また、入力の「開始位置」に式「add(outputs(‘テキストの位置の検索’)?[‘body’],8)」と指定します。
「outputs(‘URIを配列に分ける’)[6]」で取得した文字列から「groupId=」の開始位置を割り出し、「groupId=」の文字数8を加えることで、「groupId=」の後ろの文字列を抽出します。

チームID
データ操作の作成アクションです。入力には、作成アクション「部分文字列」の出力を使って式を「split(outputs('部分文字列')?['body'],'&')[0]」と指定します。
「&」の後ろに続くtenantIdが不要なので、「&」で文字列を分割したうえで配列の先頭(0番目)の文字列を取り出します。
チームIDの文字列はGUIDの形式になっています。

取得したチームIDとチャネルIDの使い方

Teamsの「チャットまたはチャネルでメッセージを投稿する」アクションを使う場合は、投稿先をチャネルとして上で、チームとチャネルに取得したIDを指定します。取得したIDを設定するには「カスタム値の入力」を選択します。

PowerAppsの「PowerAppsまたはFlowに応答する」アクションを使う場合は、出力追加でテキストを選択し、取得したIDの出力を追加します。