자이로스코프

W3C 후보 권고 초안,

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/CRD-gyroscope-20260202/
최신 공개 버전:
https://www.w3.org/TR/gyroscope/
편집자 초안:
https://w3c.github.io/gyroscope/
이전 버전:
히스토리:
https://www.w3.org/standards/history/gyroscope/
피드백:
public-device-apis@w3.org 제목 줄에 “[gyroscope] … 메시지 주제 …” 포함 (아카이브)
Gyroscope 이슈 저장소
구현 보고서:
https://www.w3.org/wiki/DAS/Implementations
편집자:
Anssi Kostiainen (Intel Corporation)
이전 편집자:
Mikhail Pozdnyakov (Intel Corporation)
테스트 스위트:
web-platform-tests on GitHub

요약

이 명세서는 기기의 로컬 3개 주요 축을 기준으로 회전 속도를 모니터링하는 구체적인 센서 인터페이스를 정의합니다.

이 문서의 상태

이 섹션은 이 문서가 공개 당시의 상태를 설명합니다. 현재 W3C 출판물 목록과 최신 기술 보고서 개정판은 W3C 기술 보고서 인덱스에서 확인할 수 있습니다.

이 문서는 기기 및 센서 워킹 그룹에서 권고 트랙을 사용하여 후보 추천 초안으로 발행되었습니다. 이 문서는 W3C 권고가 되는 것을 목표로 합니다.

이 문서에 대한 의견을 제출하고 싶으신 경우, public-device-apis@w3.org (구독, 아카이브) 로 보내주십시오. 이메일을 보낼 때, 제목에 “gyroscope”를 포함해 주시기 바라며, 가능하다면 아래와 같이 작성해 주십시오: “[gyroscope] …의견 요약…”. 모든 의견을 환영합니다.

후보 추천으로 발표되었다고 해서 W3C와 회원사가 이를 승인한다는 의미는 아닙니다. 후보 추천 초안은 워킹 그룹이 다음 후보 추천 스냅샷에 포함하려는 이전 후보 추천의 변경 사항을 통합합니다. 이 문서는 초안이므로 언제든지 업데이트, 대체 또는 폐기될 수 있습니다. 현재 진행 중인 작업 이외의 인용에는 부적합합니다.

이 문서가 제안 권고 단계로 진입하기 위한 기준은 이 명세의 모든 기능을 구현하는 최소 두 개의 독립적이며 상호 운용 가능한 사용자 에이전트가 있는 것입니다. 이는 워킹 그룹이 개발한 테스트 스위트의 사용자 에이전트 테스트를 통과함으로써 확인됩니다. 워킹 그룹은 진행 상황을 추적하기 위해 구현 보고서를 작성할 예정입니다.

이 문서는 W3C 특허 정책에 따라 활동하는 그룹이 작성하였습니다. W3C는 그룹의 산출물과 관련해 공개 특허 공개 목록을 유지합니다; 해당 페이지에는 특허 공개 방법도 안내되어 있습니다. 실제로 특허가 있고 그 특허가 필수 청구항을 포함한다고 믿는 개인은 W3C 특허 정책 6장에 따라 정보를 공개해야 합니다.

이 문서는 2025년 8월 18일 W3C 프로세스 문서에 의해 관리됩니다.

이 문서는 언제든지 유지 관리 및 업데이트됩니다. 일부 내용은 진행 중인 작업일 수 있습니다.

1. 소개

자이로스코프 API는 Generic Sensor API [GENERIC-SENSOR]를 확장하여 디바이스의 로컬 X, Y, Z축을 기준으로 하는 각속도(radian per seconds 단위) 정보를 제공합니다.

2. 사용 사례 및 요구 사항

사용 사례와 요구 사항은 Motion Sensors Explainer 문서에 설명되어 있습니다.

3. 예시

let sensor = new Gyroscope();
sensor.start();

sensor.onreading = () => {
    console.log("X축 회전 속도 " + sensor.x);
    console.log("Y축 회전 속도 " + sensor.y);
    console.log("Z축 회전 속도 " + sensor.z);
};

sensor.onerror = event => console.log(event.error.name, event.error.message);

4. 보안 및 개인정보 보호 고려 사항

