ブラウザ拡張開発日記

作ってるもの→ https://chrome.google.com/webstore/search/cside?_category=extensions

相変わらず Bootstrap を使い続けてしまっている

前回のあらすじ:Tailwind は最低限のデザインで構わない自分にとっては Not for me だった - ブラウザ拡張開発日記 Tailwind を無料で使う場合、UI Component ライブラリは無料の 3rd party 製のものを探して選ぶ必要があるわけだけど、品質がまちまちだし…

拡張機能の有料機能を、買い切り or サブスク どちらで提供するか、悩んだメモ

実装はあらかた終わったが、最後の最後に、買い切りかサブスクかで迷いが生じてしまった。 相談できる同僚もいないので、ここで自分の考えを整理したい。 対象のプロダクト chrome.google.com 一見簡単そうに見えるが、パーサーが非常に複雑で、コード行数 5…

ブラウザ拡張機能を作る際に利用している外部サービス 3 つ

Sentry - エラー収集 https://sentry.io/ 言わずとしれたエラー収集サービス。アラートを Slack に流してる。 エラーに個人情報が混じってる場合は適切にマスクした上で送信すること。 無料プランだと Slack 連携が使えないので Sentry の Webhook → Vercel …

はてなブログを Markdown で書くとき、リスト(箇条書き)の先頭の記号を入力補完するブラウザ拡張機能

を作った。 インストール Windows で動作検証できてないので、もし Win ユーザーで動かない人いたら教えてください。 Chrome / Edge Firefox 仕様 入力補完に対応してる記法 順序なしリスト( - , * , + ) 順序付きリスト( 1. ) 引用( > ) 自動インデン…

URL が動的に変わった場合に何かする( Chrome 拡張で)

追記 chrome.tabs.onUpdated の方がいいかも。 ユーザーに対して "ブラウザの履歴" 権限を要求しないのも、ユーザーの心象が良い。 追記前の文章ここから URL が動的に変わった場合、とは要するに pushState された後に何かすることを指す。 window.popstate…

複数の PJ で使う TypeScript のコードを共通ライブラリ化する

ライブラリを作るにあたり:tsup を使った ライブラリをどこに上げるか→ Github Packages にした ライブラリを作るにあたり:tsup を使った tsup tsup とは:rollup みたいなバンドルツール。TypeScript で npm パッケージを作るのに特化している。 これを使…

Plasmo がいまさら気になる(まだちゃんと触れていない)

割と前からあるっぽいが、社会と断絶した生活を送ってるため、昨日知った。。 www.plasmo.com zenn.dev 公式サイトでは下記のように謳っている。 ブラウザ拡張機能を作成するための React フレームワーク テストや自動デプロイするための機能なども提供して…

Edge の拡張ストアを利用した感想

Edge にも拡張のストアがあるを割と最近知ったので、Chrome に出してるやつを何点か出してみた。 Good Chrome の拡張を、一行もソースを書き換えることなく Edge にもリリースできる ストアの素材(スクショ、アイコン等)も Chrome のストアのものと全て同…

SPA のルーティングはパスとハッシュのどちらが良いか

/dashboard と /#dashboard のどっちが良いか、という話ね。 Using Hashed vs. Non-Hashed URL Paths in Single Page Apps | by Viduni Wickramarachchi | Bits and Pieces Google はハッシュ以降を削除した URL をインデックスするから、別々のページとして…

テストを Jest → Vitest に移行してみて

テストファイルが 15 個あるリポジトリ を Jest → Vitest に移行してみた。 良かった点 実行時間が 7.5 秒→ 2.9 秒、半分以下になったのは凄い Jest の API と互換性があるので s/jest/vi/g でほぼ動くのは凄い イマイチな点 たまに変なバグ踏むことがあり *…

React の状態管理ツールをひととおり触った所感

「たったこれだけで "ひととおり" って言うな!」というツッコミは甘んじて受けます。 触ったもの useReducer + useContext React 本体の知識だけで使える ❌ reducer に非同期処理を書けない ❌ Context が増えてきたら非常に読みづらくなる ❌ 結果的に劣化 …

Tailwind は最低限のデザインで構わない自分にとっては Not for me だった

前提:私の目的は「デザインは最低限見た目が整ってればいいから、とにかくかける工数を最小にしたい」 Tailwind 、Bootstrap みたいなもんだと思って入門してみたら全く非なるものだった。両者は役割がぜんぜん違う Tailwind の役割:デザインシステムを自…