2024年9月25日水曜日

Raspberry Pi Zero W 系の機種で本書の演習を行う方法

はじめに

本書の演習で Raspberry Pi Zeroシリーズを用いる方法はサポートページで解説すると述べました。本ページにでその解説を行います。

Raspberry Pi Zero W 系 (以下 Pi Zero W 系) の機種では、GPIO ポートにピンヘッダが取り付けられた Raspberry Pi Zero WH (以下 Pi Zero WH) が最も簡単です。ピンヘッダが取り付けられていないと、本書で用いるオス-メスタイプのジャンパーワイヤを用いることができません。
Pi Zero W の後継である Pi Zero 2 W も登場していますが、2024年7月現在、ピンヘッダ取り付け済のバージョンは販売されていないのが現状です。
このようにピンヘッダが取り付けられていない機種に対しては、ピンヘッダを自分で取り付けるか、ピンヘッダの代替を自分で用意する必要があり、ハードルが上がることに注意してください。

また、Pi Zero W 系の機種は、搭載メモリ量が 512MB と少ないためデスクトップでブラウザを使うのにも支障が出るレベルです。ですので、Pi Zero W 系の機種は「デスクトップなど不要」と思えるような上級者向けのものだと考えるのが良いと思います。

周辺機器の接続方法

Pi Zero 2 Wと周辺機器との接続は下図のようになります。
図からわかるように、以下のものが必要となります。
Pi Zero 系の機種をセット販売で購入した場合、「HDMI(メス)-ミニHDMI(オス)変換アダプタ」や「USB OTGケーブル」はセットに含まれる場合もあるようですので、ご確認ください。

なお、microSD カードはなるべく高速で高性能なものを使うことをお勧めします。Zero 系の機種はメモリが512MBしか搭載されておらず、microSDカードをメモリの代替として用いる「スワップ」という技術が多用されるためです。
性能の低い microSD カードを用いると、OS の更新時などにおいて処理が止まり、結果的に OS の再インストールが必要になることが多いように思います。

なお、ピンヘッダが取り付けられていない Pi Zero 系の機種で電子工作の演習を行いたい場合、以下の方法がありますが自己責任でお願いします。
  1. まず、下記のようなテストワイヤをGPIO部の穴に差し込んで使うという方法がまずあります。ただし、これはあくまでテスト用であり、本書のように何度もGPIOを利用する場合、何度も抜き差しすることで接触が悪くなることが考えられるためお勧めできません。
  2. それ以外には、下記のように 40 ピンのピンヘッダをハンマーで打ち込む GPIO Hammer Header という製品があります。日本のサイトでは売り切れの場合もありますが、下記のスイッチサイエンスでは、定期的に入荷するようです。 なお、amazon.co.jp でも買えるようですが、レビューを見る限り装着に必要な治具 (Jig) が付属しない可能性があり、お勧めしにくいです。 海外通販を利用できる方なら、公式から Jig つきのもの Pimoroni: GPIO Hammer Header (Solderless) – Male + Female + Installation Jig を購入するのも良いでしょう。 治具 (Jig) の利用法はこちらで見られます。

  3. 最後に、ピンヘッダ 2×20 (40P)を半田付けする方法です。半田付けが得意な方以外にはお勧めできません。 個人的な感想ですが、一般的なセンサモジュールなどよりも半田ごてで熱すべき時間が長く、かなり難易度が高いと思いました。

本書の演習の実行について

Pi Zero W 系の機種を用いて本書の演習を行う場合、注意が必要なのは下記となるでしょう。
  • 5.6 カメラのシャッターの演習:カメラモジュールを接続するための専用ケーブルが必要
  • 5.7 MP3ファイルの再生:オーディオジャックがないので、音声はHDMI経由のみでの出力となるでしょう
  • 6.5 音声のボリューム:同様に音声はHDMI経由のみとなるでしょう
  • 10.4 キャタピラ式模型へのカメラの搭載:カメラモジュールを接続するための専用ケーブルが必要
