- はじめに
- はてなブックマークの記事をキーワードやURLでミュートする Chrome/Firefox 拡張
- はてなブログの購読リストの未読の数を表示する Chrome 拡張
- Notion のページの目次を表示する Chrome 拡張、のメンテ
- Notion のページをどこでもポップアップ検索できる Chrome 拡張、のメンテ
- Chrome 拡張の開発で共通してやってること
- ユーザーを増やすためにやったこと
- 終わりに:今後の展望
はじめに
- 自分は病気で何年も働けてないです
- 調子が悪くて全く何もできない日も多いけど、調子のマシな日は 3〜4 時間くらいコードを書いたり勉強したりしてる(今はこれが限界)
- 下記が最近作ったりメンテしてるものです
はてなブックマークの記事をキーワードやURLでミュートする Chrome/Firefox 拡張
- ミュート機能以外にも便利機能たくさんあります。詳しくは 紹介記事(増田) をどうぞ
- 個人的には、訪問済みの記事を薄くする機能がめっちゃ便利(自画自賛)
- ブコメで Firefox 版も欲しい!との声をいくつか貰ったので Firefox 版 も出したら すごい感謝してもらえた
- 働けなくなってから自分が書いたコードで感謝してもらえたのは初めてだったので嬉しかった
- 非 React のアプリでも JSX で UI を記述したかったため、jsx-dom というのを使ったところ たいへん便利だった
はてなブログの購読リストの未読の数を表示する Chrome 拡張
Notion のページの目次を表示する Chrome 拡張、のメンテ
去年出したやつ。
- React 使ってて、多数の state がすごい複雑に絡み合ってるんだけど、Jotai ( Recoil の API をさらにシンプルにしたみたいなライブラリ)を導入したところ、劇的にコードがシンプルになって感動した
- 別に Redux Toolkit でもいいと思うけど、Redux Toolkit と違って非同期処理の絡む一連の処理をコードを分断せずにひとまとめに書けるところが良いと思う
Notion のページをどこでもポップアップ検索できる Chrome 拡張、のメンテ
去年出したやつ。
- ありがたいことに、Issues とかメールで海外の方からよく機能の要望をいただく。
- 要望全てに応えることはできてないけど、自分のプロダクトを通していろんな国の方とコミュニケーションが取れて楽しい。
- 1枚の React アプリ。状態管理ライブラリは使っていない
Chrome 拡張の開発で共通してやってること
とにかく Vite Plugin (Rollup Plugin) が必須
- これ( https://crxjs.dev/vite-plugin/ )
- これがあるのと無いのでは開発の生産性が段違い
- これがないとホットリロードできない。つまりコードを修正したらリロードボタンを押さなければならない。原始時代か。
テストを書く
chrome.*
の API を使っている箇所でも jest-chrome を使うと簡単に処理を mock/stub することができる- ので、これを使ってがんがんユニットテストを書く
- Puppeteer を使うと拡張を入れた Chrome を使って End-to-End テストが書けるそうだが、そこまで手が回っていない(やりたい)
CI を回す
- テスト、型チェック、もろもろの Lint ( ESLint / Stylelint / Prettier ) を Github Actions で push をフックに実行してる
- Stylelint のおすすめ設定は下記にまとめました
Sentry で実行時エラーを回収する
ユーザーを増やすためにやったこと
今んところ、ユーザー数はそれぞれ 150 人ちょい。
ユーザーを増やすために、自分は SNS の発信力もないので、とにかく サムネにこだわった 。
一番重要なのは 220x140 のサムネ で、これは Chrome Web Store の検索結果に表示されるので、 これを機能が一目で分かる画像にする ことが重要。そうするようにしたらユーザー数が伸びるようになった気がする。
↓ サムネの例。機能を端的に表す画像にしてる。
終わりに:今後の展望
- 今後も、社会活動のリハビリのために、あるいは学んだ技術を実践する場として、何かしら作ったりメンテし続けていきたい
- 寄付ボタンを置く ... はもう少し先かな
- 今の体調だと、せっかく寄付してもらっても満足いくスピードでメンテナンスできない可能性が大いにあるので
- Chrome 拡張ばっかじゃなくて、もう少しサーバーが絡むアプリを作っていきたいなぁ、、(しかしネタが思いつかぬ)