スケッチプロジェクトファイル

Author:ArduinoV1.5.1

スケッチメタデータは、sketch.yamlという名前のファイルで定義されます。ファイルはYAMLフォーマットです。

ビルドプロファイル

Arduino CLIでは、ビルドプロファイルを使うことで、ビルドの再現ができるようになっています。

プロファイルは、スケッチをビルドするために必要なすべてのリソースの完全な説明です。スケッチプロファイルは複数のプロファイルを含むことができます。

それぞれのプロファイルは以下を定義します。

  • ボードのFQBN
  • 利用するプログラマー
  • ターゲットのコアプラットフォーム名とバージョン(サードパーティのプラットフォームのインデックスが必要であれば、そのURL)
  • ターゲットのコアプラットフォームの依存関係の、可能なコアプラットフォーム名とバージョン(サードパーティのプラットフォームのインデックスが必要であれば、そのURL)
  • スケッチで使われるライブラリ(バージョンを含む)
  • スケッチをアップロードしボードを監視するポートとプロトコル

ファイルのフォーマットは以下の通りです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
profiles:
  <PROFILE_NAME>:
    notes: <USER_NOTES>
    fqbn: <FQBN>
    programmer: <PROGRAMMER>
    platforms:
      - platform: <PLATFORM> (<PLATFORM_VERSION>)
        platform_index_url: <3RD_PARTY_PLATFORM_URL>
      - platform: <PLATFORM_DEPENDENCY> (<PLATFORM_DEPENDENCY_VERSION>)
        platform_index_url: <3RD_PARTY_PLATFORM_DEPENDENCY_URL>
    libraries:
      - <LIB_NAME> (<LIB_VERSION>)
      - <LIB_NAME> (<LIB_VERSION>)
      - <LIB_NAME> (<LIB_VERSION>)
    port: <PORT_NAME>
    port_config:
      <PORT_SETTING_NAME>: <PORT_SETTING_VALUE>
      ...
    protocol: <PORT_PROTOCOL>
  ...more profiles here...

全てのプロファイルを含む、オプションのprofiles:セクションがあります。profileの各フィールドは、以下で説明がない限り、必須です。利用可能なフィールドは以下の通りです。

  • <PROFILE_NAME>は、プロファイルの識別子で、ユーザーが定義します。利用可能な文字は、英数字とアンダースコア(_)、ドット(.)、ダッシュ(-)です。
  • <PLATFORM>は、ターゲットコアプラットフォーム識別子です。例えば、arduino:avrや、adafruit:samdです。
  • <PLATFORM_VERSION>は、要求されるターゲットコアプラットフォームのバージョンです。
  • <3RD_PARTY_PLATFORM_URL>は、ターゲットコアプラットフォームのインデックスをダウンロードするURLです。Arduino IDEでの、「追加のボードマネージャのURL」です。このフィールドは、公式のarduino:*プラットフォームでは省略可能です。
  • <PLATFORM_DEPENDENCY><PLATFORM_DEPENDENCY_VERSION><3RD_PARTY_PLATFORM_DEPENDENCY_URL>は、<PLATFORM><PLATFORM_VERSION><3RD_PARTY_PLATFORM_URL>と同じ内容ですが、それぞれ、メインのコアプラットフォームの依存関係のコアプラットフォームです。これらのフィールドはオプションです。
  • libraries:は、プロジェクトをビルドするのに必要なライブラリを定義するセクションです。これはオプションです。
  • <LIB_VERSION>は、要求されるライブラリのバージョンです。例えば、1.0.0です。
  • <USER_NOTES>は、開発者がコメントを追加するのに利用できる自由な文字列です。このフィールドはオプションです。
  • <PROGRAMMER>は、利用するプログラマーです。このフィールドはオプションです。

以下のフィールドは、Arduino CLI 1.1.0から利用可能です。

  • <PORT_NAME>は、アップロードとボードの監視に利用するポートです(他で明示的に設定されていない場合)。このフィールドはオプションです。
  • port_configセクションは、<PORT_SETTING_NAME><PORT_SETTING_VALUE>からなり、monitorコマンドで利用されるポート設定を定義します。典型的には、シリアルポートのボーレートを設定するのに使われます(例えば、baudrate: 115200)。どのような設定・設定値も指定できます。複数の項目が設定できます。このフィールドはオプションです。
  • <PORT_PROTOCOL>は、アップロードとボードの監視に利用するポートのプロトコルです。このフィールドはオプションです。

