2026-02-26

RaspberryPi5を使ったリアル波形描画(3) Googleカレンダーを表示してみる


10.1インチ Raspberry Pi用 IPS タッチモニターとRaspberry Pi5 を購入したのは、リアル波形描画を Qt で作成し直すことだけでなく、仕事机の脇において Googleカレンダー を表示させる目的もあった。

仕事用に34インチのLCDディスプレイを使っているので、GoogleカレンダーはLCDディスプレイのどこかに表示させておけばいいのだが、大抵、いろいろなファイルを広げているので、カレンダーを見るにはいちいち再表示させないといけない。

そのため、机の脇に10インチのディスプレイでGoogleカレンダーが常時表示されている状態にしたかった。そういう商品も売っているようだが、ラズパイで自分用にカスタマイズしたものが欲しかった。

そこで、今回、Raspberry Pi5で10インチのモニターに google カレンダーを表示させるアプリを作ってみた。

Googleカレンダーを表示させた様子(完成系)

作ってみたといっても、自分では一行もコードを書いていない。最近、流行りのコード生成に優れているといわれている Anthropic 社の Claude を使った。

ChatGPTでもできたかもしれないが、この動画を見て Claudeの実力が見てみたくなった。


プロジェクトの概要

本プロジェクトでは、Raspberry Pi 5 上にGoogleカレンダーとGoogle Tasksを表示するウォールダッシュボードを構築した。ダッシュボードはGoogleカレンダーのUIに近いデザインで、月間カレンダービューにイベントをリアルタイム表示する。 

システム構成

項目

内容

ハードウェア

Raspberry Pi 5

OS

Raspberry Pi OS (Debian 12, Linux 6.12.62)

リモートアクセス

RealVNC Viewer (Windows PC から接続)

バックエンド

Python 3.13 + FastAPI + Uvicorn

フロントエンド

HTML/CSS/JavaScript (シングルページ)

認証

Google OAuth2 (デスクトップアプリ)

API

Google Calendar API + Google Tasks API

 大まかな仕組みとしては、Google OAuth で 仕事用の Googleアカウントを認証し、バックエンドのソフトウェアで Googleカレンダー情報を取得する。取得した情報を html でカレンダーとして表示する。これが可能なのは、Google が Google Calendar API と  Google Tasks API を提供しているからだ。

最近のアプリは、このようにクラウドサービスが提供するAPIとエンドポイント側のPCや組み込み機器が連携して価値を生み出すものが多い。これまでスタンドアロンで動いていた組み込み機器もネット接続して、このようなクラウド上のAPIと連携して新しい価値を提供するサービスが増えてきている。そううった傾向もあり、サイバーセキュリティも重要度が増している。

ChatGPTで医療機器ソフトウェア規制にこたえるチャットボットを作ったときは、壁打ちしながら約1週間かかった。

MSC Chat(医療機器ソフトウェアQ&A)

Claude での Googleカレンダーアプリ作成は約5時間。
Claude がすごいと思ったのは、問題が起こったときのリカバリーの良さだ。今回のサービスでは、ラズパイにPython のインストールが必要で、Python 3.13 のインストール作業の過程でつまずいた。Python 3.13 と pydantic==2.7.1 の互換性問題が発生した。

pydantic:**Pydantic(パイダンティック)**は、Pythonで「データの型チェック」と「データ検証」を簡単・安全に行うためのライブラリです。特に、API開発(FastAPIなど)や設定ファイル、JSONデータの扱いで広く使われています。「Pythonの型ヒントを使って、データの正しさを自動で検証・変換してくれるライブラリ」

pydantic-core のビルドにRustコンパイラが必要なためインストールに失敗した。pydantic==2.11.0 にバージョンを変更することで解決した。
 

パッケージ

バージョン

用途

FastAPI

0.111.0

WebAPIフレームワーク

Uvicorn

0.29.0

ASGIサーバー

pydantic

2.11.0

データバリデーション

google-auth

2.29.0

Google認証

google-auth-oauthlib

1.2.0

OAuth2フロー

google-api-python-client

2.127.0

Google API クライアント

こういう互換性の問題は、スクラッチで作っているときに発生すると原因がわからず 、暗い気持ちになりストレスが溜まる。ヒントをインターネット検索で探すのだが、解決した経験を誰かがアップしてくれていればラッキーで、そこにたどり着くまでにはそれなりの時間がかかる。

