📝 はじめに
こんにちは、piyovateです!
全12回にわたって連載してきた「Raspberry PiでSNSフォロワーカウンターシステムを作る」シリーズも、ついに完結です!
Raspberry PiとPythonで、SNSのフォロワー数をリアルタイムで見える化するディスプレイを構築するという、技術的にも遊び心満載なこのプロジェクト。
今回は、その全体像を振り返りつつ、学びや技術的ポイントをぎゅっと総まとめしてお届けします!
📚 全12回の構成一覧
回 | タイトル | 主な内容 |
---|---|---|
第1回 | 仕様決定会議編 | 画面・SNS・更新間隔・音声通知などの基本仕様を検討 |
第2回 | 買うべきもの決定編 | モニターやPoEハブなどの機材選定 |
第3回 | API動作確認編 | Qiita・XのAPIをPCでテスト取得 |
第4回 | PyQt5で画面作成編 | GUIでSNS表示、フルスクリーンUI構築 |
第5回 | Qiita APIと.env連携編 | 実データ取得&Git運用方針も紹介 |
第6回 | X APIとの連携編 | API制限に対応した取得・エラーハンドリング設計 |
第7回 | Instagram&Facebook連携編 | 追加2SNSのAPI連携とラベル表示対応 |
第8回 | 自動更新機能編 | QTimerで定期更新&15分ごとの分散取得 |
第9回 | 比較日付の柔軟化!編 | 前日比→任意日数比へ、JSON設定ファイルで柔軟対応 |
第10回 | フォロワー増加で音が鳴る!編 | 差分判定+WAV再生機能で通知を実装 |
番外編① | リファクタリングで保守性UP! | ディレクトリ整理・ログ機能導入・設定強化 |
番外編② | READMEアップデート&制限対応 | ドキュメント整備・requirements最適化・X API制限対策 |
🔧 技術要素まとめ
🖼 UIとユーザー体験
- PyQt5で全画面表示+SNSアイコン付きラベル
-
Esc
キーでウィンドウ⇔フルスクリーン切替 - 今後はUIの改善(見やすさ・操作性)も検討予定!
🔌 API連携と非同期処理
- Qiita:合計いいね数(Selenium+REST API)
- X(旧Twitter):フォロワー数(レート制限対応)
- Instagram/Facebook:Graph API使用
-
.env
とsettings.json
で柔軟な設定管理
⏱ 自動更新と音声通知
- 15分単位でSNSごとに分散取得しAPI制限を回避
- 前回比を元に差分判定、増加時のみ音再生
- 音量や再生設定もJSONで調整可能
📦 運用・開発上の工夫
項目 | 工夫したポイント |
---|---|
ディレクトリ構成 |
src/ , api/ , utils/ でモジュールを分離 |
ログ出力 | SNS別にログを出力し、障害解析もスムーズに |
設定管理 |
.env とsettings.json で情報を明確に分離 |
requirements整理 | 不要な依存を除去し、3ライブラリに最適化 |
自動セットアップ |
setup.sh でPi/PCどちらでも環境構築可能に |
README | 初心者向けに構成&トラブルシュート情報も記載 |
✅ こんな方におすすめのプロジェクトです!
- Raspberry Pi で実用的なGUIアプリを作ってみたい
- API連携・環境変数・ログ・設定管理を含む中規模Pythonプロジェクトを学びたい
- 技術だけでなく「ちょっと楽しい仕掛け」を実装してみたい!
🔮 今後の展望
- UIのレイアウト見直し(スマート表示・リサイズ対応)
- 効果音のSNS別カスタマイズ
- データの蓄積と履歴グラフ表示
🙏 最後に
ここまで読んでいただき、本当にありがとうございました!
長い連載でしたが、技術だけでなく「作る楽しさ」や「改善する喜び」を感じられたシリーズになったと思います😊
💡 プロジェクトの全ソースコードは以下に公開中!
🔗 GitHub - SystermDevelopment/follower-counter
いいね・フォロー・ストックもお待ちしています✨
🔗 シリーズリンク
- 前回:【第9回:比較日付の柔軟化!】
- 第1回:【第1回:仕様決定会議編】
📚 全記事まとめはこちら → シリーズまとめリンク