자이로스코프와 같은 관성 센서가 제공하는 센서 데이터는 공격자에 의해 다양한 보안 위협, 예를 들어 키로깅, 위치 추적, 기기 핑거프린트, 사용자 식별 심지어 도청 등으로 악용될 수 있습니다.

예를 들어, [KEYSTROKEDEFENSE]와 같은 보안 커뮤니티의 논문에서는 빈도 제한이 공격 성공 위험을 완전히 제거하지 못하고, 센서를 합법적으로 사용하는 웹 애플리케이션의 유용성이 크게 저하될 수 있음을 지적합니다.

[TOUCHSIGNATURES] 연구에서는, 센서 사용 시 시각적 표시를 제공하거나 센서 데이터 접근에 대해 명시적인 사용자 동의를 요구할 수 있다고 제안합니다. 이러한 완화 전략은 Generic Sensor API에 정의된 일반 완화책을 보완합니다.

5. Permissions Policy 통합

이 명세는 policy-controlled feature를 사용하며 "gyroscope" 문자열로 식별됩니다. 자세한 내용은 [DEVICE-ORIENTATION]를 참고하세요.

6. 모델

자이로스코프 센서 타입은 다음 데이터를 가집니다:

확장 센서 인터페이스

Gyroscope

센서 권한 이름

"gyroscope"

센서 기능 이름

"gyroscope"

권한 취소 알고리즘

generic sensor permission revocation algorithm을 "gyroscope"와 함께 호출합니다.

기본 센서

디바이스의 메인 자이로스코프 센서입니다.

가상 센서 타입

"gyroscope"

최신 측정값Sensor자이로스코프 센서 타입 경우 "x", "y", "z" 키를 가지며 해당 키의 에 각각 축의 각속도가 들어 있습니다.

각속도는 디바이스가 특정 축을 기준으로 회전하는 비율로, 디바이스가 정의한 로컬 좌표계 기준입니다. 단위는 라디안/초(rad/s)입니다. [SI]

현재 각속도의 부호는 회전 방향에 따라 다르며, 로컬 좌표계에서 오른손 규칙에 따라 정해집니다. 즉, 축의 양의 방향에서 바라볼 때 시계 방향이 양(+)입니다(아래 그림 참고).

디바이스의 로컬 좌표계 및 회전 방향.

6.1. 기준 프레임

로컬 좌표계Gyroscope 측정값의 기준 프레임입니다. 디바이스 좌표계 또는 화면 좌표계가 될 수 있습니다.

7. API

7.1. Gyroscope 인터페이스

[SecureContext, Exposed=Window]
interface Gyroscope : Sensor {
  constructor(optional GyroscopeSensorOptions sensorOptions = {});
  readonly attribute double? x;
  readonly attribute double? y;
  readonly attribute double? z;
};

enum GyroscopeLocalCoordinateSystem { "device", "screen" };

dictionary GyroscopeSensorOptions : SensorOptions {
  GyroscopeLocalCoordinateSystem referenceFrame = "device";
};
new Gyroscope(sensorOptions) 생성자 절차는 자이로스코프 객체 생성 추상 작업을 thissensorOptions로 호출합니다.

지원되는 옵션은 "frequency" 및 "referenceFrame"입니다.

7.1.1. Gyroscope.x

x 속성은 Gyroscope 인터페이스에서 X축을 기준으로 한 현재 각속도를 나타냅니다. 즉, get value from latest readingthis 및 "x"로 호출한 결과를 반환합니다.

7.1.2. Gyroscope.y

y 속성은 Gyroscope 인터페이스에서 Y축을 기준으로 한 현재 각속도를 나타냅니다. 즉, get value from latest readingthis 및 "y"로 호출한 결과를 반환합니다.

7.1.3. Gyroscope.z

z 속성은 Gyroscope 인터페이스에서 Z축을 기준으로 한 현재 각속도를 나타냅니다. 즉, get value from latest readingthis 및 "z"로 호출한 결과를 반환합니다.

8. 추상 연산

8.1. 자이로스코프 객체 생성

입력

object, Gyroscope 객체입니다.

options, GyroscopeSensorOptions 객체입니다.

  1. allowedcheck sensor policy-controlled features 결과로, object센서 타입으로 구합니다.

  2. allowed가 false면:

    1. Throw SecurityError DOMException 발생.

  3. initialize a sensor objectobjectoptions로 호출합니다.

  4. options.referenceFrame 값이 "screen"이면:

    1. object로컬 좌표계스크린 좌표계로 설정합니다.

  5. 그 외의 경우 object로컬 좌표계디바이스 좌표계로 설정합니다.

