🔔

言語やFWのリリース通知を作った

2024/01/06に公開

TL;DR

  • 言語やFWの新着リリースを、普段使いのdiscordに通知するようにした
  • だけど、その後にnewrelease.io と便利なものをみつけた

はじめに

普段、仕事や趣味で使っている技術のアップデート情報はどのように確認していますか?
HEADを追いかけてるので常に把握してます、という方もいるかもしれません。それとも、SNSで流れてくるのを確認したり、公式ニュースを定期的に確認したりしてるかもしれない。そもそもアップデートなんて知らないよ、今使ってるバージョンすら把握してない、って方もいるかもしれません。

SNSや公式ニュース等で確認している場合だと見逃してしまっていたり、そもそも対象が増えてくると確認がめんどくさくなったりします。
そこで、新規リリースがあった場合は、通知が来てほしいなと思いました。普段discordにいる時間が長いので、discordに通知が来ると嬉しい、と思ったのでdiscordにリリース情報を通知するシステムをつくりました。

つくったもの

新しいリリースがあると discord に通知を送るシステムを作りました。

画像は数ヶ月前のものです。(後述の理由で今はこのシステムを止めたため。)

日本時間の毎朝9時に、その前日にリリースされた言語やFW、ミドルウェア等の一覧をリリースされたバージョンとともに、discordのチャンネルに投稿してくれます。
朝の通勤電車内で新たなリリースがあることを知り、公式のリリースノート等を確認し、社内の人に展開する、といったことができるようになります。

こうやってつくりました

リリースデータは、endoflife-date/release-data というリポジトリから取得しています。このリポジトリは、いろんな技術のバージョン情報やEOL情報をまとめている endoflife.date の管理するリリース一覧となっています。

https://endoflife.date/

今回つくったシステムとしてやっていることは、このリリースデータを確認して、新たなリリースがあればそれらをまとめてdiscordに通知する、ということを行っているだけです。
これを実現する技術は何でも良かったのですが、AWS Lambdaを使ってみたかったので、今回はLambdaで動くものを作りました。Lambdaでは、Python や Node.js を始めとして、使用できるランタイムが複数ありますが、今回はNode.jsを使用しました。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html

また、discordへの通知に関しては、discordで生成できるwebhook urlを使っています。
サーバーの権限があれば、「Server Settings」→「Integrations」→「Webhooks」→「New Webhook」でwebhook urlを作成できます。

このwebhook urlにリクエストを送ることで、そのサーバー内のチャンネルにメッセージを発するBOTをつくることができます。

webhook urlでdiscordにメッセージを送信するサンプル

curl -X POST -H "Content-Type: application/json" -d '{"content":"hello discord!"}' $WEBHOOK_URL

その後・・・

このシステムを開発するにあたって、色々調べていると newreleases.io というものを見つけました。
https://newreleases.io/

この newreleases.io は、リリースを通知してくれるサービスです。
GitHubだけでなく、Dockerhubやnpmやrubygemやいろいろなものをソースにリリース通知を受け取ることができます。また、通知の受け取り方もメールやSlack, Discord等、様々な方法で受け取ることができます。

私がつくったリリース通知システムの上位互換のサービスがあったので、つくったシステムは終了して、この newreleases.io を使っています。登録もかんたんだったので、興味がある人はおためししてみてください。

Discussion