⌚
PyStopwatch 開発ログ
ハイライト
MacBook Pro (Retina, 13-inch, Mid 2014)のmacOS Big Sur 上で動作する軽量シンプルなストップウォッチアプリを、Python + PyQt5 で開発した約1週間分のログをまとめました。
1. 背景 / 動機
- macOS Big Sur 用の簡単なストップウォッチが欲しかった
- 使用しているメインPCが古く,動作するアプリがApp Store でなかなか見つからない
- 当初Swift言語を使う予定だったが,macOSバージョンが古くXcodeで開発できない
- Python + PyQtなら開発環境が構築しやすい
2. アプリ要件定義
- スタート / ストップ / ラップ / リセット の4ボタン
- 経過時間は画面上部に表示
- メニューバー表示(トレイアイコン表示)
- シンプルで軽量、装飾は最小限
3. 基本設計 & UI設計
- QLabel + QPushButton + QListWidget をQVBoxLayoutで構成
- 時間表示はフォントサイズ調整
- QSystemTrayIconの利用
- アイコン設定
4. Python + PyQt5 での実装
- QTimer を使用し、0.01秒単位で時間更新
- 時間は
hh:mm:ss.SS
の形式で表示 - ラップ毎にQListWidgetに追加
- 最大測定24時間
5. 実装のトラブルと対処
- PyQt6はmacOS Big Surでエラー多発
- メタデータ生成時のハング問題 - 仕方なくPyQt5にダウングレード
- アプリパッケージ後,QSystemTrayIcon の表示不能問題
- .png ではなく .icns をトレイアイコンに使用することで解決
- パスは QCoreApplication.applicationDirPath() で解決
6. macOS用 .app 化
- pyinstaller を使用
pyinstaller --windowed --onedir --name "PyStopwatch" \
--icon "app_icon.icns" \
--add-data "app_icon.icns:." PyStopwatch.py
7. GitHub公開 & 配布準備
- README.md に使用方法 / スクリーンショット / ライセンス記述
- screenshots/ フォルダを git push で作成
- .dmg は Releases で配布
- MIT LICENSE
8. おわりに
ここまで読んでいただきありがとうございます!
初めてのAppリリースでChatGPTにプロンプト投げるばかりでしたが,
各開発フェーズの役割やエラーの種類とデバック方法を一通り経験できたのは良かったです。
macOS Big Sur と Python だけで、これくらいのDTアプリ開発できちゃうんだなと改めました。
アプリDLはこちら: https://github.com/tattk/PyStopwatch
Discussion