バージョン: 1.2.0-build2 / 言語: 日本語 | English
BlinkGTK は「画面を Web
技術で作る」ための部品です。HTML・CSS・JavaScript で
書いた画面を、Linux アプリケーションの中に埋め込んで動かします。
公開しているスクリーンショットが電子書籍リーダーなので日本語の本を読むための
ライブラリに見えるかもしれませんが、それは用途のひとつです。この文書では、
どういう性質があるから、どういう用途に向くのかを、実際にある機能から説明します。
用途の話に入る前に、共通して効く部分をまとめます。市場ごとの説明より、
この 4 つのほうが「自分の用途に合うか」の判断には使えるはずです。
blink_web_view_register_custom_scheme() で独自の
URL スキームを登録できます。
myapp://screen/main のような URL
を受け取ったら、アプリ側の関数が本文を返す —
という形で、端末の中にあるコンテンツをそのまま配信できます。
Web
サーバーを立てる必要も、外部に出ていく必要もありません。閉じたネットワークの
端末、電波の届かない場所で動く機器、通信を許されない環境で効きます。
blink_web_view_set_content_policy()
で、画面に対する操作を個別に禁止できます。
| 定数 | 禁止する操作 |
|---|---|
BLINK_CONTENT_POLICY_NO_COPY |
クリップボードへのコピー |
BLINK_CONTENT_POLICY_NO_SAVE |
ページの保存 |
BLINK_CONTENT_POLICY_NO_PRINT |
印刷 |
BLINK_CONTENT_POLICY_NO_CONTEXT_MENU |
右クリックメニュー |
BLINK_CONTENT_POLICY_NO_DEVTOOLS |
開発者ツール |
BLINK_CONTENT_POLICY_NO_SELECTION |
文字の選択 |
BLINK_CONTENT_POLICY_NO_SCREENSHOT |
画面の取得 |
BLINK_CONTENT_POLICY_NO_DRAG |
ドラッグによる持ち出し |
まとめて指定する
BLINK_CONTENT_POLICY_KIOSK
も用意しています。
不特定多数が触る端末で「Web
ブラウザとしての機能」が露出してしまう問題への答えです。
blink_web_view_set_javascript_dialog_handler()
を使えば、ページが出す
alert() や confirm()
をアプリ側で受け取って差し替えることもできます。
無人運用の端末で、消せないダイアログが出て止まる事態を避けられます。
blink_web_view_set_fullscreen_handler() と
blink_web_view_is_fullscreen() で
全画面表示を制御できます。blink_web_view_set_zoom_level()
は表示倍率を変えるので、
離れて見る画面と、手元で操作する画面で同じコンテンツを使い回すことができます。
C の API を GObject として公開しており、GObject Introspection
の型情報
(.gir / .typelib)
を配布物に同梱しています。Python (PyGObject)、Rust、
C++、JavaScript (GJS)、Vala、Go
などから、追加のバインディングを書かずに
同じ API を呼べます。既存のチームが使っている言語に合わせられます。
不特定多数が触る端末では、画面が意図した状態から動かないことが要件になります。
BLINK_CONTENT_POLICY_KIOSK
で操作を閉じ、全画面で占有し、
独自スキームで端末内のコンテンツを出す —
という組み合わせがそのまま当てはまります。
表示物を HTML
で作れることは、更新のしやすさにも効きます。掲示内容の差し替えが
アプリの作り直しではなく、コンテンツの入れ替えで済みます。
車載の画面は通信が切れても動き続ける必要があります。独自スキームで端末内から
配信する形なら、圏外でも表示は成立します。表示倍率の制御は、走行中の視認性
(遠い距離から読む) と停車中の操作 (近い距離で触る)
の切り替えに使えます。
GPU 描画とソフトウェア描画の両方を持っているので、GPU
の構成が限られる車載向け
SoC
でも動かす余地があります。ただし実機での確認は必須です
— 描画経路は
ハードウェアと compositor の組み合わせに依存します。
機器の操作パネルを HTML
で作れると、同じ画面を機器上と手元のブラウザの両方で
使えるようになります。BlinkGTK は機器側の表示を担当します。
JavaScript から C 側の関数を呼ぶ経路
(blink_web_view_execute_javascript() と
スクリプト注入) があるので、Web
の画面とハードウェア制御をつなげられます。
はじめにお断りしておくと、医療機器としての適合性を BlinkGTK
が保証することは
できません。規制対応は機器を作る側の責任範囲です。ここでは、そうした機器でよく
求められる要件に対してどの機能が応えられるかだけを書きます。
| よくある要件 | 対応する機能 |
|---|---|
| 外部ネットワークに出さない | 独自スキームで端末内配信 |
| 操作を限定する (誤操作防止) | コンテンツポリシーで個別に禁止 |
| 表示内容を記録する | blink_web_view_capture_screenshot() |
| 表示の再現性 | 版数を実行時に取得して記録できる |
計測データの可視化や研究機器の GUI
のように、規制の対象外で「グラフや表を
きれいに出したい」という用途であれば、素直に使える領域です。
現在いちばん実績のある領域です。縦組み、ルビ、圏点、縦中横、禁則処理といった
日本語組版の要素を Chromium
のレンダリングエンジンがそのまま扱います。
どこまでできて何がまだかは、Chromium 147 → 151
の新機能
に版ごとの実測付きでまとめています。たとえば Chromium 151 では、
圏点を付けても行送りが太らなくなりました(行間に余裕がある場合)。
BlinkGTK が最初に公開されたのは Interop Tokyo 2026 (幕張メッセ) です。
上に書いたのは「こういう機能があるから、こういう用途に向くはず」という説明であって、
実際の採用事例ではありません。BlinkGTK
で何か作られた方がいらっしゃれば、
掲載募集の窓口
までスクリーンショットをお寄せください。ここに載せるべきは、私たちの想像ではなく
実際に動いているものだと考えています。