しかし、Claude は問題の状況をスクリーンショットで伝えると一発で原因を分析し、代替え手段を提示してくる。こんな感じで Claudeと壁打ちしながら、試行錯誤を繰り返していって、Googleカレンダーをラズパイで表示することができた。

完成した機能

機能

詳細

Googleカレンダー表示

月間カレンダービューでイベントをリアルタイム表示

カレンダー色分け

カレンダーごとの色でイベントを色分け表示

今日のハイライト

今日のセルを水色背景で強調表示

日時表示

右上に現在日時をリアルタイム表示

自動更新

5分ごとに自動リフレッシュ

Pi起動時自動起動

電源投入後に自動でダッシュボードが表示される

全画面キオスクモード

ブラウザのUI非表示で純粋なダッシュボード表示

ちなみに、ChatGPTは Pro の契約をしており、ChatBotを一週間かけて作ったときは、追加料金はかからなかったが、Claude はインプット、アウトプット量に対して、えげつないほどの従量課金になっており、結局 Googleカレンダーアプリ作成に6481円かかった。
使用料は毎日リセットされるので、一日の使用量まで達したら、翌日続きを行うようにすれば、月額使用料の中で完結できたのだが、一日で仕上げたいとなると、追加請求される。

前述の動画でも解説されているが、ChatGPTはオールラウンドプレイヤーで Claudeはビジネス用途の実績主義に特化しているとのこと。確かに判断が的確で試行錯誤が少ないが、効率がよいぶん、費用の請求もえげつない。

AIを使ったコード生成の感想

多くの識者が語っているように、今後ソフトウェアのコーディングは劇的に変わっていくことを実感した。経験の少ないソフトウェアエンジニアを一から教育する投資がもったいないというか、そこに疑問を持たずに続けていく企業はいずれ滅びてしまうのではないかという感覚がある。

現実に米国ではすでにソフトウェアエンジニアのリストラが始まっていると聞く。AIに置き換えられた分の人件費をカットする判断を経営層が下ししている。日本では簡単に社員をクビにはできないが、ソフトウェアエンジニアの採用が徐々に減っていく予感さえある。

何を作りたいか、何を提供すれば顧客に価値をもたらすことができるかさえ想定できれば、AIがアプリを作ってくれるところまで来ている。仮に作ったサービスが期待通りの実績を上げられなくても、ユーザーの使用状況のデータなどを収集してAIに分析させることで、どう改変すればよいのかも教えてくれる。

もちろんそのための費用もかかるが圧倒的に人件費より安い。

今後、生身のエンジニアに求めらるのは、コーディング力ではなく、価値創造の企画力や、人間同士のコミュニケーション能力ではないだろうか。それと、AIが出してきたアウトプットの是非を判断できる経験。

今回、Raspberry Pi 5 Google カレンダーダッシュボード プロジェクトが完成したところで、Claude に詳細なレポートを作ってもらった。

これをしっかり読み込むことで、AIが何を考え試行錯誤したのかがよく分かった。昔ならベテランの先輩に年単位で教えてもらっていたことが、数日で学習できる。

今後の技術者教育は、自分で企画してAIに作ってもらい、その開発過程をAIに説明してもらうことで、自分の経験として取り込むという教育が有効な感じがした。

どっちにしても、従来と同じようなソフトウェアエンジニアの採用や教育を行っていると、グローバルな競争に負けていく予感がしている。

便利だけど、生身のソフトウェアエンジニアには受難の時代になってきたかもしれない。



2026-01-20

RaspberryPi5を使ったリアル波形描画(2) Linux を使ってみる

 



RaspberryPiの OS は Linux である。RaspberryPi でアプリ制作をするにあたっては、Linux でコマンドを打つシーンが多くなる。コマンドを打ちやすくするために、VNC Viewer をセッティングする。

【VNC とは】

VNC(Virtual Network Computing)は、離れた場所にあるパソコンの画面を手元の端末に表示し、キーボードやマウス操作をそのまま遠隔のパソコンに送るためのリモートデスクトップソフト。

Real VNC Viewer(RealVNC Viewer)は、RealVNC 社が提供しているリモートデスクトップ用のビューアソフトで、離れた場所にある PC やサーバーの画面を表示して操作できるツールで、無償で使える。Home(無料)ライセンスでは、個人用途向けに台数制限付き(例:最大 5 台まで)でリモート接続が可能。

現在、RaspberryPi5 は Wi-Fi に繋がっているので、デスクトップPCに VNC Viewer をインストールして、RaspberryPi5 の画面を PC上に表示させる。こうすると、デスクトップPCのキーボードやマウスを使って、RaspberryPi5 をリモートで操作することができる。

