Chromium
Webアプリ型業務システムで、手詰まりになった問題をEdge拡張機能とUIオートメーションの合わせ技で解決した事例
結城です。
当社が受託開発を行う際には、なるべく「筋が良い」設計でソフトウェアを実装したり、仕様に問題がある場合は「筋が良い」仕様になるようご提案したりといった要領で、可能な限り技術的に「筋が良い」解決方法を取るように努めています。 技術的な制約によって理想的な解決の仕方ができない場合でも、当社では様々な可能性を探り、ご相談を頂いた時点では想定されていなかった方法で問題を解決します。
本記事で取り扱うEdge拡張機能の開発事例も、その一つです。 本事例では、「Webブラウザー・Edgeの仕様にない挙動を実現したい」という、通常であれば技術的に不可能と思われるご要望を、その背景にあった事情まで遡ってヒアリングして、無事解決まで導くことができました。 この記事では、当社が本事例でどのように問題を解きほぐして解決したのかをご紹介したいと思います。
セキュアブラウザ「Chronos SystemGuard」と最新版定期リリースのご紹介
屋代です。2023年よりセキュアブラウザ製品「Chronos SystemGuard」を担当しています。
2025年2月14日に、Chronos SystemGuardの最新版となるv15.0.131.0をリリースしました! そこでこの機会に、次の2点について簡単にご紹介します。
- Chronos SystemGuardについて
- Chronos SystemGuardのリリースについて
自動テストがなかったGo製Native Messaging Hostの自動テストの作り方
FirefoxやThunderbird、Chromium系ブラウザーなどの拡張機能では、Native Messagingという仕組みを使って、通常のAPIの範囲では行えないローカルファイルへの直接のアクセスなどを行えます。これは、ブラウザーが拡張機能からの求めに応じて「Native Messaging Host(以下NMH)」と呼ばれる特殊なネイティブアプリケーションを呼び出すことによって実現されます。
NMHはどのような言語で開発しても問題ありません1が、拡張機能がマルチプラットフォームで利用され得ることと、NMHは標準入出力を使う非GUIアプリケーションとして実装すればよいことから、当社では、単一ソースからマルチプラットフォームな実行ファイルを容易にクロスビルドできるGo言語(golang)を用いる場合が多いです。本記事では、このような前提で開発されたもののそれまで自動テストがなかったgolang製NMHに、後付けで自動テストを作る際の注意点を紹介します。
-
極端な例では、Bash用のシェルスクリプトもNMHとして使用できます。 ↩
Chromium Embedded Frameworkへのコントリビュート体験談
最近、ChronosというChromiumベースのWebブラウザの開発をしている橋田です。仮想化ソリューションと組み合わせて、Windows環境で動作する仮想化アプリとして提供するプロダクトです。
Chronosでは、Chromiumブラウザを自作のアプリケーションに組み込むためのフレームワークである「Chromium Embedded Framework」を使っています(以降「CEF」と表記)。
先日、Chronosの開発を通じて、CEFに簡単な機能追加のパッチを提供しました。 今回はその体験を元に、CEFへのコントリビュートの流れを紹介します。
後半には、さらによくわかる特別コンテンツ(?)もありますのであわせてどうぞ。
Google Chrome拡張機能のManifest V3におけるwebRequestでのブロッキングの継続利用
2020年に発表され、2021年のGoogle Chrome 88以降のバージョンで既に利用可能となっている、Chrome用拡張機能の仕様の大規模アップデートである「Manifest V3」では、それまであったwebRequestと呼ばれるAPIが廃止されています。
ですが、いつまで可能かという期間は明記されていないものの、主に法人運用向けとして、特定の条件を満たすことでこのAPIの利用を継続できるようになっています。
この記事では、webRequestによるブロッキングをManifest V3でも行う具体的な方法について解説します。
Google ChromeのGUIから辿る、ドキュメント化されていない仕様の調査
先日、当社の法人向けFLOSSサポート業務の一環として、Google Chromeのドキュメント化されていない仕様について調査のご依頼を頂きました。 具体的には、インストール済みの拡張機能の自動更新について、
- 更新を停止する方法はあるかどうか。
- 自動更新処理はどの程度の間隔で実行される仕様か。
というお問い合わせでした。 本記事では、これらのお問い合わせに回答するために何をどのように調査したかの紹介を通じて、詳細を把握していないOSSのソースコードの歩き方の例を示してみます。