micro:bit MicroPython新エディタ

0. はじめに

以前の記事でも少し触れましたが、micro:bit用にMicroPythonでプログラミングする方法は複数あります。

その中でも、主なものとして、オフラインエディタのMuと並んで、オンラインエディタがあるところ、そちらがメジャーアップデートされ、Version 3になりました(これまでのアップデート履歴)。

URLは、これまで同様にhttps://python.microbit.org/です。ここにアクセスするとhttps://python.microbit.org/v/3にリダイレクトされます。英語版が表示されますが、日本語化できます。

python.microbit.org

新エディタは以前から開発が進められており、個人的には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の画面構成になぞらえるのは少し正確性を欠きますが、次のような対応関係をイメージすると分かりやすそうです。

  1. 左側のサイドバーメニュー(Scratchの左側のブロックパレット相当)
  2. 中央の編集ウィンドウ&ボタン類(Scratchの中央のスクリプトエリア相当)
  3. 右側のシミュレーター(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を使っています。

micro:bitとの接続方法や、検出方法(デジタルではうまくいかず、アナログで読み取る必要があること)については、こちらのブログを参考にしています。

しゃべる様子

Speechモジュールは、実機を使わないで、新エディタのシミュレータでしゃべる様子を確認することもできます。シミュレータでは、赤外線センサの動作までは試せないので、上記コードのif sensor>threshold:を、if button_a.was_pressed():と置き換えています。


  1. Python Editor(Version 2)(https://python.microbit.org/v/2)も2023年9月までは利用可能です。なお、Version 2にアクセスすると、新エディタの紹介がポップアップされますが、リンク先は新エディタのベータバージョンとなっているようです。

  2. ただし、MakeCodeの2画面エディタのような機能はないようですので、無線の送信と受信のプログラムを別に作って動作を試すには、実機が必要となりそうです。