なお、カメラモジュールの専用ケーブルとは、例えば下記のものです。Pi Zero 用のものと Pi 5 用のものの両方が使えます。Pi 5 用のものの方がケーブルの長さを選べる点は便利ですが、ケーブル自体がやや硬いので、好みは分かれるでしょう。 Pi Zero 系の機種をセット販売で購入した場合は付属する場合があるようですので確認してください。 Pi Zero 用のケーブルで Pi Zero 2 W にカメラモジュールを取りつけた様子が下図です。
ケーブルを取り付ける際、金属が露出した端子面を、どちらも緑色の基板の方を向くようにします。基板上のカバーを引き出し、ケーブルを差し込んだ後でカバーを押し込むことでケーブルが固定されます。


デスクトップやブラウザの利用に関する注意

本書で学習する場合、「デスクトップでブラウザで補足ページを開きコマンドなどをコピーしてターミナルに貼り付ける」というスタイルで学習するのが最も容易です。

しかし、Pi Zero 系の機種の計算能力では、ブラウザがまともに動作しないことが多いと思います。ページ表示の待ち時間が長く、十分な時間待ったとしてもページが表示されるとは限らない、というのが主な症状です。

さらに、そもそもグラフィックをもったデスクトップを利用すること自体、OS が新しくなるとともに厳しくなっています。 2024年7月時点での最新 OS Bookworm では、初回起動時の OS の更新でグラフィックが固まり、何もできなくなったという経験があります。
これらの問題は、 Pi Zero W 系の機種のメモリが少ないことが原因と思われます。

この症状は OS が新しくなるにつれて深刻化しています。そのため、2024年7月時点での最新 OS Bookworm よりも、一世代前の Legacy OS である Bullseye の方が安定して動作するように個人的には思います。
そのため、Pi Zero W 系の機種を用いる場合、インストールする OS として Bullseye を指定することが無難だと思います。

さらに、ブラウザの利用をあきらめ、 「ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する(2)~SSH編 (本書旧版の補足ページ)」の解説に従い、 Windows や macOS から Raspberry Pi へターミナルソフトウェアでログインして利用する、という方法を用いるのが現実的です。 この方法を用いると、電子回路の制御には Pi Zero W 系の機種を用い、補足ページの閲覧は Windows や macOS を用い、コマンドの貼り付けはターミナルソフトウェア経由で行う、ということが可能になります。

とはいえ、この方法は Linux に慣れている人向けの方法です。ですから、Pi Zero W 系の機種は初心者向けとは言い難いところがあります。

なお、以上のように「ターミナルソフトウェアでログインして利用」の方法が確立したら、デスクトップの起動をやめてしまうのも、メモリ消費量の削減になり効果的です。そのためには、デスクトップ左上のメニューから「設定」→「Raspberry Piの設定」を起動し、「ブート」の項目を「デスクトップ」から「CLI」に変更して再起動すればよいのです。そうすることで、デスクトップが開かず、コマンドラインインターフェースのみのOSが起動するでしょう。

なお、この設定を元に戻したければ、コマンドを受け付ける画面で
sudo raspi-config
を実行することで raspi-config を起動し、「1. System Options」→「S5 Boot / Auto Login」→「B4 Desktop Autologin」の順に選択すればよいです。

以上のような対策をとったとしても、OSの更新に何時間もかかることがあります(特に Bookworm では)。ですので、OSには不要なアプリケーションをインストールしておかない、という配慮も必要になります。 使わないアプリケーションの更新に何時間もかかる、ということがあり得るからです。
そういう意味で、インストールするOSは Full 版ではなく通常版の方が良いですし(Lite はさらに難易度があがるのでお勧めしません)、 下記のように chromium ブラウザや firefox ブラウザなど、更新に時間のかかるアプリケーションをを削除してしまうのも良いでしょう(これらの更新にはかなりの時間がかかるため)
sudo apt -y remove chromium* firefox rpi-firefox-mods rpi-eeprom

ディスプレイがRaspberry Pi と相性が悪い場合の対処法

