引き出しのRaspberry Pi 3B+、もう一度|WindowsのVS Codeからつないで、メモリ1GBでどこまで使えるか測りました

raspberry pi

引き出しの奥に、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〜47VS 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つに切り分けた記事があります。

→ VSCodeでPythonインタープリタが選択できない時の対処法|原因を6つに切り分ける

本番はここからです。.py のファイルを開くと Pylance が動き出し、3B+ のメモリが一気に足りなくなりました。

3B+ のメモリの使用量と swap の使用量の折れ線グラフ。.py を開いた 16:22 から swap が 0 から増えて最大 876MB になり、記録が約1分44秒止まっている
ラズパイの中で2秒ごとに取った記録です。青が使用メモリ、オレンジが swap(メモリに入りきらない分を SD カードに逃がした量)。.py を開いたとたん、swap が 0 から一気に増え、最大で 876MB になりました。灰色の帯は、3B+ が手いっぱいになって、記録そのものが約1分44秒止まったところです。

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回の中央値)。

3B+ と Pi 5 の所要時間の横棒グラフ。venv 作成 14.96秒と2.58秒、小さな計算 3.58秒と0.55秒、pip install 12.51秒と8.09秒
青が 3B+、オレンジが Pi 5。計算そのものは 3B+ が約6倍かかりました。pip は、ネットからダウンロードする待ち時間が大半なので、差が小さくなっています。

数字だけ見ると遅いですが、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時間記録してグラフにするところまでを書いた記事があります。

→ Raspberry Piで温湿度ロガーを作る|pip installが止まる・日本語が□になる所まで

もう一度始めるときの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秒ごとに取った記録から出しています。

タイトルとURLをコピーしました