Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

概要

MicroPython は、micro:bit のようなデバイス向けに作られた、広く使われている Python プログラミング言語のバージョンです。これは自由ソフトウェアであり、MicroPython の開発、保守、文書化は、国際的なボランティアチームによって行われています。

micro:bit で MicroPython を使う方法はたくさんあります。次のものを利用できます。

  1. ブラウザベースの Python Editor
  2. オフラインの Mu editor
  3. 普段使っているエディターで Python ファイルを作成し、コマンドラインツール群を使ってデバイスとやり取りする方法(上級ユーザー向けのみ)。
  4. Web サイトに掲載されている サードパーティのエディター のいずれか。

MicroPython ツール

  • uFlash BBC micro:bit に Python スクリプトと MicroPython ランタイムを書き込むためのユーティリティです。このユーティリティ名は「micro-flash」と発音します。 ;-)

これには 2 つの機能があります。 - hex ファイルをプログラムから作成し、それを BBC micro:bit に書き込むための関数ライブラリ。 - Python スクリプトを BBC micro:bit に書き込む uflash というコマンドラインユーティリティ。

  • microFS BBC micro:bit 上の MicroPython が提供する制限付きファイルシステムを操作するための、シンプルなコマンドラインツールおよびモジュールです。

最後に、micro:bit での MicroPython の優れたチュートリアル もあります。

MicroPython とは何ですか?

MicroPython は他のプログラミング言語と同じくらい学びやすい一方で、いくつかの重要な点でそれらとは異なります。

  1. MicroPython は Python 3 の完全な再実装です。これには、他のどの言語にも見られない高度な機能が含まれています。基本的なデータ型(文字列、整数、浮動小数点数、ブール値)、データ構造(リスト、辞書、集合)、クラス、例外処理、ジェネレーター、リスト内包表記などです。

  2. MicroPython は完全に micro:bit 自体の上で動作します。コンパイラーは不要です。

  3. MicroPython は(Python と同様に)動的言語であるため、デバイスを対話的に扱うことができます。Python コードを入力すると、REPL 機能を使ったライブコーディングセッションで、デバイスが即座に応答します。

  4. MicroPython には多くの独自機能があります。強力な音楽プログラミング言語、音声合成機能、組み込みの画像と音楽、ローカルファイルシステム、さらに接続されたデバイスとつながるための幅広い方法(I2C、NeoPixel、SPI、UART)があります。

V1 Bluetooth スタックは、メモリ制約のため MicroPython 内では有効になっていません。ただし MicroPython は、独自のシンプルでありながら強力な radio モジュールで Bluetooth 無線ハードウェアを利用します。radio モジュールのプロトコルは Bluetooth よりもはるかに初心者にやさしく、それでいて効率的かつ効果的な micro:bit デバイスの無線ネットワークをユーザーが作成できるようにします。概念的には、トランシーバーと同じように動作します。あるチャンネルで送信している人の内容は、同じチャンネルで受信している人なら誰でも聞くことができます(しかも選べるチャンネルはたくさんあります)。それだけです!

最後に、そしておそらく最も重要な点として、MicroPython を学ぶことは、Python の使い方を学ぶことでもあります。Python は世界で最も人気のあるプロ向けプログラミング言語の 1 つです。YouTube、Google、Facebook、Instagram、DropBox、そしてその他多数のオンラインサービスを使うとき、あなたは気づかないうちに 毎日 Python を利用しています。 こうしたスキルには価値があります。Python プログラマーには需要があります。

MicroPython ソフトウェア

MicroPython 自体は C++ で書かれています。MicroPython の「ランタイム」は、一連のオフラインツールを使ってビルドされます。このビルドプロセスの出力は、完全な MicroPython 言語を含む .hex ファイルです。上で説明したエディターは、このファイルとあなたのコードを組み合わせて、デバイスにコピーするファイルを生成します。

エディターベースのコードを空にしておくだけで、ランタイムの .hex ファイルだけを任意の micro:bit に書き込めます。

この方法で MicroPython が micro:bit に読み込まれると、当然ながら、それに関連付けられたユーザープログラムはありません。しかし、ターミナルプログラムを使って USB シリアルポート経由で micro:bit に接続できます(または Mu editor 内で REPL ボタンを押して同じことを行えます)。すると MicroPython とライブで対話できます。たとえば display.show("Hello") と入力すると、RETURN を押した瞬間に "hello" というメッセージが画面上をスクロールします。

さらに興味深いことに、デバイスにコピーした .hex ファイルにあなたのコードが含まれている場合でも、REPL で接続してプログラムと対話することは可能です。これはデバッグ目的で非常に便利です。

MicroPython へのユーザーアプリケーションの追加

Web ホスト版エディターとオフラインエディター(Mu)は、どちらもこの MicroPython .hex ファイルのコピーをプレーンテキストファイルとして内部に持っています。

Python アプリケーションを書くと、Web ホスト版エディターとオフラインエディター Mu は、micro:bit にコピーするための変更済み .hex ファイルを作成します。 この変更済みファイルには 3 つのものが含まれています

  1. ベースとなる MicroPython .hex コードファイルの同一コピー。
  2. ある領域を MicroPython スクリプトとして示す小さなヘッダー(その後にスクリプト長がバイト単位で続きます)。
  3. コメントやあらゆる空白を含めた、あなたの Python プログラムの完全なコピー。

