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