upinetree's memo

Web系技術の話題や日常について。

macOS で自作キーボードからジョブカン打刻

様子

用意するもの

jobcan_slack_electron

  • Electron 製自作ツール
  • ジョブカンを Slack 連携させると使えるようになるスラッシュコマンド (/jobcan_touch) を、 Slack API 経由で実行
  • レガシートークンが必要、かつコマンド実行のための command.chat APIは非公開なのでそのうち使えなくなるかもしれない…
    • ジョブカンが API を提供していないのでこうするのが一番楽そう
    • スクレイピングはつらい
  • オマケ機能で出勤、退勤時に好きな画像をランダムで表示してくれる

打刻用ショートカットを登録

macOS のショートカットキー設定ではアプリケーションを直接登録することができないので、 Automator でサービスを作ってからショートカットキーとして設定する。

  • jobcan_slack_electron をパスの通った場所に配置
  • Automator を起動

f:id:upinetree:20200301151649p:plain
Spotlight から探すと楽

  • 「ファイル」→「新規」→「クイックアクション」
  • 「アプリケーションを起動」アクションを追加して、起動アプリケーションに jobcan_slack_electron を選択

f:id:upinetree:20200301151755p:plain
設定が完了した様子

  • 保存(ここでは jobcan_touch という名前を設定)して終了
  • macOS の「システム環境設定」→「キーボード」→「ショートカット」→「サービス」に先程保存したクイックアクションのサービスが出現しているはずなので、好きなショートカットキーを設定する。このあとキーボードの専用キーに登録するショートカットになるので、誤爆しないよう複雑なものにすると良い

f:id:upinetree:20200301151849p:plain
jobcan_touch サービスをショートカットキーとして登録

  • 上記で設定したショートカットキーを自作キーボードから叩くために、QMKのキー設定を書く。以下は meishi の例で、誤爆防止のため One Shot Layer 機能を使っている
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [0] = LAYOUT(
    XXXXXXX, XXXXXXX, XXXXXXX, OSL(1) \
  ),
  [1] = LAYOUT(
    HYPR(KC_BSLASH), XXXXXXX, XXXXXXX, XXXXXXX \
  ),
};
  • QMKの設定をファームウェアに焼いたら完成。設定したキーを入力すれば、ジョブカン打刻ができるようなった! 🎉

おまけ: Electron Fiddle でアプリを初めて作った感想

  • 最小限のElectronアプリをシュッと作れて良い体験だった
    • ただ、本当に最小限で、 main.js, render.js, index.html しか編集できない
    • require() を書くだけで自動的にモジュールがインストール、補完なども有効になる
    • 保存すれば普通の Electron プロジェクトなので、普通の開発フローに乗せられる
  • ボイラープレートの作成から、ビルド、実行、パッケージ化がワンタッチでできる
    • Gist への Save/Load もワンタッチ
  • Gist からリポジトリ化する際には、以下の対応を行った。らくちん
    • electron-builder の導入と設定
    • GitHub Actions でのビルド自動化