Raspberry Pi には、相性の悪いディスプレイがあるという問題があるようです。そのようなディスプレイでは、OSをインストールしたmicroSDカードを挿入してRaspberry Piに電源を入れてもディスプレイに映像が映りません。

本ページではその場合の対処法を記します。

0. 準備

Raspberry Pi 用に OS をインストールした microSD カードを PC に接続します。そして、エクスプローラーの「PC」の項目を見ると、下記のように「bootfs」というディスクが存在していることがわかります。ここをダブルクリックすると、中に「cmdline.txt」や「config.txt」というテキストファイルがあるので、用いている OS に対応するファイルをメモ帳などのテキストエディタで開きます。

1. 用いている OS が最新 (Bookworm) の場合

2023年10月にリリースされた、2024年8月時点で最新のOSである、Bookworm を用いている方は、「cmdline.txt」を編集する必要があります。 通常は、「cmdline.txt」をダブルクリックすると、メモ帳などでファイルが開かれるでしょう。その中に、下記の1行が記されています。
console=serial0,115200 console=tty1 root=PARTUUID=877fcbb5-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP
この行の末尾に、半角スペースを一文字挿入してから、「video=HDMI-A-1:1920x1200@60D」などのようにディスプレイの解像度を追記します。「1920x1200」の部分は、お使いのディスプレイに適した値に設定してください。私の場合、ここに「1280x768」と記したことがあります(参考:株式会社クリスタージュ ディスプレイ解像度・サイズ 一覧)。
console=serial0,115200 console=tty1 root=PARTUUID=877fcbb5-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP video=HDMI-A-1:1920x1200@60D
以上の記述を行ったら、ファイルを保存してテキストエディタを閉じてください。そして、microSDカードを Raspberry Pi に取り付け、電源を投入してみましょう。 うまくいけば、ディスプレイが表示されるでしょう。
なお、この設定を行ったときの副作用として、「Raspberry Pi の電源投入時にディスプレイが接続されておらず、あとから接続してもディスプレイが映る」という効果があります。

また、ディスプレイが映り起動した後、デスクトップ左上のメニューから「設定」→「Screen Configuration」を起動し、下図のように 「レイアウト」→「Screens」→「HDMI-1(または HDMI-A-1)」→「解像度」の項目を cmdline.txt に記した解像度の設定に合わせ、「Apply」ボタンを押して設定変更を適用する必要がある場合があります。
上図は、cmdline.txt に video=HDMI-A-1:1280x768@60D と記した場合の例です。

2. 用いている OS が一世代前の Legacy (Bullseys) の場合

2023年10月より前にリリースされていた OS である、Bullseye などを用いている方は、「config.txt」を編集する必要があります。 通常は、「config.txt」をダブルクリックすると、メモ帳などでファイルが開かれるでしょう。その中に、下記の1行が記されています。 すると、下図のようなファイルが開かれますので、6行目の「#hdmi_safe=1」という行の先頭の「#」を削除し、上書き保存してメモ帳を閉じてください。

なお、古い Windows を用いている方は、このファイルが正しく開けません(正しく改行されて見えない)。その場合「サクラエディタ (V2 (Unicode版))」のように改行を正しく処理できるテキストエディタをインストールし、そのサクラエディタで config.txt を開くようにしてください。
さて、「#」を削除して保存したら microSD カードを Windows から取り外し、Raspberry Pi に取り付け、電源を投入してみましょう。

ディスプレイに映像が映ったでしょうか。
ただし、映ったとしても画面の解像度は低い状態かもしません。 その場合、config.txt でさらに下記の設定を行うと、解像度を変更できる可能性があるようです(参考:ラズパイの電源を入れた後にHDMIを挿しても画面が表示される方法)。
下記の行の先頭の「#」を削除してディスプレイの幅 (width) と高さ (height) を適切に設定し、
#framebuffer_width=1280
#framebuffer_height=720
さらに、次の行の先頭に「#」を記述して無効化します。
dtoverlay=vc4-kms-v3d

