
m_nukazawaの日記: 「Augmentation your ordinary world wide web」序文
技術書典15(2023/11/12(日))にて頒布する技術同人誌「JSで作るいまどきのブラウザ拡張(WebExtensions本)」の序文です。
====
# 前文:Fury、そしてブラウザ拡張機能
技術同人誌を書くには、ある種の怒りが必要だ。
では私は、ブラウザ拡張開発の何に怒っているのだろう?
『GTK/Qt/electron』を執筆したとき、私はGTK/Qtに怒っていた。
『クロスプラットフォーム・デスクトップアプリケーション・フレームワーク』という、やたらに名前が長い技術は、フリーソフトウェアに勝利をもたらし悪のWintel連合を打倒するはずではなかったのか?
そういった過去の怒りを精算するために本を書いた。
『ゼロから作るTrueTypeフォントファイル』執筆の動機は率直に言って『ある種の自己不信』への怒りだった。
フォントを売り物にしておきながら基礎技術への理解に乏しいことへの怒り。
前著『GTK/Qt/electron』では既に終わっている経験を扱い、技術的には未知への挑戦をしなかった臆病な自分への怒り。
それらの怒りを払拭するために本を書いた。
もちろん執筆動機の全てではないけれど、怒りの感情は確かに実在していて、時に進むための力になってくれる。
----
一方で、ヒトは怒りのみで生きているわけではない。
GTKは私に、自分1人で『本物の』アプリケーションを作れるという自信を与えてくれた。
『Reactで書くhello world』や『OpenCVでLenaの顔輪郭抽出をできるようになるまで』のような、小さなチュートリアルの非実用アプリケーションとは違う。
Qtやelectronでの開発も、根底にはGTKで開発できた実績が挑戦する気持ちを支えてくれた。
フォントは私に、商売を実践させてくれた。
アメリカでティーンエイジャーがレモネード売りをするような微笑ましさでも、あれは間違いなく『私のビジネス』だった。
WebExtensionsはJavaScriptでブラウザ拡張を書く技術だ。
そしてWebExtensionsは、私のネットサーフィンにおける些細な問題を解決してくれる。
実際に日常使いできるアプリを作れるようになった喜びは大きい。
怒りと分かち難い大きな感情の動き。
願い、感謝、喜びもまた、開発と執筆の動機となった。
----
そもそも、WebExtensionsにはFireFoxブラウザを作るMozillaによる公式チュートリアルがある。
にもかかわらず、技術同人誌を書くことのできる隙間が『どうして』そして『どこに』あるのか。
WebExtensionsにおいて最も有名な非互換は『広告ブロックにまつわるmanifest v3の攻防』として知られる。
将来的に、FireFoxとChromeの広告ブロッカーAPIは非互換なものとなるらしい。
けれど率直に言ってしまえば、ほとんどの開発者にとって広告ブロッカー開発用のAPIなどどうでもよい。
開発者にとって影響が大きい断絶は、『ページへWebExtensionsを挿入する方法』という根幹部分がブラウザ毎に異なることだ。
ブラウザ拡張の根幹たるmanifestファイルのフォーマットすら、FireFoxとChromeで異なっている。
そんな中で、Mozillaは2023年にChromeのmanifest v3へ対応を開始するとアナウンスした。
そうなれば問題は解決し、本書は不要なものとなるのだろうか?
残念ながら、そうはならない。
Web上の解説記事にはMV2時代など古いChromeの説明がそのまま残ってしまっている。
また、WebExtensions開発環境の構築やプロジェクト構成などは、古びることはあってもまったく役立たなくなるということはない。
FireFox(Mozilla)がmanifest v3を有効化してもなお、ブラウザが相手のストアを有効化した後も互換性問題というものは完全消滅することはおそらくない。
そしてありえない仮定だが、世界にブラウザが1つきりになったとしても、いつかの未来でWebExtensionsが廃止される日まで、本書は役に立つだろう。
----
私たちは毎日インターネットに助けられているが、同時に多くの小さな不満にも晒されている。
- ハートではなく『いいねボタン』を返せ
- amazonの嘘っぱちセール価格が許せない
- 英語読めない!!
- 皇紀ってなんだ西暦で書いてくれ(『負けた』と書くためだけに年号が必要か?)
- twitter見てたら休日終わってた
- すべてのWebサイト上で寿司が流れていないこの世界を革命したい
不足は不満であり、不満は怒りだ。
WebExtensions技術は、webでの不満を解決する力をあなたに与える。
あなたの怒りを開発力に変換し、あなたがWebExtensions開発者になって、もっとすごいインターネットエクスプローラになる一助になることを願い、本書を刊行する。