Screaming Loud

日々是精進

firefoxで crxjsを動かす

crxjsとは Chrome Extensionを作るためのツールです。

crxjs.dev

しかし公式のドキュメントには、まだfirefoxのpluginを作る方法は記載されていません。

ただ以下のようにすでにPRはマージされており、使えるようになっています。

github.com

ということで、firefoxでcrxjsを動かす方法を見ていきたいと思います。

Create Project

基本は公式のドキュメント通りですが、いくつか足りないものがあるので順を追って書いていきます。 また今回は Vite2のバージョンで記載していきます。

npm init vite@latest
npm install
npm i @crxjs/vite-plugin@2.0.0-beta.23 -D // latestだと1系が入ってしまう
npm i @types/firefox-webext-browser -D // browser objectを使うため

まずは上記コマンドでpluginたちをinstallします。

Chrome Extensionとは一定互換性があるのですが、Chromechrome namespaceを WebExtension APIでは browser namespaceを使います。 Firefoxchrome namespaceでも動くのですが、 非同期のAPIのコールバックの渡し方が違います。

developer.mozilla.org

設定ファイル

各種設定ファイルを修正していきます。

config書き換え

拡張機能を作るには、manifest.json を設定しなければいけません。 crxjsの公式ドキュメントには jsonファイルを設定するやり方が書いてありますが、型の恩恵を受けるために ts上に直接記載していきます。

以下は vite.config.ts を書き換えたものです。

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { crx, defineManifest } from "@crxjs/vite-plugin";

const manifest = defineManifest({
  manifest_version: 3,
  name: "My Extension",
  version: "1.0.0",
  action: {
    default_popup: "index.html",
  },
});

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    react(),
    crx({ manifest, browser: "firefox" }),
  ]
})

これで最小限のmanifestは完了です。

package.json修正

tsで作成している場合は、以下のように type module を指定する必要があります。 指定しない場合、ts buildでTypeErrorになってしまいます。

{
  "name": "my-extension",
  "type": "module",
  "scripts": {},
  ...
}

こちらはいずれ解決するかもしれません。

github.com

実際に動かしてみる

まずビルドします。

npm run build

ビルドしたら about:debugging#/runtime/this-firefox にアクセスして 上記でビルドした dist/manifest.json を指定して開きます。

一時的なアドオンの追加

読み込むとこんな感じになります。

一時的なアドオン実行

読み込ませると以下のようにアドオンを開けるようになります。

拡張機能を開く

2023年振り返り

去年の振り返りはこちら

yuutookun.hatenablog.com

ブログを書くのが年の瀬だけになってしまいました。 今年もやっていきます。

仕事

マネージャーになった

2019年夏くらいから4年くらいリードエンジニアをやらせてもらっていましたが、ジョブチェンジをしてエンジニアリングマネージャーをやらせてもらいました。 正式には8月からやっていたのですが、マネージャー業務の引き継ぎとかでその前から実質業務はやっていました。

正式マネージャーになる前ではありますが、チームにおいての考え方とかを記事に書いたりもしてました。

tech.gunosy.io

あとはkubernatesの障害対応とかのためにOSSを作って対応したりもしてました。

tech.gunosy.io

広告部門からLLM部門へ

ちょうど今月12月から新卒から現職まで10年間ほどやっていた広告部門から新規事業のLLM部門に異動しました。 ずっと広告をやっていたのですが、LLMのようなインパクトのあるテクノロジーにチャレンジする機会を会社から頂いたので、異動を決めました。

広告チームから離れるのは心残りではあったのですが、チームメンバーもすごく成長してくれて、安心して任せられるチームとなったので今は心強いです。 マネージャーとしてもうれしい限りです。

LLM部門としてはこちらをやっていきます。

udekiki.jp

こちらでは、また実装をガンガンやっていっています。

プライベート

家買った

プライベートが直近は結構忙しくて、というのも家(中古マンション)を買いました。 ずっとコロナに入ってから賃貸で広いところを探していたのですが、条件にマッチするところがなくついに購入に舵を切りました。 賃貸で猫2匹を飼える物件が少なすぎたり、あっても申し込みが殺到してて全然内見までたどり着けなかったり、飼えても家賃が高すぎだったりで無理でした。

購入に際してよい物件を見つけたので、とてもよかったです。 ただ検討段階では考えていなかったリフォームを実施することになり、考えることがめちゃくちゃ増えてかなり忙しかったです。

キッチン解体後

まだリフォーム中で引越しはまだですが、新居が出来上がるのを眺めているとワクワクです。

引越して猫たちは慣れてくれるかな。

洗濯機の中のねこ

運動

コロナ明けて久しぶりにフットサルもやりました。

