SeedSignerをいじってみる - メニューの色をお好みに
SeedSignerをいじってみる - メニューの色をお好みに
はじめに
SeedSignerって知ってますか?ビットコインのハードウェアウォレットの一種で、Raspberry Piを使って自作できるオープンソースのプロジェクトです。
初めて知った方にはまずはこちらの記事がおすすめです。私もお世話になりました。
今回は、そのSeedSignerのソースコードをいじって、メニューの色を自分好みにカスタマイズしてみました。「オレンジ色のメニューをもっと落ち着いた緑色に変えたい!」そんな小さなカスタマイズですが、意外と楽しいんです。
⚠️ 注意事項
- この記事は開発・学習目的です
- 実際の資金を扱う際は公式リリース版を使用してください
- 改造による不具合は自己責任でお願いします
作業の流れ
カスタマイズ作業は大きく2つのステップに分かれます:
- ソースコード編集:GitHubでフォークして色設定を変更
- 動作確認:Raspberry Piに開発環境を構築してテスト
全体で3時間程度かかりますが、そのほとんどはRaspberry Pi上にPythonや依存ライブラリをインストールするための待ち時間です。
Step 1: ソースコードをフォークして色を変更
GitHubでフォーク
まずはSeedSignerの公式リポジトリをGitHubでフォークします。
フォーク後、自分のリポジトリ名を seedsigner-custom
に変更しておくと分かりやすいです。
ローカルにクローン
git clone git@github.com:[ユーザー名]/seedsigner-custom.git
cd seedsigner-custom
🎨 メニューの色をカスタマイズ
いよいよ本題の色変更です!SeedSignerの色設定は src/seedsigner/gui/components.py
ファイルの GUIConstants
クラスで管理されています。
と、Cursorのチャットで質問したら教えてくれました。😄
背景色とアクセント色を変更(29-32行目付近)
BACKGROUND_COLOR = "#6ABA6A" # 薄い緑色(元:#000000 黒)
INACTIVE_COLOR = "#414141" # そのまま
ACCENT_COLOR = "#30D158" # 落ち着いた緑(元:#FF9F0A オレンジ)
ボタンの色を調整(98-101行目付近)
BUTTON_FONT_COLOR = "#FAFFFA" # 薄い緑がかった白
BUTTON_BACKGROUND_COLOR = "#002C00" # 暗い緑
BUTTON_SELECTED_FONT_COLOR = "#002C00" # 選択時の文字色
この変更により、従来のオレンジ系から落ち着いた緑系の配色に変わります。
変更をコミット
git add .
git commit -m "メニューの色をカスタマイズ:緑系統に変更"
git push
💡 ポイント:色のカスタマイズはここで完了ですが、実際に動作するかどうかは次のステップで確認します。
Step 2: Raspberry Piで動作確認
必要な機材
今回使用した機材は以下の通りです:
- Raspberry Pi Zero 2 WH(WiFi付きモデル)
- MicroSDカード(開発専用、4GB以上あればOK)
- SeedSigner用のハードウェア(ディスプレイ、カメラ)
💡 なぜRaspberry Pi Zero 2 WHなのか?
開発環境では WiFi 接続でSSHアクセスするのが楽だからです。本番運用時はWiFiを無効化します。
⏰ 時間の目安
- OS書き込み: 5分
- Python 3.10コンパイル: 約80分 ☕☕☕
- パッケージインストール: 約75分 ☕☕☕
- その他設定: 10分
合計:約3時間(ほとんど待ち時間です)
📀 Raspberry Pi OSの準備
SeedSignerのローカル開発環境は Raspberry Pi OS Buster(2023-05-03版) でのみ動作するそうです。新しいバージョンでは動かないので注意!
こちらから「Raspberry Pi OS Lite (32-bit)」をダウンロードします。
拡張子.xzがついているので、解凍します。Macだとダブルクリックでオッケー。
💾 SDカードへの書き込み
Raspberry Pi Imagerを使います。書き込み前の設定画面で以下を設定しておくと後が楽です:
-
ホスト名:
seedsigner
-
ユーザー名:
pi
- パスワード: お好みで
- WiFi設定: 自宅のWiFi情報
- SSH: 有効化
🚀 初回起動と接続
SDカードをRaspberry Piに挿入して電源ON。1-2分待ってからSSHで接続:
ssh pi@seedsigner.local
⚙️ システム設定
sudo raspi-config
以下を設定:
- Interface Options → Camera: Enable
- Interface Options → SPI: Enable
- Localisation Options → Locale: en_US.UTF-8を選択
🐍 Python 3.10のコンパイル(約80分の長丁場)
SeedSignerはPython 3.10が必要ですが、Raspberry Pi OS BusterにはPython 3.7しか入っていません。そこでソースからコンパイルします。
# 1. コンパイル用ツールをインストール
sudo apt update && sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev openssl libssl-dev libreadline-dev libffi-dev wget libsqlite3-dev
# 2. Python 3.10のソースをダウンロード
wget https://www.python.org/ftp/python/3.10.10/Python-3.10.10.tgz
tar -xzvf Python-3.10.10.tgz
cd Python-3.10.10
# 3. 設定(約6分)
./configure --enable-optimizations
# 4. コンパイル開始(ここで約80分⏰)
sudo make altinstall
☕ 休憩タイム: この間にコーヒーでも飲みながら、別の作業をしましょう。
📚 依存ライブラリのインストール
Python 3.10が完了したら、SeedSignerに必要なライブラリをインストールします:
# SeedSignerに必要なシステムパッケージ
sudo apt install -y wiringpi python3-pip python-pil libjpeg-dev zlib1g-dev libopenjp2-7 git python3-opencv python3-picamera libatlas-base-dev qrencode
# QRコード読み取り用ライブラリ(zbar)
curl -L http://raspbian.raspberrypi.org/raspbian/pool/main/z/zbar/libzbar0_0.23.90-1+deb11u1_armhf.deb --output libzbar0_0.23.90-1_armhf.deb
sudo apt install ./libzbar0_0.23.90-1_armhf.deb
# Raspberry Pi GPIO制御用ライブラリ(BCM 2835)
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60/
sudo ./configure
sudo make && sudo make check && sudo make install
🎨 カスタマイズ版SeedSignerのセットアップ(約75分)
いよいよ、色をカスタマイズしたSeedSignerをインストールします:
# Step 1で作ったカスタム版をクローン
git clone https://github.com/[ユーザー名]/seedsigner-custom.git seedsigner
cd seedsigner
# Pythonパッケージのインストール(再び長い待ち時間☕)
python3 -m pip install -r requirements.txt
python3 -m pip install -r requirements-raspi.txt
🎉 動作確認!
ついに動作確認の時です:
cd ~/seedsigner/src
python3 main.py
成功すると...
- SeedSignerの起動画面が表示される
- メニューが緑色に変わっている!
- ボタン操作も正常に動作する
実際にやってみた感想
🎯 今回の成果
- オレンジ→緑: SeedSignerのメニュー色を自分好みにカスタマイズ成功!
- 開発環境構築: Raspberry Pi上でのSeedSigner開発環境が整った
- ソースコード理解: SeedSignerの内部構造を少し理解できた
📝 学んだこと
SeedSignerは意外とシンプル
中身が「PythonアプリケーションとLinuxの組み合わせ」なので、プログラミング経験があればカスタマイズは十分可能です。
時間の大部分は待ち時間
実際の作業時間は30分程度。
バージョン管理が重要
特定のOSバージョンでしか動かないので、環境構築は慎重に。
🚀 今後の可能性
今回は色の変更だけでしたが、以下のようなカスタマイズも可能です。
- UI改善: ボタンサイズや配置の調整
- 機能追加: MicroSDカードのマウント、PSBTファイルの読み書きなど
- 多言語対応: 日本語表示への改善
⚠️ 最後に大切なこと
今回のカスタマイズはあくまで学習・開発目的です。
実際の資金を扱う際は:
- 公式リリース版を使用する
- 十分なテストを行う
- セキュリティ監査を受ける
- 自己責任で運用する
🤝 おわりに
SeedSignerのようなオープンソースプロジェクトは、コミュニティの貢献によって成り立っています。小さなカスタマイズでも、それが誰かの役に立つかもしれません。
興味を持った方は、ぜひSeedSignerコミュニティに参加してみてください!
Happy Hacking! 🎉
Discussion