Webex TeamsでEminemが毎朝「What you gonna do?」とメッセージするBOTを作った

仕事で使っているチャットツールとしてWebex Teamsを使っています。
Teamsではプロジェクトの中のもう少し細かい粒度で部屋が切られており、今回とある部屋でメインを務めることになりました。
その部屋には自分以外にも上司や関連する人が複数いるのですが、実際に作業をしているのは僕だけという状況でした。
そこで、以下の理由からbotを作ることにしました。
・作業をしているにもかかわらず、対外的に何をやっているのか分からない。
・全体のタスクの進捗度を上司が把握できない。難しくてつまづいてるのか、純粋に作業量が多いのかなど、把握できない。
・自分自身、タスク管理が下手なので何をすべきか毎日整理したい
・同僚が似たようなbot作ってた(彼はshell scriptのワンライナーでやってる超お手軽スクリプトでした)
早速、Webex Teamsでボブ・マーリーが毎朝「What you gonna do?」とメッセージするBOTを作ったを参考にして、平日の朝10時にEminemがWhat you gonna do?と聞いてくるbotを作りました。Eminemを選んだ理由は特にありませんが、昔から好きだったので、なんとなくです。
プログラマではないのでお見苦しいコードかと思いますが、参考になればと思います。
今回のポイントとして:
・コードはさくらVPSに設置(CentOS7.5なのでデフォルトでpython2系が入ってますが、周りからの圧力もといオススメにより3.4.9を入れました)
・毎朝10時に実行 -> cronで対応。
・土日祝に実行させない -> jpholidaypを利用
以下コードです。


# -*- coding: utf-8 -*-
# coding:utf-8
import sys
import os
import logging
import requests
# 変数設定
TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
roomID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
jpholidayp_command = "/usr/bin/python3 /home/arkey22/git/what_you_gonna_do/jpholidayp/jpholidayp"
# ログ設定
log_path = "/var/log/what_you_gonna_do/what_you_gonna_do.log"
log_format = '%(asctime)s- %(levelname)s - %(message)s'
logging.basicConfig(filename=log_path, format=log_format, level=logging.INFO)  # 通常のログ出力レベル
def is_it_holiday():
""" 土日祝の判定 """
flag = os.system(jpholidayp_command)
return flag
def notify_teams(eminem_says):
""" Teams APIを叩いてメッセージをPOSTする """
headers = {
'Authorization': 'Bearer ' + TOKEN,
}
files = {
'roomId': (None, roomID),
'markdown': (None, eminem_says),
}
logging.info("Called Teams API.")
api_status = requests.post('https://api.ciscospark.com/v1/messages', headers=headers, files=files)
if api_status.status_code != requests.codes.ok:
logging.error("Failed to call API.")
return False
if __name__ == '__main__':
if is_it_holiday() != 0:
notify_teams("# What you gonna do?")


Teamsから見るとこんな感じになります。

このbotはプロジェクトの収束に伴い、10月末を以て運用を終えましたが、他のプロジェクトでも流用出来るかなと思っています。
以上です。Eminemさん、お疲れ様でした。

CCNP認定されました。

サーバの仕事ばっかりでネットワークはもはや趣味になってしまいました。が、仕事も一段落して時間が出来たので、取得途中だったCCNP Routing and Switchingの勉強を再開し、無事Certificated(認定)となりました。
「CCNP Routing and Switching」はRoute, Switch, T-shoot(Trouble Shooting)の3科目全てにPassすることが求められます。2015年にSwitchの試験をPassしました。2016年にはRouteもPassしました。残るはT-shootだけだったのですが、なかなかPassできず。加えて、仕事が完全にサーバよりで忙しくなってしまったので、いったん放置することに。
先月末に仕事が一段落して少し時間が出来たので、残りの科目(T-shoot)を取得することにしました。一週間ほど勉強して、色々思い出して、T-shootをPassしました。
これでCCNP認定!と思っていたのですがCiscoのtracking systemを見ても認定されていません。よくよく調べてみると、各科目の有効期限はPass後3年とあるじゃないですか。Switchは3年以上前に取得したので失効しています。受け直しです。
それから、さらにもう二週間の勉強を経て、無事SwitchにPassし、CCNP Certificatedとなりました。

■勉強方法
ぶっちゃけます。まず前提知識として黒本(徹底攻略シリーズ、表紙が黒いので通称黒本)を読んで知識を蓄えます。
その後、T-shootはhttp://www.networktut.com/をSwitchはhttp://www.certprepare.com/をやり込むだけです。特にT-shootはnetworktut一本で大丈夫です。
問題にバグもあるので、それも含めて勉強が必要です。(選択問題で、明らかに間違っている選択肢を選択しなければいけないこともあります)
このバグは日本語版、英語版も同じです(実はSwitchに関しては日本語版を受けて一度落ちており、英語版でも同じ問題が出たのでわかりました)
あと、今回受けたT-ShootとSwitchは英語で受けました。日本語で受験するとCisco語と呼ばれる意味不明な日本語訳で出題されますので、英語での受験を強く勧めます。
英語に関しては技術的な単語・言い回しばかりなので、TOEIC600点くらいの英語力があれば問題ありません。
networktutやcertprepareに出てくる問題と全く同じ問題はあまり出ません。言い回しが少し違ったり、微妙に違う角度から質問してきます。
根底にあるのは技術ですので、問題の真意ではなく何を問われているかを考えてください(忖度してやってください)
英語で受験するため、クラムメディアは不要です。高いし。
ping-tは、理解度を深めるために使うことをおすすめします。ping-tに出てくる問題は、ほとんど試験に出ません。あくまで基礎知識の勉強と思ってください。
実機とGNS3は使えるのであれば使ってください。問題集で覚えるのと、実機で設定を入れて覚えるのでは100倍くらい理解度が違います。(体験するって超大事です)
LACP冗長、STP、Port-security、show系全般、指でコマンドを覚えてください。大事なことなのでもう一度言います。指でコマンドを覚えてください。
特にT-Shootはマウスを触ってる時間よりキーボードを叩いてる時間の方が長いです。試験範囲のshow系コマンドは確実に覚えましょう。設定したけどあっているか確認出来ないのでは意味がありません。
あと、、上記2サイトはコメント欄が活発です。最新の試験情報を入手するためにも、コメント欄はよく見ましょう。最新の試験傾向が記載されてます。
■取得して思ったこと
・CCNPは趣味の領域に近い。ネットワークの知識全般を理解する目的で取得するならCCNAで十分。
・資格を持っていることより、資格を取得する過程で学んだことが重要。単語レベルでもなんとなく覚えていれば、実務で使うとなった時にすぐ思い出せる。資格として持っていることが大事になるのはCCIEだけ(Cisco認定パートナー的な意味で)。
・今関わっている案件のネットワーク部隊は全員CCNP持ちというハイレベル案件なので、自分はまだスタートラインに立っただけ。これでようやく基礎レベルに追い付いた感じ。
・CCIEは取らなくていいかな・・・3年間、土日と通勤時間を全て潰して勉強して、ようやく受かるレベルというのは、人生設計という意味でよく考える必要がある(1回では受からないので受験料、テキスト代、試験環境を整える為の費用含めたら100万はかかると思う)
・次はCCNA SecurityかCCNA Wirelessを受けようかなと思います。どちらも今後、需要が高まると考えているからです。Cisco信者なのでお布施しないと、という気持ちも僅かながらありますw
以上!