ディスプレイ・マウス・キーボードを接続せずにRaspberry Piを利用する~SSH編

はじめに

Raspberry Pi は名刺サイズの超小型コンピュータですが、ディスプレイを接続して利用すると Raspberry Pi の省スペース性が犠牲になるという問題があります。
また、低価格で人気の Raspberry Pi Zero (以下 Pi Zero) 系の機種はメモリが少なく、ディスプレイを接続してデスクトップを利用するのが年々厳しくなっているという問題があります。

これらの問題に対し、本ページでは「Raspberry Piにディスプレイ・マウス・キーボードを接続せずに利用する」ことを目指します。

2024年8月時点で、その方法として以下の3つの方法があります。上に記したものほど、昔からある手法です。
  • SSHを用いる方法
  • VNCを用いる方法
  • Raspberry Pi Connectを用いる方法
本ページは「SSHを用いる方法」を解説します。Raspberry Pi 上のデスクトップを利用しなくて済むので、メモリの少ない Pi Zero 系の機種に適しています。
また、Linuxの上級者に好まれる方法でもあり、マスターして損のない手法であると言えます。

具体的には、下記のように一つのネットワークにRaspberry PiとPCが属しており、PCからRaspberry Piを利用する、というスタイルになります。
この図だけ見ると、本書の9章や10章で行ったように「PC のブラウザから Raspberry Pi の回路にアクセスする」方法とあまり変わらないように思えるかもしれません。

9章や10章と異なるのは、Raspberry Pi にディスプレイ、マウス、キーボードを一切接続せず、「プログラムの作成」、「プログラムの実行」、「Raspberry Pi のシャットダウン」などをすべてPCから行うことが可能だ、という点です。

この際、PC のデスクトップの外観は下図のようになります。左上のアプリケーションは Tera Term という Windows 用のターミナルアプリケーション、右上は Raspberry Pi の Python 開発環境である Thonny、左下はファイルマネージャであり、 Thonny やファイルマネージャが Windows 上のウインドウとして表示されているのがポイントです。

以下、この動作を実現する方法を解説していきます。

なお、Windowsに対する解説を最初に行い、macOSに対する解説はページ末尾で行います。

必要なツールのインストールと設定(Windows編)

上図の動作をWindowsで実現するためには、下記の2つのアプリケーションをインストールする必要があります。
  • Tera Term(ターミナル)
  • VcXsrv(Xサーバー)
Tera Termは、Windows から Raspberry Pi にログインするために利用するターミナルアプリケーションです。VcXsrv は、上図のように Raspberry Pi のアプリケーションを Windows 上に表示するために必要なアプリケーションで、X サーバーと呼ばれることもあります。
以下、順に解説していきます。

Tera Termのインストールと設定

Tera Termのサイトよりインストールファイルをダウンロードします。最新版をダウンロードして下さい。2024年8月における最新版のファイル名は teraterm-5.2.exe でした。

ダウンロード後はファイルをダブルクリックしてインストールします。デフォルトの設定のままインストールを終えて構いません。

インストール後、Tera Term を起動すると、下記のようなウインドウが現れます。これは、Raspberry Pi に接続するためのウインドウなのですが、ウインドウを PC に表示するための設定が接続前に必要ですので、ここでは図のように「キャンセル」ボタンを押します。
その後、残ったウインドウで下記のように「設定」→「SSH転送」を選択します。
すると、下図のようなウインドウが現れますので、図のように「リモートのXアプリケーションをローカルのXサーバに表示する」にチェックを入れ、「OK」を押します。
その後、「設定」→「設定の保存」を選択し、今の設定を保存します。
保存するファイル名や場所は変更せず、そのまま「保存」ボタンを押せば設定が保存されます。
以上の設定は、初回のみの実行でよく、次回からは実行する必要がありません。
以上でTera Termの設定は終わりですので、一旦Tera Termのウインドウを閉じます。

VcXsrvのインストールと設定