スケッチプロジェクトファイルの完全な例は、以下のようになります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
profiles:
  nanorp:
    fqbn: arduino:mbed_nano:nanorp2040connect
    platforms:
      - platform: arduino:mbed_nano (2.1.0)
    libraries:
      - ArduinoIoTCloud (1.0.2)
      - Arduino_ConnectionHandler (0.6.4)
      - TinyDHT sensor library (1.1.0)

  another_profile_name:
    notes: testing the limit of the AVR platform, may be unstable
    fqbn: arduino:avr:uno
    platforms:
      - platform: arduino:avr (1.8.4)
    libraries:
      - VitconMQTT (1.0.1)
      - Arduino_ConnectionHandler (0.6.4)
      - TinyDHT sensor library (1.1.0)
    port: /dev/ttyACM0
    port_config:
      baudrate: 115200

  tiny:
    notes: testing the very limit of the AVR platform, it will be very unstable
    fqbn: attiny:avr:ATtinyX5:cpu=attiny85,clock=internal16
    platforms:
      - platform: attiny:avr (1.0.2)
        platform_index_url: https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
      - platform: arduino:avr (1.8.3)
    libraries:
      - ArduinoIoTCloud (1.0.2)
      - Arduino_ConnectionHandler (0.6.4)
      - TinyDHT sensor library (1.1.0)

  feather:
    fqbn: adafruit:samd:adafruit_feather_m0
    platforms:
      - platform: adafruit:samd (1.6.0)
        platform_index_url: https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
    libraries:
      - ArduinoIoTCloud (1.0.2)
      - Arduino_ConnectionHandler (0.6.4)
      - TinyDHT sensor library (1.1.0)

default_profile: nanorp

スケッチのビルド

スケッチプロジェクトファイルがあるとき、compileコマンドで、--profile/-mフラグでスケッチをコンパイルできます。

1
arduino-cli compile --profile nanorp

この場合、nanorpプロファイルで指定されたコアプラットフォームとライブラリを使い、スケッチはコンパイルされます。コアプラットフォームやライブラリがない場合は、実行時に、データフォルダ内の分離されたディレクトリに自動的にダウンロード・インストールされます。専用ストレージにユーザーはアクセスできず、スケッチをビルドするのに利用されるリソースのキャッシュとなります。

プロファイルに基づきビルドするときは、システム全体でインストールされたプラットフォームとライブラリはコンパイル時には利用されず、全く利用されません。言い換えると、ビルドはシステムから分離され、プロファイルに指定されたリソースにだけ依存します。これにより、システムにインストールされたプラットフォームやライブラリには依存しないので、ビルドはポータブルであり再現することがが保証されます。

デフォルトプロファイルの利用

sketch.yamldefault_profileが指定されると、以下の、「クラシック」コンパイルコマンドが、sketch.yamlで示されたデフォルトプロファイルを使い、プロファイルベースのビルドを起動します。

1
arduino-cli compile [sketch]

Arduino CLIのデフォルトフラグの利用

スケッチプロジェクトプロファイルは、ArduinoCLIのいくつかのコマンドラインフラグのデフォルト値を設定するのに使われます。特に、

  • default_fqbnキーは、--fqbnフラグのデフォルト値を設定します。
  • default_programmerキーは、--programmerフラグのデフォルト値を設定します。
  • default_portキーは、--portフラグのデフォルト値を設定します。
  • default_port_configキーは、monitorコマンド(Arduino CLI 1.1.0以降で利用可能)--configフラグのデフォルト値を設定します。
  • default_protocolキーは、--protocolフラグのデフォルト値を設定します。
  • default_profileキーは、--profileフラグのデフォルト値を設定します。

例えば、

1
2
3
4
5
6
7
default_fqbn: arduino:samd:mkr1000
default_programmer: atmel_ice
default_port: /dev/ttyACM0
default_port_config:
  baudrate: 115200
default_protocol: serial
default_profile: myprofile

上記が設定されていると、スケッチのコンパイルやアップロード、デバッグ時に、arduino-cli compilearduino-cli uploadarduino-cli debugコマンドで、--fqbn--programmer--port--protocol--profileフラグを指定する必要はありません。さらに、monitorコマンドでは、ボードの関しポートと通信するのに、--config baudrate=115200を指定する必要もありません。


i
このページでは、最新版のArduino CLIを確認できます。過去のバージョンはこちらにあります。特定のバージョンや、バージョンの範囲指定もサポートされています。

オリジナルのページ

https://docs.arduino.cc/arduino-cli/sketch-project-file/

最終更新日

August 1, 2026

inserted by FC2 system