Project Fugu チームの目標の一つは、デベロッパーがプラットフォーム固有のアプリでできることをすべてウェブでできるようにすることです。そのため、このチームは、ウェブ デベロッパーがアプリのギャップを埋めるために必要とする不足している機能を追加することに取り組んでいます。信じられない場合は、Fugu API トラッカーの[発送済み] セクションをご覧ください。リリース済みの 55 個の API は、リリース日が新しい順に次のとおりです。
長いリストですが、他にもやるべきことがたくさんあります。現在、デベロッパー向けトライアル(実装済みだが、機能フラグが設定されている)の API と機能がいくつかあります。また、開発を開始した機能や、検討中の機能も多数あります。ご覧のとおり、まだ安心して手を緩める段階ではありません。
送信元の非公開ファイル システムの同期ファイル メソッド
むしろ、この取り組みを完了したと宣言するのではなく、まだ始まったばかりです。たとえば、次のグラフは、送信元のプライベート ファイル システム(OPFS)へのエントリ ポイントとして使用される navigator.storage.getDirectory()
メソッドの相対使用量の急増を示しています。この方法は、たとえば Photoshop の高パフォーマンス ストレージのニーズに使用されます。Web SQL の非推奨化の開始以降、ストレージ コミュニティはこれに強い関心を示しています。
OPFS の利用者が増えるにつれ、追加の要件が求められるようになりました。たとえば、ワーカー コンテキストで完全に同期された一連のファイル メソッドが必要になる場合などです(背景については、whatwg/fs#7 をご覧ください)。新しいウェブ API は通常非同期ですが、同期メソッドを使用すると、Wasm コンテキストで OPFS を簡単に操作できます。これはワーカーで行われるため、メインスレッドをブロックすることはできません。
ハードウェア API のプライバシーの改善
別の例として、HID、シリアル、USB、Bluetooth、NFC デバイスに接続できるハードウェア 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 は、さらなる標準化、テスト、他のブラウザによる採用を推進していきます。