
Arduino公式文書の翻訳
この文書のオリジナルはarduino-cliにあるLibrary specificationです。
下訳にChatGPT 4.0を使った関係で、元ドキュメントにない余分な説明を追加してしまっています。面白いのとよりわかりやすくなったので、特に削除しないで訳や体裁の問題だけ修正してあります。
ライブラリ仕様
これはArduino IDE 1.5.x以降で使用されるArduinoライブラリフォーマットの仕様です。
- リビジョン1はArduino IDEバージョン1.5.3から実装されました(現在はリビジョン2に置き換えられています)
- リビジョン2はArduino IDEバージョン1.5.6から実装されます
- リビジョン2.1はArduino IDEバージョン1.6.10から実装されます
- リビジョン2.2はArduino IDEバージョン1.8.10から実装されます
この新しいライブラリフォーマットは、Arduino IDE 1.6.2以降で利用可能なLibrary Managerと連携して使用することを意図しています。
ライブラリマネージャーを使用すると、ユーザーはプロジェクトに必要なライブラリを自動的にダウンロードしてインストールすることができます。
これは、Arduino IDE/Arduino IDE 2.0 および Arduino Web Editorのグラフィカルなインターフェースや、arduino-cli lib
を通じて行うことができます。
Library Managerの動作に関する詳細情報はこちらで入手できます。
Arduinoの開発ソフトウェアは複数のマイクロコントローラーアーキテクチャ(例えばAVR、SAMなど)をサポートしており、ライブラリは複数のアーキテクチャで動作する必要があります。 新しい1.5ライブラリフォーマットには、クロスアーキテクチャライブラリのための特別なサポートは含まれていませんが、ライブラリが特定のアーキテクチャに向けてコードのセクションをターゲットにするためのプリプロセッサベースのメカニズムを提供しています。
参照
1.5ライブラリフォーマット (リビジョン2.2)
ライブラリメタデータ
このフォーマットへの最も重要な追加点は、library.properties というプロパティファイルを通じてライブラリ自体に関する情報を追加する能力です。
このファイルにより、ライブラリマネージャー はライブラリとその依存関係を簡単かつ自動的に検索してインストールすることができます。このファイルはライブラリフォルダのルートに配置される必要があります。
library.propertiesファイルフォーマット
library.propertiesファイルはkey=valueのプロパティリストです。このファイル内のすべてのフィールドはUTF-8でエンコードされています。以下に特記しない限り、すべてのフィールドが必須です。利用可能なフィールドは以下の通りです:
- name - ライブラリの名前。ライブラリ名には基本的な文字(A-Zまたはa-z)と数字(0-9)、スペース( )、アンダースコア(_)、ドット(.)およびダッシュ(-)のみを含めることができます。文字または数字で始まり、少なくとも一つの文字を含む必要があります。
Arduino
で始まるname
値のライブラリは、これらの名前が公式のArduinoライブラリ用に予約されているため、ライブラリマネージャーインデックスに追加することが許可されなくなります。 - version - ライブラリのバージョン。バージョンはsemverに準拠している必要があります。1.2.0は正しいですが、1.2は受け入れられ、r5、003、1.1cは無効です。
- author - 著者の名前/ニックネームと、必須ではないがカンマ(,)で区切られた電子メールアドレス
- maintainer - メンテナーの名前と電子メール
- sentence - ライブラリの目的を説明する文
- paragraph - ライブラリのより長い説明。sentenceの値がこれに先行するため、ここでは2番目の文から書き始めるべきです。
- category - (デフォルトは
Uncategorized
)許可される値は:- Display
- Communication
- Signal Input/Output
- Sensors
- Device Control
- Timing
- Data Storage
- Data Processing
- Other
- url - ライブラリプロジェクトのURL。例えば、ライブラリのGitHubページなど。これはライブラリマネージャーの「詳細情報」リンクで使用されます。
- architectures - (デフォルトは
*
)ライブラリがサポートするアーキテクチャのカンマ区切りリスト。ライブラリがアーキテクチャ特有のコードを含まない場合は、*
を使用してすべてのアーキテクチャに一致させます。このフィールドは、複数のライブラリが#include
ディレクティブに一致する場合の優先順位を決定する要因の一つとして使用され、リストに含まれていないアーキテクチャのボードでライブラリがコンパイルされる際に警告メッセージを提供します。 - depends - (Arduino IDE 1.8.10/Arduino CLI 0.7.0から利用可能)(オプション)依存関係(現在のライブラリをビルドするために必要なライブラリ)のカンマ区切りリスト。Arduino IDEのライブラリマネージャーは、ライブラリのインストール中に依存関係をインストールするよう提案します。
arduino-cli lib install
は依存関係を自動的にインストールします。ライブラリのname
にスペースが許可されているが、カンマは許可されていないため、名前にスペースが含まれるライブラリを曖昧さなく参照できます。例:
depends=Very long library name, Another library with long-name
依存関係の名前の後に括弧でバージョン制約を指定することができます:
depends=ArduinoHttpClient (>=1.0.0)
- dot_a_linkage - (Arduino IDE 1.6.0 / arduino-builder 1.0.0-beta13から利用可能)(オプション)
true
に設定すると、ライブラリは.a(アーカイブ)ファイルを使用してコンパイルされます。最初に、すべてのソースファイルが通常通り.oファイルとしてコンパイルされます。その後、すべての.oファイルをリンカーコマンドに直接含めるのではなく、.aファイルに保存し、それをリンカーコマンドに含めます。 - includes - (Arduino IDE 1.6.10から利用可能)(オプション)スケッチに
#include <...>
行として追加されるライブラリのファイルのカンマ区切りリスト。このプロパティはArduino IDEの「ライブラリを含める」コマンドで使用されます。includes
プロパティが欠けている場合、ルートソースフォルダのすべてのヘッダーファイル(.h)が含まれます。 - precompiled - (Arduino IDE 1.8.6/arduino-builder 1.4.0から利用可能) (オプション).a(アーカイブ)ファイルや.so(共有オブジェクト)ファイルのサポートを有効にします。これらのファイルに必要なライブラリ内の場所については、“Precompiled binaries” セクションを参照してください。静的ライブラリはldflagとしてリンクされるべきです。precompiled フィールドには、ライブラリ内のソースファイルの取り扱いを制御する2つの値があります:
true
- ソースファイルは常にコンパイルされます。これは、オープンソースのコードとクローズドソースのコンポーネントの事前コンパイル済みバイナリを含む「混合」ライブラリに役立ちます。Arduino IDE 1.8.12/arduino-builder 1.5.2/Arduino CLI 0.8.0で「混合」ライブラリのサポートが誤って失われましたが、Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0で復活しました。full
- (Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0から利用可能) ライブラリがコンパイル中のボード用に事前コンパイル済みライブラリを提供している場合、ソースファイルはコンパイルされません。選択されたボード用に事前コンパイル済みのライブラリが提供されていない場合、フォールバックとしてソースファイルがコンパイルされます。これは、特定のターゲットハードウェアのコンパイル時間を短縮するためにライブラリを事前にコンパイルする場合や、ライブラリをオンデマンドでコンパイルすることで任意のボードをサポートする場合に役立ちます。
- ldflags - (Arduino IDE 1.8.6/arduino-builder 1.4.0から利用可能) (オプション)追加するリンカーフラグ。例:
ldflags=-lm
例えば、
name=WebServer
version=1.0.0
author=Cristian Maglie <c.maglie@example.com>, Pippo Pluto <pippo@example.com>
maintainer=Cristian Maglie <c.maglie@example.com>
sentence=A library that makes coding a Webserver a breeze.
paragraph=Supports HTTP1.1 and you can do GET and POST.
category=Communication
url=http://example.com/
architectures=avr
includes=WebServer.h
depends=ArduinoHttpClient
バージョン制約
(Arduino IDE 2.0.0-beta.3/Arduino CLI 0.7.0から利用可能)
デフォルトでは、library.properties
のdepends
フィールドに指定された依存関係の最新バージョンがライブラリと共にインストールされます。特定のバージョンまたはバージョンの範囲を指定することもサポートされています。
以下のオペレーターが利用可能です:
= |
と等しい |
> |
より大きい |
>= |
以上 |
< |
より小さい |
<= |
以下 |
! |
NOT(否定)1 |
&& |
AND(論理積) |
|| |
OR(論理和) |
( , ) |
制約グループ |
1 Arduino IDE 2.0.0-rc7/Arduino CLI 0.22.0から利用可能
例
もしライブラリ “ArduinoHttpClient” に以下のリリースがあるとすると:
0.1.0
1.0.0
2.0.0
2.1.0
依存関係としてインストールされるバージョンは以下の通りです:
depends フィールドの値 |
インストールされる バージョン |
---|---|
ArduinoHttpClient |
2.1.0 |
ArduinoHttpClient (=1.0.0) |
1.0.0 |
ArduinoHttpClient (>1.0.0) |
2.1.0 |
ArduinoHttpClient (>=1.0.0) |
2.1.0 |
ArduinoHttpClient (<2.0.0) |
1.0.0 |
ArduinoHttpClient (<=2.0.0) |
2.0.0 |
ArduinoHttpClient (!=1.0.0) |
2.1.0 |
ArduinoHttpClient (>1.0.0 && <2.1.0) |
2.0.0 |
ArduinoHttpClient (<1.0.0 || >2.0.0) |
2.1.0 |
ArduinoHttpClient ((>0.1.0 && <2.0.0) || >2.1.0) |
1.0.0 |
フォルダとファイルのレイアウト
各フォルダには特定の目的(ソース、例、ドキュメントなど)があります。この仕様でカバーされていないフォルダは、将来の改訂において必要に応じて追加される可能性があります。
ライブラリルートフォルダ
ライブラリルートフォルダの名前は、基本的な文字(A-Zまたはa-z)または数字(0-9)で始まり、その後に基本的な文字、数字、アンダースコア(_)、ドット(.)、ダッシュ(-)が続きます。最大長は63文字です。
ソースコード
Arduino IDE 1.5.x以降で使用されることを意図したライブラリの場合、ソースコードはsrcフォルダ内にあります。例えば:
Servo/src/Servo.h
Servo/src/Servo.cpp
srcフォルダと_そのすべてのサブフォルダ_にあるソースコードは、ユーザーのスケッチにコンパイルされてリンクされます。
src フォルダのみがインクルード検索パスに追加されます(スケッチとライブラリのコンパイル時に)。ユーザーがライブラリを自分のスケッチにインポートする場合(Arduino IDEの「Sketch > Include Library」メニューやArduino Web Editorの「Include」ボタンから)、デフォルトの動作(library.properties includes
フィールドを介して設定可能)は、src/ディレクトリ(ただし、そのサブフォルダではない)内のすべてのヘッダー(.h)ファイルに対して #include
ステートメントが追加されることです。
その結果、これらのヘッダーファイルは、あなたのライブラリへの事実上のインターフェースを形成します。
一般的に、ルートのsrc/フォルダにあるヘッダーファイルは、ユーザーのスケッチに公開したいものであり、ライブラリの将来のバージョンでも互換性を維持する予定のものであるべきです。
内部ヘッダーファイルは、src/フォルダのサブフォルダに配置してください。
Arduino IDE 1.0.xとの後方互換性を考慮して、ライブラリの作者はソースコードをsrcと呼ばれるフォルダではなく、ルートフォルダに配置することを選択する場合があります。 この場合、1.0のライブラリ形式が適用され、ソースコードはライブラリルートフォルダとutilityフォルダから検索されます。例えば:
Servo/Servo.h
Servo/Servo.cpp
Servo/utility/ServoTimers.h
Servo/utility/ServoTimers.cpp
これにより、既存の1.0形式のライブラリもArduino IDE 1.5.x以降でコンパイルすることが可能になり、その逆も同様です。 ライブラリがArduino IDE 1.5.x以降でのみ動作する必要がある場合は、すべてのソースコードをsrc/フォルダに配置することをお勧めします。 ライブラリがネストされたソースフォルダの再帰的なコンパイルを必要とする場合、そのコードはsrc/フォルダにある必要があります(Arduino IDE 1.0.xは再帰的なコンパイルをサポートしていないため、いずれにせよ後方互換性は不可能です)。
ライブラリのレイアウト
レイアウト | ルートがコンパイルされる | src がコンパイルされる |
utility がコンパイルされる |
---|---|---|---|
recursive | いいえ | 再帰的に | いいえ |
flat | はい | いいえ | はい |
事前コンパイルされたバイナリ
library.propertiesのprecompiled
フィールドは、事前コンパイルされたライブラリの使用をサポートするためのものです。これには、特定のプロセッサアーキテクチャ用にコンパイルされた.a(アーカイブ)または.so(共有オブジェクト)ファイルの提供が必要です。ファイルの対象アーキテクチャは、フォルダ名によって示されます。
バイナリはsrc/{build.mcu}
に配置される必要があります。ここで{build.mcu}
はファイルがコンパイルされた対象のアーキテクチャ名です。例:Arduino Dueの場合はcortex-m3
。
コンパイルされたバイナリのファイル名はlib
で始まるべきです(例:libFoo.a
)。
(Arduino IDE 1.8.12/arduino-builder 1.5.2/Arduino CLI 0.8.0から利用可能) ARMコアマイクロコントローラの浮動小数点ABI設定はコンパイラフラグを通じて調整可能です。特定の浮動小数点設定のためにコンパイルされたファイルを提供するために追加のサブフォルダレベルを使用することができます:src/{build.mcu}/{build.fpu}-{build.float-abi}
、ここで{build.fpu}
はコンパイラフラグ-mfpu
の値、{build.float-abi}
は-mfloat-abi
コンパイラフラグの値です。(Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0から利用可能) 浮動小数点設定のフラグが使用されているが、その設定に一致するフォルダが見つからない場合、src/{build.mcu}
がフォールバックとして使用されます。
以下は、ライブラリAPIの宣言を含むヘッダーファイル、他のアーキテクチャ用のフォールバックとして使用するソースファイル(precompiled=full
モード)、Arduino SAMDボードのARM Cortex M0+アーキテクチャ用のアーカイブファイル、浮動小数点設定サポートが追加される前のArduino開発ソフトウェアとの後方互換性のためのArduino Nano 33 BLEのARM Cortex M4アーキテクチャ用のアーカイブファイル、および-mfloat-abi=softfp -mfpu=fpv4-sp-d16
の浮動小数点ABI設定用にコンパイルされたArduino Nano 33 BLEのARM Cortex M4アーキテクチャ用のアーカイブファイルを提供する例のライブラリsrc
フォルダ構造です。
ライブラリ名/
├── src/
│ ├── ライブラリ名.h # ライブラリAPIの宣言を含むヘッダーファイル
│ ├── ライブラリ名.cpp # 他のアーキテクチャ用のフォールバックとしてのソースファイル
│ ├── cortex-m0plus/
│ │ └── libライブラリ名.a # Arduino SAMDボードのARM Cortex M0+アーキテクチャ用アーカイブファイル
│ ├── cortex-m4/
│ │ └── libライブラリ名.a # Arduino Nano 33 BLEのARM Cortex M4アーキテクチャ用のフォールバックアーカイブファイル
│ └── cortex-m4/softfp-fpv4-sp-d16/
│ └── libライブラリ名.a # `-mfloat-abi=softfp -mfpu=fpv4-sp-d16`の浮動小数点ABI設定用のArduino Nano 33 BLEのARM Cortex M4アーキテクチャ用アーカイブファイル
Servo/src/Servo.h
Servo/src/Servo.cpp
Servo/src/cortex-m0plus/libServo.a
Servo/src/cortex-m4/libServo.a
Servo/src/cortex-m4/fpv4-sp-d16-softfp/libServo.a
ライブラリの例
ライブラリの例はexamplesフォルダに配置する必要があります。examplesフォルダの名前は正確にそのように(小文字で)記述される必要があります。
Servo/examples/...
examplesフォルダ内に含まれるスケッチは、Arduino IDEおよびArduino Web EditorのExamplesメニューに表示されます。
詳細情報:
追加のドキュメント
extras フォルダは、開発者がライブラリにバンドルするドキュメントやその他のアイテムを置くために使用できます。このフォルダ内に配置されたファイルはライブラリのサイズを増加させるので、数キロバイトのライブラリに20MBのPDFを入れることはあまり良い考えではないかもしれません。
extras フォルダの内容はArduino開発ソフトウェアによって完全に無視されるので、中に何を置いても自由です。
キーワード
ライブラリのキーワードは、ライブラリフォルダのルートにあるkeywords.txtという名前のファイルで指定することができます。インストールされたライブラリのキーワードがスケッチで使用されると、Arduino IDEはそれを色付けします。
Servo/keywords.txt
keywords.txtファイルの例:
# ExampleLibrary用のシンタックスカラーリングマップ
# データタイプ (KEYWORD1)
Test KEYWORD1
# メソッドと関数 (KEYWORD2)
doSomething KEYWORD2
# インスタンス (KEYWORD2)
# 定数 (LITERAL1)
このファイルは、Arduino IDEにTest
をデータタイプとして、doSomething
をメソッド/関数としてハイライトするよう指示します。
keywords.txtのフォーマット
keywords.txtは、単一の真のタブ(スペースではない)で区切られた4つのフィールドでフォーマットされます:
KEYWORD KEYWORD_TOKENTYPE REFERENCE_LINK RSYNTAXTEXTAREA_TOKENTYPE
フィールドを空白のままにしておくことも許可されています。
KEYWORD_TOKENTYPE
KEYWORD_TOKENTYPE | 用途 | テーマプロパティ |
---|---|---|
KEYWORD1 |
データタイプ | editor.data_type.style |
KEYWORD2 |
関数 | editor.function.style |
KEYWORD3 |
構造体 | editor.function.style |
LITERAL1 |
定数 | editor.reserved_word_2.style |
LITERAL2 |
? | editor.function.style |
この表は、KEYWORD_TOKENTYPE
の各値がkeywords.txtファイル内でどのように使用され、Arduino IDEのテーマプロパティとどのように関連しているかを示しています。たとえば、KEYWORD1
はデータタイプ用に、KEYWORD2
は関数用に、LITERAL1
は定数用に使用されます。これらのキーワードは、Arduino IDE内の対応するテーマプロパティに従って色付けされます。
REFERENCE_LINK
このフィールドは、カーソルがそのキーワード上にあるときに、Arduino IDEの 右クリック > リファレンスで検索 または ヘルプ > リファレンスで検索 を通じて開くArduino言語リファレンスページを指定します。一般的に、第三者のライブラリキーワードにREFERENCE_LINK
フィールドを定義することは意味がありません。なぜなら、それらはArduino言語リファレンスに掲載されている可能性が低いためです。
RSYNTAXTEXTAREA_TOKENTYPE
Arduino IDE 1.6.5以降では、このフィールドはKEYWORD_TOKENTYPE
を上書きします。以前のIDEバージョンでは、RSYNTAXTEXTAREA_TOKENTYPE
フィールドは無視され、代わりにKEYWORD_TOKENTYPE
が使用されます。
RSYNTAXTEXTAREA_TOKENTYPE | テーマプロパティ | KEYWORD_TOKENTYPEの同等項目 |
---|---|---|
RESERVED_WORD |
editor.reserved_word.style |
KEYWORD3 |
RESERVED_WORD_2 |
editor.reserved_word_2.style |
LITERAL1 |
DATA_TYPE |
editor.data_type.style |
KEYWORD1 |
PREPROCESSOR |
editor.preprocessor.style |
KEYWORD3 |
LITERAL_BOOLEAN |
editor.literal_boolean.style |
LITERAL1 |
この表は、RSYNTAXTEXTAREA_TOKENTYPE
の各値がArduino IDEのテーマプロパティとどのように関連しており、KEYWORD_TOKENTYPE
と同等のものが何かを示しています。たとえば、RESERVED_WORD
はeditor.reserved_word.style
テーマプロパティに関連しており、KEYWORD_TOKENTYPE
のKEYWORD3
に相当します。
開発フラグファイル
通常、Arduino IDEはライブラリフォルダの内容を読み取り専用として扱います。これは、ユーザーが誤って例示スケッチを変更するのを防ぐためです。ライブラリの開発プロセス中には、Arduino IDEを使用してその場で例示スケッチを編集したい場合があるでしょう。Arduino IDE 1.6.6以降では、ライブラリフォルダのルートに.development
という名前のファイルを追加することで、読み取り専用の挙動を無効にすることができます。library.propertiesファイルも存在している必要があります。Library Manager indexerは、.development
ファイルを含むリリースをピックアップしないので、このファイルをリモートリポジトリにプッシュしないように注意してください。
完全な例
仕様に従っている架空のライブラリ “Servo” の例を以下に示します:
Servo/
├── library.properties # ライブラリのプロパティファイル
├── keywords.txt # キーワード定義ファイル
├── src/ # ソースコードフォルダ
│ ├── Servo.h # ヘッダーファイル
│ ├── Servo.cpp # メインのソースファイル
│ └── ServoTimers.h # タイマー関連のヘッダーファイル
├── examples/ # 例示スケッチフォルダ
│ ├── Sweep/ # 「Sweep」例
│ │ └── Sweep.ino
│ └── Pot/ # 「Pot」例
│ └── Pot.ino
└── extras/ # 追加ドキュメントフォルダ
└── Servo_Connectors.pdf
この構造は、library.properties
とkeywords.txt
でライブラリの設定とキーワードを定義し、src
フォルダでソースコードを管理し、examples
フォルダでユーザーが参考にできる例示スケッチを提供し、extras
フォルダで追加のドキュメントを提供する、Arduinoライブラリの一般的な形式を示しています。
複数のアーキテクチャとの作業
スケッチブックフォルダ(別名 “ユーザーディレクトリ”)の libraries
サブフォルダに配置されたライブラリは、複数の異なるプロセッサアーキテクチャを含むすべてのボードで利用可能になります。アーキテクチャ固有のコードや最適化を提供するために、ライブラリ作者は ARDUINO_ARCH_XXX
プリプロセッサマクロ(#define
)を使用できます。ここで、XXXはボードのプラットフォームのアーキテクチャフォルダの名前によって決定されるアーキテクチャの名前です。例えば、AVRベースのボードでコンパイルするときに ARDUINO_ARCH_AVR
が定義されます。
この機能を使用することで、ライブラリ開発者は異なるアーキテクチャに基づいて異なるコードを実行させることができます。これにより、特定のアーキテクチャに特化した最適化や機能を実装することが可能になり、より効率的で高性能なArduinoプロジェクトの開発が可能になります。
複数のアーキテクチャとの作業
スケッチブックフォルダ(別名 “ユーザーディレクトリ”)の libraries
サブフォルダに配置されたライブラリは、複数の異なるプロセッサアーキテクチャを含むすべてのボードで利用可能になります。アーキテクチャ固有のコードや最適化を提供するために、ライブラリの著者は ARDUINO_ARCH_XXX
プリプロセッサマクロ(#define
)を使用できます。ここでXXXは、ボードのプラットフォームのアーキテクチャフォルダの名前によって決定されるアーキテクチャの名前です。たとえば、AVRベースのボードでコンパイルする場合は ARDUINO_ARCH_AVR
が定義されます。
例:
#if defined(ARDUINO_ARCH_AVR)
// AVR専用のコード
#elif defined(ARDUINO_ARCH_SAM)
// SAM専用のコード
#else
// 汎用、プラットフォーム非依存のコード
#endif
あるいは、ライブラリが特定のアーキテクチャでのみ動作する場合は、コンパイルが難解な方法で失敗するのを防ぐために、明示的なエラーメッセージを提供することもできます:
#if defined(ARDUINO_ARCH_AVR)
// AVR専用のコード
#elif defined(ARDUINO_ARCH_SAM)
// SAM専用のコード
#else
#error "このライブラリはAVRまたはSAMプロセッサを搭載したボードのみをサポートしています。"
#endif
このような方法で、ライブラリの著者は特定のアーキテクチャに対応したコードを効果的に管理し、互換性のないプラットフォームでの混乱やエラーを防ぐことができます。
旧ライブラリ形式(1.5以前)
Arduino IDE 1.0.xの古いライブラリをサポートするために、Arduino IDEとArduino CLIは、library.propertiesメタデータファイルがないライブラリもコンパイルします(ヘッダーファイルは依然として必要です)。その結果、これらのライブラリはArduino IDE 1.0.xでの動作と同様に振る舞うはずですが、AVR以外のボードを含むすべてのボードで利用可能になります(これらはArduino IDE 1.0.xでは存在しなかったでしょう)。
この対応により、Arduino IDEとArduino CLIは古いライブラリと新しいライブラリの両方との互換性を保ちながら、開発者が新しいハードウェアプラットフォームを活用できるようになります。ただし、古いライブラリが新しいボードで完全に機能するとは限らないため、問題が発生した場合はライブラリの更新が必要になることがあります。