Raspberry Pi Zero 2 W 初心者向けセットアップガイド

---
## はじめに

この記事では、Raspberry Pi Zero 2 Wのセットアップ手順を詳しく解説します。  
最初は通常のキーボード、マウス、HDMIモニターを使ったセットアップ手順、その後に別のPCからリモートログインする方法を説明します。さらに、Python、C/C++、Vim、Gitなどのプログラミング環境のセットアップ、および **bash** や **Vim** の便利なカスタマイズ例を紹介します。  
環境は英語(US)のロケールとキーボードを前提としますが、日本語キーボードを使う場合も設定を変えれば問題ありません。

---

## **1. なぜRaspberry Pi Zero 2 Wなのか？**
- **小型・省電力**: コンパクトサイズで、持ち運びや組み込み用途に向いています。  
- **Wi-Fi / Bluetooth搭載**: Zeroシリーズでもネットワーク接続やBluetooth機器との連携が手軽です。  
- **価格が安い**: エントリー向けとしてコストを抑えられます。  
- **拡張性**: GPIOピンを活用してセンサーやLEDを制御するなど、IoT用途に幅広く対応可能です。  

Raspberry Pi 4などに比べると性能は控えめですが、**小規模なプログラミング学習やIoTプロトタイプ**には十分な性能があります。

---

## **2. 必要なもの**
1. **Raspberry Pi Zero 2 W**  
2. **MicroSDカード（16GB以上推奨）**  
   - 速度クラスが高い(例: Class10/UHS-1)ほど快適です。
3. **MicroSDカードリーダー**  
   - PCでOSイメージを書き込む際に使用します。
4. **Micro USB OTGアダプター**  
   - Raspberry Pi Zero 2 Wのデータ用Micro USBポートにキーボード・マウスを接続するために必要です。
5. **Mini HDMI to HDMIアダプター**  
   - 小型のMini HDMI端子を通常のHDMI端子に変換します。
6. **USB電源アダプター（5V/2.5A以上推奨）**  
   - 安定動作のため、必要な電流を供給できるものを使いましょう。
7. **キーボードとマウス**  
   - 初期設定時に必要です（後にSSH接続のみで利用する場合は省略可）。
8. **HDMIモニター**  
   - 初期セットアップやデスクトップ操作時に使用します。
9. **別のPC（リモートログイン用）**  
   - SSHやVS CodeのRemote-SSHなどで遠隔操作する場合に便利です。

---

## **3. Raspberry Pi OSのインストール**

