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

Project Fugu チームの目標の一つは、デベロッパーがプラットフォーム固有のアプリでできることをすべてウェブでできるようにすることです。そのため、このチームは、ウェブ デベロッパーがアプリのギャップを埋めるために必要とする不足している機能を追加することに取り組んでいます。信じられない場合は、Fugu API トラッカーの[発送済み] セクションをご覧ください。リリース済みの 55 個の API は、リリース日が新しい順に次のとおりです。

API 名 発送済み
Web 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 unadjustedMovementChrome 88
Android の写真選択ツールに似た写真/動画選択ツールを作成するChrome 88
Windows 10 とのウェブ共有(navigator.share)の統合Chrome 88
ウェブ NFCChrome 89
WebHID(ヒューマン インターフェース デバイス)Chrome 89
Web Serial APIChrome 89
パソコンでのウェブ共有Chrome 89
Handwriting Recognition 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
クリップボード: レチナ画像を貼り付けると pHYs メタデータが失われる。Chrome 98
PWA は「実際のアプリ」と同じ方法でアンインストールできる必要がありますChrome 99
ウェブ NFC: NDEFReader makeReadOnly()Chrome 100
マルチスクリーン ウィンドウの配置Chrome 100
HIDDevice forget()Chrome 100
USBDevice forget()Chrome 101
Web USB の sameObject の動作Chrome 101
インストール済みのデスクトップ ウェブアプリのウィンドウ コントロール オーバーレイChrome 102
ファイル処理Chrome 102
chrome.management API が PWA アプリを操作できなくなるChrome 102
SerialPort forget()Chrome 103
ローカル フォントへのアクセスChrome 103
Fugu リクエスト: 動的アプリ ショートカット(ショートカット v2)Chrome 104
Async Clipboard API のウェブ カスタム形式Chrome 104
これまでに出荷されたすべての Fugu API。

長いリストですが、他にもやるべきことがたくさんあります。現在、デベロッパー向けトライアル(実装済みだが、機能フラグが設定されている)の API と機能がいくつかあります。また、開発を開始した機能や、検討中の機能も多数あります。ご覧のとおり、まだ安心して手を緩める段階ではありません。

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

むしろ、この取り組みを完了したと宣言するのではなく、まだ始まったばかりです。たとえば、次のグラフは、送信元のプライベート ファイル システム(OPFS)へのエントリ ポイントとして使用される navigator.storage.getDirectory() メソッドの相対使用量の急増を示しています。この方法は、たとえば Photoshop の高パフォーマンス ストレージのニーズに使用されます。Web SQL の非推奨化の開始以降、ストレージ コミュニティはこれに強い関心を示しています。

navigator.storage.getDirectory メソッドの相対的な使用量の急増を示すグラフ。

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

ハードウェア API のプライバシーの改善

別の例として、HIDシリアルUSBBluetoothNFC デバイスに接続できるハードウェア 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 はまだまだ完成していません。API の使用を継続または開始し、フィードバックを送信してください。すべての Fugu 仕様は GitHub で公開されているため、対応する GitHub リポジトリで仕様に関する問題を報告したり、既存の問題にコメントを追加したりできます。Chrome の実装にバグが見つかった場合や、実装が仕様と異なる場合は、new.crbug.com でバグを報告してください。できるだけ詳細な情報を含め、再現手順を簡単に説明してください。

ブラウザのサポートが懸念される場合は、多くの Fugu API が優れたプログレッシブな機能強化に役立ちます。SVGcode: ラスター画像を SVG ベクター グラフィックに変換する PWA の記事を参考にしてください。また、これらの API が相互運用できるようになるまで、Google の取り組みは完了したわけではありません。Google は、さらなる標準化、テスト、他のブラウザによる採用を推進していきます。