ノートに戻る

公開 2026-04-11

RAMのオーバーヘッド削減のため Pironman 5 サービスを Go で書き直した

l-you avatarまさにあなた

Raspberry Pi 5 サーバーで SunFounder Pironman 5 を使っていて、ケースのハードウェア自体は本当に気に入っています。気に入らなかったのはソフトウェアのオーバーヘッドでした。

元の Python ベースのサービスは、ファン制御、RGB、OLED ページ、設定、ログ、デーモンのために、およそ 70-110 MB の RAM を使っていました。このサービスが実際にやっていることに対しては、重すぎると感じました。

そこで、自分用に Pironman 5 essentials のデーモンを Go で書き直しました:

https://github.com/l-you/pironman5-go

現行版は厳密なドロップイン置き換えではありません。いくつかの API を変更し、挙動を簡略化し、モノクロのビットマップや PBM ファイルからのカスタム OLED 画像など、欲しかった機能をいくつか追加しました。

ダッシュボードも省きました。自分の用途では必須ではありませんでした。

ダッシュボードなしで、より元の essentials の挙動に近く、同じ API 互換性を持つ版が欲しい人向けには、それ用の以前のコミットがあります:

https://github.com/l-you/pironman5-go/commit/faeff568730a411a95ee3708839ab3612b9ee1f4

私の Raspberry Pi 5 では、書き直しによって RAM 使用量が約 10 MB まで減り、アイドル時の CPU 使用率も少し下がり、再起動時間もおよそ 5s から 30ms 未満になりました。

プロジェクトの状態についても明確にしておきます。これは個人的な目的で作りました。自分では使っていますが、適切なバージョニング、CI、検証済みバイナリビルドは約束しません。慎重に使いたい場合は、ソースからビルドするのがより安全です。

もう一つ実務的な点として、初期版の実装作業は(テストも含めて)ほとんど AI が行いました。私は主に制約、方向性、何を残し、何を変え、何を削るかの判断を提供しただけです。最初の実用版の出来がここまで良かったのには正直驚きました。

このリポジトリが存在するのは、自分の Raspberry Pi 上で、より軽い Pironman 5 制御サービスが欲しかったからです。私にとっては、その問題を十分に解決できています。

注目の添付

My personal Rapsberry PI 5 + Pironman Setup