💻 システム開発
2026-08-13_現在地と再開手順
最終更新 2026年08月13日 / 31_システム開発部/SCALE_Rec/2026-08-13_現在地と再開手順.md
SCALE Rec — 現在地と再開手順(2026-08-13)
Googleカレンダーの会議・商談を「全部、自動で」録画する社内ツール。
参考システム = tl;dv。/system-flowで構築中。
正本
- リポジトリ:
~/dev/scale-rec/(GitHubscale-group-jp/scale-recprivate) - スタートカード:
~/dev/scale-rec/CLAUDE.md(現在地・地雷・構成はここが最新) - 本番: https://scale-rec.pages.dev/ (PW:
●●●●●●)
今日できたこと
| 状態 | |
|---|---|
| 参考システムの完全再現(20画面)+確認① | 完了(大串「バッチリすぎる」) |
| SCALE Recオリジナル化(ブランド痕跡0件)+確認② | 完了 |
| 管理画面・API・D1・録画率ダッシュボード | 本番稼働 |
| 納品ロゴ適用(サイドバー・ログイン・ファビコン) | 完了・ブランドカラー #413A2A |
| Googleカレンダー連携 | 実データ29件を同期・会議URL有りだけ録画対象と判定 |
bot用アカウント scalerec@scale-group.co.jp |
Cloud Identity Free・¥0・組織部門 Bot |
| bot参加の実測成功 | 「今すぐ参加」で入室/ロゴタイル表示/終了時刻で自動退出 |
| 録画・スケジューラ・Dockerコンテナ | 実装済み(ARM/x86両対応)未検証 |
止まっている理由
botを24時間動かすサーバーが確保できていない。それだけ。
Oracle Cloud Always Free の東京ARM枠が Out of host capacity。
1コア/6GBでも取れない。Always Freeはホームリージョン(東京)でしか使えず、変更不可なので他リージョンへ逃げられない。
→ 5分おきの自動リトライを launchd で常駐させた(infra/oci_retry.sh)。
取れた瞬間にMacへ通知+infra/instance_ip.txt にIP保存。大串の操作は不要。
- 見込み: 数時間〜数日。1週間取れないこともある(東京は激戦区)
- 大串の判断: お金をかけたくないのでOracle待ち(VPS 月1,700〜2,000円は見送り)
再開手順
# 1. サーバーが取れたか確認
cat ~/dev/scale-rec/infra/instance_ip.txt # あればIPが入っている
tail -20 ~/dev/scale-rec/infra/oci_retry.log # リトライ状況
# 2. 取れていたら接続
ssh -i ~/.ssh/scale_rec_oracle ubuntu@<IP>
# 3. 続きの作業
# Docker導入 → botコンテナをビルド → profile/ を転送 → スケジューラ常駐
# → Zoom参加テスト(Meetは実測済み・Zoomは未検証)
リトライを止めたい時:
launchctl unload ~/Library/LaunchAgents/com.scale.rec.ocitry.plist
未検証で残っているもの(正直な状態)
- Dockerコンテナは一度も動かしていない。仮想ディスプレイ+仮想オーディオ+ffmpegの組み合わせはサーバー上で初検証になる
- Zoomへのbot参加は未検証(Meetのみ実測済み)。実データの商談はZoomだったので必須
- 文字起こし・AI要約は v1 では作らない(大串決定)
決まっている方針
- 録画方式 = bot参加型(tl;dv同様。担当者のPCに依存しない/自分が出ていない会議も録れる)
- 相手には 参加者「SCALE Rec」+映像枠にロゴ+「● 録画中」 が見える(告知も兼ねる)
- マイクは常時ミュート・botのChromeには実カメラ/実マイクが存在しない(機械検証済み)
- 動画は Google Drive、メタデータは Cloudflare D1
- 権限の既定は「チーム内で見える」/採用面談・1on1は非公開
- 録画漏れ対策として 死活監視・未録画検知・録画率ダッシュボード を実装済み
今日踏んだ地雷(同じ轍を踏まないため)
| 症状 | 原因 |
|---|---|
| OCIコンソールで4コア/24GBが1/1に戻る・トグルが押せない | Chrome拡張がReact状態を壊す。シークレットウィンドウで操作する |
| 録画率が常に0件 | ISO形式(T/Z)のままD1に入れ、datetime('now') との文字列比較が常に外れていた |
| APIが認証なしで200を返す | Pages Functions はプロジェクト直下の functions/ に置く |
| botの参加リクエストがホストに届かない | Meetの匿名参加は組織ポリシーで拒否。ログイン必須 |
| OAuthの認可コードが届かない | 固定ポート+localhost で他プロセスがIPv6側を掴んでいた。空きポート自動選択+127.0.0.1 に変更 |
| APIが403 | 既定のUser-Agent(Python-urllib)がCloudflareに弾かれる。UAを明示する |