概要
micro:bit 用のソフトウェアは、主に次の 2 つのグループで構成されます。
-
コンピューター(ホスト)上で動作するソフトウェア。たとえばブラウザーエディター
-
micro:bit(ターゲット)上で動作するソフトウェア
通常、プログラムはホストコンピューター上で作成され、その後 USB 経由で micro:bit に転送されます。
実際には micro:bit には 2 つのチップがあり、1 つは書き込みを容易にするために DAPlink ソフトウェア全体を実行しており(KL26V1/KL27V2)、もう 1 つが実際にユーザーのコードを実行します(nRF51V1/nRF52V2)。
Software flow
高水準プログラミング言語
micro:bit 向けの「高水準」プログラミング言語は、大きく 2 つのカテゴリに分けられます。
-
コンパイル言語: あなたのプログラムは、micro:bit にコピーされる前に Arm アセンブラーまたは何らかのバイトコードにコンパイルされます。
-
インタープリター言語: スクリプト本体と、そのスクリプト用のインタープリターの両方が micro:bit にコピーされます。インタープリターが micro:bit 自身に存在するため、これらの言語では通常、コマンドを入力することで USB 経由で micro:bit を「ライブ」でプログラムすることもできます。
コンパイル言語
C/C++ は確かにコンパイルされますが、この文脈では高水準言語とは見なされません
micro:bit のオンラインコードエディターが何百万台もの展開済みボードをサポートできるようにするために、Microsoft は TypeScript で書かれたブラウザー内コンパイラーである MakeCode を構築しました。
このプロセスについては、MakeCode ソフトウェアページでさらに詳しく説明しています。
ブラウザー内コンパイラーはソフトウェアスタック全体をコンパイルするのではなく、ユーザーのスクリプトだけをコンパイルします。関数呼び出しや低水準の関数は、micro:bit ランタイムによって処理されます。事前にコンパイルされたランタイムイメージがブラウザーに含まれており、ダウンロード用に提示される前に、コンパイル済みスクリプトと連結されます。
インタープリター言語
公式 micro:bit エディターでは、インタープリター方式なのは Python のみです。これは MicroPython インタープリターを使用して実現されています。
この詳細は、MicroPython のページに記載されています。
また、micro:bit 上で動作する JavaScript インタープリター Espruino の移植版 もあります。
コーディング環境と IDE
micro:bit をプログラムするために使用できるコーディング環境は、非常に数多く存在します。
特に人気があるのは、https://microbit.org/code に掲載されている公式のものや、オフラインの Mu エディターです。
以下は、micro:bit で使用できるコードエディターの完全ではない一覧です。ここにないものをご存じであれば、ぜひ追加してください
コーディング環境から micro:bit へ
各コーディング環境は、.hex ファイルと呼ばれる特別なファイルを生成します。これは、micro:bit が理解できる形式で書かれた、micro:bit 用のコードを含むファイルです。
micro:bit のコードは、micro:bit を接続したときにコンピューター上に表示される MICROBIT ドライブに .hex ファイルをドラッグすることで更新されます。これはコンピューターからは USB メモリスティックのように見えます(このフラッシュドライブは実際には DAPLink ソフトウェアによってエミュレートされています)
モバイルアプリを使用し、携帯電話から Bluetooth 通信インターフェイスを使って、micro:bit にコードを「書き込む」ことも可能です。
詳細は bluetooth アプリ をご覧ください。
micro:bit の低水準(C/C++)ソフトウェアスタック
micro:bit 用のアプリケーションを書くとき、最終的に書き込まれる .hex ファイルを構成するために、あなたのアプリケーションには他のソフトウェア部品も組み合わされます。このコードは、次のようなさまざまな低水準ソフトウェアコンポーネントで構成されています。
-
DAL/CODAL(ランタイムと呼ばれることもあります)。Lancaster University によって C++ で書かれています。DAL は、micro:bit の機能を、すべてのコーディング言語から利用できる共通の関数セットに抽象化します。MakeCode の高水準ブロック関数は、ランタイム内の同等の C/C++ 呼び出しにほぼ直接対応しています。MicroPython では DAL の使用はより少なくなります。
-
Arm Mbed Arm Mbed SDK は、MCU 周辺機器用の標準化されたドライバーを提供し、異なる MCU の低水準ハードウェアの詳細の大部分を抽象化するため、micro:bit ソフトウェアを他のハードウェア上でも容易に動作させることができます。これには、Mbed BLE API である BLE の抽象化も含まれます。
-
Nordic nRF5 SDK Mbed 自体は Nordic nRF5 SDK の上に構築されており、これはプログラマーが自社ハードウェアを使用するのを支援するために Nordic が提供しているコンポーネントです。
-
MicroPython interpreter Python を使用している場合、MicroPython 言語インタープリター全体がアプリケーションに結合されて .hex ファイルを構成します。micro:bit 上の MicroPython は基盤として Mbed を使用していますが、MicroPython は他の幅広いハードウェアプラットフォーム上でも動作します。