Microsoftが作った「Visual Studio Code」arduino拡張機能を使ってみる

# 初めに
windowsPCでこの作業は行っています。visual studio code自体はmacやLinuxでも動作するようなので、使えるかもしれませんが試していません。

arduino-IDEはコンパイラ・ライター・シリアルモニタなどがセットになっており、簡単に確実に使える便利なIDEであることは間違いない。しかし、arduino-IDEのコーディング作業に、自動コード補完（オートコンプリート)やIntelliSense（メソッドやメンバの表示機能）が使えないという不満があった。そう思っている人も多いのではないか？そういうわけで、arduino-IDEはもっぱら書き込み専用ソフトと化し、コーディング自体は外部エディターで書いていた。

そんなところに以下のような記事を見かけた。
> Microsoft、“Arduino”向けの「Visual Studio Code」拡張機能をオープンソース化
> スケッチのシンタックスハイライトをはじめとする開発補助機能を組み込む
> http://forest.watch.impress.co.jp/docs/news/1069233.html

記事によるとOSS化したとのことなので、以前から「Visual Studio Code」のarduino拡張機能はあったのかもしれないけれど、知らなかった。。。とりあえず、Microsoftが作っているなら、気持ちよくコーディングできそうな気がしたので使ってみた。

# インストール

windowsで使う注意点として以下の2点

* この拡張機能を利用するには「Arduino IDE」v1.6.0以降の導入が必要。
* windowsストアからダウンロードしたarduino-IDEアプリでは書き込みができない。

まずは、MicrosoftのVisual Studio Codeのダウンロードサイトでエディタを手に入れる。 https://code.visualstudio.com/download

![スケッチ.png](https://qiita-image-store.s3.amazonaws.com/0/54400/21e98a7e-6ac1-660f-9ed2-12417fc77034.png)

普通にインストールすると、visual studio codeが立ち上がる。

![スケッチ2.png](https://qiita-image-store.s3.amazonaws.com/0/54400/25f4515f-734b-7104-70dc-1d182a97faa3.png)


# arduino拡張機能を使う

次に、arduino拡張機能を追加する。虫眼アイコンやgitのアイコンが並んでいる左側のバーの一番下にある拡張機能を開く（Ctrl+Shift+X）。

検索欄に「**arduino**」と入力しMicrosoftが製作者のarduinoをインストールする（図の一番上）。Microsoft以外にも個人が作成したarduino拡張機能があるため注意！（良いものかもしれないけれど今回はMicrosoftのやつを使ってみる）

![スケッチ3.png](https://qiita-image-store.s3.amazonaws.com/0/54400/73cd533b-e30e-cf42-9e34-acfdcdc697f7.png)

インストール後に、適当なarduinoプロジェクト（inoファイルがあるフォルダ）を開く。
綺麗なシンタックスハイライトで見やすい！
もちろん、自動コード補完（オートコンプリート)やIntelliSense（メソッドやメンバの表示機能）が使える！！！！

![スケッチ4.png](https://qiita-image-store.s3.amazonaws.com/0/54400/8d944d0b-8202-fada-deaf-463044d95ee5.png)

一番下の青いバーの部分で、書き込むボード・接続するポートなどを選択したり、シリアルモニタを起動したりできる。そこをクリックして、書き込むボードを「UNO」接続するポートを「arduinoUNOの接続ポート」に設定し。

**F1**を押して「Arduino:Upload」をクリックすると、接続したボードに書き込めた！（若干文字化けが発生><）

![スケッチ5.png](https://qiita-image-store.s3.amazonaws.com/0/54400/50a3655f-f1de-7488-a70e-656dd5c30a04.png)

※アップロード時にエラーが起きたら？

* 書き込めない場合、VScodeを再起動するとアップロードできることがあるようです。
* setting.jsonに、公式からダウンロードしたarduinoへのパスを以下のように設定するとアップロードできることがあるようです。

```json
{   
    "arduino.path": "C:/Program Files (x86)/Arduino",
    "arduino.additionalUrls": "",
    "arduino.logLevel": "info"
}
```

inoファイルを開いた状態で **F1** か **Ctrl+Shift+P** を押すことで、以下のarduino拡張機能コマンドの一覧が見れる

* Arduino: Board Manager: ボードのパッケージの管理。condfigにボードマネージャーのURLを追加することで、サードパーティーのarduinoボードを追加することも可能
* Arduino: **Change Baud Rate**: 選択しているシリアルポートのボーレートの変更
* Arduino: **Change Board Type**: ボードタイプの変更
* Arduino: **Close Serial Monitor**: シリアルモニターの停止
* Arduino: **Example**s: example listの表示（これはよくわからなかった）
* Arduino: **Initialize**：VSCodeでの設定のjsonファイルがない場合、これを実行することでテンプレートが作成される。
* Arduino: **Library Manager**: ライブラリーマネージャー（ライブラリの検索・管理）
* Arduino: **Open Serial Monitor**: シリアルモニターの開始
* Arduino: **Select Serial Port**: シリアルポートの選択
* Arduino: **Send Text to Serial Port**: 選択しているシリアルポートに文字列を送信
* Arduino: **Upload**: スケッチをビルドして、設定されているボードにアップロード（Ctrl+Alt+U）
* Arduino: **Verify**: スケッチをビルド（Ctrl+Alt+R）


# まとめ
駆け足でしたが、以下の点でおすすめです。

* コードが見やすい
* 自動コード補完・IntelliSenseが使える
* 図を見てわかるように、若干コンパイルやアップロード時の出力が文字化けしているが問題なくverify/uploadできている
* pythonなどのほかの言語でarduinoにシリアル接続するとき、同じエディタが使えそう（未実施）
* 不具合が生じてもOSS化でメンテナンスされるため、これからもっと使い勝手がよくなりそう

とりあえずこれからarduinoのコードはvisual studio codeで書いて行こうと思います。
(こちらの個人ブログにも、同じ記事を載せています。 http://varlal.com/www/home/archives/1288 )

# 参考
* visual studio code -  marketplace : arduino
   * https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.vscode-arduino
* Github - Microsoft/vscode-arduino
   * https://github.com/Microsoft/vscode-arduino