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
以上!

MovableTypeのバージョン6から7に上げました、のと、近況報告

### 近況報告
タイトル通り、このブログで使われているMovableTypeのバージョンを6から7にバージョンアップしました。と言っても、外見上は何も変わりません。内部の仕組みだけ変わりました。バージョンアップに伴いサーバが移動しました。これも外見上は全く変化なしです。
2006年にこのブログを始めてから12年、黒歴史から何から何まで詰まったブログですが、ずっとJust-size.netを使っています。今回のバージョンアップに伴いバックアップの相談をしたところ、MovableType7では現在動いてるサーバでは一部のソフトのバージョンが適合してないということで、無償で別サーバに移転させて頂きました。山崎様、対応頂きありがとうございます。
近況を箇条書きでメモ。
* 毎日漢字を毎日やってるんですが、万年筆からガラスペンに変えました。良い感じです。ガラスペン、プレゼントに良いかもね。
* 秩父に行ってきました。小川町の方から定峰峠を抜けて東秩父村から秩父に入って、道の駅ちちぶで「おっきり込み」と「みそポテト」を食べてきました。帰りは140号をまったりと熊谷方面で帰宅。
* 秩父以外にもちょいちょいソロツーリング行ってるんですが、ライダーが手を振ってくれたり会釈してくれたり、謎の連携感に驚きました。楽しい。
* 読書しまくってます。読書の記録はブクログにしてます。最近読んだ中ではマスタリングTCP/IPのセキュリティ編が良かったです。専門書以外だと、コンビニ人間が面白かったです。最近、本屋に行くと結構並んでますね。
* python必死に勉強中。捗らなくてやばい。
* raspberry piを追加で購入しました。完全勢いです。ラズパイにくっつくモニタも購入したので、デジタルサイネージとして東京アメッシュを起動と同時に表示するようにしてみました。東京アメッシュ on Raspberry Pi
* 熊谷のおふろcafe行きました。平日に行ったんですが、ガラガラだったのと、ワークスペースが最高でした。リモートワーク、あそこで出来るな・・・。
* 草津温泉も行ってきました。余裕の日帰り、相変わらずのソロツー。
* ソロツーリングは孤独なんだけど気楽さが半端ないのが良い。よほど仲が良い人なら一緒に出かけるのも良いかなと思うけど、さほど親しくない人とは逆に気疲れしちゃいそう。
* あれ?伊香保も行ったような気がする。記憶喪失半端ない。
以上。

楽譜起こし

ついに8月も終わり、今年も残るところ4ヶ月となりました。早い。
仕事の方は、プロジェクトが佳境に入りまして、休日出勤とか時間外リモート対応とかで、結構忙しいです。でも、休みは取ってます。
僕はワーカホリックではないので、仕事の事を一切考えない時間が一定時間無いと心が死んでしまうんですね。
いくら仕事が忙しくても、仕事のことを一切考えない休みを、意図的に作るって大事だなと改めて思います。
その休みの中で何をやってるかと言うと、新しく買ったバイクで草津まで行ったり秩父の峠に行ってみたりと、休日はバイクを乗り回してることが多いのですが、
バイクとは全然別で、小さいときから続いてる趣味でピアノがあるんですね。これも技量は落ちつつも趣味として継続してまして、ピアノも弾くようにしています。
ピアノ、弾くのも趣味なのですが、耳コピで曲を楽譜に起こすのもたまにやってます。凄い好きな曲を見つけた!ピアノで弾きたい!でも楽譜無い!って状況、結構あるんですよね。
1曲仕上げるだけでも結構時間がかかるので、あまり多くは出来てないのですが、ちょっと気合を入れて作ったやつがあるので、公開します。東方なんですが、大好きな曲です。
魔女達の舞踏会
既に楽譜化されている方がおりまして、そちらの楽譜をベースに、自分が弾きやすいようにアレンジしました。
なので、正確には耳コピではないですね。アレンジです。自分のピアノレベルが落ちていることを鑑み、バイエル卒業程度のレベルになっています。
イ短調でアップテンポな、ちょっと不思議な雰囲気のする曲です。
ちなみに、、スーパーワギャンランドの神経衰弱で使われてるBGMは、ネット上に楽譜が見当たらなかったので耳コピしたので公開します。こちらはハ長調のアップテンポな明るい曲になってます。
後半部分が良い感じです。
(東方は二次創作OKだけれど、ワギャンは任天堂だから著作権的にやばいかなと思ったのですが、耳コピ楽譜の上に営利目的ではないので暗黙の了解ということで…。)
Wagan Battle 1
こんな記事を書いていたらもう日付が変わってしまいました。それでは、また。

