‹ Mockun Note

Raspberry Pi 5を使ったAI駆動開発環境構築のメモ

Posted Feb 19, 2026

最近、「Raspberry Pi 5(ラズベリーパイ)」という小さなコンピュータにClaude Codeを入れてソフトウェア開発をしています。

「Raspberry Pi 5(ラズベリーパイ)」は、比較的安価に購入できる代わりに性能は高くはありません。とはいえAIの処理自体はインターネットの向こう側で行われるので、メモリ容量とストレージ性能に不足がなければ開発には十分です。

今回はOSのインストールから開発環境の再構築を実施しました。この記事では、この開発環境の再構築にあたって、どのようなソフトウェアを入れ、どのような設定を行なったかを自分用のメモとしてまとめておきます。

Raspberry pi 5 16GB + Fanless Heatsink Case + Pimoroni NVMe Base + Samsung PM981 + Ubuntu 24.04.2 LTS (64-bit)で組んだAI駆動開発用マシン。↑組み上がった姿

OSインストール

Raspberry Pi OSによるeepromとブートローダーの更新

1. Raspberry Pi ImagerでUSBに繋いだNVMe SSDにRaspberry Pi OSをインストール

Raspberry Pi Imagerを使ってRaspberry Pi OSをUSB接続用のSSDケースに入れたSSDにインストールし、Raspberry Pi 5にUSBで接続してRaspberry Pi 5を起動します。

私の場合、Micro SDカード無しでもUSBから起動してくれました。


2. パッケージの更新 実行したコマンド:

sudo apt update && sudo apt upgrade -y

3. eepromの更新

実行したコマンド:

sudo rpi-eeprom-update

4. ブートローダーの更新 実行したコマンド:

sudo raspi-config

‘Advanced Options’ > ‘Bootloader Version’ > ‘Latest’を順番に選択します。

‘Latest version bootloader selected - will be loaded next reboot. Reset bootloader to default configuration?‘には’‘を選択します。

最初の画面に戻るので、そこで’‘を選択します。

‘Would you like to reboot now?‘には’‘を選択します。

これでRaspberry Pi 5が再起動します。


5. NVMe(SSD)から起動するようにする

実行したコマンド:

sudo raspi-config

‘Advanced Options’ > ‘Boot Order’ > ‘NVMe/USB Boot’を順番に選択します。

‘NVMe/USB is default boot device’と確認の表示が出るので’‘を選択します。

最初の画面に戻るので、そこで’‘を選択します。

‘Would you like to reboot now?‘には’‘を選択します。

これでRaspberry Pi 5が再起動します。


6. Raspberry Pi ImagerでUbuntu 24.04.2 LTS (64-bit)をインストールして起動

Raspberry Pi Imagerを使ってUbuntu 24.04.2 LTS (64-bit)をUSB接続用のSSDケースに入れたSSDにインストールします。

ここまでの作業はRaspberry Pi 5の詳細な設定変更だったため公式のRaspberri Pi OSを使いましたが、実際に開発ではUbuntuを使いたいのでOSを入れ直します。

インストール(SSDへの書き込み)が完了したら、USBケースからSSDを取り出し、Pimoroni NVMe Baseに接続します。

NVMe Baseに付属するフレキシブルケーブルでRaspberry Pi 5のPCIeインターフェースに繋ぎます。

これでRaspberry Pi 5を起動すれば、NVMe Baseに組み込んだSSDからUbuntuが起動するはずです。

Raspberry pi 5 16GB + Fanless Heatsink Case + Pimoroni NVMe Base + Samsung PM981 + Ubuntu 24.04.2 LTS (64-bit)で組んだAI駆動開発用マシン。↑バラされた姿


基本の設定

パッケージの更新

sudo apt update && sudo apt upgrade -y

NVMe SSD向けの設定

PCIe Gen3化: /boot/firmware/config.txtにdtparam=pciex1_gen=3を追加


インストールしたソフトウェア

fio: ストレージの速度計測のため

上記でPCIe Gen3化していますが、前後で速度を計測しました。2倍くらいのスピードになりました。これならストレージI/Oは問題なさそうです。

NVMe SSDのGen3化による速度変化

  • PCIe Gen3化前: 420MB/sec
  • PCIe Gen3化後: 850MB/sec

インストールコマンド:

sudo apt install fio -y

実行したコマンド:

sudo fio --name=read_test --filename=/dev/nvme0n1p2 --rw=read --bs=1M --direct=1 --size=1G --numjobs=4 --runtime=10 --group_reporting

Tailscale: 外出先からのアクセス、無料wifi利用時の安全確保

これでどこからでも自宅のラズパイにアクセスして開発できます。自宅経由でインターネットにアクセスできるExit Nodeの機能もフリーwifi使う時安全確保やアクセス元が制限されるWebサイトへのアクセスにも便利です。

インストールコマンド:

curl -fsSL https://tailscale.com/install.sh | sh

実行したコマンド:

sudo tailscale up --advertise-exit-node

Bun: TypeScriptによる開発・実行環境として

TypeScriptによる開発に使うために入れました。実行環境として、そしてパッケージ管理にも利用します。

インストールコマンド:

# Bunのインストールに必要
sudo apt install -y unzip

# Bunのインストールコマンド
curl -fsSL https://bun.com/install | bash

実行したコマンド: なし


uv: Pythonによる開発・実行環境管理のため

Pythonによる開発に使うために入れました。venvによるプロジェクト別のPythonのバージョン管理とライブラリの管理に利用します。

インストールコマンド:

curl -LsSf https://astral.sh/uv/install.sh | sh

実行したコマンド: なし