次に、VcXsrvのインストールを行います。X サーバーと呼ばれる機能を Windows 上に実現するソフトウェアです。

まず、公式サイトよりファイルをダウンロードします。
ダウンロードするファイル名は、vcxsrv-64.X.X.X.X.installer.exe の形式のものを選びましょう。64ビット版のリリースファイルです。
ただし、2024年8月現在、最新版はファイルにウィルスが含まれていると Windows Defender に誤検出され、ファイルがダウンロードされませんでした。
Windows Defender を使っているとこのような誤検出の問題がときどき起こります。
そのような場合、一つ前の古いバージョンをダウンロードするなどすると良いでしょう。私の場合、vcxsrv-64.21.1.13.0.installer.exe ではなく、vcxsrv-64.21.1.10.0.installer.exe をダウンロードしました。

さて、インストール用のファイルのダウンロードが終わったら、デフォルトの設定でインストールします。インストール時に青い画面の警告が出た場合、「詳細情報」リンクをクリックしてから実行します。

インストールが終了すると、デスクトップに下図のように XLaunch と書かれたアイコンが現れます。
このアイコンをダブルクリックして X サーバーを起動してみましょう。幾つかウインドウで設定を求められますが、デフォルトのままで構いません。すなわち、
  • 「Multiple windows」にチェックが入った状態で「次へ」
  • 「Start no client」にチェックが入った状態で「次へ」
  • 「Clipboard」、「Primary Selection」、「Native opengl」にチェックが入った状態で「次へ」
  • 「完了」をクリックする前に「Save configuration」を押すと、そこまでの設定が保存できますので、場所を選んで保存しましょう。デスクトップ上でも構いません。「config.xlaunch」というファイルが保存されます
  • 最後に「完了」で X サーバーが起動されます
初回起動時に、下記のようにファイアウォールへのアクセス許可を求める警告が現れますが、そのまま「許可」ボタンをクリックします。 なお、サードパーティ製のウイルス対策ソフトなどをインストールしている場合、そのソフトウェアのファイアウォール機能に対してVcXsrvへのアクセス許可を行う必要があるかもしれません。しかし、私はそのようなソフトウェアを持っておらず、その設定方法についての質問には答えられませんのでご了承ください。ここではWindows標準のファイアウォール機能のみを用いている場合について解説しています。
さて、X サーバーが起動した状態では下図のようにタスクトレイに「X」というアイコンが現れます。以下で行うRaspberry Piへの接続時は、必ずこの「X」というアイコンが表示された状態で行ってください。
なお、デフォルトでは X サーバーの起動は自動では行われませんので、Windows を再起動するたびに手動で起動する必要があります。
そのような場合、初回起動時に保存した「config.xlaunch」をダブルクリックすると、その時の設定で X サーバーが起動されますので、次回からは「XLaunch」ではなく「config.xlaunch」をダブルクリックして X サーバーを起動するようにしましょう。
なお、「config.xlaunch」をダブルクリックしてXを起動できることを確認したら、デスクトップ上の XLaunch のアイコンは削除してしまっても構いません。

Raspberry Piでの準備

現在の Raspberry Pi OS では、デフォルトで ssh というソフトウェアが無効になっていますので、これをあらかじめ有効にしておく必要があります。

Raspberry Pi のデスクトップ左上にあるメニューから「設定」→「RaspberryPiの設定」と進み、下図のように「インターフェイス」タブの「SSH」を有効にしてください。これでsshが有効になります。

Windows から Raspberry Pi への接続

以上の準備が終わったら、Raspberry Pi へ接続してみましょう。あらかじめ Raspberry Pi を起動しておきます。慣れないうちは、これまで通り Raspberry Pi にディスプレイ、キーボード、マウスを接続しておいてもよいでしょう。

その状況で、Windows で Tera Term を起動し、Raspberry Pi に接続します。

下図のように、Tera Term の「新しい接続」ウインドウの「ホスト」欄に、Raspberry Pi の IP アドレスを記入して「OK」を押します。
なお、本書10章で注意したように、ここで Raspberry Pi に接続するためには、IPアドレスを知る必要があります。そのためには、Raspberry Piに ディスプレイとキーボードを接続しておく必要があり、本末転倒です。

