BlinkGTK は何に使えるか

バージョン: 1.2.2-build6 / 言語: 日本語 | English

BlinkGTK は「画面を Web 技術で作る」ための部品です。HTML・CSS・JavaScript で
書いた画面を、Linux アプリケーションの中に埋め込んで動かします。

公開しているスクリーンショットが電子書籍リーダーなので日本語の本を読むための
ライブラリに見えるかもしれませんが、それは用途のひとつです。この文書では、
どんな用途に向くのかを先に見て、最後にどの用途にも共通して効く性質
実際にある機能からまとめます。


用途別に見る

オンデバイス AI・Web 推論

AI はもう研究室の話ではありません。文書の要約と翻訳、会議の書き起こし、
スキャン書類の文字起こし (OCR)、検査画像の判定、窓口の対話案内 —
すでに多くの現場でソフトウェアの標準装備になりつつあります。そして
その多くは、ブラウザの中で動く形 (WebAssembly・WebGPU の上の Web 推論) でも
公開されています。Transformers.js や ONNX Runtime Web のような、ブラウザで
モデルを動かすランタイムの生態系が育っているからです。

BlinkGTK は、その同じ基盤を 1 つの GTK ウィジェットとしてデスクトップ
アプリに持ち込みます。つまりこういうことです — AI 機能への参入に、専用の
機械学習スタックをゼロから組む必要はありません。Web で動いているものを、
自分のアプリの中で動かすところから始められます。

どんな画面が作れるか、想像してみてください。

共通する強みは一つです。モデルを独自スキームで端末内から配信すれば、
推論の入力データは機器の外に出ません。
プライバシーや守秘が参入障壁に
なっていた現場ほど、オンデバイス AI の価値は大きくなります。

はじめの一歩も具体的です。

  1. ブラウザで動いている推論デモやライブラリを、まず BlinkGTK で開いてみる
    (Web で動くものは、そのまま動かすところから)
  2. 動いたら、モデルの取得元を独自スキームの端末内配信に置き換える
  3. 画面と推論は JavaScript のまま、ハードウェアや業務システムとの接続だけを
    C 側 (シグナルとスクリプト注入) で書く

なお GPU を使う推論 (WebGPU) の動作はハードウェアとドライバの組み合わせに
依存します。車載の項と同じく、実機での確認を前提にしてください。
このプロジェクト自身も、日本語組版のページ計算を WebGPU で速くできないか
という研究を進めています — 同じ好奇心をお持ちの方の実験報告を歓迎します。

案内表示・サイネージ・券売機

不特定多数が触る端末では、画面が意図した状態から動かないことが要件になります。
BLINK_CONTENT_POLICY_KIOSK で操作を閉じ、全画面で占有し、
独自スキームで端末内のコンテンツを出す — という組み合わせがそのまま当てはまります。

表示物を HTML で作れることは、更新のしやすさにも効きます。掲示内容の差し替えが
アプリの作り直しではなく、コンテンツの入れ替えで済みます。

ゲーム機器・プリクラ・エンターテイメント端末

派手に動き続ける画面を組み込みで出す — エンターテイメント端末の要件は、
実は BlinkGTK がいちばん得意とする形のひとつです。

GPU 描画 (EGL) とソフトウェア描画の両方を持つので、筐体の GPU 構成に
合わせて選べます。ここでも実機での確認を前提にしてください — 描画性能は
ハードウェアと画面構成に依存します。

車載 (インフォテインメント・カーナビ)

車載の画面は通信が切れても動き続ける必要があります。独自スキームで端末内から
配信する形なら、圏外でも表示は成立します。表示倍率の制御は、走行中の視認性
(遠い距離から読む) と停車中の操作 (近い距離で触る) の切り替えに使えます。

GPU 描画とソフトウェア描画の両方を持っているので、GPU の構成が限られる車載向け
SoC でも動かす余地があります。ただし実機での確認は必須です — 描画経路は
ハードウェアと compositor の組み合わせに依存します。

IoT / WoT の操作画面

機器の操作パネルを HTML で作れると、同じ画面を機器上と手元のブラウザの両方で
使える
ようになります。BlinkGTK は機器側の表示を担当します。

JavaScript から C 側の関数を呼ぶ経路 (blink_web_view_execute_javascript()
スクリプト注入) があるので、Web の画面とハードウェア制御をつなげられます。

医療・計測機器

