はじめに
Raspberry Piは、もはや「教育用の安いLinuxボード」という枠には収まらない存在になりました。本書のまえがきによれば、執筆時点で累計4,000万台以上が出荷されており、メモリを8GB搭載できるモデルの登場によって、デスクトップPCの代替として使える水準にまで到達しています。
一方で、Raspberry Piを触ろうとしたときに多くのエンジニアがぶつかるのは「情報が断片化していて、どこから手を付ければいいのか分からない」という問題です。公式ドキュメント、個人ブログ、フォーラムの書き込み、部品メーカーのサンプルコード——必要な情報は世の中に存在するのですが、それらは体系立っていませんし、OSのバージョンが上がるたびに静かに陳腐化していきます。
『Raspberry Piクックブック 第4版』は、その断片をまとめて一冊に収めた本です。著者はSimon Monk氏、訳者は水原文氏、2024年1月にオライリー・ジャパンから刊行されました(ISBN 978-4-8144-0050-8)。
本記事では、この本の構成と特徴、そして「設計・アーキテクチャに関心のあるエンジニアが読むと何が得られるか」という観点で書評をまとめます。
書籍の基本情報
| 項目 | 内容 |
|---|---|
| 書名 | Raspberry Piクックブック 第4版 |
| 原書 | Raspberry Pi Cookbook, 4th Edition |
| 著者 | Simon Monk(サイモン・モンク) |
| 訳者 | 水原 文(みずはら ぶん) |
| 出版社 | オライリー・ジャパン |
| 発行 | 2024年1月29日 初版第1刷 |
| ISBN | 978-4-8144-0050-8 |
| 構成 | 全19章+付録A・B |
| サンプルコード | GitHubで公開(simonmonk/raspberrypi_cookbook_ed4) |
著者のSimon Monk氏は、サイバネティクスと計算機科学の学位、ソフトウェア工学の博士号を持つ人物です。研究職を経て産業界に戻り、モバイルソフトウェア企業を共同創業した後、現在は執筆とMonkMakes社の製品設計を行っています。「研究者・ソフトウェアエンジニア・ハードウェア製品の設計者」という三つの視点を持っている点が、本書の記述の厚みにつながっていると感じました。
第4版の大きな更新点は、「機械学習」章(9章)と「Raspberry Pi PicoとPico W」章(19章)が新規に追加されたことです。加えて、新モデルへの対応とRaspberry Pi OSの変更点が全面的に反映されています。
全体の構成
19章は、大きく5つのブロックに分けて捉えると見通しが良くなります。
ブロック1:環境構築とOSの操作(1章〜4章)
- 1章 設定と管理
- 2章 ネットワーク接続
- 3章 オペレーティングシステム
- 4章 既存ソフトウェアの使い方
Raspberry Piの初期セットアップから、SSH/VNCによるリモート操作、Linuxのファイル操作やパーミッション、aptによるパッケージ管理、systemdによるサービス化、cronによる定期実行まで扱います。
3章は40レシピを収録した本書最大級のボリュームで、実質的には「Raspberry Pi向けに絞り込んだLinuxコマンドリファレンス」として機能します。
ブロック2:Python(5章〜7章)
- 5章 Pythonの基本
- 6章 Pythonのリストとディクショナリー
- 7章 Pythonの高度な機能
変数・文字列操作・条件分岐・ループといった基礎から、クラスと継承、例外処理、ファイルI/O、pickleによるシリアライズ、HTTPリクエスト、JSON、正規表現、簡易Webサーバー、GUI作成、並行処理までを段階的に扱います。
Pythonを既に書けるエンジニアであれば、この3章はスキップしても問題ありません。ただし7章には、後半のハードウェア章で使われる部品(Webサーバー、JSON、subprocessによるLinuxコマンド実行など)がまとまっているため、目次を眺めておく価値はあります。
ブロック3:コンピュータービジョンと機械学習(8章〜9章)
- 8章 コンピュータービジョン
- 9章 機械学習
8章はOpenCVを使った古典的な画像処理です。コインを数える、顔を検出する、動きを検出する、画像からテキストを抽出する、といったレシピが並びます。
9章が第4版の新規章です。TensorFlow Liteの学習済みモデルによるリアルタイム物体認識と音声分類、そしてEdge Impulseを使った自前モデルの学習・デプロイを扱います。
ブロック4:ハードウェアとセンサー(10章〜16章)
- 10章 ハードウェアの基本
- 11章 ハードウェアの制御
- 12章 モーター
- 13章 デジタル入力
- 14章 センサー
- 15章 ディスプレイ
- 16章 サウンド
本書の中核であり、ページ数の上でも最大のブロックです。GPIOのピン配置、I2C/SPI/シリアルの設定、LEDやモーターの駆動、押しボタンやロータリーエンコーダーの読み取り、温度・湿度・気圧・加速度・距離・CO2濃度などのセンシング、各種ディスプレイへの出力、音声の再生と録音を扱います。
14章だけで24レシピあり、扱うセンサーの種類も抵抗性センサー、サーミスター、ADC経由のアナログ測定、デジタル温度センサー、慣性計測ユニット、超音波測距、ToFセンサー、RFIDリーダーと多岐にわたります。
ブロック5:ネットワークとマイコン(17章〜19章)
- 17章 モノのインターネット
- 18章 ホームオートメーション
- 19章 Raspberry Pi PicoとPico W
17章はWebインターフェイスからのGPIO制御、Node-RED、IFTTTやThingSpeakなどの外部サービス連携。18章はMosquittoによるMQTTブローカーの構築と、Node-REDを基盤にしたホームオートメーションの組み立て。19章はもう一つの新規章で、Raspberry Pi PicoとPico Wを扱います。
付録Aには部品と販売店の一覧、付録BにはGPIOピン配置図が収録されています。付録Aは日本語版で秋月電子通商・千石電商・スイッチサイエンスなどの国内販売店と通販コードに置き換えられており、翻訳の手が入っていることが分かります。
印象に残ったポイント
1. 「クックブック」という構造そのものが設計されている
本書はレシピの寄せ集めではありません。各レシピは「課題」「解決」「解説」「参照」という統一フォーマットで書かれています。
- 課題:何をしたいのかを一人称で提示する
- 解決:最短ルートの手順とコードを提示する
- 解説:なぜそれで動くのかを説明する
- 参照:関連するレシピや外部資料へのポインタを示す
この構造が効いているのは、レシピ同士が依存関係のグラフになっている点です。あるレシピを実行するのに前提知識が必要な場合、そのレシピ番号が明示されます。たとえばI2C接続のディスプレイを使うレシピからは「先にI2Cのセットアップのレシピを参照せよ」という参照が張られます。
まえがきでは、これを料理本が「基本のソース」へのポインタを示してから応用料理を説明するのに似ていると説明しています。ソフトウェア設計の言葉で言い換えるなら、レシピをモジュールとして切り出し、依存を明示的に宣言している設計です。読者は目次や索引という「エントリーポイント」から入り、依存を辿りながら必要な範囲だけを読めばよい構造になっています。
技術ドキュメントを書く立場のエンジニアにとって、この構成方法そのものが参考になります。網羅性と検索性を両立させるドキュメント設計の実例として読めるからです。
2. 特定製品ではなく原理を説明する方針
著者は「Raspberry Piの世界は変化が激しい」という前提を明示したうえで、特定のインターフェイスボードやライブラリを使う手順だけでなく、その背後にある基本原則も併記する方針を取っています。
この方針が最も効いていると感じたのが10章です。GPIOコネクタの説明では、40ピンのレイアウトが26ピン時代と上位互換になっていること、HAT規格に搭載されたEEPROMをRaspberry Pi側が読んでボードを識別する仕組みなど、「なぜそういう形をしているのか」が説明されます。
さらに重要なのが電圧の注意喚起です。GPIOコネクタには3.3Vと5Vの電源ピンがあるため5V信号を接続してよいと誤解されがちですが、GPIOピンに入力できるのは3.3V信号のみであり、5Vを加えるとピンだけでなくボード全体を破損する恐れがある、と明確に警告しています。
そのうえで、抵抗2本による分圧とレベル変換モジュールという二つの対処法をレシピとして用意しています。「危険の説明 → 原理 → 具体的な対処法」という流れが徹底されている点は、実務でハードウェアを扱う人ほど価値を感じるはずです。
3. 通常のRaspberry PiにはアナログINがない、という制約の扱い方
14章の冒頭で、通常のRaspberry PiにはArduinoやPicoのようなアナログ入力が存在しないことが明示されます。したがって多くのアナログセンサーを使うには外付けのADCが必要になります。
面白いのは、この制約に対して本書が二系統の解を用意していることです。
- 外付けADCチップ(MCP3008など)を使う:正攻法。SPI経由で複数チャネルのアナログ値を読む
- 抵抗とコンデンサで充電時間を測る:ADCなしで抵抗値を推定する
2の方は、コンデンサの充電時間が抵抗値に比例することを利用した手法で、部品数を抑えたい場合に有効です。著者自身がこの用途向けのPythonライブラリを公開しており、可変抵抗の位置や光センサー、サーミスターによる温度測定にそのまま応用できます。
「制約に対して、コストと精度のトレードオフが異なる複数の解を提示する」という書き方は、アーキテクチャの選定を日常的に行うエンジニアにとって馴染みのある構造だと思います。
4. 機械学習章が「エッジ推論の入口」として現実的
9章は、Raspberry Piで機械学習を扱う章です。ここでの構成が実に現実的でした。
まず学習済みモデルを使うところから始まります。TensorFlowが公開している学習済みモデルをTensorFlow Lite経由で動かし、USBカメラやカメラモジュールの映像に対してリアルタイムに物体認識を行います。処理速度は毎秒6フレーム程度と明記されており、期待値の設定も適切です。
次に、そのサンプルコードを改造して検出結果を自分のコードで受け取るステップに進みます。推論結果はバウンディングボックスとカテゴリ候補のリストとして返るので、そこから特定のカテゴリ(たとえば人物)を拾って任意の処理を起動する、という流れです。前回検出時刻を保持して連続発火を抑制するといった実装上の注意も添えられています。
そして最後に、Edge Impulseを使った自前モデルの学習とデプロイへ進みます。データの前処理と学習という計算資源を食う処理はクラウド側で行い、学習済みモデルだけを低消費電力のデバイスに配布する、というアーキテクチャです。
「既製モデルを動かす → 出力を自分のコードで受ける → 自分のモデルを作る」という三段構成は、エッジAIに入門する際の順序として素直で、しかも各段階で動くものが手に入ります。
本文中の訳注によれば、翻訳時点の最新OSではTensorFlow提供のPythonライブラリがインストールできない問題があり、この章のレシピを試すには一つ前のバージョンのOSを使うことが推奨されています。実際に手を動かす際は、現在の状況を確認してから取り掛かるのが安全です。
5. 19章のPicoが、システム設計の視点を持ち込んでくる
19章は本書の中で少し性格が違います。Raspberry Pi PicoとPico Wは、名前こそRaspberry Piですが、実態はまったく別のデバイスだからです。
本書はその違いを正面から整理しています。Picoにはキーボードやマウス、ディスプレイのインターフェイスがなく、フラッシュ2MB・RAM 264KB、動作クロックは133MHz、そしてOSを持ちません。実質的にMicroPythonがOSの役割を果たします。
ではなぜPicoを使うのか。本書が挙げる理由は明快です。
- アナログ入力が3本あり、通常のRaspberry Piより簡単にアナログセンサーを扱える
- 6本のPWM出力がハードウェアで制御されるため、サーボ制御の精度が高い
- 昇降圧レギュレータ内蔵で電源電圧の許容範囲が広く、乾電池2本で長時間動作する
つまり、**「高機能なほうが常に正しいわけではない」**という判断軸が提示されています。1章のモデル選択表でも同じ思想が貫かれており、コンピュータービジョン用途には高性能モデルを、ホームオートメーション用途には発熱と消費電力の少ない旧世代モデルを、組み込み用途にはPicoを、と用途ごとに推奨が分かれます。
常時稼働するシステムを設計するとき、性能ではなく消費電力・発熱・電源要件がボトルネックになる場面は珍しくありません。本書はその感覚を、具体的なモデル比較を通して伝えてきます。新モデルは高速である一方でチップが非常に高温になるため、アクティブヒートシンクの利用と大容量電源が推奨される、といった記述にもそれが表れています。
良かった点
手を動かす障壁が低く設計されている
ハードウェアを自作するレシピでは、既製モジュールとハンダ付け不要のブレッドボード、ジャンパー線を使うことで、ハンダ付けの必要をなくす方針が取られています。ソフトウェアエンジニアが電子工作に入るときの最大の心理的障壁を、意図的に取り除いている構成です。
サンプルコードがすべて公開されている
コードはGitHubで公開されており、レシピ3.22がそのクローン手順に充てられています。本文に長いコードが載っている場合でも、写経は不要です。
日本語版としての手入れが行き届いている
付録Aの販売店・通販コードが国内向けに置き換えられているほか、原書執筆時から後にリリースされたOSバージョンに対する再検証が行われ、相違点が訳注として記載されています。翻訳書にありがちな「そのままでは動かない」問題への配慮が感じられました。
気になった点
通読には向いていない
これは欠点というより性質ですが、19章・約230レシピを頭から読むのはかなりの労力です。まえがき自身が「前から順番に読んでもよいし、ランダムにアクセスしてもよい」と述べており、後者を前提に設計されています。技術書としての読み方を切り替える必要があります。
Python章は既習者にとって冗長
5章〜7章のPython解説は丁寧ですが、既にPythonを書いているエンジニアには不要です。この3章で約60ページ相当が費やされている点は、購入前に把握しておくとよいでしょう。
外部サービス依存のレシピは寿命が読めない
17章のIFTTTやThingSpeakなど、外部サービスと連携するレシピは、サービス側の仕様変更や料金体系の変更に影響されます。本書の原則説明の方針は健在ですが、この種のレシピについては刊行から時間が経つほど再現性が落ちる可能性があります。
扱う機械学習の範囲は限定的
9章は著者自身が「MLプロジェクトをいくつか紹介するにとどめる」と明言しているとおり、モデルの内部やチューニングには踏み込みません。エッジ推論の入口としては優秀ですが、機械学習そのものを学ぶ本ではありません。
こんな人におすすめ
| 読者像 | 推奨度 | コメント |
|---|---|---|
| Raspberry Piを初めて触るエンジニア | ★★★ | 1〜3章で環境が整い、以降は興味のある章へ進める |
| Webやバックエンド出身で物理デバイスに触れたい人 | ★★★ | ハンダ付け不要の方針が効いてくる |
| エッジAIの実装イメージを掴みたい人 | ★★☆ | 9章が入口として有用 |
| ホームオートメーションを自前で組みたい人 | ★★★ | 17〜18章のMQTT+Node-REDが実践的 |
| 機械学習そのものを学びたい人 | ★☆☆ | 範囲外。専門書を併読すべき |
| 既にRaspberry Piを実務で使い込んでいる人 | ★★☆ | 新規2章とPicoの比較整理に価値がある |
読み方の提案
まえがきに読者タイプ別のガイドがありますが、ソフトウェアエンジニアが読む場合の実用的な順序としては、次のようになると思います。
- 1章・2章・3章の前半で環境を立ち上げる(SSHとVNCまで通す)
- 10章を通読する。GPIOの電圧制約とI2C/SPIの設定はここで固める
- 13章・14章から1レシピ選んで、実際にセンサーを1つ動かす
- 目的に応じて分岐する
- IoT寄りなら 17章 → 18章
- エッジAI寄りなら 8章 → 9章
- 低消費電力の組み込み寄りなら 19章
- 5章〜7章は必要になった時点で辞書として引く
10章を先に通読する理由は、ここが以降のハードウェア章すべての前提になっているからです。逆に言えば、10章さえ押さえておけば11章以降はどこから読んでも成立します。
まとめ
『Raspberry Piクックブック 第4版』は、Raspberry Piを扱ううえで散らばりがちな知識を、明示的な依存関係を持つレシピ集として体系化した本です。
特に評価したいのは、**「変化が激しい領域を、原則の説明と具体的手順の二層構造で扱う」**という編集方針です。特定のモジュール名やライブラリのバージョンはいずれ古くなりますが、GPIOの電圧制約、ADCが必要な理由、MQTTのブローカーとクライアントの関係、エッジ推論とクラウド学習の役割分担といった原則は残ります。本書はその両方を並べて置いてくれます。
第4版で追加された機械学習とPicoの2章は、どちらも「Raspberry Piというプラットフォームの外側」を扱う章です。クラウド側に学習を逃がす話と、より非力なマイコンに処理を降ろす話。この2つが同じ本に収まっていることで、単体のボードの使い方の本から、デバイスをどう組み合わせるかを考える本へと性格が広がっているように感じました。
手元に置いて必要なときに引く、という使い方が最も合う一冊です。通読する本ではありませんが、Raspberry Piで何かを作る予定があるなら、最初の一冊としても、既に使い込んでいる人の索引としても機能します。
参考リンク
- サンプルコード:
https://github.com/simonmonk/raspberrypi_cookbook_ed4 - オライリー・ジャパン:
https://www.oreilly.co.jp/ - Markdown記法 チートシート:
https://qiita.com/Qiita/items/c686397e4a0f4f11683d