この問題を解決するためには、本書では以下の方法を紹介しました。興味のある方はトライしてみてください。
  • 「ホスト」欄に、IP アドレスではなく「raspberrypi.local」と記入する:Windows に iTunes がインストールされている必要がある(iTunes に含まれる Bonjour というソフトウェアが必要なため)。iTunesのページを少しスクロールしたところにある「ほかのバージョンをお探しですか?」項目の「Windows」項目をクリックしてファイルをダウンロードする。Miscrosoft Store 版の iTunes ではダメなようです。
さて、「IP アドレス」または「raspberrypi.local」を「ホスト」欄に記述して「OK」を押すと、 初回起動時にのみ、下図のようなセキュリティ警告が現れますが、そのまま「続行」をクリックしてください。
下記のようにユーザー名とパスワードが求められます。Raspberry Pi OS のインストール時に 決定したユーザー名とパスワードを入力します。図中の「kanamaru」は私の場合の例です。入力したら「OK」を押します。
最終的に下図のような状態になります。Raspberry Pi で LXTerminal を起動した状態に似ていますね。これが、Windows 上のターミナルソフトウェア Tera Term で Raspberry Pi に接続した状態になります。
この Tera Term 上で Raspberry Pi のコマンドを実行してみます。例えば、Thonny を起動するためのコマンド「thonny」(すべて小文字であることに注意)を実行した様子が下図になります。末尾に「&」をつけて「thonny &」とすると、そのコマンドの実行後、同じ Tera Term でさらに別のコマンドを実行できるようになります。

別ウインドウでLXTerminal が起動していることがわかります。これは、X サーバーである Vcxsrv をあらかじめ実行しておいたことの効果です。

なお、ターミナルから Thonny を起動すると、図に示されているように警告やメッセージがたくさん表示されますが、気にする必要はありません。
さらに、この Tera Term 上で「pcmanfm &」コマンドでファイルマネージャ起動したのが下図です。

以上の例から想像できるように、よく使うアプリケーションのコマンド名を知っておくと便利です。本書に関連するのは下記のアプリやコマンドです。
  • Thonny:thonny
  • ファイルマネージャ:pcmanfm
  • テキストエディタ:mousepad
  • 設定アプリケーション:rc_gui
  • Raspberry Pi のシャットダウン:sudo poweroff
  • Raspberry Pi の再起動:sudo reboot
  • ブラウザ(chromium):chromium-browser (ただし、「さらなる発展」で後述するように Raspberry Pi 上でブラウザを使う理由はほとんどありません)

日本語入力は?

以上の方法では、テキストエディタなどに日本語を直接入力する方法がないように思えます。

ただし、Windows アプリから文字をコピーして Raspberry Pi のアプリケーションに貼り付けることはできますので、Windows のメモ帳などで日本語を書いて Raspberry Pi のアプリケーションに貼り付けるという手はあります。

もし、よりスマートな方法をご存知の方はお知らせ頂けると幸いです。

管理者権限で GUI アプリケーションを実行する際の注意

上記の方法で Windowsから Raspberry Pi のアプリケーションを実行できるようになったのですが、管理者権限でウインドウのある GUI アプリケーションを実行しようとすると、エラーが出て実行に失敗します。例えば管理者権限でのテキストエディタの起動「sudo mousepad」などです(本書ではこれをしばしば用いました)。
本ページの方法で GUI アプリケーションを管理者権限で実行するには、例えば mousepad の場合、下記のコマンドで実行しなければなりません。
XAUTHORITY=/home/$USER/.Xauthority sudo mousepad
これを毎回実行するのは非常に面倒ですね。
下記の手順に従うと、この長い実行コマンドを簡略化できますので、試してみると良いでしょう。
まず、.bashrcという設定ファイルをテキストエディタmousepadで開きます。ターミナルで下記を実行するのでした。
mousepad .bashrc
このファイルの末尾に、下記の1行を追加します。これは「XAUTHORITY=/home/$USER/.Xauthority sudo」という長い命令を「xsudo」で置き換える、という設定です。
alias xsudo="XAUTHORITY=/home/$USER/.Xauthority sudo"
追加したらファイルを保存してテキストエディタを閉じます。

