micro:bit MicroPython新エディタ
0. はじめに
以前の記事でも少し触れましたが、micro:bit用にMicroPythonでプログラミングする方法は複数あります。
その中でも、主なものとして、オフラインエディタのMuと並んで、オンラインエディタがあるところ、そちらがメジャーアップデートされ、Version 3になりました(これまでのアップデート履歴)。
URLは、これまで同様にhttps://python.microbit.org/です。ここにアクセスするとhttps://python.microbit.org/v/3にリダイレクトされます。英語版が表示されますが、日本語化できます。
新エディタは以前から開発が進められており、個人的には2月4日のdeveloper community newsでAlphaバージョンの公開を知った段階で一度試してみていましたが、10月3日に正式公開され、各ウェブサイトの紹介やサポートページも更新されているようですので、改めて各種操作を行って、簡単なコードを書いてみました。
1. 新エディタの公式情報
新エディタについてmicrobit.orgの主な関連ページは以下のとおりです。
micro:bit MicroPythonのドキュメンテーションについても、micro:bit V2と新エディタの組み合わせで使用可能なrun_everyデコレータ/関数やlogモジュールなどの記載が拡充されていました。
2. ファーストインプレッション
新エディタは、旧エディタ1と比べると、テキストコーディング初心者にとって、格段に馴染みやすいインターフェイスになっている印象です。
日本語版
画面左下の歯車マーク>Language>日本語を選ぶと、おおよそ全体が日本語化されます。以降は、同じURLにアクセスしても、日本語版となるようです。旧エディタでは地球儀マークで言語設定できましたが日本語がなく、このメニューがあるのは素晴らしいのですが、新エディタももう少しアイコンがわかりやすいと、助かりそうです。
画面構成
詳細は、上記1.の公式情報で動画も交えて説明されていますが、画面構成に着目すると、大きく3つの領域に分かれている点が特徴的です。Scratchの画面構成になぞらえるのは少し正確性を欠きますが、次のような対応関係をイメージすると分かりやすそうです。
- 左側のサイドバーメニュー(Scratchの左側のブロックパレット相当)
- 中央の編集ウィンドウ&ボタン類(Scratchの中央のスクリプトエリア相当)
- 右側のシミュレーター(Scratchの右側のステージ相当)
シミュレーター
旧エディタと比べてパッと目につくのはシミュレーターがある点です。MakeCodeエディタでは以前から、実機がなくても、シミュレーターで動作確認ができましたが、新エディタの登場によりMicroPythonでも同様のことが可能になりました。 加速度、磁気、無線送信2、さらにはlogモジュールでの記録内容まで対応しており、実機がなくとも幅広い機能を試すことができます。
なお、シリアルもシミュレータのところにあります。
サイドバーの「リファレンス 」
また、特徴的なのは、左側のサイドバーメニューです。ここにはいくつかのタブがありますが、テキストコーディング初心者がまずお世話になりそうなのが「リファレンス」タブです。
micro:bitの各種機能、また、Pythonの基本事項などが、コンパクトに解説されており、さらにサンプルコードも提供されています。サンプルコードの方は、ドラッグ&ドロップして、編集ウィンドウに挿入することもでき、この動き自体はブロックコーディングにイメージが似ています(あくまで、サンプルコードがコピーされるだけであるため、意図するプログラムを作ろうとすると、ドラッグ&ドロップでは足りないことになります)。
上記1.の公式情報でもご紹介したmicro:bit MicroPythonのドキュメンテーションのチュートリアルに近いイメージですが、サイドバーでの表示ということもあり、要点に絞られているようですので、必要に応じてドキュメンテーションにも遡ることになります。例えば、新機能でrun_everyとlogを組み合わせた定期ログ記録がかなり手軽になりましたが、電池を持たせるためにpowerモジュールとの組み合わせで使うサンプルコードはドキュメンテーション内のみのようです。欲を言えば、ドキュメンテーションの対応箇所へのリンクもあるとありがたいです。
初めてのテキストコーディングでも、何をして良いか分からず固まってしまう、ということにならないように、配慮されている印象です。
サイドバーの「アイデア」
いまのところ、感情バッジ、歩数計、アクティビティピッカー、スマイルを送ろう、サイコロ、拍手でライト、グーチョキパーでなにつくろ、の7つのアイデアが紹介されています。
これらについてサンプルコードとその説明を見ることができ、また「開く」ボタンを押すだけで、コードがコピーされてシミュレーターで試すことができます。さらに「チャレンジ」の項目には、アイデアを発展させるためのヒントがあり、「リファレンス」へのリンクが貼られています。
出来上がったコードを見るとそれを動かして終わり、になってしまいそうですが、発展系を示すことで、そこから創意工夫が広がっていきそうです。
なお、末尾の「他のアイデア」のリンクから、microbit.orgのProjectページに移動することができ、MicroPythonのコードがあるプロジェクトが一覧表示されます。プロジェクトのページ内で”Open in Python"をクリックして、新エディタでコードを開くこともできます。
サイドバーの「API 」
サイドバーの「API 」は、機能的にmicro:bit MicroPythonのドキュメンテーションのAPIの短縮版のイメージです(一部、ドキュメンテーションへのリンクもあります)。「リファレンス」より定数や関数が多く紹介されていますが、全体を通した説明はなく、関数などが羅列されていて(ドラッグ&ドロップ可能)、あと、短いサンプルがあるという構成です。「リファレンス」を使って慣れた人が使うことを想定されているのでしょうね。
編集ウィンドウ&ボタン類
コーディングについては、補完やエラーハイライトの機能が備わっています。旧エディタにはなかった機能であり、初心者にはこれがかなり助かります。細かい比較はしていませんが、オフラインエディタMuの同等の機能より、使いやすいように感じました。
ボタン類は、旧エディタを使っていればそれぞれの機能は迷わず使えそうです。なお、同一プロジェクトにmain.py以外のスクリプトを追加したり、プロジェクトをリセットなどしたい場合は、サイドバーの「プロジェクト」から行うことになります。
キーボードショートカット
こちらにキーボードショートカットの一覧があります。
3. 試しにコード(Trick or Treat)
MicroPythonならではのSpeechモジュールと、外付けの人感センサを使って、人の動きを感知したら、trick or treatとしゃべるプログラムを書いてみました。基本的に、新エディタのサイドバーの「リファレンス」や「API」を見て書くことができましたが、speechモジュールの詳細は、ドキュメンテーションまで遡っています。
from microbit import * import speech # 通常の顔 pumpkin_normal = Image('00000:' '77077:' '00000:' '70707:' '77777') # しゃべるときの顔 pumpkin_speaking = Image('99099:' '09090:' '90909:' '99999:' '90909') # まばたき def display_blinking(): sleep(1000) for i in range (2): display.set_pixel(1, 1, 9) display.set_pixel(3, 1, 9) sleep(100) display.set_pixel(1, 1, 0) display.set_pixel(3, 1, 0) sleep(100) # (低めの声でしゃべる) def speech_low(words): speech.say(words, pitch=128, speed=100, mouth=50, throat=128) # しゃべる(通常の顔としゃべる顔を交互に表示しながら、怖い声でしゃべる) def display_speaking(): display.show(pumpkin_speaking) speech_low("trick?") sleep(400) display.show(pumpkin_normal) speech_low("or") sleep(100) display.show(pumpkin_speaking) speech_low("treat!") sleep(400) display.show(pumpkin_normal) # 人感センサー関連 sensor=0 threshold=900 # 最初に通常の顔の表示 display.show(pumpkin_normal) # まばたきを繰り返す、人感センサが反応したらしゃべる while True: display_blinking() sensor=pin0.read_analog() if sensor>threshold: display_speaking()
人感センサ
人感センサは、AM312を使っています。
- https://www.amazon.co.jp/gp/product/B07RT7MK7C/
- http://www.image.micros.com.pl/_dane_techniczne_auto/cz%20am312.pdf
micro:bitとの接続方法や、検出方法(デジタルではうまくいかず、アナログで読み取る必要があること)については、こちらのブログを参考にしています。
しゃべる様子
Speechモジュールは、実機を使わないで、新エディタのシミュレータでしゃべる様子を確認することもできます。シミュレータでは、赤外線センサの動作までは試せないので、上記コードのif sensor>threshold:
を、if button_a.was_pressed():
と置き換えています。
try speech module in MicroPython for #microbit - click Button A and say "trick or treat". pic.twitter.com/Nb4OARiU46
— vivitelaeti (@vivitelaeti) 2022年10月25日
-
Python Editor(Version 2)(https://python.microbit.org/v/2)も2023年9月までは利用可能です。なお、Version 2にアクセスすると、新エディタの紹介がポップアップされますが、リンク先は新エディタのベータバージョンとなっているようです。↩
-
ただし、MakeCodeの2画面エディタのような機能はないようですので、無線の送信と受信のプログラムを別に作って動作を試すには、実機が必要となりそうです。↩