Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

polyfill.js を WebGPIO/I2C のモジュールと Polyfill 化するラッパーに分離する #74

Open
dynamis opened this issue Aug 6, 2019 · 0 comments

Comments

@dynamis
Copy link
Contributor

dynamis commented Aug 6, 2019

現在は WebGPIO/WebI2C 仕様をブラウザに実装する標準 API のサンプル実装として Polyfill 形式の実装でメンテしており、Web API 標準化の視点や CHIRIMEN 環境つまりブラウザの API として使うユースケースではそれで十分であるが、ブラウザの JS から直に呼び出す以外のユースケースに適さない。具体的には

  • WebGPIO/WebI2C を露出せずその機能を使ったモジュール・ライブラリを作るケース
    • WebGPIO/WebI2C を利用する WebComponents など (ユーザはタグの属性などだけ書く)
    • polyfill だとライブラリが呼び出す毎に何度も polyfill がパッチされる&その結果バージョン非互換問題を生むので影響範囲を呼び出し元モジュールに閉じるようにしたい
  • ブラウザ以外の実行環境から利用したい場合
    • Node.js ローカルプログラム
      • Node で使ういろいろなプログラムと連携がしやすくなる
      • ヘッドレス環境で使う時はヘッドレス Chromium を Pupetter で制御するなどよりシンプルに
    • ModdableSDK など独自の JS エンジン環境
    • etc...

単に polyfill で普通に import 文で使ってコードを書きたい需要もあるし、

  • a. WebGPIO/WebI2C の Polyfill はバックエンドと通信する class 定義を含んだモジュール
  • b. WebGPIO/WebI2C のモジュールを import してそれを polyfill として挿入する薄い wrapper

に分離し、今の polyfill.js は a/b を結合・コンパイルした物にした方が良さそう。

なお、micro:bit 版などについては WebGPIO/WebI2C だけでなく Web Bluetooth API にも依存しているため、Node なので実行する場合は Web Bluetooth 互換の Node.js モジュールも使って解決できないか考える・試す必要がありそう。

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

No branches or pull requests

1 participant