長い処理は,完了時に Line で通知が届くようにすると捗る(超簡単&オススメ)

概要

  • PCの前で,重たい処理が終わるのをじっと待つのは時間の無駄です
  • 重たい処理が終わると,自動で LINE に通知を送る方法を紹介します
  • 処理完了!のLINE通知が届くまでは,PCなんて放置して時間を有効活用しましょう

手順

LINE公式が提供している通知連携用のAPI(LINE Notify)を使います

APIといっても費用は不要,無料ですぐに使えます

初期登録

1) Lineのグループを作成する

API(LINE Notify)は,グループ宛に通知を送信する仕組みです

そのため,通知を受信するグループをあらかじめ作成する必要があります
自分ひとりしか通知を受け取らない場合でも,グループが必要です.

スマホなどでLineのアプリを起動して,アプリ上でLine のグループを作成します.

名前はなんでもOKです.

2) API(LINE Notify)の設定

ブラウザで以下のURLを開きます

https://notify-bot.line.me/ja/

LineIDでログイン.ログイン後マイページを開きます

3) アクセストークンの作成

先ほどの1)で作成したグループを選択して,アクセストークンを作成します

アクセストークンはパスワードのようなものです.

4) グループに LINE notifyを招待

Lineのアプリ上で, 1)で作成したグループに LINE notify を招待します


以上で初期登録はおしまいです

スクリプトの作成

通知送信用のスクリプトを作成します

ワンライナーでも記述できるのですが,便利なのでファイル化します

以下の内容を linenotify.sh というファイル名で保存しておきます

#!/bin/sh
MSG="$@"
TOKEN="上記の3)で作成したアクセストークンの文字列"
wget -q \
   --header="Authorization: Bearer ${TOKEN}" \
   --post-data="message=${MSG}" \
   https://notify-api.line.me/api/notify

仕組みとしては単純で,HTTPS経由で,POSTメソッドでメッセージを送信しているだけです.

実装は wget コマンドを使っています.wget がインストールされてない場合は curl などをつかいましょう.

動作確認

パスが通ったディレクトリに上記の linenotify.sh のスクリプトファイルを配置して,linenotify.sh を実行します

たとえば "Hello"という文字列をLineで送りたい場合は以下のコマンドを実行します

$ linenotify.sh  Hello

現在時刻を通知したい場合は

$ linenotify.sh `date`

を実行します

これは,現在時刻を出力する dateコマンドを実行して,その実行結果の文字列(つまり現在時刻)を line に通知する動作になります

使い方(簡単な例)

たとえば重たい処理が command1 とすると

$ command1 ; linenotify.sh "command1 done"

と実行すれば,終了後すぐに "command1 done"という文字列がLineに通知されます

使い方(少し高度な例)

comannd1が失敗した場合だけLINEで通知

$ command1 || linenotify.sh "command1 failed!"

comannd1が成功した場合だけLINEで通知

$ command1 && linenotify.sh "command1 succeed!"

応用例

Lineに簡単に通知が送信できるので,いろいろな使い方ができます

一時間に一回,ログファイルを監視,行数を報告させる

ログファイルを/var/log/logfile とすると,wc -l で行数を数えるだけなので

while /bin/true; do  linenotify.sh $(wc -l /var/log/logifle); sleep 3600; done
一時間に一回,ログファイルを監視,特定のメッセージの有無を報告させる

ログファイルを/var/log/logfile とすると,grepで特定のメッセージを検索するだけなので

while /bin/true; do  linenotify.sh $(grep keyword  /var/log/logifle); sleep 3600; done

まとめ

このエントリは以下の記事に触発されて作成しました
https://zenn.dev/magicmoment/articles/play-sound-command-20241205



エンジニア・プログラマをやっていると,

  • サーバーに溜まった大量のログファイルの集計
  • 動画のエンコード
  • 大規模プロジェクトのビルド
  • テストケースの実行
  • 機械学習/LLMのファインチューニング
  • その前処理

など,長い処理・重たい処理は沢山登場します

古典的な方法としては

$ make ; beep 

ã‚„

$ make ; eject

です


でもパソコンの前でじっと処理が終わるのを待つのは,時間の無駄でしかありません.時間がもったいない.

そこで今回は,時間を有効活用するための手段として,LINE通知を使う方法を紹介しました.この方法を使えば,PCを放置して休憩や食事,打ち合わせに出かけるといった新しい選択肢が生まれます.

追記

このエントリを書いていて気がついたのですが,API(LINE Notify)は2025年4月でサービス終了,今後は新しいAPIに移行するようです.

近日中に新しいAPIに乗り換えるので,その時はまた別記事で手順などを公開する予定です