Closed ok-tomo closed 2 years ago
@Toya-Onodera すみません、かなり遅くなってしまいました。 確認よろしくお願いします。:bow:
@ok-tomo 見ました!! 気になるところをざっくり書いていきます。
他の手段 / Alternative approach
ここは「なぜその手段にしなかったのか」を記載することがチーム開発では重要になってきます。 内容としてはその手段で実装を行う場合に困ってしまうポイントを記載すると伝わりやすいです。
(例1) #dummy をホバーした際に、ツールチップを表示するタスク(jQuery を使用して実装を行う提案の場合)
【01】 Vanilla JS を使用して実装を行う 実装コストが jQuery に対し、多くなってしまう点が挙げられる。この機能は id 要素だけでなく、class 要素に適応する動作を実装する必要がある。jQuery では
hover(over, out)
を使用して実装できる点に対し、Vanilla JS では document.querySelectorAll などで要素を取得したあとに addEventListener をループで適用してあげる必要がある。これは難読化 + 実装コストの増加につながると感じ、却下した。
みたいなことを記載しておくと、あとで参画してきた人にも親切でいいと思いました。
あとは問題なさそうなので、適当に修正したら実装に進んでもらって大丈夫です! 時間あればペアプロも歓迎です 👀
ちなみに今回の検討部分(Generic Sensor API)だとブラウザの対応状況的なものが検討材料になってくると思う。
なぜこの Design Doc を書くのか / Why
ETロボコンにおいてセンサデータを活用して自己位置推定を行いたい。本来SPIKE PRIMEの実機でデータを取得したいが、手元にないためスマートフォンのセンサデータをブラウザ上で取得することで代替とする。 センサデータをFirebaseに保存したり、UIに表示させるために必要なもの。
目指す場所 / Goals
目指さない場所 / Non-goals
実装の概要 / Overview
MobileSensorData
コンポーネントを作成するwindow.addEventListener
で、deviceorientation
イベントにイベントハンドラを追加する。setState
でstate
への処理を行う。alpha
: xy平面上の角度beta
: yz平面上の角度gamma
: xz平面上の角度devicemotion
イベントにイベントハンドラを追加し、以下のセンサデータを取得、stateへの格納を行う。acceleration
: x, y, z上のデバイスの加速度accelerationIncludingGravity
:acceleration
の重力込みrotationRate
:alpha
,beta
,gamma
上のデバイスの向きの変化率想定される問題 / Drawback, Risk
他の手段 / Alternative approach
「Generic Sensor API」
Accelerometer()
ではSafari(ios)未対応など、対応が十全ではないため使用しない。 https://caniuse.com/?search=Accelerometer参考 URL / References
9
https://dev.to/trekhleb/gyro-web-accessing-the-device-orientation-in-javascript-2492 https://developer.mozilla.org/ja/docs/Web/API/DeviceMotionEvent https://developer.mozilla.org/ja/docs/Web/API/Window/deviceorientation_event