毎日こしたみんさん生活

思っていることを書き連ねてます。もろもろはご自由にどうぞ。

研究室の入退室記録を(半)自動化した話

この記事をシェアする

みなさんこんにちは。klis17のこっしーです。

この記事は klis Advent Calendar 2021 1日目の記事です。トップバッター多分誰もやりたがらなさそうだから取っちゃいましたテヘペロ

adventar.org

 

初めてこの企画を見たのが2017年なので、もう5年も経ったのかと思うと時の流れのあまりの速さにビビりました。そんで続いているのがうれしいですね。

 

一応昨年はこんなの書いてました。

kossy-54.hatenablog.com

 

大学自体はなんとか昨年卒業したのですが、何を血迷ったか大学院へと進学してしまったのでまだ学生してます。去年はフォートナイトで卒論の進捗をぱあにしかけましたが、今年はAPEXで進捗が本当にやばい時期がありました。具体的には半年以上1日数時間とかプレイして進捗が消滅しました。落ち着いたので今は研究もぼちぼち頑張ってます。

こんな有様なのでお察しな研究の状況については置いといて、研究室生活で面倒に思っていたことの解決方法について忘備録も兼ねて書くことにします!

専攻システムだったしプログラミングっぽいこと書きます!でもプログラム書くのは嫌いなのであんまりコードとかは出てきません。気軽に見てってね。

 

 

研究室の入退室記録が面倒だった

klisにおける大学生活ラストの大イベントといえばそう、研究室配属だと思います。

この記事を読んでくれてるklis19の皆様*1におかれましても現時点(2021年12月1日)では配属される研究室が決定しているんじゃないでしょうか。

思い返せば3年の秋、僕も興味ある分野の(やさしそうな)先生にメールしてアポを取って面談して内定もらえなくて、また違う先生と面談してhopeに入力して研究室に配属されました。

配属後はゼミやらで研究室に顔を出し、4年になったら本格的に研究室に行って研究をするのだとぼんやり思っていました。

が、新型コロ助のあれこれで大学にすら行けなくなり*2、ようやく解禁されたと思ったら僕の研究室では入退室時にTeamsのチャットにコメントを残すことが義務づけられました。

 

Teamsを開いて、チャットを開いて、「入室します」/「退室します」の一言を入力するだけです。それだけなんですが、まあまあ面倒に感じちゃったんですよね、これ。

なんせ毎日のように行くわけだし。*3

 

自動化ツールを使って自動化しちゃえ

面倒なことはプログラムにやってもらうのが一番。

そんでいい感じのツールを知っていたのでそいつらを組み合わせることにしました。

だってできるだけコードとか書きたくないしね。

 

Power Automate

Microsoftなどの各種サービスを連携して自動化できるPower Automateをご存じでしょうか。

powerautomate.microsoft.com

トリガー(条件)を設定してアクション(各種操作)を実行することができるMicrosoft謹製のツールです。

Microsoftのサービスなので当然のようにTeamsとの連携が可能で、メッセージの送信やチャネルへの投稿・作成などTeamsにおける各種操作が可能です。

実は学群生時代からこいつを使って自動化しようと目論んでいたのですが、当時はグループチャットへの投稿ができなかったと記憶しています。久々に見たら機能が追加されていました。Microsoftのそういうとこ好きよ。

ただ、設定できるトリガーが「設定したスケジュールの日時になったら」や「メッセージを受信したとき」とかで、任意のタイミングで発火させるにはなかなかいいものが見つかりませんでした。「モバイルのFlowボタン」というスマホアプリ版の中にボタンを作って手動でトリガーするってのは用途的には使えそうでしたが、欲張りさんなのでできるだけスマホを触らずにメッセージを送信したい。

そこで次のツールです。

 

Tasker

tasker.joaoapps.com

知る人ぞ知るAndroidスマートフォンの自動化アプリです。僕は長いこと普段使いのスマホAndroidスマートフォンなのですが、Androidを使い続けている理由の一つといっても過言ではないアプリです。