その結果、Mu と uflash コマンドは、.hex ファイルからあなたの Python コードを取り出すことができます(ソースコードの保存を忘れていた場合でも)。

.micro:bit に .hex ファイルを書き込む(つまりコピーする)と、micro:bit は再起動します。 MicroPython は特別なメモリアドレスであなたのスクリプトを探します。スクリプトが見つかると、それを実行しようとします。あなたのプログラムは、何かすることがある間は実行され続けるため、プログラムがループしている間は動き続けるか、エラーが発生するまで動作します(その時点でプログラムは停止し、デバイス上に役立つエラーメッセージをスクロール表示します)。

MicroPython はコンパイル型ですか、それともインタープリタ型ですか? 両方です!

コンパイルとは、コードをコンピューターが理解できる命令へ変換することです。 その結果、これらの命令は非常に高速に評価されます。インタープリテーションとは、コードがコンピューター上で直接実行されるのではなく、別の(解釈する)プログラムによって実行されることです。インタープリテーションの利点は柔軟性にあります。プログラムの実行中にインタープリターと対話し、内容を変更できます。 実際、REPL を使ってライブコーディングしているときにあなたが行っているのはまさにこれです。ただし、解釈のプロセスがあるため、インタープリタ型コードはコンパイル済みコードより遅くなります。

MicroPython は、あなたのプログラムを実行するために、コンパイルとインタープリテーションの技法を組み合わせて使います。仕組みは次のとおりです。

MicroPython がスクリプトを見ると、スクリプトの各行を解析します。最終的に得られるのは、あなたのプログラムがどのように動作するかを表すようにグループ化された、メモリ内のトークンの集合です。これは 抽象構文木(AST) と呼ばれます。

AST は、Python バイトコード と呼ばれる簡潔な命令集合にコンパイルされます。バイトコード命令は CPU のアセンブリ言語命令に似ていますが、実際のコンピューターハードウェアではなく、仮想マシン を対象としています。

Python バイトコードは Python 仮想マシンに渡されて実行され、こうしてあなたのプログラムが動作します。

以上のことはすべて、一瞬のうちに起こります。 MicroPython に組み込まれている Python 仮想マシン自体も、C++ コードからコンパイルされています。これは Python バイトコードを読み取り、1 つずつ解釈し、それぞれが固有の目的を果たすように、より低レベルの C++ 関数を呼び出します。バイトコードインタープリターを使用することで、MicroPython は独自の仮想命令セットを持つ仮想マシンを実装しています。 これが仮想であるのは、これらの命令がハードウェアに「組み込まれている」のではなく、ソフトウェアで実装されているためです。これにより、MicroPython は異なるプロセッサを持つさまざまなコンピューターシステムへ容易に「移植」できます。

コードエディターとツール

Python in Education のウェブサイトには、多数の micro:bit 関連リソース とオンラインエディターに加え、教育における Python に関する一般的なリソースも掲載されています。

ウェブサイトから Mu をダウンロード でき、その開発に参加 することもできます。さらに、ブラウザベースのエディターは オープンソースで、コミュニティによってメンテナンスされています

2 つの Python モジュールが、micro:bit への書き込みファイルシステムとのやり取り のためのコードおよびコマンドラインコマンドを提供します。

コミュニティの貢献

国際的な Python コミュニティの多くの人々が、MicroPython / BBC micro:bit World Tour を通じて自由に利用できるリソースを提供しています。

オンライン Python シミュレーター

教育リソース

microbit.org では、さまざまな Python 関連カリキュラムを提供しています。

NCCE key-stage 3 Physical computing には、micro:bit を使って Python を教えるための KS3 レベルのカリキュラムが含まれています。

Grok Learning は、オンラインの MicroPython コードエディター、Blockly ビジュアルプログラミング、完全な micro:bit シミュレーター、カリキュラムに沿った教材、自動採点される問題を提供しています。

ドキュメント

開発者向けのチュートリアルと API ドキュメントは、こちら で参照できます。

開発チームへの issue の登録

ソースコード

その他のリンク

  • すべての開発活動は、Python Software Foundation の 行動規範 の対象です。

  • Python Software Foundation は、より広い Python コミュニティを代表し、支援し、調整しています。

  • Python スクリプトに アセンブリ言語を埋め込む方法 を学びましょう(この機能は micro:bit 上の MicroPython で有効になっています)。

  • Pycomic の micro:bit image maker を使うと、ドキュメントで使用する画像を作成できます。

  • 多数の MicroPython / BBC micro:bit の動画は、この YouTube プレイリスト で見つけることができます。

  • このプロジェクトへの関与に関する Python Software Foundation の説明は、このブログ記事 で読むことができます。

  • このプロジェクトの貢献者の 1 人が、2016 年の欧州 Python プログラミングカンファレンス(EuroPython)で 基調講演を行いました

  • micro:bit と MicroPython に関する CAS Chat は、より大きなプロジェクトについての興味深い視点を提供します。

  • CAS.TV MicroPython デモ メディアオフセット 23:53