Electronでデスクトップアプリケーション

なぜか数年に一度、デスクトップアプリケーションを作りたい欲が出ます。
JavaやらC#やらで作ってましたが、最近で言えばElectronだろうと。SlackとかVS CodeまでElectronらしいじゃないですか。
趣味とは言え、無意味なものを作るのは味気ないので、前に作ったOctolampと眠っていたBlink(1)を発掘して光らせる事にしました。

入門書を読んでみましたが、サンプルコードがバージョン違いで動いたり動かなかったりで、速攻で挫折。もはやChatGPTに聞いた方が早いのでは?と要件を伝えるとサラッと出力してくれました。小さい規模ならコード書く必要すら無いのか・・・と喜びと絶望を感じつつ、上手く使えるようにならないとなーと激しく感じました。

同時にTypeScriptとか頭がパンクしそうだったので、開発言語としてはJavaScript(ES6)です。

ひねり出した用途は下記の通り。

  • GitHubのNotificationsを取得して、CIの失敗ならOctolampを光らせる
  • Gmailの未読数がしきい値を超えたらBlink(1)を光らせる

基本的には物理的なランプを光らせて気付かせるためのアプリ、詳細については各サービスの純正アプリで行う。

アプリケーションとしての細かい仕様としてはこれ。

  • 通知のログを残す
  • Windows11のタスクトレイに常駐する
  • Windows11の通知センターにも通知する(ON、OFFを設定で切り替えたいかも)

はじめにcron回してPHP起動するのと何が違うのか、という葛藤は横に置きます。
Slackの新着通知も考えたのですが、Appというものを作り各ワークスペースにインストールしないと受け取れないと分かったので止めました。趣味アプリのために入れてくれなんて言えない。。

あとは各サービスでOAuthのトークン発行がかなり面倒で、この辺りのUI/UXみたいな所を作り込むのは趣味の範囲を超えそうなので諦めました。(Auth0とかFirebaseを使えば楽できるのかな?)
まずは完成を目指します。

そして完成したのがコレ。

新しい開発言語とフレームワークを使って2~3日でサクッとこれが作れたのはChatGPTのお陰としか言いようがありませんね。(npmに必要なライブラリが全てあったのも大きい!)

また、Octolampは失敗点だった邪魔なLED Strip接続ケーブルをはんだ付けで接続し直して取りました。