CircuitPythonのライブラリ

AdafruitのLearning Guideの非公式日本語訳です。
英語独特の言い回しを可能な限り日本語的な表現に直していますが、不自然に感じる部分も残っていますことを何卒ご容赦ください。

あなたが実行するCircuitPythonプログラムは、動作するために多くの情報を必要とします。CircuitPythonがとてもシンプルに使える理由は、その情報のほとんどが他のファイルに保存されていて、バックグラウンドで動作するからです。これらのファイルはライブラリと呼ばれています。これらのファイルのいくつかはCircuitPythonに組み込まれています。他のファイルはCIRCUITPYドライブのlibと呼ばれるフォルダに保存されています。
CircuitPythonのすごいところは、ファームウェアとは別にコードを保存できることです。ファームウェアと別にコードを保存することで、あなたが書いたコードと依存しているライブラリの両方を簡単にアップデートすることができます。

あなたのボードにはすでにlibフォルダがあるかもしれません。そうでない場合は、自分でフォルダを作成してください。CircuitPythonを最初にインストールすると、空のlibディレクトリが作成されます。

CircuitPythonのライブラリは通常のPythonモジュールと同じように動作します。Pythonの用語では、ライブラリファイルはデフォルトでPythonのパスの一部になっているのでlibディレクトリに置くことができます。

別々のライブラリを使用するこうしたアプローチの欠点は、ライブラリが最初から組み込まれていないことです。ライブラリを使用するには、使用する前にCIRCUITPYドライブにコピーしておく必要があります。幸いなことに、Adafruitでは全てのライブラリを詰め込んだバンドルを提供しています。

バンドルとリリースには、.mpyファイル拡張子を持つライブラリの最適化されたバージョンも含まれています。
これらのファイルはドライブ上のスペースをあまり取らず、ロード時のメモリフットプリントも小さくなります。

CircuitPythonライブラリバンドルのインストール

私たちは常にライブラリをアップデートして改善しています。代わりに、外部ライブラリに依存するコードの例をボードのガイドに掲載しています。これらのライブラリの中にはAdafruitから入手できるものもあれば、コミュニティメンバーが書いたものもあります。

いずれにしても、CircuitPythonを使い始めると、どのようにしてライブラリを入手するか知りたくなるでしょう。

下のボタンをクリックして最新のAdafruit CircuitPythonバンドルを入手できます。

注意: バンドルのバージョンと実行しているCircuitPythonのバージョンを一致させてください。CircuitPythonのメジャーバージョンとライブラリを混在させた場合、メジャーバージョンの変更時にライブラリのインターフェースが変更されるため、エラーが発生する可能性が高くなります。

別のバージョンが必要な場合は、バンドルのリリースページにアクセスして、どのバージョンを探しているのか、変更点などの情報を確認することができます。

いずれにしても、あなたのCircuitPythonのファームウェアのバージョンに合ったバージョンをダウンロードしてください。バージョンがわからない場合は、CircuitPython REPLの最初のプロンプトを見てください。例えば、v4.0.1を実行している場合、4.xライブラリバンドルをダウンロードしてください。また、非圧縮のpythonファイルを含むpyバンドルもありますが、ライブラリの高度な作業をしている場合以外は不要でしょう。

zipをダウンロードしたら、中身を解凍してください。これは通常、zipをダブルクリックして行います。Mac OSXでは、zipと同じディレクトリにファイルが置かれます。


バンドルフォルダを開きます。中には2つの情報ファイルと2つのフォルダがあります。1つはlibバンドル、もう1つはexamplesバンドルです。


次に lib フォルダを開きます。フォルダを開くと、たくさんの mpy ファイルとフォルダが表示されます。

Exampleファイル

各ライブラリに収録されているすべてのexampleファイルが、例題のみのバンドルと同様にバンドルに収録されるようになりました。これらは主に2つの理由で含まれています。

  • デバイスの迅速なテストを可能にする
  • 個々の目的に合わせて簡単に組み立てることができるコードのベースとなる例を提供する

