用語集¶
- ベアメタル
- MCU ベースのシステムなど、(本格的な) OSのないシステム。ベアメタルのシステム上では MicroPython が事実上、コマンドインタプリタ(REPL)を備えた小さなOSのように機能します。
- バッファプロトコル
bytes
,bytearray
,memoryview
,str
オブジェクトなど、自動的にバイト列に変換することができる任意の Python オブジェクトはどれも「バッファプロトコル」を備えています。- ボード
- 通常、これは、 マイクロコントローラ とサポートコンポーネントを含むプリント回路基板(PCB)を指します。MicroPython ファームウェアは通常、ボードごとに提供されます。ファームウェアには、MCU 固有の機能だけでなく、ドライバーやピン名などのボードレベルの機能も含まれているためです。
- バイトコード
- Python ソースコードをコンパイルして生成された Python プログラムのコンパクトな表現。これは、VM が実際に実行するものです。バイトコードは通常、実行時に自動的に生成され、ユーザーには見えません。 CPython と MicroPython はどちらもバイトコードを使用しますが、形式は異なることに注意してください。また、 クロスコンパイラ を使用してソースコードをオフラインでプリコンパイルすることもできます。
- 呼出し先所有タプル
- これは、効率上の理由から一部の組み込み関数またはメソッドが同じ基本タプルオブジェクトを再利用してデータを返す MicroPython 固有の構造です。これにより呼び出しごとに新しいタプルを割り当てる必要がなくなり、ヒープの断片化が減少します。プログラムは、呼び出し先が所有するタプルへの参照を保持せず、代わりにそれらからデータを抽出する(またはコピーする)だけである必要があります。
- CircuitPython
- Adafruit Industries が開発した MicroPython の亜種。
- CPython
- CPython は Python プログラミング言語のリファレンス実装であり、最も有名なものです。それでも多くの処理系(Jython, IronPython, PyPy, MicroPython を含む)の中の一つです。MicroPython の実装は CPython とは大幅に異なりますが、可能な限り互換性を維持することを目指しています。
- クロスコンパイラ
mpy-cross
としても知られています。このツールは PC 上で動作し、MicroPython コードで書いた .py ファイル を MicroPython バイトコード を含んだ .mpy ファイル ファイルに変換します。 これにより、ロードが高速になり(ボードがコードをコンパイルする必要がない)、フラッシュ上のスペースが少なくなります(バイトコードはスペース効率が高い)。- ドライバー
- センサーやディスプレイなどの特定のコンポーネントのサポートを実装する MicroPython ライブラリ。
- FFI
- Foreign Function Interface の頭字語。 MicroPython Unix ポート がオペレーティングシステムの機能にアクセスするために使用するメカニズム。これは、 ベアメタル ポートでは使用できません。
- ファイルシステム
- ほとんどの MicroPython ポートおよびボードは、フラッシュに保存されるファイルシステムを提供します。これは
open()
などの標準 Python ファイル API を介してユーザーコードから利用できます。一部のボードでは、この内部ファイルシステムを USB マスストレージを介してホストからアクセス可能にします。 - 凍結モジュール
- クロスコンパイルされ、ファームウェアイメージにバンドルされている Python モジュール。これにより、コードがフラッシュから直接実行されるため、RAM の使用量が軽減されます。
- ガベージコレクター
- ヒープ 内の未使用メモリを再利用するために Python(およびMicroPython)で実行されるバックグラウンドプロセス。
- GPIO
- 汎用入出力(General-purpose input/output)のこと。電気信号(一般的に「ピン」と呼びます)を制御する最も簡単な手段です。GPIO を使用すると、ハードウェア信号ピンを入力または出力に設定し、デジタル信号値(論理 "0" または "1")を設定または取得できます。MicroPython は
machine.Pin
とmachine.Signal
クラスを使って GPIO アクセスを抽象化しています。 - GPIO ポート
- GPIO ピンのグループのことで、通常、これらのピンのハードウェア特性に基づいています(たとえば、同じレジスタで制御可能であるなど)。
- ヒープ
- MicroPython が動的データを保存する RAM 領域。ヒープは ガベージコレクター によって自動的に管理されます。MCU や ボードによって、ヒープに使用できるRAMの容量が大きく異なるため、どれだけ複雑なプログラムを作れるかに影響します。
- 隔離化文字列
- MicroPython が文字列の処理効率を向上させるために使う最適化。隔離化文字列は、アドレスではなくその(一意の)識別子で参照するため、識別子だけで高速に比較できます。また、同じ文字列をメモリ内で重複排除できることも意味します。文字列の隔離については、ユーザが意識することはほとんどありません。
- MCU
- マイクロコントローラのこと。マイクロコントローラは通常、デスクトップ、ラップトップ、スマートフォンよりもはるかに少ないリソースしかありませんが、小型で安価であり、消費電力は非常に少なくて済みます。MicroPython は、平均的な最新のマイクロコントローラで動作するよう、十分小さく、最適化されています。
- micropython-lib
MicroPython は(通常)わずかな組込みモジュールしか持たない単一の実行可能/バイナリファイルとして配布されます。 CPython に匹敵する広範な標準ライブラリはありません。代わりに、関連しているが別個のプロジェクト micropython-lib があり、CPython の標準ライブラリにある多くのモジュールの実装を提供しています。
一部のモジュールは純粋な Python で実装されており、すべてのポートで使用できます。しかし、micropython-lib のモジュールの大部分は FFI を使用してオペレーティングシステムの機能にアクセスするため MicroPython Unix ポート でのみしか利用できません(Windows のサポートも限定的です)。
CPython の stdlib とは異なり、micropython-lib モジュールは、個別にインストールしなければなりません。この手段としては手動コピーするか、 mip を使います。
- MicroPython ポート
- MicroPython はさまざまな ボード 、RTOS、OS をサポートしており、新しいシステムに比較的容易に適応できます。特定のシステムをサポートする MicroPython は、そのシステムの「ポート」と呼ばれます。異なるポートは、機能が大きく異なる場合があります。このドキュメントは、異なるポート間で利用可能な汎用API (「MicroPythonコア」)のリファレンスを意図しています。一部のポートでは、ここで説明されているいくつかの API (リソースの制約など)がまだ省略されていることに注意してください。このような違いや、MicroPython のコア機能を超えるポート固有の拡張機能については、それぞれのポート固有のマニュアルに記載されています。
- MicroPython Unix ポート
- Unix ポートは、主要な MicroPython ポート の1つです。これは、Linux, MacOS, FreeBSD, Solaris などの POSIX 互換オペレーティングシステム上で動作するように意図されています。これは、Windows ポートの基礎としても機能します。Unixポートは、MicroPython 言語とマシンに依存しない機能の迅速な開発とテストに非常に役立ちます。 "CPython の
python
実行ファイルと同様の方法で機能することもできます。 - mip
MicroPython のパッケージインストーラです(mip - "mip installs packages")。mip は MicroPython のパッケージを micropython-lib、GitHub、または任意の URL からインストールします。mip はネットワーク対応ボードであればデバイス上で使えますし、 mpremote などのツール内で使うこともできます。
mip
の使用方法については パッケージ管理 を参照してください。- mpremote
- MicroPython デバイスと対話するためのツールです。 MicroPython のリモート制御: mpremote を参照してください。
- .mpy ファイル
- クロスコンパイラ の出力。 .py ファイル からコンパイルしたものであり、Python ソースコードの代わりに MicroPython バイトコード を含みます。
- ネイティブ
- 通常、「ネイティブコード」、つまりターゲットマイクロコントローラーのマシンコード(ARM Thumb, Xtensa, x86/x64 など)を指します。
@native
デコレータをMacroPython 関数に適用すると、 バイトコード を生成する代わりにネイティブコードを生成するようになり、おそらく高速にはなりますが、RAM をより多く使ってしまいます。 - ポート
- 通常は MicroPython ポート の略ですが、 GPIO ポート を指していることもあります。
- .py ファイル
- Python ソースコードが書き込まれたファイル。
- REPL
- 「Read(読み取り)、Eval(評価)、Print(印字)、Loop(ループ)」の頭字語。これは対話的な Python プロンプト であり、短いコードスニペットのデバッグやテストをするのに便利です。ほとんどの MicroPython ボードでは、UART を介して REPL を利用できます。これは通常、ホストPCでUSB経由でアクセスできます。
- ストリーム
- 「ファイルのようなオブジェクト」とも呼ばれます。基礎となるデータへの連続的な読み書きアクセスを提供するオブジェクトです。ストリームオブジェクトは対応するインタフェースを実装したもので、
read()
,write()
,readinto()
,seek()
,flush()
,close()
などのメソッドを持ちます。ストリームは MicroPython における重要な概念であり、多くの I/O オブジェクトはストリームインタフェースを実装しているので、異なるコンテキスト間でも一貫かつ交換可能に使えます。MicroPython のストリームの詳細については、 io モジュールを参照してください。 - UART
- "Universal Asynchronous Receiver/Transmitter" の頭字語。これは、ピンのペア(TX と RX)を介してデータを送信するペリフェラルです。多くのボードには、少なくとも1つの UART をホストPCの USB 経由のシリアルポートとして使えるようになっています。
- upip
- MicroPython 用の使われなくなったパッケージマネージャで、 CPython の pip に影響されていますが、はるかに小さく、機能も限定されています。このツールの代わりとなる mip を参照してください。
- webrepl
- ブラウザからインターネット経由でデバイスの REPL に接続する手段です(ファイルを転送もできます)。 https://micropython.org/webrepl を参照。