Power Automate同様に自動化ツールですが、こちらはスマートフォンで起こるあらゆる動作をトリガーとすることができます。特定のアプリを起動したとき、画面ロックを解除したとき、充電開始したとき、Bluetooth機器に接続したとき、特定の範囲内にいるとき etc... 数え上げればキリがないほどの条件を設定できます。複数組み合わせることも可能です。

今回はその中から、「NFCタグを読み込んだ時」を条件にします。設定可能なトリガーの中で手ごろだし、かざすだけでいいし、ミスも少なさそうなのが理由です。

現在位置と接続されているWi-Fiの状態をもとにスマホを開いたら投稿する、って感じにすると研究室の近くでスマホいじるだけで投稿できるんですが、条件設定がややめんどくさいのと誤爆がちょっと怖いので今回はやめときました。

注:Taskerのお値段について

Tasker、本当になんでもできるんですが有料アプリです...400円くらい...

今回やりたいことは他の自動化アプリでもよさそうです。MacroDroidとか

MacroDroid - デバイス自動化 - Google Play のアプリ

 

どうやって2つのサービスを組み合わせるか

Taskerは基本的にスマホ内で起こる動作を自動化するものだし、Power AutomateはWebサービス同士の連携が主です。

最初はIFTTTとかで繋げられないかな~と思ったんですが、HTTPリクエストでなんとかなりそうだったのでこいつを使うことにしました。

スマホNFCタグを読み込んだらTaskerからHTTPリクエストを投げてPower Automateがそれを受け取ったらチャットに「入室します」/「退室します」と投稿

こんな感じです。

 

設定方法

Power Automate編

まずはPower Automateのサイトにアクセスします。

Power Automate | Microsoft Power Platform

f:id:kossy_54:20211201132824p:plain

右上のサインインをクリックして、uアドでサインインします。Teamsのサインインと一緒ですね。

f:id:kossy_54:20211201134516p:plain

左側の作成をクリックして、表示された画面でインスタントクラウドフローをクリック

 

f:id:kossy_54:20211201134709p:plain

設定画面が表示されます。トリガー一覧をスクロールして、HTTP要求の受信時を選択し、作成を押します。

 

f:id:kossy_54:20211201135015p:plain

新しいステップをクリックすると操作を選択する画面が出てきます。検索窓に「Teams」と入力し、「チャットまたはチャネルでメッセージを投稿する」をクリック。

 

f:id:kossy_54:20211201135455p:plain

投稿者は好きなものでいいと思いますが、今回はあくまで僕が投稿していることになっているのでユーザーを選択。投稿先はグループチャットなのでGroup Chat。Group Chatのところに自分が参加しているチャット一覧が出てくるので、投稿したいチャットの名前を選択しましょう。Messageには任意の文面を入れますが、今回は「入室します」にしました。

一度ここで保存します。保存が完了したら、HTTP要求の受信時のブロックをクリックします。

 

f:id:kossy_54:20211201140227p:plain

HTTP POSTのURLの欄にURLが生成されます。このURLを第三者に知られるとメッセージを送られ放題になってだるいので、漏洩にはお気をつけください。

要求本文のJSONスキーマの欄には


{
    "type": "object",
    "properties": {
        "Message": {
            "type": "string"
        }
    }
}

 

と入れといてください。余談ですが、はてなブログのコードブロックめんどくさいな。

これでPower Automate側の設定は完了です。最後に生成されたURLに対してHTTP POSTを行えば、チャットにメッセージが投下されます。

退室も自動化する場合は同じ手順で退室用のフローを作成してください。

 

Tasker編

Google PlayストアからTaskerを入れてください。僕はTaskerを使いましたが、MacroDroidなどの自動化アプリでも代替可能です。

Tasker - Google Play のアプリ

まずはタスク(操作部分)を作ります。

[ タスク ] タブ >[ +ボタン ] と進んで作成します。名前はなんでもいいので、とりあえず「送信」とかにしときます。

