Skip to content

Instantly share code, notes, and snippets.

@uupaa
Last active January 25, 2017 19:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uupaa/4d906e875e015d3a288110f3584b18b9 to your computer and use it in GitHub Desktop.
Save uupaa/4d906e875e015d3a288110f3584b18b9 to your computer and use it in GitHub Desktop.
新しい Safari のリリースサイクルと GamePad API

2017/01/25 に iOS 10.3 beta と Safari 10.1 がリリースされました。

https://twitter.com/webkit/status/823967381026263040

従来の Safari のリリースサイクルは年単位で、Chrome のスピード感に慣れた身としては大変辛い物がありました。

  • Safari の進化は1年に一度のみ、OS のメジャーバージョンアップのタイミングで新機能が追加される
  • タイミングが悪いと中途半端な状態でリリースされてしまう(iOS 9 の ES6 のように) 😱
  • タイミングを逃すと何年も待たなければならない 😱

今後は1年に1度ではなく、定期的に新機能追加版がリリースされる([要出典])ようです。

GamePad API

今回リリースされた Safari 10.1 と iOS 10.3 beta の Safari では、これまで無効にされていた GamePad API が利用可能になっています。

GamePad API は USB や Bluetooth で接続されたゲームパッドをブラウザから認識するための低レベル API です。

  • navigator.getGamepads()
  • window.addEventListener("gamepadconnected")
  • window.addEventListener("gamepaddisconnected")

世の中には多種多様なゲームパッドが存在しますが GamePad API はゲームパッド毎の差分を吸収してくれません。 実際に利用する場合はそれらの違いを吸収するライブラリを用意する必要があります。

GamePad.js

ゲームパッドとGamePad API の橋渡しを行い、差異を吸収するライブラリが GamePad.js です。

GamePad.js は DualShock4, Xbox360 などの他に Amazon 等で販売されているファミコンタイプのゲームパッドもサポートしています(Device List)。

WebModule から利用する

WebModule ユーザは npm に以下の記述を追加し npm run sync すると利用可能になります。

"dependencies": {
    "uupaa.gamepad.js": "",
},

Webpackから利用する

GamePad.js は common.js スタイルでも利用可能です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment