Backlog 担当課題の一覧表示&通知される Chrome 拡張の開発
Backlog の確認のためいちいちウェブページを開くのはだるい&メールを見ない人間なので、複数のワークスペースで自分のバックログの一覧を見られる・担当課題ができたら通知がくる Chrome 拡張を作成しました → yk-lab/backlog-notification
使い方
ダウンロードとインストール
まずはダウンロードとビルドをして、インストールします(ストア未公開です)。
※npm コマンドが使用可能な環境で実行してください
$ git clone git@github.com:yk-lab/backlog-notification.git
$ cd backlog-notification
$ npm install
$ npm run build
Chrome 拡張のインストール手順:
-
chrome://extensions
を開く - 右上、「デベロッパーモード」を有効にする
- 「パッケージ化されていない拡張機能を読み込む」をクリック
- 「backlog-notification/build」フォルダを選択
設定
本拡張のオプションページを開いてください。
下のような画面が出てきますので、ドメインとAPIキーを入力して保存してください。
(APIキーの取得方法: APIの設定 – Backlog ヘルプセンター)
機能紹介
担当課題一覧
拡張機能のアイコンをクリックすると担当課題の一覧が表示されます。
担当課題通知(ベータ機能)
担当の課題が設定されたら通知します(一定時間おきに取得し通知)。
工夫したところ
リスト表示部のDOM生成
HTML にちゃんと template
というタグがあることを今更ながら知りました(Vue.js とかの拡張ではなかったなんて)。
今回はその template
タグを使いつつ、課題一覧の DOM 生成を行うようにしました。
複数スペース対応
そもそもいろいろなところを開くのが鬱陶しいので始めたため、ここは拘りました。
json-editor/json-editor: JSON Schema Based Editor を使用して複数のスペースの設定用フォームをサクッと導入しました。
最後に
複数のバックログのスペースがある際に担当になっている分だけでもすぐに確認できるようにしておきたく、Chrome 拡張機能は作ったことがなかったため作成しました。
もしもっと便利な拡張機能をご存知でしたら、教えていただけると嬉しいです。
GitHub での issue や Pull Request、Twitter の DM でのバグ報告,アイディア提供などなどお待ちしております。
コードのリファクタリングも大歓迎です!
参考
Chrome API ドキュメント
- chrome.alarms - Chrome Developers
- chrome.notifications - Chrome Developers
- chrome.storage - Chrome Developers
- chrome.tabs - Chrome Developers
import/require・Webpack
- Concepts | webpack
- 【ECMAScript】importでSyntaxError - Qiita
- # CommonJS と ES6の import/export で迷うなら - Qiita
- webpackとBabelの基本を理解する(1) ―webpack編― - Qiita
- Node.js 13.2.0 で--experimental-modulesが外れたのでESMを試す - Qiita
- Node.jsのES Modulesサポートの現状確認と備え - teppeis blog
JSLint(JSHint)
DOM生成
デザイン
json-editor
その他
- chrome-extension-cli - npm
- Give users options - Chrome Developers
- 【Chrome Extension】ポップアップから簡易スクレイピング - Qiita
- Chrome拡張でとっても役立つAPIのまとめ - Qiita
- How to enable fetch POST in chrome extension contentScript? - Stack Overflow
- JSの実行するタイミング色々 - Qiita
- JavaScript | 関数から複数の値を呼び出し元へ返す
- arrays - Javascript Fetch inside a map - Stack Overflow
- Date.parse() - JavaScript | MDN
- Date.prototype.toLocaleString() - JavaScript | MDN
- size-plugin | Probot
Discussion