ここまでのChrome Extensionsのまとめと開発のおすすめ

最近になってChroem ExtensionsのBookmarks APIを知ってからの開発のまとめです。

開発するきっかけ

メモ的にテック系記事を拝見することが多く、調べる過程ではモバイル端末がメインです。モバイルで隙間時間にささっと調べて見当をつけてから、デスクトップに移ってコードを書く、というようなサイクルが自分のスタイルです。

このような時に、モバイルでブックマークにした記事を再度、デスクトップから拝見する際に、ブックマークのリストを下段付近までプルダウンを操作するのが、けっこう不便に感じていましたので、この課題をなんとかしたくて開発を始めました。
Bookmarks APIをちょうど知れたことも大きい理由です。

developer.chrome.com

開発初期は最近のブックマーク表示のみ

この時は、ほぼサンプルコードそのままのような感じで、getRecent()で取得した値をDOMを利用して表示するのみでした。

この状態ですとサイト毎にあるfaviconもなく、代わりにlist-style-typeにて既定の絵文字アイコンを表示するに留まっていました。

開発二段階めにファビコンも表示

本家のブックマークのようにfaviconが表示されたほうが、どのサイトのブックマークなのかがわかりやすいので、なんとかfaviconも表示したいと思って開発を続けたのが二段階めです。

faviconを取得するプロパティなどはBookmarks APIにはなく、別の手段が必要でしたが、調べれば当然のごとく方法が存在するわけで、サンプルコードもあり、思うような結果が得られました。

ここでもDOMを駆使するわけで、工数が多く感じられ苦労しましたが、いったん表示さえできれば、あとはcssでなんとか美しく並べるだけなので、そこの作業は容易なのでfavicon設置完了です。

developer.chrome.com

開発三段階めはツールチップでURL

本家ブックマークにおいては、マウスオーバーでurlがツールチップで表示されます。ブックマークがタイトルのみですと、同じタイトルが並んだ場合、どちらが表示したいサイトへのブックマークなのかが瞬時に判断できません。

これは自分の開発サイトで、タイトルが同じ正規urlと仮urlを区別できない場合があり、ツールチップのurlが必要だと感じたことから対応することにしました。

すでにurlは取得ずみでありますので、あとはツールチップとして表示するだけですが、時にはかなり長いurlが存在し、設定したwidthをはみだしてしまいurlが見切れてしまうところまでが三段階めです。

開発四段階めはダークモードにも対応など

ツールチップのurlがはみだすことに気づいて改善したのが四段階めです。 当初はtextContent仕様で、一定文字数で改行を入れるのにあれれ?となりましたが、innerHTMLの採用で解決です。

本家ブックマークは本体ブラウザにあわせてダークモードにも対応しているわけで、拡張機能の部分だけがライトモード固定ではどうもしっくりこないので、ダークモードも採用だ!とがんばったのもこの段階です。

ダークモードへの対応は、cssであっさりとかんたんにできました。

開発五段階めはブックマークバーとの重複をさける

いまのところここが終点です。 自分のこの拡張機能の使い方が、最近のブックマーク集というよりも、最近のブックマークへのショートカット、要はプルダウンを深掘りしなくてよいようにすることなので、ブックマークバーに直接保存したブックマークは、ブックマークバーにあれば、深掘りする必要もなく、この拡張機能に表示されなくてもいいわけです。

それで、ブックマークバーにあるブックマークは含めない仕様に改善しました。 ここまでコードをあれこれ書き直してきたにもかかわらず、理解がとぼしく、どこで除外すれば適当なのか迷いました。

最初はそもそものgetRecent()で取得した配列ライクなオブジェクトの時点で、ブックマークバーのID、parentId: "1"となる要素を除外しようと試みましたが、このgetRecent()で取得する値はどうやら変更不可のようで、少しばかし時間を溶かしてしまいましたが、DOMの更新を一度にするためのcreateDocumentFragment()に加工したhtmlをいったん追加する段階で、parentId: "1"に該当するブックマークを除外することができました。ふー!

Chrome Extensionsの開発のすすめ

もし今、JavaScriptを学習中であれば、ブラウザ拡張機能、Chroem Extensionsの開発をおすすめします。

サンプルコードも豊富に用意されていますし、動作確認も自分のブラウザですぐに確認できます。

特にポップアップ仕様の拡張機能の場合、ポップアップされるのはhtmlなので、DEVツールも活用でき、JavaScript、html、cssと同時に学習機会が得られます。

bookmarksだけでなく、alarmsやdesktopCaptureなどもあり、簡単な機能から段階を経て開発を続けられるのではと思います。

すでに腕に自信のある方は、AIを利用した拡張機能のサンプルもあるようなので、トライしてみてください。

developer.chrome.com

ど素人がおすすめなんてして🙇すいません。。。

nakamka.hatenablog.com

nakamka.hatenablog.com