(1) PCに「VNC Viewer」をインストールして起動。(こちらの note記事を参照)



これがRaspberryPi5のスクリーンをVPNでディスクトップPCに表示させた様子だ。下側に出ているのはタッチスクリーンのキーボード。RaspberryPi5にキーボードが接続されていないときにタッチスクリーンを使ってキーボード入力できる、親切な設計だ。ただ、VNCでは使わないので、左上のラズベリーメニュー→ Preferences→Control Centre→Display→On-screen Keyboard を Disabled にしておく


コマンドプロンプト画面は、左上のアイコンをクリックすると表示される。最初はかなり小さい画面になっているので、Edit → Style でフォントの大きさや画面サイズを変更した。

【RaspberryPiに登録されているユーザを確認する】

まず最初に、RaspberryPi5 に登録されているユーザーを確認しておく。

コマンドは cat /etc/passwd。結果は次のようになった。

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
 :
colord:x:107:111:colord colour management daemon:/var/lib/colord:/usr/sbin/nologin
hplip:x:108:7:HPLIP system user:/run/hplip:/bin/false
vnc:x:985:985:vnc:/nonexistent:/usr/sbin/nologin
xxsakai:x:1000:1000::/home/xxsakai:/bin/bash

前半はすべて Linux のシステムが使うユーザーで最初から設定されているものだ。vnc はVNCを使うために追加されたユーザーで、xxsakai は Linux のインストールイメージを作ったときに設定したユーザー(自分自身)である。

これで、システム以外のユーザーは 自分だけだということがわかった。

ちなみに、root ユーザーはすべての権限を持った特権ユーザーで、昔は、root ユーザーのパスワードを設定して、root ユーザーになることができたが、Raspberry Pi 5(Raspberry Pi OS)では root ユーザーのパスワードは「最初から設定されていいない」。

なぜ root のパスワードがないのかといえば、Raspberry Pi OS(Debian系)は、root での直接ログインを禁止し、通常ユーザーでログインして、必要なときだけ sudo で管理者権限を使うという設計になっているからである。

Linux のイメージを作ったときに、ユーザーを設定するので、そのユーザーは sudo を使えるようになっている。コマンドラインで確かめてみる。


sudo グループに入っており、sudo コマンドが使えることが確認できた。

【Linux のアップデートについて】

Linux をアップデートするには、次のコマンドを実行する。

sudo apt update
sudo apt upgrade

update:最新情報を取りに行く(変更なし)
upgrade:実際に更新する(変更あり)


update はリポジトリから最新のパッケージ一覧を取得する。update は何も書き換えない。upgrade コマンドで、最新のパッケージをインストールすることになる。

では、upgrade はどれくらいの頻度でやるべきか。推奨は、月1回程度で、何かの作業が終わった後がよい。避けるべきなのは、作業の途中や動作の確認中だ。

Linux は Windows Update のように定期的にパッチを当てるような仕組みがないので、脆弱性が発見されたときなど、手動で upgradeする必要があるが、upgrade することで、今動いていた機能が動かなくなるリスクもまったくないとは言えないので、頻繁にやることはない。

RaspberryPi5 を設置した直後に upgrage を行ったが、かなりの量の更新があった。アップグレードは節目節目、月イチ程度で行った方がよいだろう。

【Linux でよく使うコマンド】

📌 ファイル・ディレクトリ操作(最重要)

コマンド説明
lsファイル一覧表示
ls -l詳細表示
ls -a隠しファイル含め表示
pwd今いるディレクトリ
cdディレクトリ移動
mkdirフォルダ作成
rmdir空フォルダ削除
cpコピー
mv移動・名前変更
rm削除(注意)
rm -rフォルダ削除(注意)
fileファイル種別確認

📌 ファイル内容の確認・編集

コマンド説明
cat内容を全部表示
lessページ送りで表示
head先頭表示
tail末尾表示
tail -f追記をリアルタイム表示
nano簡易エディタ
vi / vim高機能エディタ
wc行数・文字数カウント

📌 検索・抽出(慣れると超便利)

コマンド説明
grep文字列検索
findファイル検索
locate高速検索(事前DB)
awk列処理
sed文字置換
sort並び替え
uniq重複除去

📌 システム・状態確認

コマンド説明
topプロセス監視
htop見やすい top
psプロセス表示
df -hディスク空き
du -h使用量
free -hメモリ
uptime稼働時間
uname -aカーネル情報
lsblkストレージ構成

📌 ネットワーク

