🪑 OpenChair — 進捗 / ToDo / 実行計画 / 使い方マニュアル

F-Chair+ を運用コスト0円で代替する自作 稼働計測ツール | 最終更新: 2026-06-30

📊① 進捗ステータス

A案を本採用。Claude が実施できるコード実装・ドキュメント・配布準備はすべて完了(100%)。残りは認証・配布・法務承認など あなた(macdeji)の実作業のみで、その下準備は全て整えてあります。

Claude担当:コード
100% 完了(テスト 47 passed)
Claude担当:配布準備・ドキュメント
100% 完了(Mac .app ビルド検証済 / 法務ドラフト3点)
あなた担当:運用開始
下準備100% — 認証・配布・法務承認はあなたの実作業
分担サマリー: 「作る・整える・検証する」はすべて完了。あなたがやるのは「① rclone/SMTP に認証情報を入れる ② 各PCへ配布して自動起動 ③ 同意書を承認しスタッフへ通知 ④ dry_run=false にして開始」の4ステップだけ。各ステップは付属ツール(--check / check_rclone.sh / --test-email / autostart_*)で最小手数に短縮済み。

✅ 完了済み

✅ 今回(2026-06-30 後半)に追加で完了したもの

👤 あなたの判断が要る設定(推奨値は用意済み)

🗒️② ToDoリスト(A案 / 分担明確化)

凡例:✅ Claude完了 👤 あなたの実作業(下準備済み) 優先度 必須

A. Claude が完了させたこと(✅ すべて完了)

B. あなたの実作業 — 外部サービス認証(👤 ここだけは人手が必須)

C. あなたの実作業 — 配布・自動起動(👤 各PCでの操作)

D. あなたの実作業 — 法務(👤 ドラフトは作成済み、承認&通知が必要)

🛠️③ ToDoリスト実行計画

依存関係に沿った推奨順序。Phase 0 を決めないと Phase 2 以降が分岐するため、最初に採用案を確定します。

フェーズやること前提 / 依存担当
Phase 0
意思決定
A案 / G案 の採用を決定。保持期間・通知先・ぼかし要否・対象者を確定。 あなた(要判断)
Phase 1
法務先行
同意書ひな形・運用ルール文書を作成 → スタッフへ通知・同意取得。
技術より先に着手(撮影開始前に同意が必要)。
Phase 0あなた+Claude(文書ドラフト)
Phase 2
外部設定
rclone↔Drive 接続。
【G案】GAS デプロイ+スプレッドシート準備。
SMTP 設定。config.json に反映。
Phase 0あなた(手順はClaudeが伴走)
Phase 3
DRY_RUN検証
1台で dry_run=true のまま自己検証 → 実接続テスト(小規模で false)。同期・Sheets追記・メールを確認。 Phase 2Claude+あなた
Phase 4
配布
PyInstaller でビルド → 各PCへ配布 → 自動起動登録 → 実機(Win/Mac)テスト。 Phase 3Claude(ビルド)+あなた(配布)
Phase 5
本運用
全台 dry_run=false で稼働開始。ダッシュボード/スプレッドシートで日次確認。保持期間で自動削除されることを確認。 Phase 4+Phase 1あなた(日次運用)
Phase 6
改善(任意)
ぼかし強化・Sheets可視化・残業アラート等を必要に応じて追加。 Phase 5Claude
クリティカルパス: Phase 0 →(Phase 1 と Phase 2 は並行可)→ Phase 3 → Phase 4 → Phase 5。Phase 1(同意取得)が完了するまで本番撮影は開始しないのが鉄則です。

④ 使い方(クイックスタート)

両案共通。フォルダだけ openchair_A_sqliteopenchair_G_gsheets に読み替えます。

# 1. 依存インストール(各PC、初回のみ)
cd openchair_A_sqlite        # または openchair_G_gsheets
python3 -m pip install -r requirements.txt   # mss, Pillow, pystray(G案は +requests)

# 2. 設定ファイルを用意(user_id 等を編集)
cp config.example.json config.json

# 3. 起動(トレイ常駐:着席/退席ボタン)
python3 -m src.app
#   ヘッドレス/CLIで動かす場合(s=着席 e=退席 q=終了):
python3 -m src.app --no-tray

# 4. 動作確認(GUI・ネット不要の DRY_RUN 自己検証 → "SELFTEST OK")
OPENCHAIR_DRY_RUN=1 python3 -m src.app --selftest