docker: コンテナ管理のため

開発したWebアプリとかをテストしたり、ライブラリをソースからビルドする時などにラズパイの環境を汚したくない時に使うので入れておきます。最近docker以外のpodmanとかもあるようなのですが、慣れているのでdockerを使います。

インストールコマンド:

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

# インストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 再起動時にも自動でdockerデーモンを起動
sudo systemctl start docker

# 「docker」というユーザーグループ作成
sudo groupadd docker
# もうある、という出力: groupadd: group 'docker' already exists

# 現在のユーザー(自分)を「docker」というユーザーグループに追加
sudo usermod -aG docker $USER

実行したコマンド:

# テスト: hello-world イメージでコンテナ起動
docker run hello-world

# テスト: コンテナ動作確認
docker ps -a 

# テスト: hello-worldイメージで実行したコンテナ削除
docker rm xxxx

# テスト: hello-worldコンテナイメージ削除
docker rmi hello-world

GitHub CLI: GitHubの操作を行うため

インストールコマンド:

# GPG Keyの登録
(type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \
	&& sudo mkdir -p -m 755 /etc/apt/keyrings \
	&& out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
	&& cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
	&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
	&& sudo mkdir -p -m 755 /etc/apt/sources.list.d \
	&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null    

# パッケージリストの更新
sudo apt update

# GitHub CLIのインストール
sudo apt install gh -y

実行したコマンド:

# テスト: バージョン確認
gh --version
# 出力: 
# gh version 2.87.0 (2026-02-18)
# https://github.com/cli/cli/releases/tag/v2.87.0

nvm: node.jsの環境管理のため

インストールコマンド:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | shell

node.js: Bunを使っていてもnode.jsのエコシステムの方が充実しているため

Claude Codeと一緒に使うGemini CLIやMCPサーバーなんかもnodeに依存していることが多いのでnvmによるランタイムバージョン管理でnode.jsを入れました。

インストールコマンド:

# 2026年2月19日時点の最新のLTSバージョンを指定
nvm install 24.13.1

# 標準で使用するバージョンをこのLTSバージョンに設定
nvm alias default 24.13.1

実行したコマンド:

# 正しくインストールされたか
node -v
# 出力: 
# v24.13.1

# npxも入ってるか 対話モード
npx

# npmがマイナーバージョンアップしていると通知が出たのでアップデート
npm install -g npm@11.10.0

Visual Studio Code: 定番のIDE兼テキストエディタ

vibe-kanbanから開くエディタとしてVSCodeを利用する場合に必要だったはずなので追加しておきます。

インストールコマンド:

# GPG Keyを一時ファイルに書き込み
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg

# GPG keyのインストール
sudo install -D -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/microsoft.gpg

# 一時ファイルの削除
rm -f microsoft.gpg

# ダウンロード元の追加
sudo tee /etc/apt/sources.list.d/vscode.sources <<EOF
Types: deb
URIs: https://packages.microsoft.com/repos/code
Suites: stable
Components: main
Architectures: amd64,arm64,armhf
Signed-By: /usr/share/keyrings/microsoft.gpg
EOF

# 必要なパッケージの追加
sudo apt install apt-transport-https

# パッケージリストの更新
sudo apt update

# Visual Studio Codeのインストール
sudo apt install code

実行したコマンド:

# インストールバージョン確認
code --version
# 出力: 
# 1.109.4
# c3a26841a84f20dfe0850d0a5a9bd01da4f003ea
# arm64

pm2: vibe-kanbanのプロセス管理用のツール

Vibe Kanbanをラズパイの外からアクセスできるように常時起動しておくためのツールとして利用しています。

インストールコマンド:

# Bunでインストール
bun install pm2 -g

実行したコマンド: なし


Vibe Kanban (v0.1.8): AIによるシステム開発を管理するカンバンツール

AIを使ったソフトウェア開発のタスク管理ツールとしてVibe Kanbanを使っています。オープンソースなのですが、最近Vibe Kanbanのクラウドサービス版が開始され、v0.1.9からUIが大幅に変更されています。

慣れ親しんだUIを使い続けるために"vibe-kanban@v0.1.8"という形でバージョン指定で起動しています。

インストールコマンド:

# ラズパイ以外からアクセスができるようHOST=0.0.0.0とポート固定のためのPORT=8080を設定してpm2でvive-kanban@v0.1.8を起動
HOST=0.0.0.0 PORT=8080 pm2 start bun --name "vibe-kanban" -- x vibe-kanban@v0.1.8

# 設定を保存
pm2 save

# OS起動時に自動でVibe Kanbanを再起動
pm2 startup
# 出力:
# [PM2] Init System found: systemd
# [PM2] To setup the Startup Script, copy/paste the following command:
# sudo env PATH=$PATH:/home/ubuntu/.nvm/versions/node/v24.13.1/bin /home/ubuntu/.bun/install/global/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu

# 指示通りsystemdの設定を作成するコマンドを実行
sudo env PATH=$PATH:/home/ubuntu/.nvm/versions/node/v24.13.1/bin /home/ubuntu/.bun/install/global/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu

実行したコマンド: なし


Claude Code:

インストールコマンド:

curl -fsSL https://claude.ai/install.sh | bash

実行したコマンド:

# Claude Codeの起動
claude

さいごに一言

AIコーディングエージェント(2026年2月19日時点ではClaude Code)を使ったソフトウェア開発を行うための環境を再構築しました。

将来の環境再構築に備えたメモとして、そしてどんな開発環境を使っていたかの記録として残しておきます。

将来の自分も含めた誰かの助けになれば嬉しいです。

🏷