用語集#

baremetal#

(本格的な)オペレーティングシステムを持たないシステム。例えば MCU ベースのシステムなどです。baremetal システム上で動作する場合、MicroPython は事実上、小さなオペレーティングシステムのように機能し、ユーザープログラムを実行してコマンドインタープリタ(REPL)を提供します。

buffer protocol#

bytesbytearraymemoryviewstr オブジェクトなど、自動的にバイト列に変換できる任意の Python オブジェクト。これらはすべて「buffer protocol」を実装しています。

board#

通常、これは マイクロコントローラ とそれを支える部品を搭載したプリント基板(PCB)を指します。MicroPython のファームウェアは、MCU 固有の機能だけでなく、ドライバやピン名などのボードレベルの機能も含むため、通常はボードごとに提供されます。

bytecode#

Python のソースコードをコンパイルすることで生成される、Python プログラムのコンパクトな表現。これは VM が実際に実行するものです。bytecode は通常、実行時に自動的に生成され、ユーザーには見えません。CPython と MicroPython はどちらも bytecode を使用しますが、その形式は異なる点に注意してください。cross-compiler を使って、ソースコードをオフラインで事前コンパイルすることもできます。

callee-owned tuple#

これは MicroPython 固有の構造で、効率上の理由から、一部の組み込み関数やメソッドがデータを返すために同じ基盤となるタプルオブジェクトを再利用することがあります。これにより、呼び出しごとに新しいタプルを割り当てる必要がなくなり、heap の断片化が軽減されます。プログラムは callee-owned tuple への参照を保持すべきではなく、代わりにそこからデータを取り出す(またはコピーを作る)だけにすべきです。

CircuitPython#

Adafruit Industries によって開発された MicroPython の派生版。

CPython#

CPython は Python プログラミング言語のリファレンス実装であり、最もよく知られたものです。しかしながら、これは多くの実装(Jython、IronPython、PyPy、MicroPython を含む)のうちの一つです。MicroPython の実装は CPython とは大きく異なりますが、可能な限り互換性を維持することを目指しています。

cross-compiler#

mpy-cross とも呼ばれます。このツールは PC 上で動作し、MicroPython コードを含む .py file を、MicroPython の bytecode を含む .mpy file に変換します。これにより、読み込みが高速になり(ボードがコードをコンパイルする必要がない)、フラッシュ上の使用領域も少なくなります(bytecode はより省スペースです)。

driver#

センサーやディスプレイなど、特定のコンポーネントのサポートを実装する MicroPython ライブラリ。

FFI#

Foreign Function Interface の頭字語。MicroPython Unix port がオペレーティングシステムの機能にアクセスするために使用する仕組みです。これは baremetal ポートでは利用できません。

filesystem#

ほとんどの MicroPython のポートやボードは、フラッシュに保存されたファイルシステムを提供します。これは open() などの標準的な Python ファイル API を介してユーザーコードから利用できます。一部のボードでは、この内部ファイルシステムを USB マスストレージ経由でホストからアクセスできるようにもしています。

frozen module#

クロスコンパイル され、ファームウェアイメージにバンドルされた Python モジュール。コードがフラッシュから直接実行されるため、RAM の必要量が削減されます。

Garbage Collector#

Python(および MicroPython)で動作し、heap 内の未使用メモリを回収するバックグラウンドプロセス。

GPIO#

汎用入出力(General-purpose input/output)。マイクロコントローラ上の電気信号(一般に「ピン」と呼ばれる)を制御する最も単純な手段です。GPIO は通常、ピンを入力または出力のいずれかにし、そのデジタル値(論理「0」または「1」)を設定または取得できるようにします。MicroPython は machine.Pinmachine.Signal クラスを使って GPIO アクセスを抽象化します。

GPIO port#

通常はこれらのピンのハードウェア特性(例えば同じレジスタで制御できることなど)に基づいてグループ化された、GPIO ピンの集まり。

heap#

MicroPython が動的データを保存する RAM 領域。Garbage Collector によって自動的に管理されます。MCU やボードによってヒープに利用できる RAM の量は大きく異なるため、これがプログラムの複雑さにどこまで対応できるかに影響します。

interned string#

文字列を扱う効率を高めるために MicroPython が使用する最適化。interned string は(アドレスではなく)その(一意の)識別性によって参照されるため、識別子だけで素早く比較できます。また、同一の文字列をメモリ内で重複排除できることも意味します。文字列のインターニングはほぼ常にユーザーには見えません。

MCU#

マイクロコントローラ。マイクロコントローラは通常、デスクトップ、ラップトップ、スマートフォンに比べてはるかに少ないリソースしか持ちませんが、より小型で安価で、消費電力もはるかに少なくて済みます。MicroPython は、平均的な現代のマイクロコントローラ上で動作できるよう、十分に小さく最適化されるように設計されています。

micropython-lib#

MicroPython は(通常)、わずかな組み込みモジュールのみを備えた単一の実行ファイル/バイナリファイルとして配布されます。CPython のものに匹敵するような広範な標準ライブラリはありません。代わりに、関連はあるものの別個のプロジェクトである micropython-lib があり、CPython の標準ライブラリの多くのモジュールの実装を提供しています。

