[Deprecated] macOS の Arduino IDE を VS Code で代替する


:::note alert
**2024/08/28 追記**
Arduino for Visual Studio Code が Deprecated となりました。
開発元である Microsoft によると **Arduino IDE** の使用を推奨しています。
[VS Code Arduino Extension Deprecation - Issues #1757](https://github.com/microsoft/vscode-arduino/issues/1757)
:::

---

:::note
この記事でご紹介する方法では **Arduino IDE** のインストールは不要です。
:::

Arduino IDE を VS Code で扱いたいmacユーザの方のために僕の試行錯誤を共有します。Arduino for Visual Studio Code の開発が若干下火になっているようで情報も少なく苦労しました。ごちゃごちゃと訳の分からない setting.json を書いたりしなくて済むように、なるべくシンプルな方法に辿り着けたと思います。以下に該当する方はぜひご活用ください。


# 対象読者

- MacでArduino開発を行う方
- 「Arduino IDE を使いたくない！」という方
- ↑ なんならインストールもしたくない方
- シンプルな環境構築じゃないと納得できない方


# 流れ

1. **Visual Studio Code** をインストールする（省略）
1. **arduino-cli** をインストールする
1. 拡張機能 **Arduino for Visual Studio Code** をインストールする
1. 設定ファイル `setting.json` をただしく記述する

このような手順で進めていきます。シンプルですよね？
VS Code のインストールについてはこの記事では省略します。

![How2useVscodeLikeArduinoIDE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739387/00e5db95-14bc-e41f-b928-322b15bc3561.png)


# 執筆当時の筆者の環境

```
- MacBook Pro (2023)
- macOS Sonoma 14.5
- Visual Studio Code 1.90.1
- Homebrew 4.3.5
- arduino-cli 1.0.0
- Arduino for Visual Studio Code v0.6.0 (Preview)
```


# arduino-cli をインストールする

**arduino-cli** とは、Arduino IDE の中核となる機能をコマンドラインツールとして公式に提供されているものです。
コンパイルを行う **Verify** やボードに書き込む **Upload** はもちろん、Arduinoがもつ主要な機能をターミナルから実行できるようになります。後に紹介するVS Codeの拡張機能 **Arduino for Visual Studio Code** は **arduino-cli** を用いて Arduino IDE のような機能を実現しています。

arduino-cli は Homebrew からインストールできますし、公式サイトからダウンロードすることでも入手可能です。

 ```shell:Homebrew でインストールする
 $ brew install arduino-cli
 ```

https://arduino.github.io/arduino-cli/1.0/installation/

Homebrew の場合は必要ありませんが、バイナリをダウンロードした場合はPATHを通す必要があります。

---

いずれの場合も以下のコマンドを実行して、以下のように出力されれば成功です。

```shell:インストールできたか確認する
$ arduino-cli version
arduino-cli  Version: 1.0.0 Commit: 05c9852a Date: 2024-06-12T12:11:23Z
```

# Arduino for Visual Studio Code

:::note warn
**Arduino for Visual Studio Code** という名称は正式なものではありません。この拡張機能の名称は単に **Arduino** です。本稿では混同を防ぐため便宜上 **Arduino for Visual Studio Code** と呼称しています。
:::

Microsoft 謹製の拡張機能です。

![arduino4vscode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739387/c99b0a41-479e-34b0-153b-2e17bfd0c76f.png)

「インストール」を押した後、念の為 VSCode を再起動しておきましょう。

---

VS Code の設定ファイルである **setting.json** に以下の内容を追記します。

```json:setting.json
{
    "arduino.useArduinoCli": true,
    "arduino.path": "/opt/homebrew/bin",
    "arduino.commandPath": "arduino-cli"
}
```

setting.json は次の方法で  **⌘ + ⇧ + P** (Cmd + Shift + P) でコマンドパレットを開き、`>setting.json` と入力することで簡単に開くことができます。jsonのトップ階層に先ほどの設定を追記します。（あくまで **追記**です！上書きしてはいけません！）
追記できたら **⌘ + S** (Cmd + S) で上書き保存します。

:::note warn
`"arduino.path": "/opt/homebrew/bin"` は、arduino-cli を Homebrew でインストールした僕の環境の例です。バイナリをダウンロードした方は通したPATHをそのまま書いてください。よく分からなくなったら `echo $PATH` などで環境変数を確認してみてください。
:::


# 実行してみる

Arduino プロジェクトは プロジェクト名のフォルダ内に **プロジェクト名.ino** を配置した形をとります。`Hello` というプロジェクトを作る場合、以下のようになります

```:'Hello'プロジェクトの構造
Hello/
└ Hello.ino
```

.ino ファイルを作成できたら次のような簡単なLチカプログラムを書いて実行してみましょう。

```cpp:Hello.ino
void setup()
{
   pinMode(13, OUTPUT);
}

void loop()
{
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(13, LOW);
    delay(1000);
}

```

---

実行の前に VSCode 画面下部のこちらの2項目をただしく設定してください。
左から **Board Type**, **Serial Port** の項目です。
Board Type は `Arduino UNO` とかですね。Serial Port は `/dev/tty.usbserial-***` みたいな値をとりました。

![Screenshot 2024-06-14 21.03.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739387/60aa3074-1715-9b5b-533f-c576281c1de4.png)

---

実行には画面右上部の Upload を押します！

![Screenshot 2024-06-14 21.07.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/739387/7790725c-fd5b-ca2b-515a-87dd2ea5c04e.png)

```shell:成功の例
[Done] Uploading sketch 'Hello/Hello.ino'
```

# あとがき

以上です！
実行まで上手くいけば、後はのんびり **arduino-snippets** などの拡張機能を追加して自分に合った作業環境を作っていくだけです！
快適なArduinoライフを楽しみましょう！