Yamaha MT-25を1000km乗ってみて、気になる点だけ書き出した

Yamaha MT-25
巷のブログを見てると、バイクに乗った感想・印象のことを「インプレッション」とか「インプレ」とか言うらしいですね。
IT業界のアジェンダとかエビデンスに似たような”インプレッション”を感じます。
それはさておき、先日新車で購入したMT-25の走行距離が1000kmを超えて、初回点検も終えたので、思ったことを書いていきます。
良い点は「MT-25 インプレ」でググるといっぱい出てくるので、気になる点だけを書き出します。
あくまで、僕のスペックで気になる点を書き出すだけで、決して悪いバイクとは思っていません。
MT-25を買う方の参考になればと思い、記事を書くに至りました。
【筆者とバイクのスペック】
・過去にモンキー(50cc,MT)に乗ってた経験あり
・普通自動二輪、教習所を2018年7月末で卒業したばかりの免許取り立て。
・身長163cm、58kg、短足
・バイクの改造に興味は一切無く、安全運転ができればOK。うるさいバイクは苦手。
・YSP熊谷で新車購入。現在の走行距離は約1000km。
・クラッチレバーのみ交換(※1)。初回点検でサスペンション調整してもらいました。
※1 スマホホルダーやグリップヒーターは購入時につけてもらいましたが、駆動に関わる部分ではないので除外します。
【気になる点】
■低回転域のトルクが不足(重要)
教習所では400ccのCB400SFに乗っていました。教習所での1速発進はアクセルを使わずクラッチだけで余裕でしたが、MT-25の場合は簡単にエンストします。
適度にアクセルを回してからクラッチを繋いで発進しないと、エンストして立ちごけします(しました)
低速域のトルクが本当に無いので、通常発進でもある程度エンジンを回す必要があります。
 →半クラがちゃんと出来ないと制御が難しい。
■思ってるより脚付き悪い
MT-25はシート高が低いほうですが、筆者スペックの通り、身長が低く短足なので停車時で両足がベターって付きません。車体を少し傾けてようやくベターです。
体重が低いのも影響しているようで、サスペンションが全然沈み込みません。
1000kmの初回点検で一番脚付きを良くするようサスを調整してもらったら、1cmくらい低くなったように感じました。
女性ライダーで身長が低い方は、初回納車時から脚付きを良くするようにサス調整をお願いしておくと、立ちごけを未然に防げると思います。
■クラッチレバーが遠い
僕、足も短いんですが、指も短いんですよね・・・。ピアノで言うとオクターブが届くくらいです。
純正のクラッチレバーでは、ギアチェンジのたびに左手の親指を支点にクラッチレバーまで指を伸ばす必要があって、少しツーリングに行ったら親指にタコが出来ました。
純正のクラッチレバーは遊びの調節は出来てもクラッチレバーの距離まで調節はできません。
クラッチだけはエンストに直結するので、調節可能なレバーに取り替えて貰いました。
■うるさい
新車で買ったので完全に純正ですが、思ってるよりうるさかったです。特に低回転域がドコドコ響いてうるさいです。
僕は家の近くまで来たらエンジンを切って手で押して車庫に入れてます。
バイクのエンジン音って、バイク乗り以外にとっては騒音でしか無いですからね。近所迷惑には要注意です。
以上です。