0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

自動化をしたく無い人に自動通知するBOTを作ったら、話が無限ループした件

Last updated at Posted at 2020-08-13

読み始める前の注意

  • 面白おかしく誇張しているので、全てを真に受けないでください。
  • 会話は誇張していますが、大筋は本物です。作ったものももちろん本物です。
  • 技術的には大したものはなにもないです。
  • 社内の情報があるのでコードが出せないので流れで楽しんでくださいw

はじまりはじまり

あるところに、比較的大きなSIerで、冗談みたいな5年計画のウォーターフォールで50以上の超絶大規模なシステムが一斉に開発・移行を行う会社がありました。

主人公のぼくが、担当しているのは、小規模なプロジェクトですが、この営みに巻き込まれ、移行作業を行います。

お話はこの移行作業というよりも、移行時の報告作業です。

起:始まる前から終わっている報告作業

おはなし

きっかけは、ふとした業務中の同僚の一言

同僚:移行リハーサルで、報告が多いんだよね。。。しかもほぼ全部メール。

ぼく:Slackとかのチャットじゃないんだ何回ぐらい?。5回とかかな?

同僚:だいたい30回ぐらいかな。あと2時間おきの定期報告があるから+10かな

ぼく:え。20時間(移行全体の時間)で40回 も報告するの!

ぼく:えっと。。。移行全体でだよね。。。

同僚:いやいや。自分たちは少ない方で、多いところは50回くらいあるから全体では2000回以上の報告が飛び交うんじゃないかな?

同僚:統制しながらは無理だから、上司にお願いするか・・・

上司:わかったけど、忘れちゃうから少し前になったら教えて。あとメールフォーマットがあると助かるな

同僚(超優しい):フォーマットは作ったのでこれ送ってください。時間になったらお知らせします。

ぼく:いやいやいやいやいや。そんなの全部自動にすればいいじゃないですか!

上司:でも、前倒しになったりしたら、ずれちゃうし

ぼく:じゃあ、タイミングを知らせる部分は自動化してもいいですよね。

ぼく:30分ほど時間をください。

つくったもの

  • 実装はNode-RED

pic1.png

まず、報告するタイムチャートを一覧化して以下のフォーマットに整理

list.csv
項番,ID,会議体/報告概要,宛先,日付,時間

  • Slackじゃないんですよ。。。社内のMattermostですよ。。。
  • 10分に一度起動して、csvファイルを開きパース、日付部分が現在時間+10分以内であればmattermostに通知する

承:ちょっと使うと、あれもほしい、これもほしいが始まる

おはなし

上司:40回もあると、報告したかどうか忘れちゃうねw

ぼく:(いや、チェックリスト潰すとか、メールのタグでもつければいいんじゃ)←チキンなので言わない

上司:報告メールも通知されるといいんだけど

ぼく:15分待ってもらっていいですか。。。

つくったもの

pic2.png

  • 単純にメールノードを社内のメールサーバにつないで、msg.topicでキーワードを拾う
  • メールタイトルに【〇〇案件】みたいなものをつけるルールがあるので、キーワードで拾う
  • なぜか、Reで余計なやり取りを始める人がいるので、これは無視するためにReでないときに処理を足しておく
  • さらに、作業項番A1-1みたいなものもルールにある(list.csvのID)ので、これが含まれているときにmattermostに通知

転:天井知らずの追加要望

おはなし

上司:スケジュールが前倒しになると、報告の後に通知が来て、終わったかどうか心配になるな

上司:このファイルから通知するボットくんとメールを監視するボットちゃんは仲悪いのかなw

ぼく:えー。仲良くさせるんですか??

つくったもの

pic7.png

  • ファイルを開いて通知するものとメールを監視して通知するものはそれぞれ自分の処理が終わったらフラグを設定する

  • そのフラグを確認して、先にメールが出て後から通知が来た場合は、「報告済です」とプラスで通知する

  • 3秒waitを入れているのは、「報告済です」が先にでるのを防ぐための簡易アイディアです

  • ちなみに、フラグをALLセット/リセットしたり、個別でセットしたりするものもあるのですが省略しています。

結:そして世界は流転し、振り出しに戻る

おはなし

上司:ところでさ。忘れてても教えてくれないんだね。

ぼく:忘れないように通知しているじゃないですか。

上司:通知を見忘れたり、通知見たけどメール送りそびれたら、取りこぼすなっと思って・・・

ぼく:(それを言い始めたら何しても無理じゃないのか。。。)

ぼく:15分もらっていいですか?(フラグを監視して規定時間から一定時間報告メールが送られていないた場合は通知するようにするか・・・)

上司:あ、ちょっと待って。でも。そもそもいろいろな通知が来て、分かりにくくなったから、一番最初の通知だけで良いかな

ぼく:はーい。全部消しまーす。

つくったもの

  • 一番最初のフローと同じ

要するに:プロジェクトコメディ

project_comedy_s.gif

結末

  • 予想通り、リハーサルはぐだぐだとなり、予定していた試験は終わりませんでしたとさ。おしまい。
  • リハーサルと本番が合わせてあと4回あるので、このページは最低でもあと4周します。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?