9. 자동화

이 절은 Generic Sensor API § 9 Automation을 확장하여 자이로스코프 전용 가상 센서 메타데이터를 제공합니다.

자이로스코프 가상 센서 타입과 이에 대응하는 타입별 가상 센서 메타데이터 Device Orientation and Motion § automation에 정의되어 있습니다.

10. 감사의 글

Tobie Langel이 Generic Sensor API 작업에 기여했습니다.

11. 적합성

적합성 요구 사항은 설명적인 주장과 RFC 2119 용어의 조합으로 표현됩니다. 주요 용어 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", "OPTIONAL"은 이 문서의 규범적 부분에서 RFC 2119에 따라 해석되어야 합니다. 그러나 가독성을 위해 이 용어들은 이 명세에서 모두 대문자로 표시되지 않습니다.

이 명세의 모든 텍스트는 규범적이며, 명시적으로 비규범적임을 표시한 섹션과 예제, 주석만 예외입니다. [RFC2119]

적합한 사용자 에이전트는 이 명세에 사용자 에이전트에 적용되는 모든 요구 사항을 구현해야 합니다.

이 문서의 IDL 단편들은 Web IDL 명세에서 설명한 대로, 적합한 IDL 단편이 요구하는 것처럼 해석되어야 합니다. [WEBIDL]

색인

이 명세에서 정의한 용어

참조로 정의된 용어

참고 문헌

규범적 참고 문헌

[ACCELEROMETER]
Anssi Kostiainen. 가속도계. URL: https://w3c.github.io/accelerometer/
[DEVICE-ORIENTATION]
Reilly Grant; Marcos Caceres. 디바이스 방향 및 동작. URL: https://w3c.github.io/deviceorientation/
[GENERIC-SENSOR]
Rick Waldron. 범용 센서 API. URL: https://w3c.github.io/sensors/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra 표준. 라이빙 스탠다드. URL: https://infra.spec.whatwg.org/
[PERMISSIONS]
Marcos Caceres; Mike Taylor. 권한. URL: https://w3c.github.io/permissions/
[PERMISSIONS-POLICY-1]
Ian Clelland. 권한 정책. URL: https://w3c.github.io/webappsec-permissions-policy/
[RFC2119]
S. Bradner. RFC에서 요구 수준을 표시하는 주요 용어. 1997년 3월. 최신 권장 실무. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 표준. 라이빙 스탠다드. URL: https://webidl.spec.whatwg.org/

비규범적 참고 문헌

[KEYSTROKEDEFENSE]
Song, Yihang, 등. 동작 기반 키스트로크 추론 공격에 대한 두 가지 새로운 방어법. 2014. 정보성. URL: https://arxiv.org/abs/1410.7746
[SI]
SI 브로셔: 국제단위계(SI), 제8판. 2014. 제8판. URL: http://www.bipm.org/en/publications/si-brochure/
[TOUCHSIGNATURES]
Mehrnezhad, Maryam, 등. 터치시그니처: 자바스크립트를 활용한 모바일 센서 데이터를 기반으로 한 사용자 터치 동작 및 핀 식별. 2016. 정보성. URL: https://arxiv.org/abs/1602.04115

IDL 인덱스

[SecureContext, Exposed=Window]
interface Gyroscope : Sensor {
  constructor(optional GyroscopeSensorOptions sensorOptions = {});
  readonly attribute double? x;
  readonly attribute double? y;
  readonly attribute double? z;
};

enum GyroscopeLocalCoordinateSystem { "device", "screen" };

dictionary GyroscopeSensorOptions : SensorOptions {
  GyroscopeLocalCoordinateSystem referenceFrame = "device";
};

MDN

Gyroscope/Gyroscope

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

Gyroscope/x

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

Gyroscope/y

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

Gyroscope/z

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

Gyroscope

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?
MDN

Headers/Feature-Policy/gyroscope

In only one current engine.

FirefoxNoneSafariNoneChrome67+
Opera?Edge79+
Edge (Legacy)?IENone
Firefox for Android?iOS Safari?Chrome for Android?Android WebView?Samsung Internet?Opera Mobile?