この設定を有効にするには、Raspberry Pi を再起動してしまうのが簡単です。

その後、Tera Term にて、
xsudo mousepad
を実行すると、管理者権限のテキストエディタがWindows上に開く、というわけです。
なお、この方法が必要なのは、GUIアプリケーションを管理者権限で実行する場合のみです。例えば、シャットダウンコマンド「sudo poweroff」は管理者権限ですが、GUI がないのでこれまで通りの実行方法でエラーはでません。

さらなる発展

以上で、Raspberry Piにディスプレイ、マウス、キーボードを接続せずに運用できるようになりました。

しかし、実際に使ってみると、Raspberry Pi 上の GUI アプリケーションの動作がやや緩慢であることに不満を覚える方が多いかもしれません。これは、GUI の描画をネットワーク経由で行っていることが原因です。

実際のところ、より Linux に慣れている上級者の方で、上記のように Raspberry Pi の GUI アプリケーションを Windows 上に表示して用いている、という方は多くはないと思います。

彼らがどうしているかというと、Raspberry Pi 上で行う全ての処理を、上記のターミナルソフトウェア Tera Term 上で行ってしまうのです。Tera Term は Raspberry Pi とコマンド(文字)のやりとりしかしませんから、ネットワーク経由でも動作が軽快なわけです。

しかし、そのためには、例えば下記のような操作をすべてターミナル上で行えなければいけません。
  • ファイルの編集(プログラムや設定ファイルの記述)
  • ファイルの操作(ファイルの削除、ファイルの移動、ファイル名の変更など)
  • プログラムの実行
一つ目の「ファイルの編集」について、本書では mousepad というアプリケーションを用いましたが、これはターミナル外で動作するGUIアプリケーションなので、ターミナル上で動作するという条件を満たしません。

ターミナル内のみでファイルを編集できるアプリケーションとして良く知られているのは、
  • nano(起動したら、終了するにはCtrl-X)
  • vi
  • emacs
などです。vi や emacs は、利用法の解説で一冊の本が書けるくらい奥が深いものなので、初めての方が試すならnanoでしょうか。
二つ目の「ファイルの操作」についてはamazonなどの書店で「Linux コマンド」などのキーワードで検索すると、参考書が多数見つかるでしょう。
三つ目の「プログラムの実行」については本書付録Cに少し解説があります。
なお、本書では「ブラウザで補足ページを開いてコマンドなどをコピーしてターミナルで貼り付け」という方法を覚えると演習が楽になります。 今回の場合のように Tera Term で Raspberry Pi にログインしている場合、このブラウザとして Raspberry Pi 上のブラウザを用いる理由はほとんどありません。
Windows 上のブラウザで本書の補足ページを開き、コマンドを (Ctrl-C などで)コピーして Tera Term へ貼り付ければ良いのです。 Tera Term へのコマンドの貼り付けは Alt+V またはマウスの右ボタンをクリック、です。この手法を用いると、Tera Term でのコマンドの実行がかなり楽になるでしょう。

必要なツールのインストールと設定(macOS 編)

さてここからは、macOS で同じことを行う方法を記していきます。私は M1 チップ搭載の MacBookPro (Sonoma) で行いましたが、他のバージョンでも同様に動作すると思います。Windowsと同様、
  • ターミナル
  • Xサーバー
の2つが必要になります。macOS は「アプリケーション / ユーティリティ / ターミナル」としてターミナルが既に含まれていますので、Xサーバーのインストールから行います。

XQuartzのインストールと起動

ここでは、macOS 用の X サーバーである XQuartz をインストールします。XQuartz の公式サイトよりファイルをダウンロードします。執筆時は XQuartz-2.8.5.dmg が最新版でした。

