日々の業務稼働時間を記録し、Redmine に連携する WPF デスクトップアプリケーション。
開発者: Hexia / バージョン: v1.5.0 / ステータス: 全 Phase 完成 + 安定化・実用化パック 🎉
業務開始から作業ごとの記録、業務終了までを記録し、JSONL 形式で永続化。 集計(月次 / 週次 / 前月比)・Excel エクスポート、タスクトレイ常駐、 グローバルホットキー、記録し忘れ防止、そして Redmine への作業時間自動転記まで対応。 スマホ向け PWA(WorkLogger Mobile)による外出先記録も可能。
- 業務開始 → 作業開始 → 作業終了 → 業務終了 の完全フロー
- 状態表示 + ボタンの動的切り替え (Idle / Ready / Recording)
- 経過時間のリアルタイム更新
- 集計ビュー(3 タブ): 月次集計 / 週次ビュー(月曜始まり・第N週) / 前月比(総計+プロジェクト別)
- Excel エクスポート (3 シート)
- JSONL 永続化 (月次分割、追記オンリー、アトミック書き込み)
- 設定画面 (保存先、業務日境界、ホットキー、アイドル通知、Redmine 接続)
- プロジェクトマスタ編集 (CRUD、論理削除、作業分類)
- 履歴編集 (過去記録の修正・追加・削除、バックアップ付き)
- 設定/データのバックアップ・インポート (ZIP、単体 JSON 対応、.bak 自動退避)
- タスクトレイ常駐 (× で格納、明示的に終了)
- グローバルホットキー (Ctrl+Shift+Alt+S/E/W、設定変更可)
- トレイメニュー
- 記録し忘れ防止 (アイドルリマインダー)
- URL は設定ファイル (config) に平文保持、API キーのみ DPAPI で暗号化 (配布時は URL 設定済みで API キー入力のみ)
- プロジェクト・チケット取得 (作業分類=チケット)
- チケット階層ドリルダウン選択 (大量チケット対応)
- 作業時間の送信 (time_entries、日次×チケット合算)
- WorkLogger Mobile(Web アプリ / PWA、インストール不要)で外出先記録
- ホーム画面に追加してアプリのように利用、オフライン動作
- Teams 経由でテキスト送信 → PC で取り込み
- 重複検出、プロジェクト・作業分類の手動紐付け
- 単体テスト (xUnit v3、純粋ロジック中心に 179 テスト)
- 構造化ログ (Serilog、日次ローテーション)
- グローバル例外ハンドラ (UI / 非 UI / 未観測 Task の 3 系統)
- 設定スキーマのバージョニングと起動時マイグレーション
- ✅ Phase 1: 動くツール (状態機械、JSONL、リカバリ、深夜跨ぎ、2 重起動禁止)
- ✅ Phase 2: UX 改善 + 集計/Excel + MVVM リファクタ
- ✅ Phase 3: データ管理 GUI (設定、プロジェクト、履歴編集)
- ✅ Phase 4: 常駐化 + グローバルホットキー
- ✅ Phase 5: 記録し忘れ防止 (アイドルリマインダー)
- ✅ Phase 6: Redmine 読み取り連携 (接続、プロジェクト・チケット取得)
- ✅ Phase 7: Redmine 書き込み連携 (time_entries) 🎯 最終ゴール
- ✅ Phase 8: スマホ記録の取り込み (PWA + Teams)
- ✅ Phase 9: チケット階層ドリルダウン (1000 超チケット対応)
- ✅ 品質向上パック (v1.3.0): 単体テスト・ログ基盤・例外処理・バックアップ
- ✅ 安定化・実用化パック (v1.4.0〜v1.5.0): 設定統一・スキーマ移行・Redmine URL 分離・週次/前月比集計
- v1.5.0 (2026-07-23): Redmine URL を config へ分離し API キーのみ暗号化 (SchemaVersion 1→2 移行, ADR-0042)、週次ビュー・前月比集計を追加 (ADR-0043)、主要サービスのテスト拡充 (179 テスト)
- v1.4.1 (2026-07-17): src/tests のプロジェクト分離
- v1.4.0 (2026-07-17): config/projects を conf/ へ統一、SchemaVersion 付与、旧位置から起動時自動移行 (ADR-0041)
- v1.3.1 (2026-07-17): RedmineClient を IRedmineClientFactory で抽象化しテスト可能化 (ADR-0040)
- v1.3.0 (2026-07-17): 品質向上パック (xUnit テスト、Serilog、例外処理、バックアップ/インポート)
- v1.2.1 (2026-07-15): スマホ取り込み画面のドリルダウン化
- v1.2.0 (2026-07-15): Phase 9 チケット階層ドリルダウン
- v1.1.0 (2026-07-13): Phase 8 スマホ連携
- v1.0.0 (2026-07-10): 最終ゴール達成、Redmine 連携 (Phase 1-7)
- フレームワーク: .NET 10.0 (Windows Desktop)
- UI: WPF (MVVM、CommunityToolkit.Mvvm)
- 永続化: JSON Lines 形式
- 外部連携: HttpClient (Redmine REST API)、Win32 P/Invoke (ホットキー・トレイ)
- 暗号化: DPAPI (API キー保護)
- ログ: Serilog (ファイル出力・日次ローテーション)
- テスト: xUnit v3 (Microsoft.Testing.Platform ランナー)
- 設計: SOLID 原則、依存性注入、関心の分離、判断ロジックの純粋関数化
| パッケージ | 用途 | ライセンス |
|---|---|---|
| ClosedXML | Excel ファイル生成 | MIT |
| CommunityToolkit.Mvvm | MVVM (ObservableProperty, RelayCommand) | MIT |
| Hardcodet.NotifyIcon.Wpf | タスクトレイ | MIT |
| Serilog / Serilog.Sinks.File | 構造化ログ | Apache-2.0 |
| xunit.v3 (テストのみ) | 単体テスト | Apache-2.0 |
各コンポーネントの著作権表示は THIRD-PARTY-NOTICES.txt を参照。
- docs/BUILD.md: ビルド・配布手順
- **docs/USER_MANUAL.Architecture Decision Records、0001〜0043)
- docs/DESIGN.md: 全体設計文書
- docs/LEARNING.md: 学習ログ (Day 1〜)
- .NET 10 SDK(ビルド用) / .NET 10 Desktop Runtime(実行用)
- Windows
dotnet build
dotnet test
dotnet publish -c Release -r win-x64 --self-contained false
詳細は docs/BUILD.md 参照。
MIT License © 2026 Hexia
本ソフトウェアが利用するサードパーティ製ライブラリのライセンスは THIRD-PARTY-NOTICES.txt を参照してください。