### **3.1. Raspberry Pi OSのダウンロード**
1. [Raspberry Pi公式サイト](https://www.raspberrypi.com/software/)へアクセスし、**Raspberry Pi Imager**をダウンロードします。  
   - Windows / macOS / Linux いずれも対応
2. ダウンロードしたImagerをインストールします。

### **3.2. MicroSDカードにOSを書き込む**
1. MicroSDカードをカードリーダーに挿入し、PCに接続します。  
2. **Raspberry Pi Imager**を起動し、以下を設定:
   - **Operating System**: “Raspberry Pi OS (32-bit)”など適切なOSイメージ
   - **Storage**: 使用するMicroSDカード
3. 右下の歯車アイコン（Advanced settings）から、以下を設定（オプション）:
   - **Enable SSH**: 有効化（リモート接続を使う場合）
   - **Set Username and Password**: SSHで使うユーザー名・パスワード
   - **Locale Settings**: 言語（English US）、タイムゾーン（お住まいの地域）など
4. 設定完了後、「Write」をクリックしてOSを書き込みます。数分かかる場合があります。

---

## **4. 初期セットアップ**

### **4.1. ハードウェアの接続**
1. MicroSDカードをRaspberry Pi Zero 2 Wに挿入します。  
2. Mini HDMIポートにHDMIアダプターを接続し、HDMIケーブルでモニターに接続します。  
3. Micro USB OTGアダプターを利用して、キーボードとマウスをRaspberry Pi Zero 2 WのUSBデータポートに接続します。  
4. 最後にUSB電源アダプターを電源用のMicro USBポートに挿し込み、Raspberry Piを起動します。  

### **4.2. OS初期設定**
1. デスクトップが表示されたら、**Welcome to Raspberry Pi**ウィザードに従って基本設定を行います。  
2. 言語とキーボードを英語（US）に設定（日本語キーボードなら適宜設定を変更）。  
3. Wi-Fiネットワークを設定し、インターネットに接続します。  
4. ソフトウェアのアップデートを行います（数十分かかる場合もあります）。

---

## **5. プログラミング環境のセットアップ**

### **5.1. システムのアップデート**
まずはシステムを最新の状態にします:
```bash
sudo apt update
sudo apt upgrade -y
```

### **5.2. Pythonのインストールと確認**
Pythonは標準で入っていますが、以下で最新化やライブラリ管理ツールを追加:
```bash
sudo apt install -y python3 python3-pip
python3 --version
pip3 --version
```

### **5.3. C/C++コンパイラのインストール**
C/C++開発用のツールチェーンを導入します:
```bash
sudo apt install -y build-essential
gcc --version
```

### **5.4. Vimのインストール**
ターミナルベースのテキストエディタVim
vim-tiny を削除してから再度 Vim をインストールする
```bash
sudo apt remove vim-tiny
sudo apt install -y vim
```

### **5.5. Gitのインストール**
バージョン管理ツールGit:
```bash
sudo apt install -y git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
```

---

## **6. リモートログインの設定（SSH）**

### **6.1. SSHの有効化**
- GUI操作: **Start Menu > Preferences > Raspberry Pi Configuration > Interfacesタブ > SSHをEnable**  
- ターミナル操作:
  ```bash
  sudo raspi-config
  ```
  から「Interface Options」→「SSH」→「Enable」

### **6.2. IPアドレスの確認**
ターミナルで以下を実行し、IPアドレスを確認:
```bash
hostname -I
```
例: `192.168.1.10`

### **6.3. 別PCからSSH接続**
- WindowsならPowerShellやPuTTY  
- macOS / Linuxなら標準のターミナル  
```bash
ssh <username>@<RaspberryPi_IP>
```
例:
```bash
ssh pi@192.168.1.10
```
初回接続時は鍵登録の警告が出ますが、`yes` と入力して続行します。

---

## 7. リモート開発環境の拡張 (VS Code: Remote-SSH)

### 7.1. Remote-SSH拡張機能のインストール

1. VS Code を起動し、左サイドバーの拡張機能アイコンをクリックします。  
2. 検索バーに「Remote-SSH」と入力し、Microsoft 提供の拡張機能をインストールします。

---

### 7.2. Remote-SSHを使用した接続

1. コマンドパレット（<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd>）で「Remote-SSH: Connect to Host」を選択します。  
2. 「Add New SSH Host」を選び、例えば  
```text
   pi@192.168.1.10
```
   などの接続情報を入力します。  
3. 入力内容は SSH 設定ファイル（~/.ssh/config）に保存されるので、接続先を選択してログインします。  
4. 接続完了後、VS Code がリモート環境用にリロードされ、Raspberry Pi のファイルを直接編集できるようになります。

### 7.3. Remote-SSHを使用した接続時のトラブルシューティング

場合によっては、2回目以降の接続時に VS Code Server の状態が不整合となったり、タイムアウトなどの問題が発生することがあります。以下の対策を順次実施してください。

#### 7.3.1 VS Code Server の再インストール

リモート側に残っている古い VS Code Server のファイルが原因になっている可能性があります。SSH 接続後、以下のコマンドを実行して既存のファイルを削除してください。

```bash
rm -rf ~/.vscode-server
```

これにより、次回接続時に新たにサーバーがダウンロード・インストールされ、状態がリセットされます。

#### 7.3.2 サーバープロセスの確認と強制終了

万が一、VS Code Server のプロセスが残っている場合、以下のコマンドでプロセスを終了させてください。

```bash
pkill -f vscode-server
```

#### 7.3.3 VS Code Remote SSH の設定変更

ローカルサーバー機能が影響している場合があります。VS Code のユーザー設定（`settings.json`）に以下の設定を追加して、ローカルサーバーの使用を無効にしてください。

```json
{
  "remote.SSH.useLocalServer": false
}
```

#### 7.3.4 SSH認証方式の見直し

毎回パスワード入力になっている場合、SSH キー認証へ切り替えることで接続が安定する可能性があります。以下の手順を参考にしてください。

1. SSH キーを作成（まだ作成していない場合）:

   ```bash
   ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
   ```

2. 作成した公開鍵をリモート側の $~/.ssh/authorized_keys$ に登録します。

#### 7.3.5 SSH接続のタイムアウト対策

接続が途中でタイムアウトする場合、クライアント側の SSH 設定でタイムアウト対策を行うと効果的です。  
SSH 設定ファイル（$~/.ssh/config$）に以下の設定を追加してください。

```bash
Host 192.168.1.10
    ServerAliveInterval 60
    ServerAliveCountMax 5
```

これにより、定期的な生存確認パケットが送信され、接続が維持されやすくなります。

#### 7.3.6 VS Code および拡張機能のアップデート

使用している VS Code や Remote - SSH 拡張機能が最新版でない場合、既知の不具合により接続に問題が生じることがあります。  
最新バージョンへのアップデートを行ってください。

#### 7.3.7 ログの確認

上記対策を実施しても問題が解決しない場合は、リモート側のログファイル（例：$~/.vscode-server/.log*$）を確認し、詳細なエラーメッセージやタイミングを把握してください。  
ログから依存関係の不足やネットワーク環境の問題などを特定できる場合があります。

---

## **8. Bashの便利なセットアップ**

Raspberry Pi OSのデフォルトシェルは通常 **bash** です。設定ファイル（`~/.bashrc`）を編集することで作業効率を高められます。

### **8.1. 現在のシェルを確認**
```bash
echo $SHELL
```
`/bin/bash` と表示されればbashです。もし他のシェルがデフォルトの場合、以下でbashを選択できます:
```bash
chsh -s /bin/bash
```

### **8.2. エイリアス（alias）の設定**
```bash
# ~/.bashrc の最後あたりに追記
alias ll='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
```
- コマンドを短縮して入力できるため、生産性が向上します。

### **8.3. プロンプト（PS1）のカスタマイズ**
```bash
# ~/.bashrc のPS1部分を編集
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
```
- 色付きにしておくと、ユーザー名やディレクトリが分かりやすくなります。

### **8.4. 履歴（history）の設定**
```bash
# ~/.bashrc
HISTSIZE=10000
HISTFILESIZE=20000
HISTCONTROL=ignoredups:erasedups
```
- 同じコマンドが連続した場合は記録しない等、履歴の重複を減らせます。

### **8.5. 変更内容の反映**
```bash
source ~/.bashrc
```
- シェルを再起動するか、このコマンドを実行することで変更が反映されます。

---

## **9. Vimの.vimrcを便利にする設定例**

Vimは設定次第で格段に使いやすくなります。`.vimrc`を編集して好みに合わせてカスタマイズしましょう。

```bash
vim ~/.vimrc
```

### **9.1. 基本設定**
```vim
" 行番号表示
set number

" シンタックスハイライト
syntax on

" 検索時に大文字小文字を区別しない(大文字を含むと区別)
set ignorecase
set smartcase
```

### **9.2. インデント関連**
```vim
" 自動インデント
set autoindent
set smartindent

" タブをスペースに置き換える
set expandtab

" タブ幅・インデント幅
set tabstop=4
set shiftwidth=4
```

### **9.3. 視認性向上設定**
```vim
" カラースキーム
colorscheme desert

" カーソル行をハイライト
set cursorline
```

### **9.4. 補完やマッピング**
```vim
" コマンドライン補完の強化
set wildmenu
set wildmode=list:longest,full

" インサートモードでjj入力→ESCと同等のマップ
inoremap jk <ESC>
```

---

## **10. おすすめの追加ツール**
Raspberry Pi Zero 2 Wで開発を快適にするため、以下のツールも導入を検討してみてください。

### **10.1. htop**
- リアルタイムでCPU使用率やメモリ使用量を確認できるタスクマネージャー。
  ```bash
  sudo apt install -y htop
  ```

### **10.2. tmux / screen**
- SSHセッションを切断してもプログラムを継続実行できる端末マルチプレクサ。
  ```bash
  sudo apt install -y tmux
  ```
  - 新しいセッション: `tmux new -s session_name`
  - 切断: `Ctrl + b`, その後 `d`
  - 再接続: `tmux attach -t session_name`

### **10.3. ncdu**
- ディスク使用量を対話的に確認できるコマンドラインツール。
  ```bash
  sudo apt install -y ncdu
  ```

### **10.4. nano（簡易エディタ）**
- Vimが苦手な場合は、デフォルトで入っている「nano」を活用すると良いです。操作が直感的でわかりやすいです。

---

## **11. よくある質問 (FAQ)**

### **Q1. Wi-Fiに接続できない**
- SSID/パスワードが合っているか確認。  
- `sudo raspi-config` → 「System Options」 → 「Wireless LAN」で再設定できます。

### **Q2. SSH接続が失敗する**
- SSHが有効になっているか (`raspi-config`)  
- IPアドレスが正しいか（`hostname -I` で再チェック）  
- ルーターやファイアウォールでポート22がブロックされていないか

### **Q3. Raspberry Piが起動しない**
- 電源アダプターの5V/2.5Aが確保されているか  
- SDカードにOSが正しく書き込まれているか  
- HDMIケーブルやモニターの入力切替などハード面の確認

### **Q4. VS Codeのリモート接続で拡張機能をインストールできない**
- Raspberry Piがインターネットに接続されているか  
- `df -h` でストレージ空き容量を確認  
- ローカル側で拡張機能をインストールしてからリモートに同期する方法もあります

### **Q5. 他のプログラミング言語も使いたい**
- Node.js, Java, Go, Rustなどを必要に応じてインストールできます。  
- 例えばNode.jsなら `sudo apt install -y nodejs npm` で試せます。

---

## **12. トラブルシューティングまとめ**

- **Wi-FiやSSH接続が不安定**: 再起動し、電波の強い場所へ移動、あるいは有線LANを検討  
- **パッケージのインストールエラー**: `sudo apt update` の後に再度インストール  
- **SSHセッションの切断**: `tmux` や `screen` を利用すると便利

---

## **13. 次のステップ**

1. **IoTプロジェクト**: センサーデータの取得、制御基板との連携  
2. **Webサーバー構築**: ApacheやNginxを導入してサイトをホスティング  
3. **プログラミング学習**: PythonやC++以外に、Node.jsやRustなどへ挑戦  
4. **Docker運用**: 軽量コンテナで環境構築の再現性を高める  
5. **OpenCVを使った画像処理**: カメラモジュールとの連携で物体認識など

---
## **14. シャットダウン方法**

Raspberry Piを安全に終了するための**シャットダウン方法**を以下に示します。  

:::note info
電源を直接抜くとSDカードの破損などのリスクがあるため、必ずOSを正しく停止してください。
:::

### **14.1. コマンドラインからのシャットダウン**

ターミナル（もしくはSSH接続中のリモートセッション）で、以下のコマンドを実行してください。

```bash
sudo shutdown -h now
```

- このコマンドは、即時にシステムを停止（halt）します。  
- 同様の効果として、以下のコマンドも利用できます。
  ```bash
  sudo poweroff
  ```
- また、指定した時間後にシャットダウンしたい場合は、例えば10分後の場合、
  ```bash
  sudo shutdown -h +10
  ```
  と実行します。

### **14.2. GUIからのシャットダウン**

Raspberry Pi OSのデスクトップ環境を利用している場合は、以下の手順でシャットダウンが可能です。

1. 画面左上の**Raspberry Piアイコン**（スタートメニュー）をクリックします。  
2. メニュー内にある**Shutdown**（シャットダウン）または**Power Off**を選択します。  
3. 表示されるダイアログの指示に従ってシャットダウンを実行してください。

> **注意:** シャットダウン完了後、すべてのLEDが消灯するのを確認してから電源ケーブルを抜くようにしてください。

### **14.3. シャットダウン後の電源ON方法**

Raspberry Pi Zero 2 Wは、標準では専用の「電源ON」ボタンが搭載されていません。  
そのため、シャットダウン後に再び起動する（電源を入れる）ためには、以下の方法が考えられます。

1. **電源ケーブルの抜き差し**  
   - シャットダウン後、システムは完全に停止しているため、**電源ケーブルを一度抜いてから再接続する**ことでブートシーケンスが始まります。

2. **外部の電源管理回路を利用する**  
   - 手動で毎回ケーブルの抜き差しを行うのが手間な場合、外部の電源管理HATや回路を利用して、ボタン一つでオン／オフを切り替える方法もあります。  
   - この方法は、追加のハードウェアや配線が必要となるため、用途に合わせた選択が求められます。

3. **RUNピンを利用したリセット**  
   - 一部のRaspberry Piには**RUNピン**（リセット用ピン）があり、短絡することでリセット動作を行えます。  
   - ただし、これは**リセット動作**であり、完全なシャットダウン状態からの起動には適用できない場合があります。  
   - 誤操作によりシステムが不安定になる可能性もあるため、一般的には前述の「電源ケーブルの抜き差し」または「外部電源管理回路」の利用が推奨されます。

---

## **15. まとめ**

ここまで、Raspberry Pi Zero 2 Wの初期セットアップからリモートアクセス、各種プログラミング言語とツールの導入、さらには **bash** と **Vim** の設定・カスタマイズ例や便利ツール、そして安全なシャットダウン方法までを網羅して解説しました。

- 小型ながらもWi-Fi・Bluetoothを搭載し、初期投資が低コストで済むため、**学習用やIoT試作**にうってつけです。  
- **bash** のカスタマイズで作業効率を向上させ、**Vim** の設定で快適にコードを編集しましょう。  
- 必要に応じてVS CodeのRemote-SSHを活用すれば、ローカルPCの性能を生かしてリモート環境で開発できます。  
- 正しいシャットダウン操作を行うことで、システムの安定性とSDカードの長寿命を確保できます。

Raspberry Pi Zero 2 Wはリソースが限られている部分もありますが、アイデア次第で幅広いプロジェクトに応用可能です。

---

以上