ダウンロード後はインストールを行ってください。

インストール後は下記のようにアプリケーション→ユーティリティに「XQuartz」アイコンが現れます。また、本ページで多用する「ターミナル」も存在するのがわかるでしょう。
XQuartz をダブルクリックして起動すると、下記のようにドックに XQuartz のアイコンが現れます。下記で Raspberry Pi に接続するときは、このアイコンが現れているときに行います。実際には、次回からは macOS が起動するときに同時に XQuartz も自動的に起動するようです。
なお、XQuartz を手動で起動すると、下記のような「xterm」というアプリケーションも同時に起動するのですが、これは用いませんので閉じてしまって構いません。以上で、XQuartz のインストールと起動は完了です。

sshの設定

次に、Raspberry Piに接続してGUIアプリケーションを表示するための設定を行います。

macOS 上にある /etc/ssh/ssh_config という設定ファイルを管理者権限で編集する必要があります。ここでは nano というテキストエディタで行います。

まず、macOS 上で「アプリケーション→ユーティリティ→ターミナル」を起動しましょう。そして、下図のようにターミナル上で
sudo nano /etc/ssh/ssh_config
を実行しましょう。すると、macOS にログインする際のパスワードを聞かれますので、入力してください。その際、パスワード記入欄のカーソルは変化しませんが、気にせずに入力してEnterキーを押してください。
パスワードの入力に成功すると、下図のようにターミナル上でテキストエディタnanoが管理者権限で起動します。矢印キーでカーソルを移動できますので、操作はそれほど難しくないでしょう。

そして、下図のように「#    ForwardX11 no」という行を見つけ、その下に
ForwardX11 yes
という行を一行追記します。
追記が終わったら、保存してnanoを閉じます。以下の流れで行いましょう。
  • Ctrl-X(Ctrl キーを押しながら X キー)を入力
  • 変更を保存するか?(Save modified buffer?)と聞かれるので「y」を入力
  • ファイル名(File Name to Write)を聞かれるので、変更せずそのままEnterを入力
以上で変更が保存されnanoが終了するはずです。

macOS からRaspberry Piへの接続

以上で準備が整いましたので、macOS から Raspberry Pi に接続しましょう。

なお、Windows 編で注意したように、ssh というソフトウェアを Raspberry P i上であらかじめ有効にしておく必要があります。Windows 編の「Raspberry Pi での準備」を参考に、Raspberry Pi 上で ssh を有効にしてから先に進んでください。

準備ができたら、macOS 上で「アプリケーション→ユーティリティ→ターミナル」を起動し、下図のように
ssh kanamaru@raspberrypi.local
と入力してEnterキーを押しましょう。もちろん、「kanamaru」の部分は皆さんが Raspberry Pi OS のインストール時に決めた自分の ID で置き換えてください。

なお、これは「raspberrypi.local というホストにユーザー kanamaru でログインする」という意味になります。IPアドレスで指定したい場合、例えば「ssh kanamaru@192.168.1.3」などとなります。
まず、「本当に接続するか?」と聞かれますので、「yes」とタイプして Enter キーを押します。
次に、パスワードの入力を求められますので、Raspberry Pi OS のインストール時に決めたパスワードを入力します。その際、パスワード記入欄のカーソルは変化しませんが、気にせずに入力してEnterキーを押してください。
パスワードの入力に成功すると、下図のようにログインに成功します。
あとは自由にアプリケーションを起動してみましょう。下図は、Windowsで行ったように
  • ターミナルから「thonny &」により Thonny を起動
  • ターミナルから「pcmanfm &」によりファイルマネージャを起動
を実行した様子です。
なお、管理者権限でGUIアプリケーションの実行するとそのままではエラーが出ますので、本ページ中ほどにある「管理者権限でGUIアプリケーションを実行する際の注意」を参照してください。同様に、よく使うアプリケーションのコマンド名も本ページ中ほどで紹介しています。