ライブラリをマイコンボードにコピーする

まず、CIRCUITPYドライブにlibフォルダを作成します。ドライブを開いて右クリックし、新しいフォルダを作成するオプションを選択し、libと名付けます。ダウンロードしたzipから展開したlibフォルダを開きます。中にはいくつかのフォルダと.mpyファイルがあります。使用したいライブラリを見つけ、CIRCUITPY上のlibフォルダにコピーしてください。

これはexampleファイルにも当てはまります。これらのファイルは生の.pyファイルとして提供されているだけなので、MemoryErrorsが発生した場合はmpy-crossユーティリティを使って.mpyに変換する必要があるかもしれません。これについてはCircuitPythonエッセンシャルズガイドを参照してください。使用方法は、上記のエクスプレスボードのセクションで説明したものと同じです。

例: ライブラリが見つからないことでImportErrorが発生

バンドルを使って全てのライブラリをマイコンボードに書き込むのではなく、必要なライブラリだけを書き込むことにした場合、まだ書き込まれていないライブラリを使おうとするコードを書いてしまうことがあります。
ここでは、ボードに書き込まれていないライブラリを利用しようとするとどうなるかをデモし、問題を解決するために必要な手順を説明します。

このデモでは、CIRCUITPYドライブのlibフォルダに必要なライブラリが書き込まれていない場合にのみエラーが返されます。

Lチカ(LEDをチカチカさせる)の例の修正版を使ってみましょう。

import board
import time
import simpleio
 
led = simpleio.DigitalOut(board.D13) # CLUEの場合はboard.D17に修正
 
while True:
    led.value = True
    time.sleep(0.5)
    led.value = False
    time.sleep(0.5)

このファイルを保存します。ボードには何も起こりません。シリアルコンソールで何が起こっているのか確認してみましょう。


ImportErrorが発生しました。’simpleio’という名前のモジュールがないと書いてあります。

上のリンクをクリックして、正しいバンドルをダウンロードしてください。ダウンロードしたバンドルファイルから lib フォルダを展開します。下にスクロールしてsimpleio.mpyを見つけてください。これが探しているライブラリファイルです!
上記の手順に従って、個々のライブラリファイルをロードしてください。

LEDがまた点滅し始めました! シリアルコンソールを確認してみましょう。


エラーはありません!素晴らしいです。ImportErrorを正常に解決しました。

今後、このエラーが発生した場合は、上記の手順に従って、不足しているライブラリと一致するライブラリを選択してください。

非Expressボードへのライブラリのインストール

Trinket M0 または Gemma M0 をお持ちの場合は、上記の例と同じ手順で必要に応じてライブラリをインストールしてください。コードに追加したライブラリを知っているはずなので、ImportErrorが出ることは無いと思います。
ダウンロードしたlibフォルダを開いて、必要なライブラリを見つけ、CIRCUITPYドライブのlibフォルダにドラッグします。

必要なライブラリだけをロードしても、Trinket M0やGemma M0の容量を使い果たしてしまうかもしれません。この問題を解決するために、いくつかの方法があります。お使いのボードのLearnガイドのトラブルシューティングのページにあります。

CircuitPythonライブラリ/Exampleの更新

ライブラリや例題は随時更新されますので、CIRCUITPYドライブにあるファイルを更新することが重要です。

1つのライブラリやExampleを更新するには、上記と同じ手順に従ってください。ライブラリ・ファイルをlibフォルダにドラッグすると、それを置き換えるかどうかを尋ねてきますので、「はい」と答えてください。これで完了です。

ライブラリのアップデートがあるたびに、新しいライブラリバンドルがリリースされます。
アップデートにはバグ修正や新機能などが含まれます。使用しているライブラリが更新されているかどうか、こまめにチェックすることが大切です。

原文: https://learn.adafruit.com/adafruit-clue/circuitpython-libraries

Follow me on Twitter

前の記事

REPL

次の記事

CircuitPythonのFAQ