💭

SeedSignerをいじってみる - メニューの色をお好みに

に公開

SeedSignerをいじってみる - メニューの色をお好みに

はじめに

SeedSignerって知ってますか?ビットコインのハードウェアウォレットの一種で、Raspberry Piを使って自作できるオープンソースのプロジェクトです。

初めて知った方にはまずはこちらの記事がおすすめです。私もお世話になりました。
https://spotlight.soy/detail?article_id=7qi3gpu3g

今回は、そのSeedSignerのソースコードをいじって、メニューの色を自分好みにカスタマイズしてみました。「オレンジ色のメニューをもっと落ち着いた緑色に変えたい!」そんな小さなカスタマイズですが、意外と楽しいんです。

SeedSignerの起動画面

⚠️ 注意事項

  • この記事は開発・学習目的です
  • 実際の資金を扱う際は公式リリース版を使用してください
  • 改造による不具合は自己責任でお願いします

作業の流れ

カスタマイズ作業は大きく2つのステップに分かれます:

  1. ソースコード編集:GitHubでフォークして色設定を変更
  2. 動作確認: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 OptionsCamera: Enable
  • Interface OptionsSPI: Enable
  • Localisation OptionsLocale: 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の起動画面

実際にやってみた感想

🎯 今回の成果

  • オレンジ→緑: SeedSignerのメニュー色を自分好みにカスタマイズ成功!
  • 開発環境構築: Raspberry Pi上でのSeedSigner開発環境が整った
  • ソースコード理解: SeedSignerの内部構造を少し理解できた

📝 学んだこと

SeedSignerは意外とシンプル
中身が「PythonアプリケーションとLinuxの組み合わせ」なので、プログラミング経験があればカスタマイズは十分可能です。

時間の大部分は待ち時間
実際の作業時間は30分程度。

バージョン管理が重要
特定のOSバージョンでしか動かないので、環境構築は慎重に。

🚀 今後の可能性

今回は色の変更だけでしたが、以下のようなカスタマイズも可能です。

  • UI改善: ボタンサイズや配置の調整
  • 機能追加: MicroSDカードのマウント、PSBTファイルの読み書きなど
  • 多言語対応: 日本語表示への改善

⚠️ 最後に大切なこと

今回のカスタマイズはあくまで学習・開発目的です。

実際の資金を扱う際は:

  • 公式リリース版を使用する
  • 十分なテストを行う
  • セキュリティ監査を受ける
  • 自己責任で運用する

🤝 おわりに

SeedSignerのようなオープンソースプロジェクトは、コミュニティの貢献によって成り立っています。小さなカスタマイズでも、それが誰かの役に立つかもしれません。

興味を持った方は、ぜひSeedSignerコミュニティに参加してみてください!

Happy Hacking! 🎉

Discussion