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

Project Fugu팀은 개발자가 플랫폼별 앱으로 할 수 있는 모든 작업을 웹에서 실행할 수 있도록 하는 것을 목표로 하여 웹 개발자가 이 앱 격차를 메우는 데 필요한 누락된 기능을 추가하느라 바빠졌습니다. 믿기지 않는다면 Fugu API 추적기의 'Shipped' 섹션을 살펴보세요. 다음은 출시된 55개의 API이며 가장 오래된 것부터 가장 최근에 제공된 것 순으로 나열되어 있습니다.

API 이름 발송일
웹 블루투스 APIChrome 56
WebUSB APIChrome 61
웹 공유 타겟Chrome 71
Web Share API 수준 2Chrome 75
비동기 클립보드: 이미지 읽기 및 쓰기Chrome 76
웹 공유 목표 레벨 2Chrome 76
키 힌트 입력Chrome 77
스토리지 할당량 확장Chrome 78
설치된 관련 앱 API 가져오기Chrome 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
화면 Wake Lock APIChrome 84
Streams API: 전송 가능한 스트림Chrome 85
앱 바로가기Chrome 85
파일 시스템 액세스Chrome 86
text/html 비동기 클립보드 API 지원Chrome 86
카메라의 화면 이동/기울기 지원Chrome 87
FUGU 헤드폰과 스피커로 시스템 및 애플리케이션 오디오 출력의 캡처 구현 Chrome 88
PointerLock unadjustedMovementChrome 88
Android의 사진 선택 도구와 유사한 사진/동영상 선택 도구 만들기Chrome 88
Windows 10과 웹 공유 (navgator.share) 통합Chrome 88
웹 NFCChrome 89
WebHID (휴먼 인터페이스 기기)Chrome 89
Web Serial APIChrome 89
데스크톱 웹 공유Chrome 89
필기 인식 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
클립보드: 망막 이미지를 붙여넣으면 pHY 메타데이터가 손실됩니다.Chrome 98
PWA는 '실제 앱'과 동일한 방식으로 제거할 수 있어야 합니다.Chrome 99
웹 NFC: NDEFReader makeReadOnly()Chrome 100
멀티스크린 창 배치Chrome 100
HIDDevice Forget()Chrome 100
USBDevice 삭제()Chrome 101
웹 USB sameObject 동작Chrome 101
설치된 데스크톱 웹 앱의 창 컨트롤 오버레이Chrome 102
파일 처리Chrome 102
chrome.management API가 더 이상 PWA 앱과 상호작용할 수 없습니다Chrome 102
SerialPort remember()Chrome 103
로컬 글꼴 액세스Chrome 103
Fugu 요청: 동적 앱 바로가기 (바로가기 v2)Chrome 104
Async Clipboard API용 웹 맞춤 형식Chrome 104
현재까지 제공된 모든 Fugu API입니다.

목록이 길고 더 많은 메뉴도 있습니다. 현재 개발자 체험판에는 몇 가지 API 및 기능이 있으며 (구현된 기능이지만 기능 플래그 뒤에 있음), 일부는 Google에서 시작하기 시작했으며, 많은 API와 기능이 고려 중입니다. 보시다시피, 이제 돌아서서 다 했다고 말해서는 안 됩니다.

원본 비공개 파일 시스템을 위한 동기 파일 메서드

이와는 오히려 노력이 완료되었다고 선언하는 것이 아니라 이제 시작에 불과합니다. 예를 들어 원본 비공개 파일 시스템 (OPFS)의 진입점으로 사용되는 navigator.storage.getDirectory() 메서드의 상대적 사용량 증가를 보여주는 아래 차트를 살펴보세요. 이 방법은 예를 들어 Photoshop의 고성능 스토리지 요구사항에 사용되고, 웹 SQL의 지원 중단이 시작된 이후, 그리고 더 나아가 그 이전까지도 스토리지 커뮤니티에서 많은 관심을 가지고 있습니다.

navgator.storage.getDirectory 메서드의 상대적 사용량 급증을 보여주는 차트입니다.

이제 더 많은 사람들이 OPFS를 사용하게 되면서 추가적인 요구사항이 생겼습니다. 예를 들어 작업자 컨텍스트에 완전 동기식 파일 메서드 집합이 필요한 경우가 있습니다 (배경은 whatwg/fs#7 참고). 새 웹 API는 일반적으로 비동기식이지만 동기 메서드를 사용하면 Wasm 컨텍스트에서 OPFS를 사용하는 것이 훨씬 간단해집니다. 이 작업은 worker에서 발생하므로 기본 스레드를 차단할 수 없습니다.

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

또 다른 예로는 HID, serial, 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();

Multi-Screen Window Placement API 개선

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

결론

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

또한 브라우저 지원이 우려된다면 여러 Fugu API를 통해 점진적으로 개선할 수 있습니다. 자세한 내용은 SVGcode: 래스터 이미지를 SVG 벡터 그래픽으로 변환하는 PWA 도움말을 참고하세요. 또한 이러한 API가 상호 운용이 가능하기 전까지는 이 작업이 끝났다고 생각하지 않으며, 계속해서 추가적인 표준화, 테스트, 다른 브라우저의 채택을 위해 노력할 것입니다.