Project Fugu チームの目標の 1 つは、プラットフォーム固有のアプリで実行できる操作をウェブ上でデベロッパーが行えるようにすることです。そのため、このアプリのギャップを埋めるために必要なウェブ デベロッパーが不足している機能を追加することに尽力してきました。心当たりがない場合は、Fugu API トラッカーの [Shipped] セクションをご覧ください。リリース済みの 55 個の API を、リリースされた新しいものから順に示します。
リストには長い時間がかかりますが、これ以外にも多くの課題があります。現在デベロッパー トライアル段階にある(実装されているがフィーチャー トグルの背後にある)API と機能、Google が開発を開始している API や検討中の API と機能がまだいくつかあります。ご覧のとおり、これで終了と言えるタイミングではありません。
送信元の非公開ファイル システムの同期ファイル メソッド
その逆は「取り組みの完了」を宣言するのではなく、まだ始まったばかりです。たとえば、以下のグラフについて考えてみましょう。これは、送信元のプライベート ファイル システム(OPFS)へのエントリ ポイントとして使用される navigator.storage.getDirectory()
メソッドの相対的な使用量の急増を示しています。この方法は、たとえば、Photoshop の高パフォーマンス ストレージのニーズや、Web SQL のサポート終了以降およびそれ以前からストレージ コミュニティが非常に関心を寄せている場合に使用されます。
OPFS を利用する人が増えたことで、新たな要件が浮かび上がっています。たとえば、ワーカー コンテキストで完全に同期された一連のファイル メソッドが必要です(背景については whatwg/fs#7 をご覧ください)。新しいウェブ API は通常非同期ですが、同期メソッドを使用すると、Wasm コンテキストでの OPFS の操作がはるかに簡単になります。これはワーカー内で行われるため、メインスレッドをブロックできません。
ハードウェア API のプライバシーを改善しました
その他の例としては、HID、serial、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 はまだ完成したわけではありません。Google の API を使い続けるか開始して フィードバックを送信してくださいすべての Fugu 仕様は GitHub 上でオープンに開発されているため、対応する GitHub リポジトリで仕様の問題を提出するか、既存の問題に意見を追加できます。Chrome の実装にバグが見つかった場合や、実装が仕様と異なる場合は、new.crbug.com でバグを報告してください。可能な限り詳細な情報と、再現するための簡単な手順をお知らせください。
また、ブラウザ サポートについて懸念がある場合は、Fugu API の多くで漸進型の機能強化が可能です。詳しくは、私の記事 SVGcode: ラスター画像を SVG ベクター グラフィックに変換する PWA をご覧ください。また、これらの API が相互運用可能になるまで Google の仕事は完了したとは見なせず、他のブラウザでのさらなる標準化、テスト、導入を推進していきます。