引き出しの奥に、Raspberry Pi 3B+ が眠っていませんか。
買ったときは、いろいろ作るつもりだったはずです。でも、モニタとキーボードをつなぐのが面倒になったり、思ったより遅くてイライラしたり、電圧不足の警告が消えなかったり。気づいたら箱に戻っていた——ということ、ありますよね。
この記事は、その 3B+ を「いつもの Windows の VS Code から触る、Python の練習台」として、もう一度使ってみた記録です。モニタもキーボードも要りません。ただし 3B+ はメモリが 1GB しかないので、本当に使えるのかを、実際に測りました。
先に結論
使えます。つなぐだけなら軽く、初回の接続も約1分50秒でタイムアウトせずに通りました。
ただし、Python の拡張機能を入れて .py を開くと、最初の1分ほどは固まります。そのあとは補完が 0.5秒、0.3秒、0.1秒と、使うほど速く出るようになりました。
もう一度始めるときにやることは3つだけです。①電源のケーブルを短く太いものにする ②SDカードの空きを1GB以上 ③最初の1分は待つ。
中の人
モニタをつながなくていい、っていうのがいちばん大きいんだよね。電源とネットだけ差して、机の端に置いておけばいい。
モニタもキーボードも、もう要りません
昔 3B+ を触っていたころは、テレビにつないで、キーボードとマウスを並べて……という方が多かったと思います。それが億劫で離れた、という方もいるはずです。
いまは、Windows の VS Code から、ラズパイの中のファイルを直接開いて編集できます。拡張機能「Remote – SSH」を1つ入れるだけで、書くのは使い慣れた Windows の画面、動くのはラズパイの上、という形になります。3B+ は電源とネットワークにつないで、机の端に置いておくだけです。
つなぎ方の手順は、こちらに書いてあります。拡張機能の入れ方、接続先の4行の設定、フォルダの開き方まで、Raspberry Pi 5 で確かめた記事です。手順は 3B+ でも同じでした。
→ WindowsからRaspberry Piのファイルを直接編集|VS Code Remote-SSHと初回タイムアウトの対処
この記事では、手順は繰り返しません。3B+ でやったら何が違ったかだけを書きます。
公式の条件は「1GB 必須、2GB 推奨」——3B+ はぎりぎり
VS Code の公式ドキュメントには、接続する側(ラズパイ側)の条件がこう書いてあります。
「1 GB RAM is required for remote hosts, but at least 2 GB RAM and a 2-core CPU is recommended.」
(リモート側には 1GB の RAM が必要。2GB 以上と2コアの CPU を推奨)——VS Code 公式:Remote Development using SSH
3B+ のメモリは 1GB。実際に OS から使えるのは 905MB でした。必須ぎりぎり、推奨の半分です。CPU は4コアなので、こちらは足りています。
そこで、測る前に「使える」「厳しい」の線を決めておきました。測ってから決めると、都合のいいほうに読めてしまうからです。
| 見るところ | 「使える」と書く条件 | 「厳しい」と書く条件 |
|---|---|---|
| 初めての接続 | 再試行を含めて通る | 3回試して通らない |
| つないでいる間のメモリ | swap(SDカードへの逃がし)を使わずに収まる | swap を 100MB 以上使う |
| Python の補完 | 10秒以内に候補が出る | 30秒以上かかる・固まる |
つないでみた:1分50秒、タイムアウトなし
ラズパイ側の中身を2秒ごとに記録しながら、VS Code で初めてつないでみました。
| 時刻 | ラズパイの中で起きたこと |
|---|---|
| 12:50:30 | 最初のファイルが置かれる(つなぎ始め) |
| 12:51:19〜47 | VS Code のサーバーを展開(150MB → 629MB) |
| 12:52:21 | 日本語パックが入って、つながる |
約1分50秒で、1回目から通りました。Raspberry Pi 5 で試したときは1回目がタイムアウトしたので、ここは 3B+ のほうが素直でした。
つないでいる間のメモリは、使用が 154MB から 566MB まで増え、残りは 338MB。swap は使いませんでした。ここまでは「使える」側です。
VS Code を更新するたびに、SDカードの使用量が増えていきます
ラズパイ側に置かれた VS Code のサーバーは、635MB・3,706ファイルでした。
ところが、以前(9月)につないだときの分を調べると 1,275MB ありました。中を見ると、サーバーが2つの版ぶん入っていました。Windows 側の VS Code が更新されると、ラズパイ側には新しい版が置かれ、古い版も残るようです。
容量の小さい SD カード(8GB など)を使っている方は、空きを1GB以上見ておいてください。
Python の拡張機能を入れると、最初の1分は固まる
次に、Python を書くための拡張機能をラズパイ側に入れました。拡張機能の画面で「Python」の「SSH: devpi にインストール」を押すと、Pylance(補完やエラー表示をする部品)などがまとめて入ります(devpi は、手元の 3B+ に付けた名前です)。
入るまで約70秒、大きさは合計242MBでした(Pylance 116MB、Python 64MB、ほか2つ)。
入ったあと、VS Code が「どの Python を使うか(インタープリター)」を聞いてくることがあります。そのときは、ラズパイに最初から入っている /usr/bin/python3(今回は Python 3.13.5)を選びます。
インタープリターが一覧に出ない・選べないときは、原因を6つに切り分けた記事があります。
本番はここからです。.py のファイルを開くと Pylance が動き出し、3B+ のメモリが一気に足りなくなりました。
VS Code の画面では、「ちょっと固まったけど、1分くらいで使えるようになった」という感じでした。そのあと json. と打って候補が出るまでの時間を測ると、こうなりました。
| 回 | 1回目 | 2回目 | 3回目 | 4回目 |
|---|---|---|---|---|
| 候補が出るまで | 0.5秒 | 0.3秒 | 0.2秒 | 0.1秒 |
使うほど速くなりました。最初に決めた線に照らすと、補完は「使える」側、swap は「厳しい」側です。両方に当たるので、正直にこう書きます。
判定
使える。ただし、ファイルを開いた直後の1分ほどは重く、swap に頼っている。開いたら、お茶を一口飲んで待つくらいがちょうどいいです。
中の人
最初の1分で「やっぱり 3B+ じゃ無理か」って閉じちゃうと、もったいないんだよね。待てば普通に使える。
かかる時間は Pi 5 の約6倍。でも練習には十分
同じ作業を、3B+ と Raspberry Pi 5 で3回ずつやって比べました(3回の中央値)。
数字だけ見ると遅いですが、500万回の計算で3.6秒です。Python の練習で書くような小さなプログラムなら、待たされる感じはありません。
もう1つ分かったことがあります。VS Code をつないだまま放っておいても、ほとんど遅くなりません。つないだまま測った値と、閉じてから測った値の差は2〜3%でした。重いのは、ファイルを開いた直後の1分だけです。
電圧不足の警告の正体は、ケーブルでした
3B+ から離れた理由に、「電圧不足の警告がどうしても消えなかった」という方もいると思います。今回、まさにそれが出ました。
ラズパイには、電圧不足が起きたかを教えてくれるコマンドがあります。
vcgencmd get_throttled
throttled=0x0 なら問題なし。それ以外の値が出たら、電圧不足や熱で速度を落とした記録があります。手元の 3B+ は、こうでした。
| 最初のケーブル | ケーブルだけ替えた | |
|---|---|---|
| 起動の直後 | 0x50000(起動中に電圧不足あり) | 0x0(何もなし) |
| 30秒 全コアに負荷をかけた間 (0.5秒ごと64回) | 電圧不足 7回 | 電圧不足 0回 |
電源は、電圧と電流を表示できるモジュールで 5.12V 出ていることを確かめたうえで、ケーブルだけを替えました。電源がきちんと5V出していても、細くて長いケーブルだと、3B+ に届くまでに電圧が落ちます。警告に悩んで離れた方は、まず短くて太いケーブルを試してみてください。
ケーブルを替えたあとも、全コアに負荷をかけ続けると「熱で速度を少し落とした」記録は出ました(64回中42回)。3B+ は 60℃ 近くで、自分から速度を下げます。VS Code では、Pylance が立ち上がる1分ほどは 63℃ まで上がりましたが、そのあとは 50℃台でした。
3B+ を「サーバー」にすると、何ができるか
ここまでの使い方は、3B+ を「Windows から書いたプログラムを動かす相手」にする形です。こうしておくと、3B+ は机の端で電源を入れっぱなしにしておく、小さなサーバーになります。
電源の表示を読むと、起動してすぐの 3B+ は 約0.46A(5.12V)、2.4W ほどでした(一度読んだだけの値です)。つけっぱなしにしても、電気代はほとんど気になりません。
その上で、たとえばこんなことができます。今回の記事で確かめたのは、VS Code でつないで Python を書いて動かすところまでです。下の例は、そこから広げる先として挙げています。
| できること | 3B+ との相性 |
|---|---|
| センサーの記録を取り続ける(温度・湿度など) | ◎ 計算が軽いので、遅さが気になりません。ピンにつなぐ部品の話は、下の温湿度ロガーの記事に書いてあります(試したのは Pi 5) |
| 決まった時刻に Python を動かす(毎朝データを取ってくる、など) | ◎ 書くのは Windows、動かすのは 3B+ という今回の形が、そのまま使えます |
| 家の中だけの小さな Web ページ(記録をグラフで見る、など) | ○ 見る人が少なければ十分だと思います(今回は試していません) |
| 重い計算・画像の処理・AI | △ 計算は Pi 5 の約6倍の時間がかかり、メモリも 1GB です。向いていません |
ポイントは、「VS Code で書いて、3B+ に置いたまま動かし続ける」ことです。ただし、VS Code のターミナルから普通に動かしたプログラムは、VS Code を閉じたあと止まってしまうことがあります(どのくらいで止まるかは、今回は確かめていません)。確実に動かし続けるには、決まった時刻に動かす仕組み(cron)を使うか、nohup を付けて動かします(この記事の記録のスクリプトも、nohup で動かしていたので、VS Code を閉じても止まりませんでした)。速さより「ずっと動いていること」が大事な仕事なら、3B+ はいまでも十分に役立ちます。
センサーをつないで記録を取るなら、温湿度センサーで1時間記録してグラフにするところまでを書いた記事があります。
もう一度始めるときの3つ
① 電源のケーブルを、短くて太いものにする。電圧不足の警告は、ケーブルで消えることがあります。
② SDカードの空きを、1GB以上にしておく。VS Code のサーバーは約635MB。更新のたびに古い版も残ります。
③ .py を開いたら、最初の1分は待つ。そのあとは、補完も実行も普通に使えます。
3B+ は、Pi 5 と比べれば遅いです。それでも、いつもの Windows の画面から書いて、机の端の 3B+ で動かす、という使い方なら十分に働いてくれました。新しく買う前に、引き出しの1台をもう一度起こしてみてください。
中の人
久しぶりに LED がチカチカしてるのを見ると、ちょっとうれしくなるんだよね。
測り方(自分の 3B+ でも試せます)
この記事の数字は、次のやり方で取りました。お手元の 3B+ でも、同じように試せます。どれもラズパイのターミナル(VS Code のターミナルでも大丈夫です)で動かします。
メモリ・swap・温度・電圧不足を2秒ごとに記録する
次の内容を kiroku.sh という名前で保存して、chmod +x kiroku.sh のあと ./kiroku.sh で動かします。画面に1行ずつ出ながら、同じ内容が kiroku.csv に貯まっていきます。止めるときは Ctrl+C です。
#!/bin/bash
# メモリ・swap・温度・電圧不足を2秒ごとに記録する(Ctrl+C で止める)
echo "時刻,使用メモリMB,空きMB,swapMB,温度,throttled" > kiroku.csv
while true; do
m=$(free -m | awk "/^Mem:/{print \$3\",\"\$7}")
s=$(free -m | awk "/^Swap:/{print \$3}")
t=$(vcgencmd measure_temp | cut -d= -f2)
th=$(vcgencmd get_throttled | cut -d= -f2)
echo "$(date +%T),$m,$s,$t,$th" | tee -a kiroku.csv
sleep 2
done
動かすと、こういう行が2秒ごとに出ます(VS Code を閉じた状態の 3B+ です)。
17:19:31,162,742,21,47.2'C,0x80000
左から、時刻・使用メモリ(MB)・空き(MB)・swap の使用(MB)・温度・throttled です。これを動かしたまま VS Code でつないだり、.py を開いたりすると、メモリと swap が動く様子が見えます。
throttled の読み方
| 値 | 意味 |
|---|---|
0x0 | 何も起きていない |
末尾が 1 や 5(例 0x50005) | いま電圧不足が起きている(5 は、そのせいで速度も落としている) |
前のほうが 5(例 0x50000) | 起動してから、電圧不足と速度の低下が起きたことがある |
末尾が 8(例 0x80008) | いま熱で速度を少し落としている |
前のほうが 8(例 0x80000) | 起動してから、熱で速度を落としたことがある |
ほかの値の意味は、Raspberry Pi の公式ドキュメント(get_throttled)に表があります。
速さを測る
前に time を付けると、かかった時間が出ます(real の行が、実際にかかった時間です)。
time python3 -c "sum(i*i for i in range(5_000_000))"
time python3 -m venv test_venv
time test_venv/bin/pip install -q requests
手元の 3B+ では、それぞれ real 0m3.613s・0m15.183s・0m11.942s でした。この記事では3回ずつ測って、真ん中の値を使っています。試し終わったら、rm -rf test_venv で片づけてください。
確かめていないこと
- Raspberry Pi 3B(無印)、Zero 2 W など、ほかの機種では試していません
- 32bit 版の OS では試していません(今回は 64bit 版)。公式ドキュメントには、32bit の ARM では一部の拡張機能が動かないことがある、と書かれています
- デスクトップ版の OS は試していません(今回は画面なしの Lite 版)。デスクトップが動いている分、使えるメモリはもっと少なくなるはずです
- Copilot などの AI 機能は使っていません。ただ、つないだだけで、その部品がラズパイ側で動いていました
検証した環境:Windows 11 / VS Code 1.140 / Raspberry Pi 3 Model B+(Rev 1.3・メモリ1GB)/ Raspberry Pi OS Lite(Debian 13 Trixie・64bit)/ microSD(58GB と表示) / 比べた相手:Raspberry Pi 5(8GB)。2026年10月2日に、実際に接続して測った記録です。測った数字は、ラズパイの中で2秒ごとに取った記録から出しています。
