Android版 Firefox (Fenix) で、任意のアドオンを使えるようにする

この記事では、 Android 版 Firefox Nightly に対して、 TampermonkeyGreasemonkey などの人気のアドオン(拡張機能)を動作させる手順を紹介する。

Firefox とアドオン

Mozilla Firefox (以下 Firefox) といえば、アドオン(拡張機能)と共にあったと言っても過言ではないだろう。

デスクトップ版 Firefox で、処理速度を大幅に向上させた Firefox Quantum の登場とともに、 それまでに使えていたブラウザのアドオンの多くが使えなくなった。
そのために、ただでさえ下降気味だったシェアの低下が更に加速した (筆者調べ) のも、記憶に新しい。

そして 2020年8月、 動作がかなり重かった 旧来 の Firefox for Android (~ v68.11 コードネームFennec) を、 これまた処理速度を大幅に向上させた GeckoView 版 Firefox for Mobile (v79~ コードネーム Fenix) に更新した際にも、 Mozilla は歴史を繰り返した。
それまで使えていた多くのアドオンが Firefox Fenix では使用できなくなり、 Mozilla が認めたごくごく一握りのアドオンしかインストールできなくなってしまったのだ。

誤解して欲しくはないが、 Chrome 等と比べても UI が洗練されていて 動作が軽快な Firefox Fenix を、私はとても気に入っている。
それでもやはり、どうしてもアドオンを使いたいときがあるのだ。

どうやら、 Firefox Fenix に関しては、 技術的に旧来のアドオンが全く動かなくなった訳ではなく、 ポリシー上制限しているだけのようだ。何故そうしているのかわからないけど。

そのためか、 Firefox の実験的なビルドを提供する開発チャンネルである Firefox Nightly に対して、 任意のアドオンをインストールする手段が用意されている。

先に断っておくが、 Nightly 版を常用することはオススメしない
不安定だし、予期しない問題が発生する確率が高いからだ。

それでも、 Stable チャンネルの Firefox Fenix にはインストールできないけど、どうしても動かしてみたい拡張機能がある場合は、有力な選択肢となるだろう。

Firefox に任意のアドオンをインストールする手順

続きを読む

PowerShell でインストール済プログラム一覧を取得する

PowerShell を Windows の管理ツールとしてみたときに、割と昔から意味がわからないと思っていることが 1点 ある。
Windows のインストール済みプログラム一覧を取得するコマンドがないことだ。

もう少し具体的に言うと、appwiz.cpl で開ける、コントロールパネルのプログラムと機能の一覧や、 設定の「アプリと機能」の一覧を取得するコマンドレットがない。
コマンドレットがないだけじゃなく、コードを書いて取得する確立して手段すら存在しないのだ。

とりあえず、それに近い情報がとれる代替方法として、レジストリのアンインストーラー一覧を取得する方法が知られている。
ただ、ググってもあまり PowerShell らしい綺麗 (?) なコードで書かれているサンプルが少なかったので、ワンライナーで書いてみる。