# テスト
python3 -m pytest -q                          # 47 passed

# ▼ セットアップ補助ツール(本番前に便利)
python3 -m src.app --check                     # 準備状況を点検(rclone/SMTP/dry_run 等)
bash build/check_rclone.sh gdrive              # rclone↔Drive 接続テスト
python3 -m src.app --test-email                # SMTP設定でテストメール実送信
bash build/autostart_mac.sh                    # Mac: ログイン時自動起動を登録

# 配布物のビルド(実行したOS向け。Mac=.app / Win=.exe)
python3 build/build_pyinstaller.py --clean
ダッシュボードの開き方(A案): アプリ起動中に日報を生成すると data/dashboard/dashboard.html が更新されます。ブラウザでこのファイルを開けば、タイムライン・稼働量・スクショが見られます。
G案は集約先の Googleスプレッドシートがそのまま管理画面です。

📖⑤ 使い方マニュアル(詳細)

5-1. これは何をするツール?

各スタッフのPCに常駐し、「着席」ボタンを押している間だけ、10分間隔(±ランダム)で画面のスクリーンショットを撮り、稼働時間を記録します。「退席」で完全停止します。データは Google ドライブ/スプレッドシートに集約され、管理者はダッシュボードで確認します。月額コストは0円です。

5-2. 日々の操作(スタッフ)

5-3. 管理ダッシュボードの読み方(A案)

サンプル:openchair_A_sqlite/data/dashboard_demo/dashboard.html をブラウザで開くと実例が見られます。

5-4. 設定ファイル(config.json)の主な項目

キー既定値意味
user_id"staff01"スタッフ識別子(各PCで変える)
capture_interval_sec600スクショ間隔の基準(秒)=10分
capture_jitter_sec180間隔のランダム揺らぎ(±秒)
retention_days60この日数を過ぎたデータ/画像を自動削除
dry_runtruetrue=外部送信しない安全モード。本番は false
blur_enabledfalseスクショをぼかして保存(プライバシー)
work_start / work_end00:00 / 23:59撮影する勤務時間帯(タイムライン軸にも使用)
drive_remote / drive_dir"" / openchairrclone のリモート名と保存先フォルダ
alert_enabledtrue無変化アラートメールの有効化
no_change_threshold0.02画面差分の閾値。これ未満なら「変化なし」
no_change_count3連続この回数「変化なし」でアラート
alert_cooldown_sec1800アラートの最小再送間隔(秒)=30分。連続メール防止
overtime_threshold_sec01日の合計稼働がこの秒数を超えたら残業アラート。0=無効(例:9h=32400)
blur_strength8ぼかし半径(px)。blur_enabled=true のとき適用
standard_workday_sec28800ダッシュボード稼働量バーで100%とする所定労働(秒)=8時間
smtp_host / port / user / pass"" / 587アラート送信元のSMTP設定
alert_email""アラートの宛先(管理者)
db_path A案data/openchair.dbSQLite DB の保存先
csv_dir G案data/logsローカルCSVログの保存先
gas_url G案""GAS Web App の URL(POST先)
設定は 環境変数でも上書き可能です。例:OPENCHAIR_USER_ID=tanaka / OPENCHAIR_DRY_RUN=0(キーを大文字にして OPENCHAIR_ を付ける)。

5-5. 外部サービスの初期設定(要点)

rclone(両案共通)

# インストール
brew install rclone        # Mac
winget install Rclone.Rclone  # Win

# Google Drive リモート作成
rclone config
# n → 名前=gdrive → drive を選択 → ブラウザ認証

# config.json に反映
# "drive_remote": "gdrive"

# 接続テスト
rclone lsd gdrive:

詳細:各フォルダ INSTALL.md の §1。

GAS+Sheets(G案のみ)

  • スプレッドシートを新規作成し、sessions / screenshots シートを用意
  • 拡張機能 → Apps Script に gas/Code.gs を貼り付け
  • 「デプロイ → ウェブアプリ」で公開し、表示された URL を gas_url に設定
  • 動作テスト後、本番は dry_run=false

詳細:openchair_G_gsheets/gas/SETUP.mdINSTALL.md §3〜4。

5-6. 配布と自動起動

# 配布物をビルド(実行したOSに応じて .exe / .app を生成)
python3 build/build_pyinstaller.py
# 生成物を各PCへコピー。スタッフ側に Python は不要。

5-7. トラブル時