Project Fugu は「完了」しているか

Project Fugu チームの目標の 1 つは、プラットフォーム固有のアプリで実行できる操作をウェブ上でデベロッパーが行えるようにすることです。そのため、このアプリのギャップを埋めるために必要なウェブ デベロッパーが不足している機能を追加することに尽力してきました。心当たりがない場合は、Fugu API トラッカーの [Shipped] セクションをご覧ください。リリース済みの 55 個の API を、リリースされた新しいものから順に示します。

API 名 発送済み
ウェブ Bluetooth APIChrome 56
WebUSB APIChrome 61
ウェブ共有ターゲットChrome 71
Web Share API レベル 2Chrome 75
非同期クリップボード: 画像の読み取りと書き込みChrome 76
ウェブ共有の対象レベル 2Chrome 76
キーヒントを入力Chrome 77
保存容量を拡張するChrome 78
Get Installed Related Apps APIChrome 80
定期的なバックグラウンド同期Chrome 80
desktop-pwas: 「minimal-ui」ディスプレイ モードをサポートChrome 80
圧縮コーデックChrome 80
Contacts APIChrome 80
Badging APIChrome 81
Push 経由で Service Worker から Badging API を使用できるようにしますChrome 81
Barcode Detection APIChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API: 転送可能なストリームChrome 85
アプリのショートカットChrome 85
ファイル システム アクセスChrome 86
非同期クリップボード API の text/html サポートChrome 86
カメラのパン/チルトのサポートChrome 87
FUGU システムおよびアプリのオーディオ出力のヘッドフォンやスピーカーへのキャプチャを実装する Chrome 88
PointerLock 未調整の移動Chrome 88
Android の写真選択ツールと同様の写真や動画の選択ツールを作成するChrome 88
Windows 10 とのウェブ共有(navigator.share)のインテグレーションChrome 88
ウェブ NFCChrome 89
WebHID(ヒューマン インターフェース デバイス)Chrome 89
Web Serial APIChrome 89
パソコンでのウェブ共有Chrome 89
手書き入力認識 APIChrome 90
ウェブ アプリケーションの管理対象設定Chrome 91
OS Login で PWA を実行するChrome 91
WebCodecsChrome 93
アイドル検出Chrome 94
EyeDropper APIChrome 95
macOS と Linux での PWA のアプリのショートカット メニューChrome 96
PWA の URL プロトコル ハンドラの登録 Chrome 96
WebTransportChrome 97
クリップボード: retina-images を貼り付けると、pHYs メタデータが失われます。Chrome 98
PWA は「実際のアプリ」と同じ方法でアンインストールできる必要があるChrome 99
ウェブ NFC: NDEFReader makeReadOnly()Chrome 100
マルチスクリーン ウィンドウの配置Chrome 100
HIDDevice enforcing()Chrome 100
USBDevice remember()Chrome 入門ガイド
ウェブ USB の sameObject の動作Chrome 入門ガイド
インストール済みのデスクトップ ウェブアプリのウィンドウ コントロール オーバーレイChrome 入門ガイド
ファイル処理Chrome 入門ガイド
chrome.management API で PWA アプリの操作ができなくなるChrome 入門ガイド
SerialPort remember()Chrome 103
ローカル フォント アクセスChrome 103
Fugu リクエスト: 動的アプリのショートカット(ショートカット v2)Chrome 104
Async Clipboard API 向けのウェブカスタム フォーマットChrome 104
現時点でリリース済みの Fugu API すべて。

リストには長い時間がかかりますが、これ以外にも多くの課題があります。現在デベロッパー トライアル段階にある(実装されているがフィーチャー トグルの背後にある)API と機能、Google が開発を開始している API や検討中の API と機能がまだいくつかあります。ご覧のとおり、これで終了と言えるタイミングではありません。

送信元の非公開ファイル システムの同期ファイル メソッド

その逆は「取り組みの完了」を宣言するのではなく、まだ始まったばかりです。たとえば、以下のグラフについて考えてみましょう。これは、送信元のプライベート ファイル システム(OPFS)へのエントリ ポイントとして使用される navigator.storage.getDirectory() メソッドの相対的な使用量の急増を示しています。この方法は、たとえば、Photoshop の高パフォーマンス ストレージのニーズや、Web SQL のサポート終了以降およびそれ以前からストレージ コミュニティが非常に関心を寄せている場合に使用されます。

navigator.storage.getDirectory メソッドの相対的な使用量が急増していることを示すグラフ。

OPFS を利用する人が増えたことで、新たな要件が浮かび上がっています。たとえば、ワーカー コンテキストで完全に同期された一連のファイル メソッドが必要です(背景については whatwg/fs#7 をご覧ください)。新しいウェブ API は通常非同期ですが、同期メソッドを使用すると、Wasm コンテキストでの OPFS の操作がはるかに簡単になります。これはワーカー内で行われるため、メインスレッドをブロックできません。

ハードウェア API のプライバシーを改善しました

その他の例としては、HIDserialUSBBluetoothNFC デバイスへの接続を可能にするハードウェア API があります。これらの API の一部は以前から存在していましたが、最近までは、以前に接続していたデバイスを消去する方法はありませんでした。一部の API は、forget() メソッドのおかげです。たとえば、以前に接続したシリアル デバイスを消去して、API のプライバシーを向上させる方法は次のとおりです。

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

Multi-Screen Window Placement API の改良

最後の例は、Multi-Screen Window Placement API です。デベロッパーは、デベロッパーからのフィードバックに基づいて、これまで一般的だった "Internal Display 1" などの画面ラベルを "Built-in Retina Display" などの意味のあるラベルに置き換えました。これにより、ユーザーはこれらのラベルをマルチスクリーン設定の画面に簡単に関連付けることができます。

まとめ

これら 3 つの例からわかるように、Project Fugu はまだ完成したわけではありません。Google の API を使い続けるか開始して フィードバックを送信してくださいすべての Fugu 仕様は GitHub 上でオープンに開発されているため、対応する GitHub リポジトリで仕様の問題を提出するか、既存の問題に意見を追加できます。Chrome の実装にバグが見つかった場合や、実装が仕様と異なる場合は、new.crbug.com でバグを報告してください。可能な限り詳細な情報と、再現するための簡単な手順をお知らせください。

また、ブラウザ サポートについて懸念がある場合は、Fugu API の多くで漸進型の機能強化が可能です。詳しくは、私の記事 SVGcode: ラスター画像を SVG ベクター グラフィックに変換する PWA をご覧ください。また、これらの API が相互運用可能になるまで Google の仕事は完了したとは見なせず、他のブラウザでのさらなる標準化、テスト、導入を推進していきます。