これらのモジュールの一部は純粋な Python で実装されており、どのポートでも動作します。OpenMV のファームウェアは、これらの一部(センサードライバ、ネットワーク、ユーティリティヘルパー)をファームウェアイメージに直接フリーズしているため、何もインストールせずにインポートできます。少数の micropython-lib モジュールは FFI を使用しており、MicroPython Unix port でのみ動作します。それらは OpenMV Cam では利用できません。

CPython の標準ライブラリとは異なり、フリーズされていない micropython-lib モジュールは個別にインストールします。ファイルシステムにコピーするか、あるいはネットワーク対応ボードでは mip を使用します。

MicroPython port#

MicroPython はさまざまな ボード、RTOS、OS をサポートしており、新しいシステムにも比較的容易に適応させることができます。特定のシステムをサポートする MicroPython は、そのシステムへの「ポート」と呼ばれます。ポートによって機能は大きく異なる場合があります。このドキュメントは、さまざまなポートにわたって利用できる汎用 API(「MicroPython コア」)のリファレンスとなることを意図しています。一部のポートでは、ここで説明する一部の API が省略されている場合がある(例えばリソースの制約により)点に注意してください。そのような相違点や、MicroPython コア機能を超えたポート固有の拡張については、ポート固有の別ドキュメントで説明されます。

MicroPython Unix port#

Unix ポートは主要な MicroPython ポート の一つです。Linux、MacOS、FreeBSD、Solaris などの POSIX 互換オペレーティングシステム上で動作することを意図しています。Windows ポートの基盤としても機能します。Unix ポートは、MicroPython 言語やマシン非依存の機能を素早く開発・テストするのに非常に役立ちます。CPythonpython 実行ファイルと似た方法で機能することもできます。

mip#

MicroPython 用のパッケージインストーラ(mip - 「mip installs packages」)。micropython-lib、GitHub、または任意の URL から MicroPython パッケージをインストールします。mip はネットワーク対応ボード上でオンデバイスで使用できるほか、mpremote などのツールによって内部的にも使用されます。

mip の使用に関する詳細は パッケージ管理 を参照してください。

mpremote#

MicroPython デバイスと対話するためのツール。MicroPython リモートコントロール: mpremote を参照してください。

.mpy file#

cross-compiler の出力。Python ソースコードの代わりに MicroPython bytecode を含む、.py file のコンパイル済み形式です。

native#

通常は「ネイティブコード」、すなわち対象のマイクロコントローラ向けのマシンコード(Cortex-M ベースの OpenMV Cam では ARM Thumb)を指します。@micropython.native デコレータを MicroPython 関数に適用すると、その関数について bytecode の代わりにネイティブコードを生成できます。これはおそらく高速になりますが、より多くの RAM を使用します。

port#

通常は MicroPython port の略ですが、GPIO port を指す場合もあります。

.py file#

Python ソースコードを含むファイル。

pyboard.py#

MicroPython ボードと対話するための、現在は廃止されたホスト側ツール。スクリプトの実行や、生の REPL を介したファイルシステムへのアクセスを行います。その後継である mpremote を参照してください。

REPL#

「Read, Eval, Print, Loop」の頭字語。これは対話的な Python プロンプトであり、デバッグや短いコードスニペットのテストに役立ちます。OpenMV Cam は USB(USB CDC シリアルデバイス)を介して REPL をホスト PC に提供します。

small integer#

MicroPython は整数の内部表現を最適化しており、「小さい」値は heap 上の領域を占有せず、それらを用いた計算もヒープの割り当てを必要としません。ほとんどの 32 ビットポートでは、これは -2**30 <= x < 2**30 の範囲の値に対応しますが、これは実装上の詳細とみなすべきであり、依存してはいけません。

stream#

「file-like object(ファイルライクオブジェクト)」とも呼ばれます。基盤となるデータへの逐次的な読み書きアクセスを提供する Python オブジェクトです。stream オブジェクトは、read()write()readinto()seek()flush()close() などのメソッドからなる対応するインターフェースを実装します。stream は MicroPython における重要な概念であり、多くの I/O オブジェクトが stream インターフェースを実装しているため、異なる文脈で一貫して相互に交換可能な形で使用できます。MicroPython における stream の詳細については、io モジュールを参照してください。

UART#

「Universal Asynchronous Receiver/Transmitter」の頭字語。これは一対のピン(TX と RX)を介してデータを送受信するペリフェラルです。多くのボードには、少なくとも一つの UART を USB 経由のシリアルポートとしてホスト PC に利用可能にする手段が含まれています。

upip#

MicroPython 用の現在は廃止されたパッケージマネージャ。CPython の pip にヒントを得ていますが、はるかに小さく機能も削減されています。その後継である mip を参照してください。

webrepl#

ブラウザからインターネット経由でデバイス上の REPL に接続する(およびファイルを転送する)方法。https://micropython.org/webrepl を参照してください。