Fugu 프로젝트가 '완료'되었나요?

Project Fugu팀의 목표 중 하나는 개발자가 플랫폼별 앱에서 할 수 있는 모든 작업을 웹에서 할 수 있도록 하는 것이므로 팀은 웹 개발자가 이 앱 격차를 해소하는 데 필요한 누락된 기능을 추가하는 데 바빴습니다. 믿지 못하시겠다면 Fugu API 추적기의 '배송됨' 섹션을 살펴보세요. 다음은 가장 최근에 출시된 API부터 가장 오래된 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
푸시를 통해 서비스 워커에서 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 로그인 시 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
웹 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와 기능이 몇 가지 있으며, 작업을 시작한 기능도 있고 고려 중인 기능도 많습니다. 보시다시피 아직 완료되었다고 안심할 때가 아닙니다.

출처 비공개 파일 시스템의 동기식 파일 메서드

오히려 YouTube는 노력을 완료했다고 선언하기보다는 이제 시작에 불과하다고 생각합니다. 예를 들어 아래 차트는 출처 비공개 파일 시스템 (OPFS)의 진입점으로 사용되는 navigator.storage.getDirectory() 메서드의 상대 사용량 급증을 보여줍니다. 이 메서드는 예를 들어 Photoshop의 고성능 스토리지 요구사항에 사용되며, Web SQL 지원 중단이 시작된 이후 그리고 그 이전부터 스토리지 커뮤니티에서 큰 관심을 기울이고 있습니다.

navigator.storage.getDirectory 메서드의 상대적 사용량이 급증하는 모습을 보여주는 차트

이제 더 많은 사용자가 OPFS를 사용함에 따라 추가 요구사항이 발생했습니다. 예를 들어 워커 컨텍스트에서 완전히 동기식 파일 메서드 세트가 필요합니다 (배경 정보는 whatwg/fs#7 참고). 새 웹 API는 일반적으로 비동기식이지만 동기식 메서드를 사용하면 Wasm 컨텍스트에서 OPFS를 훨씬 더 간단하게 사용할 수 있습니다. 이는 작업자에서 발생하므로 기본 스레드가 차단될 수 없습니다.

하드웨어 API의 개인 정보 보호 개선

또 다른 예는 HID, 직렬, USB, 블루투스, 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();

멀티스크린 창 배치 API 개선사항

마지막 예는 Multi-Screen Window Placement API입니다. 여기서는 개발자 의견을 바탕으로 이전에 "Internal Display 1"와 같은 일반 화면 라벨이 "Built-in Retina Display"와 같은 더 의미 있는 라벨로 대체되어 사용자가 이러한 라벨을 멀티스크린 설정의 화면과 더 쉽게 연결할 수 있습니다.

결론

이 세 가지 예에서 알 수 있듯이 Project Fugu는 아직 완료되지 않았습니다. Google API를 계속 사용하거나 사용을 시작하고 의견을 보내주세요. 모든 Fugu 사양은 GitHub에서 공개적으로 개발되므로 해당 GitHub 저장소에서 사양 문제를 제출하거나 기존 문제에 의견을 추가할 수 있습니다. Chrome 구현에 버그가 있거나 구현이 사양과 다르다는 것을 발견한 경우 new.crbug.com에서 버그를 신고하세요. 최대한 많은 세부정보를 포함하고 재현을 위한 간단한 안내를 제공해야 합니다.

브라우저 지원이 우려되는 경우 많은 Fugu API를 통해 점진적인 개선을 실행할 수 있습니다. 아이디어를 얻으려면 SVGcode: 래스터 이미지를 SVG 벡터 그래픽으로 변환하는 PWA 도움말을 참고하세요. 또한 이러한 API가 상호 운용될 때까지는 우리의 작업이 완료되었다고 생각하지 않으며, 다른 브라우저의 추가 표준화, 테스트, 채택을 계속 추진할 것입니다.