はじめにお断りしておくと、医療機器としての適合性を BlinkGTK が保証することは
できません
。規制対応は機器を作る側の責任範囲です。ここでは、そうした機器でよく
求められる要件に対してどの機能が応えられるかだけを書きます。

よくある要件 対応する機能
外部ネットワークに出さない 独自スキームで端末内配信
操作を限定する (誤操作防止) コンテンツポリシーで個別に禁止
表示内容を記録する blink_web_view_capture_screenshot()
表示の再現性 版数を実行時に取得して記録できる

計測データの可視化や研究機器の GUI のように、規制の対象外で「グラフや表を
きれいに出したい」という用途であれば、素直に使える領域です。

電子出版・日本語組版

現在いちばん実績のある領域です。縦組み、ルビ、圏点、縦中横、禁則処理といった
日本語組版の要素を Chromium のレンダリングエンジンがそのまま扱います。

どこまでできて何がまだかは、Chromium 147 → 152 の新機能
に版ごとの実測付きでまとめています。たとえば Chromium 151 では、
圏点を付けても行送りが太らなくなりました(行間に余裕がある場合)。
現行の Chromium 153 では、ルビの注記を行の高さを膨らませずに置く仕組み
既定になり、ルビの配置計算そのものが作り直されています(縦書きの段組みでは
適用されない場面があります。詳細は上のリンク先)。


用途を問わず効く 6 つの性質

ここまでの用途に共通して効いている部分をまとめます。挙げていない用途でも、
この 6 つに照らせば「自分の用途に合うか」を判断できるはずです。

1. ネットワークにつながっていなくても動く

blink_web_view_register_custom_scheme()独自の URL スキームを登録できます。
myapp://screen/main のような URL を受け取ったら、アプリ側の関数が本文を返す —
という形で、端末の中にあるコンテンツをそのまま配信できます。

Web サーバーを立てる必要も、外部に出ていく必要もありません。閉じたネットワークの
端末、電波の届かない場所で動く機器、通信を許されない環境で効きます。

2. 利用者にできることを絞れる

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()アプリ側で受け取って差し替えることもできます。
無人運用の端末で、消せないダイアログが出て止まる事態を避けられます。

3. 画面を占有できる / 見る距離に合わせられる

blink_web_view_set_fullscreen_handler()blink_web_view_is_fullscreen()
全画面表示を制御できます。blink_web_view_set_zoom_level() は表示倍率を変えるので、
離れて見る画面と、手元で操作する画面で同じコンテンツを使い回すことができます。

4. 好きな言語から使える

C の API を GObject として公開しており、GObject Introspection の型情報
(.gir / .typelib) を配布物に同梱しています。Python (PyGObject)、Rust、
C++、JavaScript (GJS)、Vala、Go
などから、追加のバインディングを書かずに
同じ API を呼べます。既存のチームが使っている言語に合わせられます。

5. 外部の機器とつながる

画面 (JavaScript) とアプリ本体 (C など) の間には、双方向の橋があります。

つまり C から繋がる機器は、
そのまま画面から使えます
。プリンタ、カメラ、センサー、IC カードリーダー、
決済端末、シリアル機器 — 端末の周辺に何を繋ぐかは、アプリ側の自由です。

6. Web の進化がそのまま流れ込む

BlinkGTK は上流の Chromium に追従し続けています (現行 153.0.8010.36)。
新しい CSS、WebAssembly、WebGPU といった Web プラットフォームの進化は、
エンジンを積み替えることなく、版の更新とともに手元へ届きます。
どの版で何ができるようになったかは
Chromium 新機能史 に実測付きでまとめています。


はじめて世に出したとき

BlinkGTK が最初に公開されたのは Interop Tokyo 2026 (幕張メッセ) です。


あなたの用途を教えてください

上に書いたのは「こういう機能があるから、こういう用途に向くはず」という説明であって、
実際の採用事例ではありません。BlinkGTK で何か作られた方がいらっしゃれば、
掲載募集の窓口
までスクリーンショットをお寄せください。ここに載せるべきは、私たちの想像ではなく
実際に動いているものだと考えています。

また、特定の環境に向けた拡張の実装 — 特殊なハードウェアへの対応、
専用機能の組み込み、概念実証 (PoC) の伴走など — は、
blinkgtk.com でカスタマイズ開発として承っています。
標準の配布物で届かない要件があれば、まずご相談ください。


関連する文書