タスク編集の画面になったら、右下の+ボタンを押してアクションを選択します。

ネットHTTPリクエス か [ 絞り込み ]の欄に「HTTP」と入力してHTTPリクエスを選択します。

f:id:kossy_54:20211201190002j:plain

 

方式はPOST、URLは先ほど入手したものを入れます。

f:id:kossy_54:20211201200858j:plain

アクションはこれだけ!

 

次にこのアクションが発動する条件(トリガー)を設定します。[プロファイル]タブに移動して、[+ボタン] > [ イベント ] > [ネット] からNFCタグを選択します。

f:id:kossy_54:20211201203239j:plain

 

IDの横にある虫眼鏡マークを押して、NFCタグの読み込みを行います。

 

f:id:kossy_54:20211201203452j:plain

IDなんかが読み込まれたら準備完了です。ホーム画面に戻ってNFCタグを読み込むとチャットにメッセージが送信されます!

 

残念ながら...

なんか使用しようとしたNFCタグが対応していないやつだったらしくてうまいこと設定できず、どうにか設定してもタグを読み込んだあとにTaskerアプリを選択しないといけないとかでめんどくさかったので僕はNFCタグを使う方法はやめて、暫定的にTaskerのタスクをボタンとしてホーム画面に設置することにしました。

つまるところPower Automateのモバイル版アプリを入れて、トリガーをPower Automateのボタンを手動で押すにすれば良くなったってわけです。ボタンを設置するのは別にTasker入れる必要ないし。

ただ、そのうちトリガーをもうちょい自動化できたらなと思います。さっきちょっと書いたけど位置情報と接続しているWi-Fiを条件にするとか、研究室に何かしらBluetoothのボタンとかおいて接続するとかそんな感じにしたい。こういう風にフレキシブルに扱えるのはHTTPリクエストを用いるメリットだったりTaskerを用いることのメリットだったりするかなと思います。Taskerはいいぞ。

 

できるだけ楽したい

さてそんなこんなでつらつらと書いてみたわけですが、僕の近年における目標というか、生活するうえでの考え方はこれにつきます。

 

生活を便利にするもの

スマートリモコン、Tile、sesame3などの導入はこの考え方に基づきます。スマートリモコンがあればシーリングライトやエアコンのリモコンがぱっと見つからないときでも電源を入れることができます。Tileがあればどこかに放り投げたカギや財布を簡単に見つけられるし、sesame3のおかげで家のカギのかけ忘れがなくなりました。

こういったIoTデバイスをどんどん導入するのに最近ハマっているというか、ADHD気味なとこがあるので苦手な部分をカバーできるような機器はどんどん導入していきたいなと思っています。鍵のかけ忘れ、家電の消し忘れ、物置いた場所忘れなんかを減らせるわけですね。

 

みんなも楽に生きような

今回はTeamsへの投稿の自動化を行いましたが、しばらく使ってみた感じだいぶ楽になりました。研究室に入ってスマホ開いてボタンポチっで入室報告して、帰るときも部屋出て出口まで向かう途中でポチっとするだけで書き込んでくれます。キーボード打たないでいいの楽~~~!これ今後は滞在時間算出したり、家の家電と連携したりといったこともできそうだなと思います。研究室出るときに家の暖房をオンにしてライトも付けておく、みたいなね。これいいな設定しとこ。

 

おわりに

なんか投稿時間毎回ギリギリですみません。(現在21:02)

だいたい5000字の大作になっちゃったなとは思いますが、ここまで辿りついた方、お疲れさまでした。読んでくれてありがとうございます。

大学に在学している限りはこういうのに参加したいな~とぼんやり思っています。みんなTwitterで宣伝してください。

 

それでは。

*1:FFにはほぼいないけど見てくれてる人いるのか?

*2:もしかしたら研究室には行けたけどコロナをいいことにめんどくさがっていかなかっただけかも

*3:研究が好きだからとかじゃなくて家だとAPEXしちゃう以上研究室行かないと進捗がやばいだけです