謎の呪われたコード
micro:bit v1.5で動いてた自作のカスタムブロックが入ったコードをv2で動かすとLEDの表示が現在のコードには入っていない過去にいれた記憶のある表示になったり、ボタンのイベントを消してるはずなのにボタンイベントが動いてしまう現象が発生しました。
v1.5では発生を確認できてなくて、シリアル通信などやってるからおかしいのかな?とか思いつつ一晩寝て気づきました。
僕のカスタムブロックの作りに問題がありました。
発生した原因
原因ですが非常に簡単なことでした。
新たなプロジェクトからgitから入れたカスタムブロック自体にはサンプルコードとしてブロックを配置したmain.tsも入れていました。
これが問題で、新規で作ったmain.tsとカスタムブロック内のmain.tsが並行して動くという状態になっていました。
順番としてmain.tsが実行されてからカスタムブロック内のmain.tsが動く感じでボタンなどのイベントが複数存在する感じです。
解決方法
カスタムブロックを作成するときには main.ts と main.blocks のを消すか中身を削除しましょう。
そして読み込んでるプロジェクトでコードにしてエクスプローラーからリロードボタンを押して再度読み込ませます。
結論
サンプルコードとして置いた感じにすると悲しい出来事が発生します。前に書いた記事のままだと特にそうなってしまいます。
https://qiita.com/wakasamasao/items/eedf7f8d6308e828986a
このお作法は適当に作ってた僕が知らなかっただけというオチなんですが。
とりあえず、v1.5では発生してなかったのにv2ではなぜかカスタムブロック内のコードがひっそり動いてしまうので通信系だと変なコード埋め込まれて動いてるとかもできなくないので結構怖いですね。