コマンド説明
ip aIPアドレス
ip rルーティング
ping通信確認
ss -lntupポート確認
curlHTTP取得
wgetファイル取得
nmcliNetworkManager操作

📌 ユーザー・権限

コマンド説明
whoami自分
idUID/GID
groups所属グループ
sudo管理者権限
passwdパスワード変更
suユーザー切替
chmod権限変更
chown所有者変更

📌 パッケージ管理(Debian系)

コマンド説明
apt update更新情報取得
apt upgrade更新
apt installインストール
apt remove削除
apt autoremove不要削除
apt search検索
apt show詳細

📌 圧縮・展開

コマンド説明
tarアーカイブ
gzip / gunzipgzip圧縮
zip / unzipzip
xz高圧縮

📌 便利・覚えておくと楽

コマンド説明
history実行履歴
clear画面消去
alias別名
watch定期実行
time実行時間
which実体確認
manマニュアル

今回は、これくらいにしておく。

2026-01-13

RaspberryPi5を使ったリアル波形描画(1) イントロダクション


2018年にRaspberryPi3を使ったリアル波形描画の記事を10回に渡って書いた。7年半たって、RaspberryPiも進化し、ソフトウェアのプラットフォームとして使っていた Qt もバージョンが上がっている。

そこで、今回よりあらためてRaspberryPi5をベースにして、心電図モニタを想定したシステムを構築しつつ、どのようなソフトウェアアーキテクチャを医療機器に採用するとよいかについて解説していきたい。

RaspberryPi とは

Raspberry Pi(ラズベリーパイ)は、クレジットカードサイズの小型コンピュータで、低価格ながら本格的なPCと同等の機能を備えています。Linux(Raspberry Pi OS)が動作し、キーボードやモニタを接続すれば、Web閲覧、プログラミング、サーバ構築など幅広い用途に利用できます。最大の特徴は、基板上に備えられたGPIOピンを使って、LEDやセンサー、モーターなどのハードウェアを直接制御できる点です。これにより、ソフトウェアと電子工作を組み合わせたIoTや制御システムの試作が容易に行えます。省電力で常時稼働にも向いており、自宅サーバや実験用マシンとしても人気です。学習用途から実務のプロトタイプまで幅広く活用できる点が、Raspberry Piの大きな魅力です。

RaspberryPiを 使う理由は、ボードコンピュータとして汎用性が高く、安価で、LANや HDMI、USB、SDカード、Wi-Fiが標準装備されており、入手も容易なので壊れてすぐに交換が可能なのがよいからだ。ラズパイは教育やホビー、カスタマイズできるシステムとして広く普及していて、コンピュータプログラミングの入門機としても適している。

7年前にはRaspberry Pi 3 Model B+ をプラットフォームに使った。今ではRaspberryPiも、ずいぶんラインナップが増えた。

RaspberryPi が特によいのは、デフォルトで Wi-Fi を搭載しているところだ。Wi-Fi を搭載するには、各国の無線規制をクリアする必要がある。日本では技適(技術基準適合認定)を受ける必要があり、20~50万円の費用がかかる。各国で同様の認定が必要なため、世界中でWi-Fiを使えるようにするのは、かなり大変なことだ。RaspberryPi はそういった汎用インタフェースを世界中で同じ仕様で使えるようにしているところがすごい。

Raspberry Pi Foundation(ラズベリーパイ財団)は「未来のエンジニアを育てるために、世界一身近なコンピュータを作った教育団体」で、エンジニア教育への貢献は非常に大きいと思う。

Raspberry Piシリーズ 性能比較(主要モデル)

モデルCPUメモリ特徴・性能感
Raspberry Pi Zero 2 WQuad-core ARM Cortex-A53(1.0GHz)512MB超小型・超低消費電力。軽量な制御・IoT向け
Raspberry Pi 3 Model B+Quad-core Cortex-A53(1.4GHz)1GB入門用。Linux学習や簡易サーバ向け
Raspberry Pi 4 Model BQuad-core Cortex-A72(1.5GHz)2/4/8GB実用性が大幅向上。デスクトップ用途も可
Raspberry Pi 5Quad-core Cortex-A76(2.4GHz)4/8GB処理性能が飛躍的に向上。小型PC並み

RaspberryPi 5 は1万7千円とちょっと高めだったが、Raspberry Pi 3 Model B+ に比べてどのくらい性能が上がったのかも体感してみたかったので、RaspberryPi 5を購入することにした。