Get-ChildItem -LiteralPath (('HKLM:', 'HKCU:' | %{ "${_}\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" }) + 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall') | Get-ItemProperty -Name DisplayName, DisplayVersion, Publisher, InstallDate -ErrorAction Ignore;

これで取得した内容を | Sort-Object DisplayName, DisplayVersion| Select-Object DisplayName, DisplayVersion などにパイプしてから使うと良いだろう。


ちなみに WMI の Win32_Product クラスを使って取得する方法 (Get-CimInstance -ClassName Win32_Product) は、

  • MSI でインストールしたアプリしか取得できない
  • コンピューターはMSIがインストールされているすべてのアプリケーションを再検証するので、負荷がかかるし遅い

と言うことから使うべきではないとされている。

VPN に繋ぐと WSL2 や Hyper-V VM でネットワークに繋がらなくなる問題を解消する

OpenVPN や Cisco AnyConnect といった VPN に接続した際、 Hyper-V 仮想マシン内からや、 WSL2 のディストリビューション内、 WSL2 ベースの Docker コンテナ内から、 PC 外のネットワークにアクセスしようとすると、 以下のようなエラーが発生して失敗する。

$ # curl 利用時の例
curl: (6) Could not resolve host: example.com
curl: (5) Could not resolve proxy: proxy.example.com

$ # apt で更新しようとした場合の例
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal/InRelease  Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/focal/InRelease  Temporary failure resolving 'proxy.example.com'

エラーの内容からわかるとおり、アクセス先やプロキシーのドメイン名を DNS で解決できなくなっている。

このような問題が発生することは以前から知っていたのだが、このご時世で VPN 使うことが増えてきて、いい加減鬱陶しくなってきたので、なんとかしようと思う。

解決方法

とりあえず、まずは解決方法から。

続きを読む

Raspberry Pi で作るネットワークエミュレータ

明けましておめでとうございます。

この記事は、 Raspberry Pi Advent Calendar 2020 24日目の記事だ。
…遅刻すぎるのもいいとこだわ。


さて、ネットワーク回りの仕事をしていると、意図的にネットワークの遅延やパケロスを発生させて、検証したくなる状況がままある。

対象のサーバーにネットワークを遅延させるようなモジュール入れるようなやり方も考えられるが、もっと手軽に、 LAN ケーブルの間に挟むだけで、そこを通る通信が全て遅延するみたいな、そんな機材が欲しくなる。

もちろん、そのような需要があれば、それに応える製品があるわけで、それらは一般的に「ネットワークエミュレータ」として売られている。
しかし、高いものでは数百万を軽く超え、安くても数万円はするものばかりだ。

なんか安く作れないかなぁ…
Raspberry Pi あたりで。

…ということで、 Raspberry Pi 4 を使って、遅延とパケロスを制御できる、お手軽ネットワークエミュレータを作ってみよう。

先駆者

そもそもなのだが、そのものズバリなことを実践している先駆者様がいらっしゃった。

この記事の Raspberry Pi には、小型ドットマトリックス LCD ディスプレイや、様々な物理キーが GPIO に繋がっていて、 THE IoT という仕上がりになっている。

かっこいいと思う。
でも、電子工作するのめんどくさいよね。

GUIで手っ取り早く作る

そんな複雑 (…というほど複雑でもないけど) な電子工作しなくても、 RasPi にタッチパネルディスプレイつけちゃえばいいじゃん。
…ということで、 Amazon で割と評判のよい、 OSOYOO の 2,980円 タッチスクリーン付き LCD を取り付けて、めっちゃ簡単な UI をつくってみよう。

OSOYOO(オソヨー) HDMI 3.5 インチ LCD ディスプレイ IPS モニター IPSタッチスクリーン 1920x1280ハイビジョン Raspberry Pi 4 3 2 Model B に対応 (3.5" HDMI LCD+クリアケース)

もはや、 IoT 感を感じるのが難しくなってしまっているな……

続きを読む

.NET Interactive で C# と PowerShell を股に掛ける

この記事は、「C# Advent Calendar 2020」 9日目の記事、かつ 「PowerShell Advent Calendar 2020」 9日目の記事だ。

スミマセン。横着した。

この時期になれば .NET Interactive の Preview 4 が出てるだろうしその記事でも書こうかな~ などと目論んでいたものの、 残念ながら登場しなかった。

このため、 .NET Interactive .NET 5 対応版の導入と、 Variable sharing の内容でお茶を濁そうと思う。

.NET Interactive のなんたるかについては、以前の以下の記事で取り扱っているので、そちらを参照願いたい。

.NET Interactive を .NET 5 で動かしてみる

いきなり本題とは関係ない話になるが、 せっかく .NET 5 がリリースされたところなので、 .NET Interactive を .NET 5 で動かしてみよう。

続きを読む

Among Us 用超便利 Discord bot “AutoMuteUs” をセルフホストする方法 (公式推奨簡単版)

注: この記事は、 2020年11月23日~25日 時点の話を基にしているよ。 状況は今後も刻々と変わる可能性が高いよ。
なお 3月1日 現在、 Among Us バージョン v2020.12.9s では、 以下の手順で問題なく動いていることを確認している。

うまく動かすコトができない場合は、記事の最後にトラブルシューティングも用意したので、そちらを参考にして欲しい。


今年の夏あたりから、日本でも爆発的なブームが続いており、 宇宙人狼, アモアス 等とも呼ばれている Among Us

Discord でボイスチャットしながらやるのが面白いのだけれど、 ゲームの仕様上、ミュート管理が結構面倒だ。

そこに、 Among Us のゲーム画面に同期してミュート管理を超いい感じに自動で行ってくれる Discord bot が存在する。

それが AutoMuteUs だ。

このツールは、 以前は "AmongUs AutoMute" などとも呼ばれ、 誰か一人が Windows Steam 版 Among Us のゲームと一緒にキャプチャープログラムを立ち上げ、 公式の Discord Bot と連携させるだけで超お手軽に使える…
…はずだった。

1月下旬現在、 AutoMuteUs 公式の手順に従って、 bot の .au new コマンドでゲームを作成しようとすると、以下のような悲しいメッセージを目にするだろう。

If I start any more games, Discord will lock me out, or throttle the games I'm running! :frowning:
Please try again in a few minutes, or consider AutoMuteUs Premium (.au premium)
Current Games: 151/150

Discord 側の制限で、これ以上 bot を実行できないって。
しばらく待つか、有料の AutoMuteUs Premium を使ってくれとのこと。

そして、仮にゲームの作成が無事にできたとしても、 bot のミュート変更が遅れたり、変更しそびれたりと不安定だったり…

そこで、 AutoMuteUs のサーバーを自分で実行 (セルフホスト) することで、上記の制限を無料で回避してしまおう というのが、この記事の目指す内容だ。

記事内では画像とテキストで導入手順を解説しているが、 それだけではわかりにくい場合、 こちらに本記事の内容を解説する動画も作成しているので、併せて見ていただくとわかりやすいだろう。

ちょっと古い v2.4.3 をセルフホストするのが推奨

続きを読む

Raspberry Pi に Ubuntu を入れて SSH でログインするまでの A to B

何番煎じかわからないが、 Raspberry Pi (以下、 RasPi) に Ubuntu を入れる手順についてまとめてみようと思う。

Ubuntu 公式の How to install Ubuntu on your Raspberry Pi チュートリアルは充実しているし、 単にインストールして動かすだけなら、既にある記事でも十分だろうとは思う。
しかし、初回セットアップ時の細かいカスタマイズについて書かれているものがあまり見当たらず、 ディスプレイなし かつ Wi-Fi 接続のセットアップ方法などを、詳しく解説されているようなものが見つからなかった。

本記事では、それについて補足しながらまとめていく。

先に断っておくが、 cloud-init による IaC の話が中心になる。

TL;DR

  • 焼いた SD を RasPi に挿すにブートプロセスの設定を書き換える
  • cloud-init の挙動を理解しろ
  • ディスプレイなし & 無線LAN Only だと、工夫がいる
  • ARP リクエストのブロードキャストが届かないと苦労する

きっかけ

続きを読む

激安液タブPC: CHUWI UBook 11.6″ CWI509 お絵かきレビュー

親戚が簡単なお絵かきができる 2-in-1 タブレット PC を欲しがっているということなので、 セールしていた CHUWI UBook を入手してみた。

中華PCを人にオススメするのもどうかとは思ったが、一応 技適もとってる 日本向けのモデルだし、予算と目的がバッチリ一致するので、お絵かき用途ならこれでいいかなと。
10万近くかけて高いノートPC買うほどではものの、そもそもプライベートの PC も持ってないらしいので、基本的人権のメモリ 8GB はある安いの探してたのよね。

買ったマシンのキッティングを行うにあたって、 Windows OS 搭載の一体型液タブとして見てどうだったのかをレビューして見ようと思う。

購入したモデル

今回購入したのは CHUWI UBook と言うモデル。

主なスペックは以下の通り。

続きを読む

.NET Interactive の C# REPL を Jupyter で

今回は、 .NET Interactive を利用し、ローカルマシンで C# や PowerShell Core の REPL を利用するまでをまとめる。

なお、 とりあえず動かしてみたいだけであれば、 Binder バッジのリンクをクリックして、 オンライン上の Binder にブラウザにアクセスするだけで、利用することができる。
Use Jupyter with .NET Interactive on Binder

.NET Interactive とは

.NET Interactive は、 以前 Try.NET と言う名前で提供されていた、 .NET のインタラクティブな機能を提供する API スイートだ。
JupyterLab に .NET カーネルを追加する形で、 REPL の実行やノートブックの作成する仕組みを提供することが、 主なユースケースとなっている。

REPL ではコード補完も効くので、非常に便利なものになっている。

Jupyter について

まず、 Jupyter についても軽く説明しておく。
既にご存じなら読み飛ばして欲しい。

JupyterLab とは?

続きを読む

OPPO Reno A のカメラの結露の水滴が取れないことに四苦八苦した話

久々にしょーもない話をひとつ。

ある日、自分のスマートフォンを見たら、前後のカメラのレンズの部分結露して、水滴がついてしまっていた。

そのスマホで写真を撮ってもごらんの有様↓

大きな寒暖差がある冬場の季節でもないし、そもそもこのスマホ (OPPO Reno A) は防水であり、最近 SIM カードスロットを開け閉めした覚えもない。
どこから水分が入ってしまったのか…

思い当たる節と言えば、先日このスマホに石けん水がかかってしまったことぐらいだろうか。
多分それだな。
(※ 「石けんで洗える」などと特記されているもの出ない限り、防水であっても石けん水だとパッキンから流入してしまうことが多い。 また、そもそもとして防水であっても防湿ではない。)

とりあえず乾燥剤とともにジップロックにぶち込む

原因はともかく、とにかく症状が悪化してしまう前に、なんとか本体内の水分を取り除きたい。

幸いにも、私は過去にも数々の電子デバイスを水没させてきた実績があるので、このようなことは慣れたもの。

スマホの SIM カードを入れるパッキンを取り外して、 いつものように乾燥剤とともにジップロックにぶち込んで一晩寝かせる。


……

水滴取れてへんやないかいっ!

ドライヤーの風を、本体を傷めない程度に離した距離から(具体的には、その風を手にも当ててそれほど熱くならない状態)あててみて、内部の水分を飛ばしてみる。

暖めた直後は結露がなくなるのだが、しばらく経って温度が下がるとまた結露する。

水分の逃げ道が無くなってるな、コレ。

続きを読む