引き続きテニスもやってます。 大会とかで勝ってみたいですね。

まとめ

今年は環境が色々変わった年でしたが、ポジティブな変化が多い一年でした。 来年もやっていき!!

2022年振り返り

去年の振り返りはこちら

yuutookun.hatenablog.com

って載せながら、今年はブログを全く書いてなかったので前回の記事が去年の振り返りになってますね。。

仕事

今年の大きなトピックとしては、大きなコスト削減施策を実施しました。

tech.gunosy.io

tech.gunosy.io

またその結果が評価され、全社MVPとして表彰していただけました。 昨年はエンジニア部門として表彰されましたが、今年は全社MVPとしての表彰で初めてだったのでうれしかったです。

gunosiru.gunosy.co.jp

他にはRailsの一部の画面をモブプロで書き換えるプロジェクトを実施していました。 下記のブログはその一部の話なんですが、そもそも修正対象画面に大量のフォームが存在していて、 チームでも何をする設定なのかを知らないものがいくつもありました。 おかげでドメイン知識をチームみんなにインストールできたというのは大きな収穫でした。

tech.gunosy.io

個人的にはモブプロで一番良かったのは、結合テストでした。 結合テストって網羅的にテストを実行する必要があり、テストが失敗したときに自分の操作を単純にミスったのかほんとにバグが発生しているのか不安になることが多く、 精神的に結構つらい(みんなはどうなんだろう?)のですが、みんなで並列で実施するとテストの失敗した人数的にバグってるかどうかが確認しやすいのが良かったです。

それ以外でいうとチームメンバーにテックブログを率先して書いてくれるようになって、チームでのブログ執筆率が高かったことです。 チームのアウトプットが増えるのは誇らしいですね。

また、リードエンジニアになってから技術1on1という施策をずっと実施しているのですが、 おかげさまでやってほしいという声を頂いて1on1を実施する人数が増えてきました。

あとは結構大変だったことの一つでエンジニアの行動指針を作るというのを実施していたのですがこれがすごく大変でした。 というのも、何をもってできると評価するのかというのはすごく難しく、単純な表層のスキルだけだとすぐ陳腐化してしまうので、 根っこの行動する基準みたいなものがどうあるかを評価したい、でもそれって外から観測できないから評価できないのではないか、 などという堂々巡りが発生していました。

tech.gunosy.io

一応無事?第一弾は作成完了したのですが、改めて評価の難しさを認識しました。

今年も一年お疲れさまでした。

ねこたち

2021年振り返り

去年の振り返りはこちら

yuutookun.hatenablog.com

仕事

今年は広告のシステムを全部見るようになりました。

引き継いだシステムが結構速報とかでスパイクリクエストが多くてアラートが鳴りがちで、以下のような対応とかしてました。 今年は結構ここらへんの対応が多かったですかね。

tech.gunosy.io

去年あたりから始めた失敗共有会の「はにびぶ会」ですが、どんなふうにやってどこらへんが困ってるかなどをブログに残しました。 勉強会運営って結構モチベーション維持が大変なので、もっと楽に運営していきたいなぁと思ったり。 こちらは社内勉強会ですが、社外で勉強会開催してるってすごいエネルギーが必要だと思うので、すごいと思います。

tech.gunosy.io

あとはHudiなどのデータレイク周りに手をいれたりしました。 GlueSparkをちゃんと本番にリリース、運用したのは初めてだったのでよい経験でしたね。 ずっとHudiを本番で使ってみたいなぁという気持ちがあったので、使えてよかったなぁと思ってます。

tech.gunosy.io

あとは終盤コロナが明け始めて月1くらいで出社をするようになりました。 会社がWeWorkなので、午後5時以降生ビールが飲み放題なので、コミュニケーションの起点になっててよいなぁと。

また技術1on1なるものをリードエンジニアになってからメンバーとやってるのですが、その範囲が増えてきたりしました。 コロナ前に始めたんですが、リモート環境で会話機会が少ないのをカバーする役割に運良くなりました。

あと、今年は締め会でエンジニアとして表彰されました。 こういう表彰は久しぶりでもあったので新鮮でうれしかったのと、 チームメンバーの頑張りのおかげでもあったと思うので、 さらにチームのチカラを上げていけるように尽力していこうと思います。

プライベート

テニスの頻度がすごい増えました。 昔のテニスを仲間が続々とテニス復帰していてそのおかげでやる頻度が増えました。 上手くはなってるんですが、周りも一緒にうまくなっているので、やっぱりまだまだだなぁと思うことのほうが多いですね。

あと引っ越しをしようとして物件を探してますが、猫2匹を飼える家で今より広い家を見つけるのがすごい大変で苦戦しました。 絶賛探し中です。

まとめ

来年もやっていきます。