【解説】Raspberry Pi Zero Wでの開発環境について

## はじめに
Raspberry Pi Zero W(以下ラズパイzero)を使ってRaspberry Pi model B+等と同じ様にプログラミングや電子工作ができるのか？という疑問を解消するために調べたものをまとめました。
(余談ですが、自分は標準のHDMIもmicroUSBも一発しかないし、すっごい小さいし作りたいものが作れるか不安でした。)

## どんな人に読んでほしいか
・ラズパイzeroの環境構築方法に迷ってる人
・ラズパイは触ったことがあるけど、ラズパイzeroは初めて触る人
・ラズパイzeroと他のラズパイとの違いを知りたい人
・プログラミングや電子工作でラズパイzeroを使いたいけど不安がある人

## 簡単な性能比較
簡単な性能比較を上位機種のRaspberry Pi 3 Model B+と行いました。

|               | 3 Model B+                  | Zero W              |
|---------------|-------------------------|--------------------------|
| 値段          | ¥5,500-                 | ¥1,320-                  |
| CPU           | 1.4Ghz                  | 1Ghz,                    |
| GPU           | あり                    | なし                     |
| RAM           | 1GB                     | 512MB                    |
| USB ポート    | USB 2.0 × 4             | micro USB                |
| 映像出力      | HDMI                    | Mini HDMI                |
| 音声出力      | 3.5mmジャック           | なし                     |
| 電源          | 5V                      | 5V                       |
| 大きさ(W×D×H) | 86 × 57 × 17            | 65 × 30 × 9              |
| Bluetooth     | あり(Bluetooth 4.2 BLE) | あり(Bluetooth 4.1, BLE) |
| 無線LAN       | 11b/g/n/ac              | 11b/g/n                  |

## 開発環境について
### 1. 入力系について
USBがmicroUSB一つしかない(実際は2つついていますが、1つは電源供給用)ので、キーボードとマウスを繋げることはおろかUSB2.0のマウスを直接繋げることもできません。マウス・キーボードを繋げるための方法を以下にまとめました。
##### 1-1. microUSBの変換端子 + BTキーボード
USB2.0 to microUSBの変換端子でマイクを接続し、BTのキーボードを接続します。

##### 1-2. micro USBハブ
↓のようなmicro USBハブでマウス・キーボードを接続します。USB2.0 to microUSBの変換端子 + USB 2.0のハブを使っても同様のことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565588/815048c4-0e09-e064-1dd7-bdb6f140ef2d.png)

##### 1-3. SSH接続(他のPC1台)
SSH接続を行い、他の母艦PCから開発を行います。詳しくは[この記事](https://ayame.space/2018/07/setup-raspberry-pi-zero-w-without-display/#Wi-Fi)で説明してくれていますので、ご覧ください。セットアップを楽に行いたい人は[この方法](https://qiita.com/hishi/items/8bdfd9d72fa8fe2e7573)で行うと良いと思います。ただし、microUSBケーブルを使うので注意。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565588/88230412-1161-11eb-39aa-83135c336c62.png)

### 2. 出力系について
#### 2-1. Mini HDMI to HDMIを使う
デスクトップPCの様に使うことができます。変換端子でも可。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565588/45760b61-fccb-4231-6683-ebe3fd046910.png)


#### 2-2. SSH/VPN接続
1-3で紹介した方法を使えば、そもそもHDMIケーブルを使用することなく開発を行うことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565588/0bba2cbd-d3b3-ed94-6573-773bd59efec2.png)


##  結局どれがよいか？
私の場合は他のPC(MBPのVSCode)でコーディングを行い、SSH/VNCを利用してラズパイにコードを転送したりラズパイ側の設定等をする予定なので1-3, 2-2の方法で行うことにしました。
ラズパイの開発はやはりSSH/VNCをつかって行うとノンストレスなので、最初から1-3の方法で環境設定をすると良いと思います。


## 参考文献
スイッチサイエンス
https://www.switch-science.com/catalog/1826/
qiita「Raspberry Pi Zero W初期設定メモ」
https://qiita.com/takashi53/items/7cf6f3487dfd1c0057f9
ayame.space 「Raspberry Pi Zero Wをディスプレイやキーボードなしで初期設定、Wi-Fi接続」
https://ayame.space/2018/07/setup-raspberry-pi-zero-w-without-display/#Wi-Fi

## 更新履歴
・表の修正(2020-7-22)
[hidezzz様](https://qiita.com/hidezzz)と[mo256man様](https://qiita.com/mo256man)、[github0013@github様](https://qiita.com/github0013@github)から表の間違いを指摘していただき編集いたしました。ありがとうございました。