Arduinoのスケッチの仕様です。
Arduinoボードで実行されるプログラムは、「スケッチ」と呼ばれます。この用語は、Arduino IDEやコアAPIの基となったProcessingから引き継いだものです。
スケッチのフォルダとファイル
スケッチのルートフォルダ名とコードのファイル名は、基本的な文字(A-Z、a-z)と数字(0-9)1、アンダースコア(_)2で始まり、基本的な文や数字、アンダースコア、ドット(.)、ダッシュ(-)が続きます。最大長は63文字です。スケッチ名はドット(.)で終わることはできません。また、予約語であってもいけません。
1Arduino IDE 1.8.4以降でサポート
2Arduino IDE 2.0.4/Arduino CLI 0.30.0-0.30.1を除くすべてのバージョンでサポート
スケッチルートフォルダ
多くのArduinoスケッチは、一つの.inoファイルだけから構成されるので、そのファイルがスケッチであると考えてしまうかもしれません。しかし、そのフォルダがスケッチです。スケッチは複数のコードファイルやフォルダから構成される場合があり、フォルダはそれらのファイルを一つのプログラムにまとめるものだからです。
主スケッチファイル
全てのスケッチは、ルートフォルダ名と同じ名前に一致する.inoファイルを一つ含む必要があります。
.pdeもサポートされますが非推奨で、将来は廃止予定です。.ino拡張子の利用が強く推奨されています。
追加コードファイル
スケッチには複数のコードファイルを含むことができます。
以下の拡張子がサポートされています。
- .ino: Arduino言語ファイル
- .pde: Arduino言語ファイルの、別の拡張子。このファイル拡張子はProcessingスケッチでも使われます。.inoは、混乱を避けるために推奨されています。
.pdeは非推奨で、将来は廃止予定です。 - .cpp: C++ファイル
- .c: Cファイル
- .S: アセンブリ言語ファイル
- .h、.hpp、.hh1: ヘッダファイル
- .tpp、.ipp2: ヘッダファイル
1.hppと.hhは、Arduino IDE 1.8.0/arduino-builder 1.3.22からサポートされています。
2Arduino CLI 0.19.0からサポートされています。
これらのファイルとスケッチの他の部分が、コンパイル時にどのように利用されるかは、スケッチのビルドプロセスを参照してください。
srcサブフォルダ
srcサブフォルダの内容は、再帰的にコンパイルされます。スケッチルートフォルダのコードファイルとは異なり、これらのファイルは、IDEのタブには表示されません。
IDEのインターフェイスを通じて、スケッチユーザに見せたくないファイルがあるときに有用です。自己完結型のプロジェクトにするために、スケッチにライブラリをバンドルするのに利用できます。
srcフォルダ配下のArduino言語ファイルはサポートされていません。
- Arduino IDE 1.6.5-r5以前では、再帰コンパイルできません。
- Arduino IDE 1.6.6-1.6.9では、スケッチフォルダの全てのサブフォルダに対して再帰コンパイルされます。
- Arduino IDE 1.6.10以降は、スケッチフォルダの
srcサブフォルダにだけ再帰コンパイルは限定されます。
dataサブフォルダ
dataフォルダは、スケッチの、コンパイルしない追加ファイル用に利用されます。
Arduino IDEの、「スケッチ> ファイルを追加…」で追加されるファイルは、daatフォルダに配置されます。
Arduino IDEの「ファイル > 名前を付けて保存…」は、スケッチルートフォルダにあるコードファイルと、dataフォルダの全てのファイルをコピーするので、daatフォルダ以外にある非コードファイルは削除されます。
メタデータ
sketch.json
Arduino Webエディタは、スケッチのルートフォルダにあるsketch.jsonというファイルを、スケッチのメタデータを保存するのに使います。このファイルは、Arduino CLIやArduino IDEでは利用されません。Arduino Webエディタを利用しなければ、無視しても問題ありません。
cpuキーは、ボード設定情報を含みます。Arduino Webエディタでスケッチを開いているときに、ボードを選択すると設定されます。
include_libsキーは、スケッチをコンパイルするときに、Arduino Webエディタが利用するライブラリのバージョンを定義します。Arduino Webエディタでは、ライブラリマネージャで利用できる全てのバージョンがインストールされているので、Arduino Webエディタ固有のものです。他のArduino開発ソフトウェアでは、一つのバージョンのライブラリだけがインストール可能です。
スケッチプロジェクトファイル
これは、sketch.yamlという名前のオプションファイルで、スケッチのルートフォルダに配置します。
スケッチプロジェクトファイルでは、ユーザは一つ以上のプロファイルを定義できます。それぞれのプロファイルは、スケッチをビルドするのに必要な全てのリソースの説明です。プラットフォームとライブラリはそれぞれ特定のバージョンに固定されます。
スケッチプロジェクトファイルは、arduino-cli board attachコマンドでも利用され、現在選択しているボードとポートを格納するのに使われます。
詳細は、スケッチプロジェクトファイルを参照してください。
シークレット
Arduino Webエディタには、シークレットタブ機能があり、誤って機密データ(例: パスワードやトークン)を公開せずにスケッチを共有することが容易にできるようになっています。Arduino Webエディタは、スケッチで、SECRET_で始まる、すべて大文字の識別子用にマクロを自動生成します。
シークレットタブを含むスケッチをArduino Webエディタからダウンロードすると、シークレット用に、空欄の#define指令が、arduino_secret.hに生成され、主スケッチファイルの先頭に、そのファイルへの#include指令が追加されます。Arduino Webエディタでスケッチを閲覧する際は、これは、表示されません。
文書
スケッチのルートフォルダにある、一般的なフォーマットの画像やテキストファイルは、Arduino Webエディタのタブに表示されます。
スケッチファイルの構成例
Foo
|_ arduino_secrets.h
|_ Abc.ino
|_ Def.cpp
|_ Def.h
|_ Foo.ino
|_ Ghi.c
|_ Ghi.h
|_ Jkl.h
|_ Jkl.S
|_ sketch.yaml
|_ data
| |_ Schematic.pdf
|_ src
|_ SomeLib
|_ library.properties
|_ src
|_ SomeLib.h
|_ SomeLib.cppスケッチブック
Arduino IDEは、sketchbookフォルダ(Arduino CLIの"user direcotory"に似たもの)を提供します。ユーザライブラリや手動新ストール下プラットフォームがインストールされる場所であることに加え、sketchbookフォルダは、スケッチを格納するにも便利な場所です。sketchbookフォルダにあるスケッチは、Arduino IDEの「ファイル > スケッチブック」メニューに表示されます。しかし、sketchbookフォルダにスケッチを格納する必要はありません。
ライブラリ・ボードマネージャリンク
(Arduino IDE >= 1.6.9 < 2.x || >= 2.0.1で利用可能です)
コメント内の以下の形式のURIは、Arduino IDE内でクリックされると、ライブラリマネージャの検索を開きます。
http://librarymanager[/TYPE_FILTER[/TOPIC_FILTER]][#SEARCH_KEYWORDS]コメント内の以下の形式のURIは、Arduino IDE内でクリックされると、ボードマネージャの検索を開きます。
http://boardsmanager[/TYPE_FILTER][#SEARCH_KEYWORDS]これらのリンクは、スケッチの依存関係をインストールする簡単の方法をユーザに提供します。
検索フィールドには、URIのSEARCH_KEYWORDS要素が入力されます。A-Zやa-z、0-9、:以外の文字は、サーチあるごり済みにより空白文字とみなされます。これにより、URIで複数のキーワードを指定することができます。
(Arduino IDE >= 2.0.1で利用可能です)
“Type"フィルタは、オプションのURITYPE_FILTERパス要素に設定されます。
ライブラリマネージャの「トピック」フィルタが、オプションのURIのTOPIC_FILTERパス要素に設定されます。
SEARCH_KEYWORDSとは異なり、この要素では空白文字は予約文字で、パーセントエンコード(例: Signal%20Input%2FOutput)する必要があります。
以前のIDEのバージョンでは、フィルタ設定はサポートされていませんが、これらのパス コンポーネントを含むURIは、他のすべての点で機能します。
この機能は、Arduino IDEを使ったときだけ動作します。このため、他の開発ソフトウェアを利用するユーザがスケッチの依存関係をインストールするのを手助けするために、補助的な文書を用意するのを忘れないでください。
例
// install the Arduino SAMD Boards platform to add support for your MKR WiFi 1010 board
// if using the Arduino IDE, click here: http://boardsmanager/Arduino#SAMD
// install the WiFiNINA library via Library Manager
// if using the Arduino IDE, click here: http://librarymanager/Arduino/Communication#WiFiNINA
#include <WiFiNINA.h>参考
オリジナルのページ
https://docs.arduino.cc/arduino-cli/sketch-specification/
最終更新日
August 1, 2026