はじめに

実行時間がちょっと長いプログラムを走らせる時とかに、終わったことを通知して欲しかったので、作った。

ライブラリ

ここ にあります。

使い方とかは README 見れば、基本全部書いてあるので、言ってしまえばこの記事は特に読む必要もないです。

以下余談。

なぜつくったのか

僕の環境だと仕事だったり、研究で使ってるコードの多くが実行に結構な時間がかかります。具体的には数十分から数日とかです。

それだと、いちいち実行経過を追うのも無駄だけど、気付いたら終わってかなり時間がたっていたとかももったいないです。

そこで、実行経過だったり終了を知らせてくれたらいいなということで、作りました。

昔にもコード中に毎回書き捨てで通知を送るコードを書いていたりしたんですが、書き捨てもよくないし、利便性を高めたかったので、ちょっとちゃんとしたライブラリにしてみました。

使用している技術

macOS 系

ビープと通知センターの通知を出すのには AppleScript を実行することができる osascript コマンドを利用しています。このコマンドを Python から subprocess で呼び出しています。

AppleScript は結構いろいろなことができて、今回実行している通知センターへの通知の送信は結構豊富なオプションがあります。

わかりやすいところだとタイトルとサブタイトルですね。実際にこのように表示されます。

通知センター

Slack、Discord、LINE

Slack と Discord ではそれぞれ API として提供されているウェブフックを利用した通知になっています。こちらは Python の requests を利用して投げています。LINE についても LINE Notify を利用して流れはウェブフックと似た感じですね。

その他

ライセンス

MIT License にしてみました。自由に使っていただきたいので。

コメントアウト・ドックストリングもどき

日本語で少し書いています。最近コメントを日本語にするぐらいならコード自体日本語でいいんじゃないかなって気がしてきているので、時間があったら試してみたい。

アイコン?

この記事のアイキャッチにも設定している「py!」って書いてあるやつですね。「py」が小文字なのに「!」と位置を揃えたり、なんかそれっぽいグラデーションを使ってみたり、遊んでいます。文字だけですけど。フォントは Futura です。

クラス図

Pylint の Pyreverse を使用して出力しています。ただフォントが気に食わなかったので、SVG で出力してフォントを変更しています。

クラス図

今後のアップデート

Slack と Discord は詳細設定を足せそうなのでやれたらやろうかなと。あとファイルとか送れたら便利そうですよね。

おわりに

よかったら使ってみてください。