進化と衰退が速いWebの世界。 Chrome Extensionは今後どうなるのでしょうか。 学習する価値はあるのでしょうか。
Chrome Extensionは、Chromeだけでなく、今後他の様々なブラウザでも採用されていくようです。 例えばFirefoxは、既存の拡張機能を今後完全に捨てて、すべてChrome Extension互換のWebExtensionsに移行するようです。 近い将来、すべてのブラウザに対応するExtensionをひとつのソースで書けるようになるでしょう。 そのベースとなるのがChrome Extensionであることはまず間違いないと思われます。 おそらくその過程で、ユニットテスト用のライブラリも整備されて、複数のブラウザでテストするフレームワークも現れ、さらにプログラミングしやすいものに変化していくでしょう。
また、日本では全く注目されていない残念なChrome OSも、アプリケーションはChrome Extensionと全く同じ要領で作るようです。 Chrome JavaScript APIの中にChrome OS専用のAPIがいくつかあります1。 試してみたいのでChrome OSのマシン欲しいです。。。
今からChrome Extensionの学習に投資することは、将来的にも無駄になることはないと思います。 ベテランだけでなく、プログラミング初学者に対しても、普段使っているソフトウェアを便利にするという目的は取っ掛かりとして非常に有効でしょう。 普段遊んでいるMinecraftのMODを作るのと同じくらいエキサイティングな体験になると思います。
一方でサイト制作者に対しても提案があります。
Chrome Extensionは非常に簡単に書け、クロスブラウザの未来が見えているため、これからもさらに利用されていくでしょう。 個々人が、自分だけのためにサイトをカスタマイズする目的で作る事例もあらわれると思います。 そのような場合に、Chrome Extensionで拡張しやすいサイトが、そうでないサイトよりユーザを獲得しやすくなる日が来るかもしれません。 コミケWebカタログも、Extensionでなんとかなったから使えていると言っても過言ではありません。 だいぶ苦しいコードですが。
経験談でいくと、きちんとidが振られているとか、js用のclassとcss用のclassが分離されているとか、まともなイベント設計ができてるサイトはExtensionが作りやすいと感じました。 これは、よいHTMLを書くことや、よいJavaScriptを書くこととベクトルは一緒なので、各々がんばりましょう。 元がクソなサイトはExtensionのコードが不自然になります。2
まだ経験は無いですが、Reactで作られたサイトはおそらくめちゃくちゃExtension作りにくそうと予想しています。
niconicoもHTMLを動的にごっそり変化させるので、niconico-direct-paginationを作るときには相当苦労しました。
DOMの変更を検知するMutationObserver
という珍しい機能を使っています。