リアルタイム波形描画を行うには、LCDディスプレイが必要なので10インチのLCDディスプレイにRaspberryPiを背負わせることができるキットを選定した。これにRaspberryPi5とSDカードを合わせて購入した。


購入製品のリスト

RaspberryPiは、電源アダプタや HDMIケーブルなどは同梱されていないので、必要な電源アダプタなどの周辺機器がセットになったLCDキットなどはいろいろ販売されている。タッチパネル付きのLCDや電源がセットになっていたのでXBONFIRE のLCDキットを選んだ。


最初の組み立て

RaspberryPiは、前職で新人技術者教育に使っていたことがあって、汎用性は高いもののSDカードとの相性が悪いと立ち上がらないこともよくあり、「一発では動かない」というイメージがあった。そして、案の定、一発ではうまく動かなかった。

まず、RaspberryPiを起動させるためには、SDカードにLinuxのイメージを書き込む必要がある。このようなセットアップ手順はいろいろなサイトで紹介されているので、今回はこちらのnoteの記事を参考にさせてもらった。

「Raspberry Pi Imager」をRaspberryPi財団のサイトからダウンロードして、自分の Window PCにインストールして、Linuxの起動イメージをSDカードに書き込む。起動ディスクだから、コピペでは動かないので、専用のアプリでイメージを書き込む必要がある。RaspberryPiに挿入するSDカードはmicroSDだが、SDカードアダプタがついていたので、アダプタ経由でPCに刺してOSのイメージを書き込んだ。Raspberry Pi Imager では初期の設定を編集することができて、次のような項目を設定することができる。
  • ホスト名
  • ユーザ名
  • パスワード
  • Wi-FiのSSIDとパスワード、Wi-Fiの使う国(JP)
  • タイムゾーン(Asiia/Tokyo)
  • キーボード設定(JP)
これらをRaspberryPi本体で設定しようとすると、キーボードやディスプレイが必要になるので、この段階で設定できるようになっているのはとても親切だ。

そして、SSH(Secure Shell、ネットワーク越しに、別のコンピュータを安全に操作するための通信プロトコル)の設定(今回はパスワード認証)を行う。

RaspberryPiを立ち上げた後に Wi-Fi経由で自分のPCからSSHで通信する必要があるので、これをやっておく必要がある。

SDカードにイメージを書き込み、RaspberryPi本体にmicroSDカードを差し込んで、電源(USB TypeCから給電する)を入れると、RaspberryPiが立ち上がる。

今回LCDのキットがあるので、LCDキットの基盤にRaspberryPi5をセットして、電源を投入したのだが、LCDディスプレイには「No Input Image」が一瞬表示されて画面が消えてしまう。

「ああ、やっぱり一発では動かなかったか」と落胆しつつ、LCDキットの取説の一番後ろに書いてあったユーザサポートにメールしてみる。12時間以内に返信するとあった。

状況の説明と写真を送ったところ、ていねいな返信がきていろいろアドバイスを教えてくれた。困った時にはAIがヒントをくれるが、生身の人間のサポートがあると安心できる。

RaspberryPiをネジ止めする4箇所のネジ穴があるのだが、ネジ受けの頭に薄い茶色のフィルムが貼られていてそれを剥がせという指示があった。実際、RaspberryPiの基盤をネジ止めしようとしたらネジがうまく入らなかったのでネジ止めできなかったのだが、そういう理由だったようだ。老眼になると細かいところがよく見えないのでフィルムがあることに気が付かなかった。

このLCDキットは、USB-TypeCコネクタとHDMIコネクタに変換アダプタを接続して、LCDキットの基盤のコネクタに刺すような構造になっている。基板側のコネクタがロックのない2列のコネクタでよく見ないと一列ズレて刺してしまう。どうも、最初にうまくいかなかったのは一列がズレてコネクタが刺さっていたからのようだ。RaspberryPiの取り付け位置もフィルムのせいでピタッと合っていなかったこともズレの原因だった。

茶色のフィルムを剥がして、慎重にコネクタの位置を確認しながら接続し、電源を投入したところ、RaspberryPiの初期画面が表示された。

その後、Wi-Fiの接続ができず、タッチパネルを使って、RaspberryPiのWi-Fiをオンにしたり、Wi-FiのSSIDやパスワードを再設定したりし、sshの設定をやり直したりした。

chatGPTに現状の症状を伝えながら、一つずつ問題をクリアすることで、PCからRaspberryPiにWi-Fi経由で接続することができた。

最初の段階ですんなり行かなかったが、焦らずに少しずつすすめていこうと思う。