hapStakで牽引力錯覚を引き起こす
前回の導入編(Link)に引き続き,hapStak(Link)についてのエントリです.
今回はこのデバイスを買った目的である「牽引力錯覚」を試してみます.
・・・おそらく聞き慣れない言葉かと思いますが,下のようにデバイスを持つ人に
「特定の方向に引っ張られているかのような錯覚」
を引き起こす効果のことを指します.
www.youtube.com
動画で見ても疑念が晴れないかと思いますが,体験してみると想像以上に強く牽引力を感じるのでびっくりします.
今回hapStakを使えば実現できるのでは?と思い,早速試してみました.
できた!牽引力錯覚!!
— LNLD (@shikky27) 2021年11月25日
といっても動画じゃ何も分からないけど……。
明確に引っ張られてる感を感じるのです。マジで不思議。 pic.twitter.com/HbZxbFwTVU
・・・やはり動画では微塵も伝わりませんが,はっきりと牽引力を感じています.本当です!
はたしてこの不思議な現象はどうやって引き起こしているのか,実装方法について書いていこうと思います.
続きを読むPlatformIOでhapStak開発
前々からハプティクス系に興味があったのですが,ちょうどよいデバイスを見つけたので購入しました.
触感デバイス開発/体感モジュール“hapStak” | Bit Trade One, LTD
Foster電機さんのFOSTER ACOUSTICHAPTIC®-639897というアクチェータを組み込んだ触覚開発デバイスです.なんとこのアクチェータは,かのPS5のコントローラ"DualSense"に搭載されているアクチェータの姉妹型番なのです!
このデバイスで何ができるのかについてはサンプルデモを実装した下記が分かりやすいかと思います.
ms-my.facebook.com
今年10月に発売したばかりで,まだ情報が出そろっていなさそうなので,色々手探りしながらその過程を残していければと思います.
(故に認識違いも多いかもしれません.お気づきの方はご指摘いただけると幸いです.)
まずは,PlatformIOでサンプルコードを動かすまでの流れを残しておきます.
【M5StickC Plus】UIFlowのRemote機能で使用しているURIを取得する
タイトルにM5StickC Plusってつけてますが,多分どのM5シリーズでも一緒.
ひょんなことからインターネット越しにM5Stickを連携させたいということになって,少し調べてました. (※今回の要件はセキュリティ度外視)
で,UI-FlowのRemoteという機能を使うと簡単にできそうということが分かったんですが,少し引っ掛かったところがあったのでまとめました.
結論としては.
- Remote機能を使うとインターネット越しに(=同一ネットワーク外からでも)アクセスできる
- アクセス用のRESTはapi.m5stack.comに置かれており,
完全なURIはパケット解析しないと得られない?- ⇒追記:ブラウザの開発モードから通信キャプチャすると簡単に取得できるという情報を頂きました.感謝!
以下,ここに至るまでの顛末です.
続きを読む【雑メモ】ReactでUI上見えている要素がHTML上では存在しない謎現象
状況
React testing library + JESTでユニットテストを書いていたところ,ある項目がgetByTestIdで取得できなかった. よくよくページをインスペクタで見てみると,UI上は表示されているdivが,HTML上では表示されていないという現象が起こっていた.
原因
3つ目のdiv(Box)は以下のようにアロー形式の即時実行関数(IIFE)で条件分岐していたが,記法が間違っていた.
Before
< Box textOverflow="ellipsis" whiteSpace="nowrap" overflow="hidden" data-testid="baseform-posted"> {() => { if (props.videoInfo.posted == null) { return ""; } return props.videoInfo.posted.toLocaleString(); }} </Box>
正しくはこちら
After
< Box textOverflow="ellipsis" whiteSpace="nowrap" overflow="hidden" data-testid="baseform-posted"> {(() => { if (props.videoInfo.posted == null) { return ""; } return props.videoInfo.posted.toLocaleString(); })()} </Box>
アロー形式の即時実行関数全体を()で囲み,その後の()で実行する必要があった. これによりdivの数が見た目通り3つ表示されるようになった.
メモ
おそらくBeforeの状態は関数定義しかしていない状態のため,renderの際に何らかの形で(しかもインスペクタがハンドリングするより後に)呼び出されたのではないかと推測している.
なおJSX内部で即時関数を呼ぶのはパフォーマンス的に良くないが,大抵そこまで気にするほどではない,との噂.
(下記リンクの"Nested ternary operator"の章にて).
5 common practices that you can stop doing in React - LogRocket Blog
Metabase+NatureRemoで部屋環境を可視化する【プロト実装編】
前回,Go言語とRaspberryPiの環境構築の話を書きました.
shikky-lab.hatenablog.com
実はこれが今回の話に繋がるのですが,Go言語+ラズパイで部屋環境(温度,湿度ほか)の可視化にチャレンジしています.
とはいえポイントはそちらではなく,今回タイトルに挙げたMetabaseと,温湿度計を一応内部に備えているNatureRemoになります.
まだまだ未完成なのですが,ひとまずプロト実装が動いたので,その内容について書いていきたいと思います.
Go言語+RaspberryPiをWindowsのVSCodeで開発する
室内の環境把握用にサーバを立てようと思い立ったんですが,せっかくだから何か新しいコトをやろうということで,Go言語を導入してみることにしました.
その際にやったことを備忘録がてら整理しておこうかと思います.
続きを読む